周鵬
(華僑大學(xué) 信息學(xué)院,福建 廈門 361021)
PT100鉑電阻溫度傳感器因其測(cè)量范圍廣、精度高、性能穩(wěn)定可靠等特點(diǎn),被廣泛應(yīng)用于溫度采集[1]。而隨著液晶顯示器成本逐年降低,顯示容量越來越大,功耗越來越小,現(xiàn)已普遍應(yīng)用于各種測(cè)溫儀。本文基于PT100傳感器,設(shè)計(jì)了一種多功能數(shù)字測(cè)溫儀。系統(tǒng)主要功能有:數(shù)字溫度顯示、數(shù)字/指針時(shí)鐘顯示和日期顯示、溫度上下限值的設(shè)置、溫度超限報(bào)警。
系統(tǒng)主要由STC89C52單片機(jī)、溫度采集電路(包括PT100溫度傳感器和 ADC0832)、鍵盤電路、LCD12864顯示器和報(bào)警電路組成(如圖1所示)。

圖1 系統(tǒng)框圖
STC89C52單片機(jī)用于實(shí)現(xiàn)算法,是整個(gè)系統(tǒng)的主控核心;LCD12864用于顯示溫度、時(shí)間和日期等參數(shù);溫度采集電路用于溫度-電阻-電壓的變換和模數(shù)轉(zhuǎn)換;鍵盤電路用于設(shè)定相關(guān)參數(shù)(上下限溫度值、時(shí)間);報(bào)警電路用于溫度超限報(bào)警。
STC89C52單片機(jī)系統(tǒng)由單片機(jī)、時(shí)鐘電路和復(fù)位電路組成,如圖2所示。
STC89C52單片機(jī)具有抗干擾性能強(qiáng)、速度快、功耗低和指令代碼完全兼容8051單片機(jī)等特點(diǎn)。其主要參數(shù)為[2]:時(shí)鐘頻率最高可達(dá) 80 MHz;內(nèi)置 8 KB的 Flash,512 B的 RAM和 2 KB的 EEPROM;3個(gè) 16 bit定時(shí)器/計(jì)數(shù)器,一個(gè)6向量二級(jí)中斷結(jié)構(gòu)。
STC89C52的P0口作為普通I/O口使用,與12864液晶顯示器 DB0~DB7數(shù)據(jù)口相連,根據(jù)P0口硬件特點(diǎn)在其外部須接上拉電阻。
時(shí)鐘電路采用內(nèi)部時(shí)鐘方式,為單片機(jī)系統(tǒng)提供時(shí)鐘信號(hào)。

圖2 STC89C52單片機(jī)系統(tǒng)
復(fù)位電路采用上電自動(dòng)復(fù)位和按鍵復(fù)位的方式,只要保證加到RST引腳的高電平持續(xù)時(shí)間大于2個(gè)機(jī)器周期就能使單片機(jī)正常復(fù)位[3]。
測(cè)溫電路的傳感器選用PT100鉑電阻溫度傳感器。鉑電阻具有以下特點(diǎn)[1,4]:(1)準(zhǔn)確度高,測(cè)試范圍寬,適于不同介質(zhì);(2)性能穩(wěn)定,鉑電阻無論在氧化環(huán)境或是在高溫下的物理和化學(xué)性質(zhì)都非常穩(wěn)定;(3)鉑電阻的重復(fù)性非常好,它的長(zhǎng)期重復(fù)穩(wěn)定性可達(dá)10-4K。
在0℃~100℃測(cè)溫范圍之內(nèi),PT100鉑電阻阻值與溫度近似滿足線性關(guān)系式:

其中,Rt是 t℃時(shí)的 PT100電阻值;R0是 0℃時(shí)的 PT100電阻值,查表得 100 Ω;A=3.908 02×10-3℃。
測(cè)溫電路由圖3、圖4和圖5所示的電路組成。
圖3由TL431和周邊元件組成恒壓源,恒定輸出Vout=2.55 V至圖5的運(yùn)放反向輸入端。

圖3 恒壓源恒定輸出2.55 V
圖4中的9013和TL431組成恒流源,在PT100上流過2.55 mA的恒定電流,并將PT100隨溫度變化的電阻轉(zhuǎn)換為電壓, 再放大10倍 (Vout2表示),輸出至圖5運(yùn)放的正向輸入端。Vout2的表達(dá)式為:

圖5構(gòu)成差分運(yùn)算放大電路,Vout的表達(dá)式為:

圖4 PT100將溫度轉(zhuǎn)換為電壓

