摘要: 論述了基于數(shù)字溫度傳感器的單片機溫度測控系統(tǒng)。把PC機中實現(xiàn)減法運算的方法運用到MCU的匯編語言程序設(shè)計中,從而完成了AD7416的溫度采樣匯編語言程序設(shè)計。文章給出了溫度測控系統(tǒng)簡化電原理圖以及符合MCS—51匯編語言特點的溫度采樣子程序及其流程框圖。
關(guān)鍵詞: 數(shù)字溫度傳感器;AD7416;單片機
1 程序設(shè)計思想
在應(yīng)用數(shù)字溫度傳感器的單片機(簡稱MCU)溫度測控系統(tǒng)中,數(shù)字溫度傳感器把被測溫度轉(zhuǎn)換為帶符號位的二進制數(shù)據(jù),MCU從傳感器讀入這些表示溫度高低的二進制數(shù)據(jù)時,必須先經(jīng)過數(shù)字濾波消除干擾的影響,而讀入這些二進制數(shù)據(jù)后一般要按照預(yù)定的算法完成一些運算,最后得到控制信號從MCU的I/O囗輸出。常用的半導(dǎo)體數(shù)字溫度傳感器有AD7416、DS18B20等,它們能把溫度(-55℃~+125℃)轉(zhuǎn)換為補碼形式的二進制數(shù)。如圖1所示,這是一個溫度測控系統(tǒng)的部分電路原理圖,圖中AD7416是美國AD公司生產(chǎn)的半導(dǎo)體數(shù)字溫度傳感器,它具有I2C串行總線接囗。按照系統(tǒng)設(shè)計要求,MCU需要通過AD7416采樣溫度256次,每一次溫度采樣后求溫度值的累加和,16bit的累加和存放在MCU的內(nèi)存單元27H、28H中,當(dāng)溫度采樣到256次時,求溫度的算術(shù)平均值并將其轉(zhuǎn)換為BCD碼保存到MCU的內(nèi)存單元4CH、4DH中。
從計算機原理可知,引入補碼后,在PC機中減法是通過加法來實現(xiàn)的?梢宰C明y-x=y+[-x]補 ,在完成等式右邊的加法運算時應(yīng)舍棄可能產(chǎn)生的進位。根據(jù)這個道理,本系統(tǒng)溫度采樣后得到的8bit溫度值(補碼形式,已存放在累加器A中)累加到27H、28H單元的方法應(yīng)該是:
⑴ 若A為正數(shù),則完成下列運算
[(27H)(28H)]+A→[(27H)(28H)]
⑵ 若A為負(fù)數(shù)(已用補碼表示),則應(yīng)把8bit的負(fù)數(shù)轉(zhuǎn)換為16bit的補碼,然后將16bit的補碼累加到27H、28H單元中。將8bit的負(fù)數(shù)轉(zhuǎn)換為16bit的補碼方法是,在8bit的負(fù)數(shù)前面添加0FFH作為高8位從而擴展成為16bit的補碼。
2 溫度采樣子程序流程框圖
溫度采樣子程序流程框圖如圖2所示,該子程序流程框圖是結(jié)合MCS—51匯編語言的特點而繪制出來的,根據(jù)該流程框圖,不難寫出相應(yīng)的MCS—51匯編語言溫度采樣子程序。
入囗參數(shù):無
出囗參數(shù):27H、28H是溫度值累加和;4BH單元存放溫度平均值的“+、-”符號的ASCII碼;4CH、4DH單元存放溫度平均值的十位、個位(BCD碼)。
占用資源:累加器A;寄存器B;MCU的內(nèi)存單元25H、26H、27H、28H、4CH、4DH。
3 溫度采樣子程序清單
SAMPLE: PUSH B
PUSH PSW
LCALL SAMPLEBY
MOV 25H,#0
JNB ACC.7,LOOP1
DEC 25H
LOOP1: ADD A,28H
MOV 28H,A
MOV A,27H
ADDC A,25H
MOV 27H,A
DJNZ 26H,LOOP5
MOV 26H,#8
LOOP2: MOV A,27H
RRC A
MOV 27H,A
MOV A,28H
RRC A
MOV 28H,A
DJNZ 26H,LOOP2
MOV 26H,#0
MOV A,28H
MOV 27H,#0
MOV 28H,#0
MOV B,#0AH
JB ACC.7,LOOP3
MOV 4BH,#02BH
SJMP LOOP4
LOOP3: CPL A
INC A
MOV 4BH,#02DH
LOOP4: DIV AB
MOV 4CH,A
MOV 4DH,B
LOOP5: POP PSW
POP B
RET





