劉永琦,曲鳴飛
(北京電子科技職業(yè)學(xué)院 機(jī)電工程學(xué)院,北京 100176)
本次研究采用的主控制單元是美國STC公司生產(chǎn)的STC89C52,是一種性能非常高的微處理器,為51內(nèi)核,然后利用51單片機(jī)組成溫度檢測系統(tǒng)。系統(tǒng)主要由報警模塊、輸入模塊、通信模塊、溫度采集模塊以及液晶顯示模塊構(gòu)成。這一系統(tǒng)的功能主要包括以下幾點:可以對當(dāng)下環(huán)境溫度進(jìn)行準(zhǔn)確檢測;能通過四位八段LED數(shù)碼管顯示檢測結(jié)果;能夠傳輸檢測到的溫度數(shù)據(jù),傳輸時主要通過串口(RS232協(xié)議)進(jìn)行傳送;可以設(shè)定溫度的上下限,當(dāng)設(shè)定的限定值超過一定數(shù)值時,第一時間進(jìn)行聲光報警。
STC89C52的功能主要包含:256字節(jié)RAM,MAX810復(fù)位電路,片內(nèi)晶振及時鐘電路,全雙工串行口,一個7向量4級中斷結(jié)構(gòu),32位I/O口線,3個16位定時器/計數(shù)器,8 kB Flash,內(nèi)置4 kB EEPROM。此外,可以將STC89C52降到靜態(tài)邏輯模式,通過0 Hz進(jìn)行操作,可以使用節(jié)電模式。當(dāng)處于空閑狀態(tài)時,會自動停止CPU的工作。如果是掉電保護(hù)狀態(tài)下,會自動保存RAM內(nèi)容,停止單片機(jī)的所有工作。本次設(shè)計選擇STC89C52單片機(jī),使用PDIP40進(jìn)行封裝。
美國DALLAS半導(dǎo)體公司研發(fā)的DS18B20屬于可組網(wǎng)數(shù)字式溫度傳感器,內(nèi)部采用在板(ON-BOARD)技術(shù)[1]。所有的轉(zhuǎn)換電路和傳感元件都在一只三極管電路內(nèi)集成。單線接口的方式非常獨特。微處理器和DS18B20進(jìn)行連接時,只要使用一條口線,就能夠完成DS18B20和微處理器之間的雙向通信。DS18B20在使用中不需要外圍元件。
這一設(shè)備的控制是由單片機(jī)STC89C52的I/O口P1.7完成的,如圖1所示,其中DQ為數(shù)字信號輸入/輸出端,與單片機(jī)STC89C52的I/O口P1.7相連接。

圖1 溫度采集電路
1602液晶也被稱為1602字符型液晶,最大的作用是將符號、數(shù)字、字母顯示出來,屬于點陣型液晶模塊。它主要由多個5×11或是5×7的陣字符位組成,不同點陣字符位顯示不同的字符。1602LCD是指內(nèi)容顯示的格式為16×2,即顯示2行。每行的字符液晶模塊有2個,主要是顯示數(shù)字和字符。目前,市場上常見的字符液晶是HD44780液晶芯片,所以利用HD44780對程序進(jìn)行控制具有非常廣泛的應(yīng)用范圍[2]。
1602采引腳功能如下。
第1腳:VSS地接到GND。
第2腳:VDD接到5 V正電源。
第3腳:VL是液晶顯示屏對比度的調(diào)整端,對比度最弱的狀態(tài)是接正電源時。在對電源進(jìn)行接地時,可以達(dá)到最高的對比度;如果對比度過高,會顯示“鬼影”;使用時可以適當(dāng)調(diào)整對比度,可以使用10 kΩ的電位器進(jìn)行調(diào)節(jié)。
第4腳:如果是在高電狀態(tài)下,應(yīng)當(dāng)選擇數(shù)據(jù)寄存器;反之,要使用指令寄存器。
第5腳:RW在高電平時開展讀操作,低電平只能進(jìn)行寫操作。如果兩者都處在低電平,可以顯示地址或是寫入指令。當(dāng)RS是低電平且RW為高電平時,可以進(jìn)行讀忙信號;反之,是寫入數(shù)據(jù)。
第6腳:E端為使能端,液晶模塊執(zhí)行命令。第7~14腳:D0~D7為8位雙向數(shù)據(jù)線。
想要控制LCD1602液晶屏,主要是通過單片機(jī)STC89C52的P2和P0部分實現(xiàn)。
本系統(tǒng)RS232串口通信固定接在單片機(jī)STC89C52的P3.0和P3.1口上,RS232串行通信接口芯片選擇MAX3232,通信速率最高達(dá)1 Mb/s,只需4個電容就可以正常開展工作。內(nèi)部結(jié)構(gòu)主要有以下幾部分組成。第一,電荷泵電路,主要由4只電容和6個腳組成,最大的作用是產(chǎn)生-12 V和+12 V的電源,滿足RS-232串口電平需求。第二,數(shù)據(jù)轉(zhuǎn)換通道,主要由7~13腳構(gòu)成,其中11~13腳是第一數(shù)據(jù)通道,7~10腳是第二數(shù)據(jù)通道,這里采用第二數(shù)據(jù)通道。第三,供電。15腳DNG和16腳VCC(+5 V)。
RS232串口模塊電路如圖2所示。

