微機實驗:報警監(jiān)測儀
實驗?zāi)康?/b>
1、了解基于8031的微機化儀表的總體設(shè)計。
2、理解鍵盤管理程序的設(shè)計原理。
3、掌握各模塊的程序設(shè)計和調(diào)試。
實驗內(nèi)容:
利用本實驗板設(shè)計一臺報警監(jiān)測儀,它能夠顯示測量值,設(shè)置報警值,如測量值大于報警值則亮燈報警。
測量信號0~5V由0809通道1輸入。鍵盤布置如圖7-1所示。鍵號為B的鍵作為測量鍵。當按下該鍵時,儀表進入測量狀態(tài),測量值顯示格式:P滅滅×××,測量顯示范圍0~255。鍵號為0~9的10個數(shù)字鍵用于報警值設(shè)定。按下任一個數(shù)字鍵,儀表進入設(shè)定狀態(tài),設(shè)定值顯示格式:A滅滅×××,設(shè)定允許范圍0~255。如果設(shè)定過大,超出255,則顯示警告格式:A……。
8031的P1.0口作為報警接口,連接發(fā)光二極管LED做報警指示。
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
測量 |
????????? 圖7-1? 按鍵分配圖
主程序
圖7-2表示了儀表的總體框圖。相應(yīng)主程序如下
ORG? 0000H |
||
LJMP? MAIN |
||
ORG? 0150H |
||
?MAIN: |
MOV ?SP,? #60H |
;設(shè)置堆棧 |
MOV ?DPTR, #B000H |
;設(shè)置8155 | |
MOV ?A, #03H |
;A、B口輸出 | |
MOVX ?@DPTR, A |
;C口輸入 | |
CLR ?A |
;初始顯示全“0” | |
MOV ?R0, #2AH |
||
MP0: |
MOV ?@R0, A |
|
INC ?R0 |
||
CJNE ?R0, #30H, MP0 |
||
CLR ?00H |
;bit00,狀態(tài)標志 | |
MOV ?21H, #00H |
;21H,設(shè)定值的位標志 | |
??DIS: |
LCALL ?DISP |
;調(diào)顯示 |
LCALL ?KS1 |
;有鍵按下嗎? | |
JZ? MP2 |
;無,轉(zhuǎn)MP2 | |
? MP1: |
LJMP ?SCAN |
;轉(zhuǎn)鍵管理 |
? MP2: |
LJMP ?RUN |
;轉(zhuǎn)監(jiān)測 |
監(jiān)測運行程序
??? 監(jiān)測運行程序框圖見圖7-3。包括:儀表狀態(tài)判別、A/D采樣、測量值顯示、比較報警等部分。
ORG? 0180H |
||||
0180 |
??RUN: |
JNB ?00H, RU1 |
;bit00=0,儀表為測量狀態(tài) | |
0183 |
LJMP ?DIS |
|||
? RU1: |
LCALL ?AD1 |
;調(diào)用A/D采樣 | ||
MOV ?R3, A |
;以下是顯示測量值 | |||
LCALL ?IBTD |
;二進制轉(zhuǎn)BCD(見實驗二) | |||
MOV ?2DH, R4 |
;測量值百位送顯示緩沖2DH | |||
MOV ?A, R5 |
||||
ANL ?A, #F0H |
||||
SWAP ?A |
||||
MOV ?2EH, A |
;測量十位送顯示緩沖2EH | |||
MOV ?A, R5 |
||||
ANL ?A, #0FH |
||||
MOV ?2FH, A |
;測量值個位送顯示緩沖2FH | |||
MOV ?2AH, #10H |
;第一位顯示“P” | |||
|
MOV ?2BH, #14H |
;第二位顯示不亮 | ||
MOV ?2CH, #14H |
;第三位顯示不亮 | |||
CLR ?C |
;以下是比較報警 | |||
MOV ?A, 50H |
;測量值存50H,設(shè)定值存51H | |||
? ? |
SUBB ?A,51H |
;測量一設(shè)定 | ||
JC ?RU2 |
;測量<設(shè)定,轉(zhuǎn) | |||
SETB ?P1.0 |
;測量≥設(shè)定,報警燈亮 | |||
LJMP ?DIS |
||||
? RU2: |
CLR ?P1.0 |
;關(guān)報警燈 | ||
01B1 |
LJMP ?DIS |
鍵管理程序
鍵管理程序框圖如圖7-4示。首先判別是否測量鍵,若是則進入測量狀態(tài)。再判是否數(shù)字鍵0~9,若是則進入設(shè)定狀態(tài)。利用位00H作為狀態(tài)標志,以區(qū)別測量或設(shè)定。隨著按數(shù)字鍵的先后次序,鍵號分別送入顯示緩沖2DH、2EH、2FH,從而顯示設(shè)定值的百位、十位和個位。為了區(qū)別設(shè)定值的哪一位,用RAM 21H做位指針。數(shù)碼顯示的設(shè)定值是十進制數(shù),需轉(zhuǎn)換為二進數(shù)并存入51H,以便和A/D轉(zhuǎn)換結(jié)果(存50H)進行比較,設(shè)定值若超出255,表示過大,顯示A……,以示警告。相應(yīng)程序如下:
ORG? 01D0H |
|||
SCAN: |
LCALL ?KEYA |
;查鍵號,存A | |
CJNE ?A, #0B, SC2 |
;不是測量鍵,轉(zhuǎn) | ||
CLR ?00H |
;是測量鍵,置測量狀態(tài) | ||
MOV ?21H, #00H |
;設(shè)定位指針復0 | ||
??? SC1: |
LJMP ?SC9 |
||
??? SC2: |
CJNE? A, #0AH, SC3 |
;判是否數(shù)字鍵? | |
??? SC3: |
JNC ?SC1 |
;不是,則退出 | |
SETB ?00H |
;是數(shù)字鍵,置設(shè)定狀態(tài) | ||
MOV ?2AH, #1EH |
;最高位顯示A | ||
MOV ?2BH, #14H |
;第2、3位顯示不亮 | ||
MOV ?2CH, #14H |
; | ||
INC ?21H |
;修改設(shè)定位指針 | ||
MOV ?A, 21H |
|||
??? SC4: |
CJNE ?A, #01H, SC5 |
;不是設(shè)置百位數(shù),轉(zhuǎn) | |
MOV ?2DH, A |
;是百位數(shù)設(shè)置,鍵號送2DH | ||
SJMP ?SC8 |
|||
??? SC5: |
CJNE ?A, #02H, SC6 |
;是十位數(shù)設(shè)置嗎? | |
MOV ?2EH, A |
;是,鍵號送2EH | ||
SJMP ?SC8 |
|||
??? SC6: |
CJNE ?A, #03H, SC7 |
;是個位數(shù)設(shè)置? | |
MOV ?2FH, A |
;是,鍵號送2FH | ||
SJMP ?SC8 |
|||
??? SC7: |
MOV ?21H, #01H |
||
SJMP ?SC4 |
|||
??? SC8: |
LCALL ?DTB |
;BCD轉(zhuǎn)二進制,且與255比較 | |
020F |
??? SC9: |
LJMP ?DIS |
|
ORG ?0220H |
求(2D)×100+(2E)×10+(2F)→51H | ||
?? DTB: |
MOV? B, #64H |
||
MOV ?A, 2DH |
|||
MUL AB |
;(2D)×100 | ||
MOV ?R6, A |
;乘積低8位暫存R6 | ||
MOV ?A, B |
|||
JZ ?DTB1 |
|||
SJMP ?DTB2 |
;乘積高8位≠0,表示設(shè)定值>FFH | ||
DTB1: |
MOV ?B, #0AH |
||
MOV ?A, 2EH |
|||
MUL ?AB |
;(2E)×10 | ||
ADD ?A, R6 |
;(2D)×100+(2E)×10→A | ||
JC? ?DTB2 |
;C=1表示設(shè)定值>FFH,轉(zhuǎn) | ||
ADD ?A, 2FH |
;(2D)×100+(2E)×10+(2F)→A | ||
JC ?DTB2 |
C=1,表示設(shè)定>FFH,轉(zhuǎn) | ||
MOV ?51H, A |
;二進制結(jié)果存51H | ||
?? |
RET |
||
?DTB2: |
MOV ?2AH, #1EH |
;設(shè)定值過大,顯示報警提示A…… | |
MOV ?2BH, #11H |
|||
MOV ?2CH, #11H |
|||
MOV ?2DH, #11H |
|||
MOV ?2EH, #11H |
|||
MOV ?2FH, #11H |
|||
RET |
實驗要求:
首先調(diào)試子程序(例如DTB),然后分段調(diào)試鍵管理程序,監(jiān)測運行程序和主程序。在此基礎(chǔ)上,連續(xù)運行整個程序,檢查儀表工作是否符合設(shè)計要求。
思考題:
1、監(jiān)測運行程序和鍵管理程序兩個模塊的結(jié)束處(01B1H句和020FH句)都是轉(zhuǎn)向顯示程序。為什么?
2、監(jiān)測運行模塊中,如果省略0180H、0183H句,對儀表的工作有什么影響?
3、鍵管理程序中,如何判別按下的數(shù)字鍵是百位數(shù)?是十位數(shù)?還是個位數(shù)?
4、如果把A/D采樣改為中斷法,程序?qū)⒆髂男└膭樱?/P>
評論
查看更多