採用單片機AT89C2051的電子溫度計設計

admin @ 2014-03-19 , reply:0

採用單片機AT89C2051的電子溫度計設計
採用單片機AT89C2051的電子溫度計設計

本文介紹一種用簡化版51單片機AT89C2051單片機製作的電子溫度計,和普通的水銀和酒精溫度計相比,具有測溫速度快、讀數方便等特點,測溫範圍為-30~110℃。  電路工作原理電路見圖1。電路由單片機電路、溫度感測器電路、A/D轉換電路、數碼顯示電路等部分組成。AT89C2051、x1、R1、Cl等組成單片機電路,R1、C1組成單片機的複位電路,接通電源的瞬間,由於電源電壓通過R1對C1的充電過程,單片機AT89C205 l的複位端1腳獲得一個高電平複位脈衝,使得單片機進入初始狀態。

VDl、IC3A等組成溫度感測器電路,這裡用硅二極體1N4148的PN結做溫度感測



器,PN結的結電壓隨溫度的變化而變化,溫度每上升1℃,結電壓約下降2mV,在-50-150℃的範圍內有較好的線性。PN結的結電壓由運算放大器IC3A放大12倍后輸出到AT89C2051的P1.1口。由於結電壓是送到IC3A的反相輸入端進行放大,所以溫度越高,IC3A的輸出電壓越高。

AT89C2051在內部構造了一個模擬信號比較器,AT89C2051的P1.0和P1.1除了作I/O口外,還分別是模擬信號比較器的同相輸入端和反相輸入端,模擬信號比較器的比較結果存入P3.6對應的寄存器,P3.6在AT89C22051外部無引腳。利用這個模擬信號比較器和鋸齒波信號發生器電路就可以組成一個A/D轉換電路,把P1.1輸入的模擬信號轉換成數字信號。

VTl、C4、R2~R5、RPl、IC23B等組成鋸齒波信號發生器電路,為了獲得較好線性的鋸齒波,C4由VTl、R2-R5、RPl等組成的恆流源充電。鋸齒波開始正程掃描的時刻由P1.2控制,當P1.2=0時C4開始充電,同時單片機內部的定時器1開始計數,當IC3B輸出的鋸齒波的電壓線性遞增到超過P1.1輸入的待測的模擬信號的電壓時,P3.6由0翻轉為1,據此定時器1停止計數,並且使P1.2=1,此時計數值就是A/D轉換的結果,這裡把0℃的計數值確定為40,因此把計數值減去40得到的就是溫度值。在P1.2=1后C4通過R5放電,為下一次測溫作好準備。

數碼管。DSl、DS2、DS3、三極體VT2、VT3、VT4、電阻R12-R21等組成動態掃描數碼顯示電路,把溫度值用數字顯示出來。

軟體設計程序使用彙編語言編寫。程序由主程序、定時中斷服務程序、延時子程序等模塊組成。

主程序由初始化、數碼動態掃描顯示等部分組成。主程序流程圖見圖2,定時中斷服務程序流程圖見圖3。

由於採用了動態掃描顯示韻方式,雖然簡化了電路,節省了I/O線,但佔用CPU的時問多,因此必須採用調用定時中斷的方式來測溫,以減小CPu負擔,定時器0的定時時間為50ms,每過250ms(5次中斷)測一次溫。延時子程序主要供數碼顯示程序調用,延時時問為0.  5ms,延時時間決定了數碼顯示的刷新周期,因為顯示數碼為三位,所以刷新周期為1.5ms。

字形碼的輸出用了P3口的P3.1~P3.5、P3.7,P3口輸出的數據通過查表獲得。因為數碼管為共陽型,所以相應的輸出位為0時筆段亮。存儲器20H、21H、22H單元分別作為個位數、十位數、百位數的存儲單元,其數值作為查表的指針。



動態掃描顯示由數碼顯示程序完成,當個位數送到P3口時,P1.3輸出低電平,VT4導通,數碼管Ds3顯示個位數;當十位數送到P3口時,P1.4輸出低電平,VT3導通,數碼管DS2顯示十位數;當百位數送到P3口時,P1.5輸出低電平,VT2導通,數碼管Dsl顯示百位數,如果溫度為負值,則百位數顯示負號。這樣輪流工作即可顯示溫度值。

在測溫結束時,P3.6由0翻轉為1,由於程序判斷P3.6為高電平要用兩個機器周期,關閉定時器1停止計數要用1個機器周期,總共為3個機器周期,這會使定時器1的計數值增加3,因此在程序中對此誤差進行了修正,將計數值減去3。

安裝與調試ICl用AT89C2051單片機集成電路,x1用12MHz的石英晶體,DSl、DS2、DS3選用共陽LED數碼管。溫度感測器用玻璃封裝的二極體1N4148密封在一個小金屬管內製成。C4要選用溫度係數小的電容器,如滌綸薄膜電容。其餘元器件的參數見圖l。

安裝前先將彙編源程序編譯成目標文件即HEX文件,再用編程器將HEX文件寫入AT89C2051晶元。

安裝后的調試工作主要是通過對RPl、RP2的調節來校準溫度,先把RPl置於調節範圍的中間位置,將溫度感測器插入冰水混合物中,等溫度平衡后,調節RPl使溫度顯示值為0;將溫度感測器插入沸水中,調節RP2使溫度顯示值為100(由於各地氣壓不同,沸水的溫度不一定是100%℃,可用水銀溫度同時插入沸水計來校準,使溫度顯示值和水銀溫度計的數值相等)。再將溫度感測器插入冰水混合物中,看顯示是否仍為0,不是的話再調節RPl使其為0;然後再將溫度感測器插入沸水中,如果顯示不是:100的話再調節使其顯示100,經過幾次反覆調整即可將溫度校準。



[admin via 研發互助社區 ] 採用單片機AT89C2051的電子溫度計設計已經有1365次圍觀

http://cocdig.com/docs/show-post-39654.html