圖5 差分放大電路

式(3)實(shí)現(xiàn)了溫度-電阻-電壓的線性轉(zhuǎn)換,其中,T=0~100℃,Vout=0~5 V,Vout輸出至 A/D 轉(zhuǎn)換器。
A/D轉(zhuǎn)換電路由ADC0832組成,ADC0832具有以下特點(diǎn):它是一種逐次比較型、雙通道A/D轉(zhuǎn)換、8 bit分辨率、5 V電源供電時(shí)輸入電壓在0~5 V之間、工作頻率為 250 kHz、轉(zhuǎn)換時(shí)間為 32 μs、輸入/輸出電平與 TTL/CMOS 相 兼 容[5]。
ADC0832與單片機(jī)接口如圖6所示。其工作過程為單片機(jī)P20輸出低電平使有效,且保持該低電平直至轉(zhuǎn)換結(jié)束;A/D轉(zhuǎn)換時(shí),單片機(jī)P22引腳向芯片時(shí)鐘輸入端CLK輸出250 kHz的時(shí)鐘信號(hào);單片機(jī)P21引腳輸出通道選擇控制字,而后ADC0832按照時(shí)序?qū)⑥D(zhuǎn)換結(jié)果由D0輸出至單片機(jī)。

圖6 ADC0832與單片機(jī)接口
系統(tǒng)需同時(shí)顯示實(shí)測(cè)溫度、數(shù)字/指針式時(shí)間,顯示信息量大,因此選擇LCD12864 (ST7920)點(diǎn)陣圖形液晶顯示屏。LCD12864與單片機(jī)接口電路如圖7所示。

圖7 LCD12864與單片機(jī)接口電路
LCD12864(ST7920)具 有 以 下 特 性[6]:(1)4 bit/8 bit并行、2線或3線串行等多種接口方式;(2)顯示分辨率為 128×64, 內(nèi)置 8 192個(gè) 16×16點(diǎn)漢字和 128個(gè) 16×8點(diǎn) ASCII字符集;(3)接口方式靈活、簡(jiǎn)單,可方便地構(gòu)成中英文式人機(jī)交互圖形界面。
LCD12864(ST7920)由 DDRAM (顯示數(shù)據(jù) RAM)、CGROM (字型產(chǎn)生 ROM)、CGRAM (自定義字型產(chǎn)生RAM)和 GDRAM(繪圖 RAM)等組成,實(shí)現(xiàn)顯示字符和圖形的功能。
DDRAM模塊提供64×2個(gè)位元組的空間,最多可控制4行 16字(64個(gè)字)的中文字型顯示,當(dāng)寫入顯示數(shù)據(jù)RAM時(shí),可分別顯示CGROM與CGRAM的字型;該模塊可顯示HCGROM字型 (半角)、CGRAM字型及CGROM的中文字型3種字型。液晶顯示器屏幕坐標(biāo)(AC地址)與DDRAM地址的對(duì)應(yīng)關(guān)系如表1所示。

表1 液晶屏幕坐標(biāo)(AC地址)與DDRAM地址的對(duì)應(yīng)關(guān)系表
CGRAM模塊提供4組16×16點(diǎn)的自定義圖像空間,可以將內(nèi)部字型沒有提供的圖像字型自行定義到CGRAM中,便可和CGROM中的定義一樣通過DDRAM顯示在屏幕中。
GDRAM提供64×32個(gè)字節(jié)的空間,實(shí)際可控制128×64點(diǎn)陣的二維繪圖緩沖空間。GDRAM的二維地址與液晶屏幕坐標(biāo)的對(duì)應(yīng)關(guān)系如圖8所示。
報(bào)警電路由 PNP三極管(9012)、蜂鳴器及單片機(jī)的控制引腳(P21)組成。當(dāng)溫度超限,P21引腳輸出一定頻率的信號(hào),觸發(fā)蜂鳴器工作從而實(shí)現(xiàn)報(bào)警。報(bào)警電路如圖9所示。

圖8 GDRAM二維地址與液晶屏幕坐標(biāo)的對(duì)應(yīng)關(guān)系圖
2.4.2 鍵盤電路
鍵盤電路采用中斷和查詢相結(jié)合的方式設(shè)定溫度和調(diào)整時(shí)間。系統(tǒng)由4個(gè)按鍵組成,分別對(duì)應(yīng)溫度/時(shí)間設(shè)定的功能選擇,數(shù)字增加和減少的調(diào)節(jié)。當(dāng)有鍵按下時(shí),負(fù)跳變引起INT1中斷,再查詢具體按鍵并執(zhí)行相應(yīng)功能。這種結(jié)構(gòu)既擴(kuò)充了外部中斷源,減少了CPU的工作負(fù)擔(dān),又能對(duì)按鍵進(jìn)行實(shí)時(shí)處理。鍵盤電路如圖10所示。

