基于串口的溫度檢測(cè)數(shù)據(jù)單片機(jī)仿真
圖 4.1 晶振電路
2.空閑方式
在空閑方式下,CPU 的內(nèi)部時(shí)鐘信號(hào)被門(mén)控電路所封鎖,CPU 即進(jìn)入睡眠狀態(tài),但內(nèi)部時(shí)鐘信號(hào)仍繼續(xù)供給中斷系統(tǒng),定時(shí)器和串行口。這種方式由軟件調(diào)用。在空閑方式期間,片內(nèi)RAM和所有專(zhuān)用寄存器的狀態(tài)仍被保留,空閑方式可通過(guò)任何允許的中斷或硬件復(fù)位來(lái)終止。當(dāng)空閑方式由硬件復(fù)位終止時(shí),通常系統(tǒng)在空閑處恢復(fù)程序的執(zhí)行。硬件復(fù)位只需要信號(hào)持續(xù)有效兩個(gè)機(jī)器周期。當(dāng)用復(fù)位終止空閑方式時(shí),為防止避免意外寫(xiě)入端口引腳的可能性,調(diào)用空閑方式指令的下一條指令不應(yīng)是寫(xiě)端口引腳或外部存儲(chǔ)器。
3.掉電工作方式
5.2 程序設(shè)計(jì)
5.2.1 主程序設(shè)計(jì)
主程序主要完成硬件初始化、子程序調(diào)用等功能。
1. 初始化。
首先調(diào)用 LCD 初始化程序,在LCD 上顯示數(shù)據(jù)RECEIVE:和TEMP is: *C.
然后調(diào)用中斷及串口初始化子程序程序,把串口接收數(shù)據(jù)單元RECDATA 清零。設(shè)置寄存器SCON 的SM0、SM1 位定義串口工作方式,選擇波特率發(fā)生器為定時(shí)器T1;設(shè)定定時(shí)器T1 工作方式為方式2;設(shè)置波特率參數(shù)為9600bps;允許串行中斷及總中斷;允許串口接收數(shù)據(jù),定義REN=1;啟動(dòng)定時(shí)/計(jì)數(shù)器T1 工作,定義TR1=1.
2. 串口收發(fā)數(shù)據(jù)。
判斷串口成功接收數(shù)據(jù)標(biāo)志位flag_uart 是否為0,若flag_uart 為0,表明串口未接收到數(shù)據(jù),則繼續(xù)等待串口接收數(shù)據(jù);若flag_uart 為1,表明串口成功接收或發(fā)送數(shù)據(jù),進(jìn)入串口中斷服務(wù)子程序,單片機(jī)接收數(shù)據(jù),并將串口成功接收數(shù)據(jù)標(biāo)志位flag_uart 清零,調(diào)用LCD 顯示接收數(shù)據(jù)子程序,在LCD 上顯示單片機(jī)從串口接收到的數(shù)據(jù),同時(shí)回傳溫度值給PC機(jī)顯示。主程序設(shè)計(jì)流程圖如圖5.1 所示。
圖 5.1 主程序流程圖
5.2.2 串口中斷服務(wù)子程序
判斷串口發(fā)送標(biāo)志位TI 是否為1,若TI 為1,則把數(shù)據(jù)從單片機(jī)發(fā)給PC 機(jī),并把TI清零,中斷子程序返回;若TI為0,表明RI=0,則把串口接收標(biāo)志位RI清零,把串口接收緩沖器SBUF 中的數(shù)據(jù)寫(xiě)入串口接收數(shù)據(jù)單元RECDATA,再把該數(shù)據(jù)送到串口發(fā)送緩沖器SBUF 中,傳給PC 機(jī),置串口成功接收數(shù)據(jù)標(biāo)志位RECOKBIT 為1,表明串口成功接收發(fā)送數(shù)據(jù),最后中斷子程序返回。串口收發(fā)數(shù)據(jù)中斷服務(wù)子程序設(shè)計(jì)流程圖如圖5.2 所示。
圖5.2 串口中斷服務(wù)子程序
5.2.3 讀溫子程序
讀出溫度子程序的主要功能是讀出RAM 中的9 字節(jié),在讀出時(shí)需進(jìn)行CRC 校驗(yàn),校驗(yàn)有錯(cuò)時(shí)不進(jìn)行溫度數(shù)據(jù)的改寫(xiě)。其程序流程圖如圖5.3 示。
圖5.3 讀溫子程序
5.2.4 溫度轉(zhuǎn)換命令子程序
溫度轉(zhuǎn)換命令子程序主要是發(fā)溫度轉(zhuǎn)換開(kāi)始命令,當(dāng)采用12 位分辨率時(shí)轉(zhuǎn)換時(shí)間約為750ms,在本程序設(shè)計(jì)中采用1s顯示程序延時(shí)法等待轉(zhuǎn)換的完成。溫度轉(zhuǎn)換命令子程序流程圖如上圖,圖5.4 所示。
圖5.4 溫度轉(zhuǎn)換流程圖
5.2.5 計(jì)算溫度子程序
計(jì)算溫濕度子程序?qū)AM 中讀取值進(jìn)行BCD 碼的轉(zhuǎn)換運(yùn)算,并進(jìn)行溫度值正負(fù)的判定,其程序流程圖如圖5.5 所示。
圖5.5 計(jì)算溫度流程圖
5.2.6 顯示數(shù)據(jù)刷新子程序
顯示數(shù)據(jù)刷新子程序主要是對(duì)分離后的溫度顯示數(shù)據(jù)進(jìn)行刷新操作,當(dāng)標(biāo)志位位為1時(shí)將符號(hào)顯示位移入第一位。程序流程圖如圖5.6 所示。
圖5.6 顯示數(shù)據(jù)刷新子程序
6 結(jié)論
本系統(tǒng)的硬件采用模塊化設(shè)計(jì),以AT89C52 單片機(jī)為核心,與LCD 顯示電路、串行口通信電路及DS18B20 溫度檢測(cè)電路組成控制系統(tǒng)。該系統(tǒng)硬件主要包括以下幾個(gè)模塊:
AT89C52 主控模塊、LCD 顯示模塊、串行口通信模塊、DS18B20 溫度檢測(cè)模塊等。其中AT89C52 主要完成外圍硬件的控制以及一些運(yùn)算功能,LCD 顯示模塊完成字符、數(shù)字的顯示功能、串行口通信模塊主要完成單片機(jī)和PC 機(jī)之間的通信功能,DS18B20 溫度檢測(cè)模塊主要完成環(huán)境溫度檢測(cè)功能。
在掉電方式下,片內(nèi)振蕩器停止工作。調(diào)用掉電指令是執(zhí)行的最后一條指令。片內(nèi)RAM 和專(zhuān)用寄存器的值被保留,直到掉電方式終止。退出掉電方式只能靠硬件復(fù)位。復(fù)位后將重新定義所有專(zhuān)用寄存器,但不改變RAM 的內(nèi)容。在VCC 未恢復(fù)到正常工作電壓之前,不能啟動(dòng)復(fù)位,復(fù)位信號(hào)應(yīng)保持足夠長(zhǎng)的時(shí)間,以保證振蕩器的起振和達(dá)到穩(wěn)定。
為了使單片機(jī)正常工作,還需要加入上電復(fù)位電路和掉電檢測(cè)電路。上電復(fù)位簡(jiǎn)要原理:
在系統(tǒng)不需要復(fù)位時(shí),RST端是低電平;按下按鍵,RST端變?yōu)楦唠娖健?/font>
圖 4.2 上電復(fù)位電路
AT89C51、晶振電路與上電復(fù)位電路共同組成單片機(jī)最小系統(tǒng),如圖4.3 所示。
圖 4.3 最小系統(tǒng)
4.2 溫度傳感器
圖4.4 DS18B20連線圖
從圖 4.4 可以看出,DS18B20 與單片機(jī)的連接非常簡(jiǎn)單,單片機(jī)只需要一個(gè)I/O 口就可以控制DS18B20.這個(gè)圖的接法是單片機(jī)與一個(gè)DS18B20 通信,如果要控制多個(gè)DS18B20進(jìn)行溫度采集,只要將所有的DS18B20 的I/O 口全部連接到一起就可以了。
4.3 LCD顯示模塊
顯示電路采用LCD1602 液晶顯示屏,P2 作為液晶8 位數(shù)據(jù)輸入端口。P1.0 口作為液晶數(shù)據(jù)/命令選擇端口,P1.1 為液晶使能端口。
圖 4.5 LCD 顯示模塊
4.4 串行口通信模塊設(shè)計(jì)
51 單片機(jī)有一個(gè)全雙工的串行通信口,使單片機(jī)和計(jì)算機(jī)之間可以方便地進(jìn)行通信。
電平范圍是電路能夠安全可靠識(shí)別信號(hào)的電壓范圍。
CMOS 電路的電平范圍一般是從0 到電源電壓。CMOS 電平中,高電平(3.5~5V)為邏輯1,低電平(0~0.8V)為邏輯0.
RS232 接口的電平范圍是-15V 到+15V,RS232 電平采用負(fù)邏輯,即邏輯1:-3~-15V,邏輯0:+3~+15V.
單片機(jī)的串口是TTL 電平的,而計(jì)算機(jī)的串口是RS232 電平,要使兩者之間進(jìn)行通信,兩者之間必須有一個(gè)電平轉(zhuǎn)換電路,即單片機(jī)的串口要外接電平轉(zhuǎn)換電路芯片把與TTL兼容的CMOS 高電平表示的1 轉(zhuǎn)換成RS232 的負(fù)電壓信號(hào),把低電平轉(zhuǎn)換成RS-232 的正電壓信號(hào)。典型的轉(zhuǎn)換電路給出-9V 和+9V.
本設(shè)計(jì)中實(shí)現(xiàn)邏輯電平轉(zhuǎn)換可以采用MAX232 芯片的轉(zhuǎn)換接口:MAX232 是MAXIM公司生產(chǎn)的,包含兩路驅(qū)動(dòng)器和接收器的RS-232 轉(zhuǎn)換芯片。MAX232 芯片內(nèi)部有一個(gè)電壓轉(zhuǎn)換器,可以把輸人的+5V 電壓轉(zhuǎn)換為RS-232 接口所需的±10V 電壓,尤其適用于沒(méi)有±12V 的單電源系統(tǒng)。與此原理相同的芯片還有MAX202、AD 公司的ADDt101 以及SIL 公司的IC1232 芯片。
圖 4.6 MAX232 芯片引腳
由于 protues仿真時(shí)不需進(jìn)行電平轉(zhuǎn)換,所以仿真時(shí)沒(méi)有用上MAX232 芯片電路,但做實(shí)物時(shí)需進(jìn)行電平轉(zhuǎn)換,其硬件連線圖如圖4.7 所示。MAX232 芯片的T1in 引腳連接AT89C51 單片機(jī)的P3.1(TXD)引腳,MAX232 芯片的R1out 引腳連接AT89C51 單片機(jī)的P3.0(RXD)引腳;MAX232 芯片的T1out 引腳連接DB9 針接口的第2 引腳,MAX232 芯片的R1in 引腳連接DB9 針接口的第3 引腳。
圖4.7 電平轉(zhuǎn)換硬件連接圖
4.5 系統(tǒng)原理圖
由以上模塊化設(shè)計(jì)可得整個(gè)系統(tǒng)原理圖如圖4.8 所示:
圖4.8 系統(tǒng)原理圖
電流變送器相關(guān)文章:電流變送器原理 溫濕度控制器相關(guān)文章:溫濕度控制器原理
評(píng)論