圖2 RS232串口模塊
基于μC/OS和STC89C52的溫度檢測系統(tǒng),選擇的操作系統(tǒng)為μC/OS-II,可以實時進(jìn)行操作,將系統(tǒng)的總體功能劃分為不同任務(wù),利用完成多任務(wù)實現(xiàn)總體功能。設(shè)計程序時,選擇匯編語言和C語言,編譯軟件使用的是Keil。
μC/OS-II開展移植工作,在硬件方面必須具備強(qiáng)大的功能。進(jìn)行設(shè)計時,采用的處理器型號是STC89C52,能夠有效滿足當(dāng)前的需要,主要內(nèi)容如下:
(1)利用C語言開展處理器;
(2)指令集非常精簡,能夠把寄存器和堆棧指針讀寫到內(nèi)存中,而且能夠進(jìn)行硬件堆棧;
(3)編譯環(huán)境選擇的是Keil,能夠使代碼重新錄入。
采用編譯器Keil和STC89C52處理器能夠有效滿足目前的使用需求,所以能夠正常運行該系統(tǒng)。進(jìn)行移植的過程中,采用的方式主要通過對以下幾個文件進(jìn)行修改,如OS_CPU_C.c、OS_CPU_A.asm和OS_CPU.h。此外,在OS_CPU_A.asm文件中編寫任務(wù)切換等函數(shù)(匯編語言編寫)。
設(shè)計的程序總體主要包括6個任務(wù),如圖3所示。
(1)系統(tǒng)初始化設(shè)置,包括中斷、時鐘節(jié)拍定時器、DS18B20、LCD顯示屏、系統(tǒng)硬件以及串口等。(2)溫度采集任務(wù),主要是采集和處理溫度數(shù)據(jù)。(3)LCD顯示任務(wù),顯示傳送來的數(shù)據(jù)。
(4)按鍵任務(wù),利用按鍵,有效設(shè)定溫度的上下限值。
(5)報警任務(wù),環(huán)境溫度超出時自動報警。
(6)串口通信任務(wù),將溫度數(shù)傳送到PC端,開展后續(xù)的工作。

圖3 總體流程
隨著我國經(jīng)濟(jì)實現(xiàn)了跳躍式發(fā)展,人們的生活水平有了很大提高,對各方面的要求越來越高。因此,在開展設(shè)計工作的過程中,把μC/OS-II移植到STC89C52,通過實時操作系統(tǒng)μC/OS-II設(shè)計系統(tǒng)軟件,主要使用任務(wù)管理功能,相較傳統(tǒng)系統(tǒng)優(yōu)勢明顯,且大幅降低了開發(fā)系統(tǒng)的使用時間,提高了系統(tǒng)軟件的可靠性,最大程度地保障了安全性能。通過嚴(yán)格全面的測試,設(shè)計的系統(tǒng)能夠?qū)Ξ?dāng)下環(huán)境的溫度數(shù)據(jù)進(jìn)行準(zhǔn)確顯示,可以應(yīng)用于相關(guān)監(jiān)測工作,且應(yīng)用效果良好。