圖9 報(bào)警電路

圖10 鍵盤電路
2.4.3 電源電路
LM7805三端集成穩(wěn)壓器和濾波電容組成電源電路,為整個(gè)系統(tǒng)提供穩(wěn)定的工作電壓。電源電路如圖11所示。

圖11 穩(wěn)壓電路
主程序流程如圖12所示。

圖12 系統(tǒng)流程圖
液晶顯示器的讀/寫數(shù)據(jù)和數(shù)字/字符、數(shù)字/指針式時(shí)鐘顯示等功能由驅(qū)動(dòng)函數(shù)和界面顯示函數(shù)完成。
驅(qū)動(dòng)函數(shù)包括:忙檢測(cè) TestLcdIdle()、寫入命令WriteLcdCommand()、寫入數(shù)據(jù) WriteLcdData()以及讀出數(shù)據(jù) ReadLcdData()。
界面顯示函數(shù)包括:數(shù)字/字符顯示DisplayDdramChar()、自定義字符顯示 DrawGdramSelfChar()以及描點(diǎn)/畫線/畫圓 SetGdramDot()/DrawGdramLine()/DrawGdramCircle。
啟動(dòng)ADC0832的溫度轉(zhuǎn)換和數(shù)據(jù)傳輸必須嚴(yán)格按照其時(shí)序進(jìn)行,溫度采集函數(shù)包括:
(1)ReadAdc0832()。 用來初始化 ADC0832/0 號(hào)通道選擇/A/D轉(zhuǎn)換/轉(zhuǎn)換結(jié)果讀兩次,比較是否一致,如相等保留,否則舍棄。
(2)DisplayPt100Tempe()。用來轉(zhuǎn)換并顯示實(shí)測(cè)溫度。
(3)DisplayPt100AlarmTempe()。用來顯示設(shè)定的上限溫度值。
主函數(shù)包括初始化液晶顯示器以及定時(shí)/計(jì)數(shù)器等模塊,而后調(diào)用溫度采集、界面顯示等函數(shù)。
(1)初始化

(2)時(shí)間/日期設(shè)定,日期和靜態(tài)指針時(shí)鐘顯示:

系統(tǒng)實(shí)際運(yùn)行結(jié)果如圖13所示。
圖13中,陽(yáng)歷日期的格式為年/月/日。數(shù)字時(shí)鐘的格式為“小時(shí):分鐘:秒”。 “S:30℃”代表設(shè)定的上限溫度值;“>”代表上限溫度值與實(shí)測(cè)溫度值的大小關(guān)系;“23.42℃”代表實(shí)測(cè)溫度值。指針時(shí)鐘的圓心以GDRAM模式的坐標(biāo)(0,0)為起點(diǎn),坐標(biāo)為(96,32),時(shí)鐘半徑為31;秒針、分針、時(shí)針以實(shí)際時(shí)鐘方式運(yùn)行。

圖13 系統(tǒng)實(shí)際運(yùn)行圖片
時(shí)間和上限溫度值可通過程序或鍵盤設(shè)定。采用去極值平均值濾波法采集溫度值,實(shí)測(cè)溫度的誤差范圍在±0.5℃/100℃之內(nèi)。
經(jīng)過實(shí)際運(yùn)行,系統(tǒng)測(cè)溫的精度、超限報(bào)警和界面顯示等功能達(dá)到設(shè)計(jì)要求,整個(gè)電路簡(jiǎn)單實(shí)用、穩(wěn)定可靠。
[1]謝偉,文小玲.鉑電阻測(cè)溫非線性補(bǔ)償?shù)难芯縖J].國(guó)外電子元件,2007(1):15-17.
[2]http://www.mcu-memory.com/index.htm,2012-06-01.
[3]張毅剛,彭喜元.單片機(jī)原理與應(yīng)用設(shè)計(jì)[M].北京:電子工業(yè)出版社,2010.
[4]孫傳友,翁惠輝.現(xiàn)代檢測(cè)技術(shù)及儀表[M].北京:高等教育出版社,2008.
[5]http://www.national.com/ds/AD/ADC0832.pdf,2012-06-01.
[6]http://wenku.baidu.com/view/f3e57c0f7cd184254b3535f6.html,2012-06-01.