《電子工程師項(xiàng)目教學(xué)與訓(xùn)練》課件第4章_第1頁(yè)
《電子工程師項(xiàng)目教學(xué)與訓(xùn)練》課件第4章_第2頁(yè)
《電子工程師項(xiàng)目教學(xué)與訓(xùn)練》課件第4章_第3頁(yè)
《電子工程師項(xiàng)目教學(xué)與訓(xùn)練》課件第4章_第4頁(yè)
《電子工程師項(xiàng)目教學(xué)與訓(xùn)練》課件第4章_第5頁(yè)
已閱讀5頁(yè),還剩163頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第4章基于RS-485總線的多點(diǎn)溫度測(cè)控系統(tǒng)設(shè)計(jì)

4.1引言4.2多點(diǎn)溫度測(cè)控系統(tǒng)設(shè)計(jì)任務(wù)書(shū)4.3設(shè)計(jì)方案4.4多點(diǎn)溫度采集控制器的硬件電路設(shè)計(jì)4.5溫度測(cè)量控制節(jié)點(diǎn)控制器設(shè)計(jì)4.6軟件設(shè)計(jì)4.7程序清單4.1引言溫度的測(cè)量、傳輸和控制是控制領(lǐng)域的老話題,涉及到工農(nóng)業(yè)生產(chǎn)及日常生活中的各個(gè)領(lǐng)域。隨著技術(shù)的進(jìn)步和人們生活質(zhì)量的不斷改進(jìn),智能化、網(wǎng)絡(luò)化、大范圍內(nèi)的溫度測(cè)量及控制問(wèn)題越來(lái)越多。本設(shè)計(jì)針對(duì)大范圍、相距較遠(yuǎn)的多點(diǎn)溫度測(cè)量及控制問(wèn)題提出了以RS-485總線組成控制網(wǎng)絡(luò),以智能溫度傳感器實(shí)現(xiàn)溫度的測(cè)量,以可遠(yuǎn)程控制的繼電器接點(diǎn)實(shí)現(xiàn)溫度調(diào)節(jié)的網(wǎng)絡(luò)溫度測(cè)控系統(tǒng)設(shè)計(jì)方案,為解決類似問(wèn)題提供了一種簡(jiǎn)單易行的解決方案。4.2多點(diǎn)溫度測(cè)控系統(tǒng)設(shè)計(jì)任務(wù)書(shū)

1.設(shè)計(jì)任務(wù)多點(diǎn)溫度測(cè)量控制系統(tǒng)的設(shè)計(jì)從硬件角度劃分為兩個(gè)部分。第一部分是“多點(diǎn)溫度采集控制器設(shè)計(jì)”,該部分要求設(shè)計(jì)制作一個(gè)多點(diǎn)溫度采集控制器,該控制器可以通過(guò)RS-485總線與底層的溫度測(cè)控節(jié)點(diǎn)通信,采集各個(gè)點(diǎn)的溫度并通過(guò)LCD模塊進(jìn)行顯示,還可以通過(guò)RS-485總線向控制節(jié)點(diǎn)發(fā)送控制命令對(duì)溫度進(jìn)行調(diào)節(jié);第二部分是“溫度測(cè)控節(jié)點(diǎn)控制器設(shè)計(jì)”,該部分要求設(shè)計(jì)制作一個(gè)通用溫度測(cè)量及控制節(jié)點(diǎn)控制器,要求該控制器能夠進(jìn)行溫度測(cè)量和存儲(chǔ),并能夠通過(guò)RS-485總線與上位機(jī)通信,實(shí)現(xiàn)溫度的采集和控制。

2.設(shè)計(jì)要求該控制系統(tǒng)根據(jù)硬件的劃分其設(shè)計(jì)要求也分為下述兩部分。

1)多點(diǎn)溫度采集控制器的設(shè)計(jì)要求

(1)實(shí)現(xiàn)控制器與溫度控制節(jié)點(diǎn)的RS-485通信,可連接的溫度測(cè)量節(jié)點(diǎn)數(shù)目最多可達(dá)255個(gè)。

(2)采用MCS-51單片機(jī)組成單片機(jī)控制系統(tǒng),設(shè)計(jì)單片機(jī)與圖形LCD之間的接口電路,用LCD顯示器循環(huán)顯示各溫度控制節(jié)點(diǎn)的溫度及其他信息。

(3)在該系統(tǒng)中設(shè)計(jì)一個(gè)鍵盤(pán)接口,用于輸入用戶命令。

(4)編程實(shí)現(xiàn)LCD、鍵盤(pán)的驅(qū)動(dòng),實(shí)現(xiàn)友好的人機(jī)交互界面;編程實(shí)現(xiàn)RS-485的通信功能。

2)溫度測(cè)控節(jié)點(diǎn)控制器的設(shè)計(jì)要求

(1)設(shè)計(jì)并制作以單片機(jī)為微處理器的控制電路。

(2)溫度傳感器測(cè)溫范圍:-10~120℃,精度達(dá)到9位。

(3)可存儲(chǔ)溫度點(diǎn)數(shù)為100。

(4)可通過(guò)RS-485接口實(shí)現(xiàn)溫度數(shù)據(jù)的傳輸,把本地溫度上傳到主機(jī)。

(5)可通過(guò)繼電器驅(qū)動(dòng)本地的溫度調(diào)節(jié)功率設(shè)備工作。4.3設(shè)計(jì)方案根據(jù)多點(diǎn)溫度測(cè)量控制系統(tǒng)的具體任務(wù)和設(shè)計(jì)要求,本設(shè)計(jì)所要解決的主要問(wèn)題從硬件的角度來(lái)劃分包含兩多點(diǎn)方面,其一是多點(diǎn)溫度采集控制器設(shè)計(jì),其二是溫度測(cè)控節(jié)點(diǎn)控制器設(shè)計(jì)。多個(gè)溫度測(cè)控節(jié)點(diǎn)與溫度采集控制器通過(guò)RS-485總線連接在一起組成一個(gè)完整的RS-485網(wǎng)絡(luò),其中溫度采集控制器作為RS-485網(wǎng)絡(luò)系統(tǒng)中的主機(jī),控制整個(gè)總線,溫度測(cè)控節(jié)點(diǎn)作為從機(jī),響應(yīng)主機(jī)的呼叫請(qǐng)求。

RS-485總線通信無(wú)疑是這一系統(tǒng)的核心,沒(méi)有RS-485的通信網(wǎng)絡(luò),這一系統(tǒng)是無(wú)法實(shí)現(xiàn)設(shè)計(jì)任務(wù)所提出的各項(xiàng)要求的。因此從整個(gè)系統(tǒng)的角度來(lái)看,該系統(tǒng)是一個(gè)具有單一主機(jī)多個(gè)從機(jī)的典型RS-485網(wǎng)絡(luò)測(cè)控系統(tǒng),其系統(tǒng)結(jié)構(gòu)如圖4-1所示。圖4-1多點(diǎn)溫度采集控制系統(tǒng)結(jié)構(gòu)框圖在該系統(tǒng)中,主機(jī)的多點(diǎn)溫度采集控制器的主要功能為:通過(guò)RS-485總線采集各個(gè)從節(jié)點(diǎn)的溫度信號(hào),并可以通過(guò)總線設(shè)置各個(gè)從機(jī)節(jié)點(diǎn)的目標(biāo)溫度;為了方便用戶操作,主機(jī)系統(tǒng)設(shè)置了友好的人機(jī)接口,通過(guò)一個(gè)具有8個(gè)鍵的鍵盤(pán)輸入用戶命令,通過(guò)LCD液晶顯示屏顯示采集的節(jié)點(diǎn)溫度、節(jié)點(diǎn)號(hào)、設(shè)置信息等內(nèi)容。從機(jī)節(jié)點(diǎn)的主要功能為:通過(guò)數(shù)字化的集成溫度傳感器測(cè)量對(duì)應(yīng)節(jié)點(diǎn)的溫度,通過(guò)RS-485總線把溫度信號(hào)傳送給主機(jī),并接收主機(jī)的溫度設(shè)置命令,如果該節(jié)點(diǎn)的溫度超過(guò)設(shè)定溫度,繼電器控制的功率設(shè)備將對(duì)溫度進(jìn)行調(diào)節(jié)。除此之外,從節(jié)點(diǎn)還具有E2PROM,可實(shí)現(xiàn)溫度的存儲(chǔ)和記錄等功能。4.4多點(diǎn)溫度采集控制器的硬件電路設(shè)計(jì)4.4.1概述多點(diǎn)溫度采集控制器的硬件電路設(shè)計(jì)框圖如圖4-2所示。在該系統(tǒng)中,主處理器選用了MCS-51系列兼容單片機(jī)——WINBOND公司生產(chǎn)的W78E58BP,該芯片具有36KB的程序存儲(chǔ)容量,片上資源豐富,并增加了P4口方便用戶使用。系統(tǒng)中鍵盤(pán)用于輸入用戶命令,并通過(guò)LCD顯示屏顯示各種信息。為了較好地實(shí)現(xiàn)人機(jī)交互界面,該系統(tǒng)設(shè)置了具有8個(gè)按鍵的鍵盤(pán),選用了北京青云創(chuàng)新科技發(fā)展有限公司的圖形LCD液晶顯示屏LCM12864來(lái)顯示信息。圖4-2多點(diǎn)溫度采集控制器結(jié)構(gòu)框圖系統(tǒng)中擴(kuò)展了32KB的SRAM,用來(lái)記錄和存儲(chǔ)各個(gè)節(jié)點(diǎn)的歷史溫度,當(dāng)系統(tǒng)中的節(jié)點(diǎn)數(shù)目較多并要求記錄較多的歷史溫度時(shí)需要較大的靜態(tài)存儲(chǔ)器,這時(shí)可以采用外部的靜態(tài)RAM來(lái)存儲(chǔ)這些溫度記錄。主機(jī)RS-485接口用來(lái)實(shí)現(xiàn)通信,構(gòu)成網(wǎng)絡(luò)后該主機(jī)是系統(tǒng)中唯一的主機(jī),所有的總線訪問(wèn)都由該主機(jī)發(fā)起,從機(jī)節(jié)點(diǎn)響應(yīng)主機(jī)的呼叫完成地址和命令識(shí)別、應(yīng)答、數(shù)據(jù)的傳送等功能,從而實(shí)現(xiàn)有序的總線通信。4.4.2主機(jī)及人機(jī)交互電路設(shè)計(jì)在該系統(tǒng)的設(shè)計(jì)中,采用了總線方式進(jìn)行存儲(chǔ)器和I/O端口的擴(kuò)展。圖4-3是主處理器W78E58B及其總線擴(kuò)展電路。從圖中可以看出,AD[7..0]經(jīng)過(guò)74LS373鎖存形成低8位地址A[7..0],再與由P2口送出的高8位地址A[15..7]共同形成16位地址總線A[15..0]。圖4-4是系統(tǒng)中擴(kuò)展的SRAM與總線之間的連接圖,從圖中可以看出,當(dāng)A15為低電平時(shí)進(jìn)行總線訪問(wèn)并選中SRAM芯片62256,其地址范圍為0000H~7FFFH。圖4-3主處理器及其總線擴(kuò)展結(jié)構(gòu)圖4-4SRAM擴(kuò)展連接圖系統(tǒng)中為了實(shí)現(xiàn)鍵盤(pán)和LCD接口,采用了一片74LS138進(jìn)行地址譯碼。圖4-5是I/O端口地址譯碼電路圖,從圖中可以看出,當(dāng)A15為高電平時(shí)譯碼電路工作,采用地址總線信號(hào)里的A2、A1、A0作為譯碼輸入信號(hào),即采用了一種部分譯碼的方式進(jìn)行譯碼。譯碼輸出信號(hào)和分別用于鍵盤(pán)接口和LCD顯示器接口的訪問(wèn)控制。從該譯碼電路也不難看出,鍵盤(pán)接口和LCD接口映射的端口地址分別為8000H和8001H,其中鍵盤(pán)接口為輸入端口,LCD端口為輸出端口。鍵盤(pán)接口電路如圖4-6所示,從圖中可知,當(dāng)鍵盤(pán)端口為讀取狀態(tài)時(shí),信號(hào)和信號(hào)同時(shí)為低,鍵盤(pán)的狀態(tài)通過(guò)74LS244被單片機(jī)讀取,在進(jìn)行鍵盤(pán)掃描的過(guò)程中單片機(jī)要反復(fù)讀取該鍵盤(pán)端口的狀態(tài)。圖4-5I/O端口譯碼電路圖4-6鍵盤(pán)接口電路

LCD顯示器接口電路如圖4-7所示。該端口為一輸出端口,當(dāng)寫(xiě)該端口時(shí),信號(hào)和信號(hào)同時(shí)有效,通過(guò)單片機(jī)總線送出的LCD操作命令和數(shù)據(jù)就被寫(xiě)入并鎖存到74LS374的輸出端,再通過(guò)LCD的控制端口操作把命令或者數(shù)據(jù)送到LCD顯示模塊的內(nèi)部。此次設(shè)計(jì)中選用的LCD顯示模塊LCM12864是北京青云創(chuàng)新科技發(fā)展有限公司的產(chǎn)品,下面就該模塊的結(jié)構(gòu)和操作加以簡(jiǎn)要介紹。

1.LCM12864的外形結(jié)構(gòu)及引腳所選液晶顯示模塊的外形如圖4-8所示。該液晶模塊共有20個(gè)引腳,通過(guò)這些引腳外部的處理器可以控制LCD顯示器工作。各引腳的序號(hào)與名稱的對(duì)應(yīng)關(guān)系如表4-1所示。圖4-7LCD顯示器接口電路圖4-8LCM12864外形結(jié)構(gòu)表4-1LCM12864模塊引腳是LCD模塊0~63列的控制使能端,是LCD模塊64~127列的控制使能端;GND接電源地端,VCC為模塊邏輯電源輸入端,接?+5V;VO為L(zhǎng)CD的工作電壓,用于調(diào)節(jié)LCD顯示的對(duì)比度;?RS為指令/數(shù)據(jù)的選擇信號(hào),當(dāng)RS為高電平時(shí)D0~D7為數(shù)據(jù)信號(hào),當(dāng)RS為低電平時(shí)D0~D7為指令信號(hào);R/W為讀/寫(xiě)控制信號(hào),當(dāng)R/W為高電平時(shí)表示當(dāng)前進(jìn)行的操作為讀操作,當(dāng)R/W為低電平時(shí)表示當(dāng)前的操作為寫(xiě)操作;E為模塊操作使能信號(hào),低電平有效;D0~D7為8位數(shù)據(jù)端,用來(lái)向LCD模塊寫(xiě)入數(shù)據(jù)/命令或從LCD模塊中讀取狀態(tài)數(shù)據(jù);A為背光電源正端,K為背光電源負(fù)端,當(dāng)A、K間加正向電壓并提供足夠強(qiáng)的電流時(shí)LCD模塊背光就會(huì)點(diǎn)亮;為復(fù)位信號(hào),VOUT為負(fù)電源輸出端,為?-10V。圖4-9是LCD模塊內(nèi)部結(jié)構(gòu)框圖。對(duì)于用戶來(lái)講,要對(duì)LCD模塊進(jìn)行操作只需通過(guò)模塊的接口向LCD模塊內(nèi)部的控制器發(fā)送正確的命令和數(shù)據(jù)即可,其他工作由LCD內(nèi)部的處理器來(lái)完成。圖4-9LCD模塊內(nèi)部結(jié)構(gòu)

2.LCD模塊的基本操作

(1)顯示開(kāi)關(guān)控制代碼見(jiàn)表4-2。

D=1表示顯示開(kāi)(DISPLAYON),D=0表示顯示關(guān)(DISPLAYOFF)。該操作用來(lái)控制LCD模塊顯示的開(kāi)或關(guān),不管開(kāi)或關(guān),LCD模塊內(nèi)部的狀態(tài)保持不變。

(2)設(shè)置頁(yè)地址(X地址)操作代碼見(jiàn)表4-3。

LCD模塊顯示屏上的每一個(gè)點(diǎn)與模塊內(nèi)部的顯示RAM存儲(chǔ)器的一位相對(duì)應(yīng)。該模塊共有128×64個(gè)點(diǎn),這些點(diǎn)被排列成64行128列,其中每8行稱為一頁(yè),共8頁(yè)。設(shè)置頁(yè)地址實(shí)際上就是設(shè)置顯示區(qū)域所對(duì)應(yīng)的RAM的地址,把數(shù)據(jù)寫(xiě)入到對(duì)應(yīng)的RAM中就可以顯示在對(duì)應(yīng)的區(qū)域中。DB7~DB0的低3位用來(lái)表示頁(yè)地址。讀/寫(xiě)數(shù)據(jù)對(duì)頁(yè)地址沒(méi)有影響,頁(yè)地址由本指令或RST信號(hào)改變,復(fù)位后頁(yè)地址為0。頁(yè)地址也稱為X地址。表4-2顯示開(kāi)關(guān)控制代碼表4-3設(shè)置頁(yè)地址操作代碼

(3)設(shè)置列地址(Y地址)操作代碼見(jiàn)表4-4。該指令的作用是將A5~A0送入列地址計(jì)數(shù)器,作為顯示RAM的Y地址指針,在對(duì)顯示RAM進(jìn)行讀/寫(xiě)操作后,Y地址指針自動(dòng)加1,指向下一個(gè)RAM單元。要在LCD屏上顯示圖形或者文字信息,首先就要指定顯示的區(qū)域,頁(yè)地址X和列地址Y的設(shè)置指令實(shí)際上就是指定顯示區(qū)域的左上角的起始坐標(biāo)。圖4-10表明了行列地址的關(guān)系。

(4)設(shè)置顯示起始行操作代碼見(jiàn)表4-5。表4-4設(shè)置列地址操作代碼圖4-10行列地址之間的關(guān)系表4-5設(shè)置顯示起始行操作代碼

(5)讀狀態(tài)操作代碼見(jiàn)表4-6。

BF=0表示LCD模塊當(dāng)前空閑,可進(jìn)行外部操作;BF=1表示模塊正進(jìn)行內(nèi)部操作,不能響應(yīng)外部操作。ON/OFF=0表示當(dāng)前顯示關(guān);ON/OFF=1表示當(dāng)前顯示開(kāi)。RST=1表示模塊當(dāng)前處于復(fù)位狀態(tài);RST=0表示處于正常操作狀態(tài)。

(6)寫(xiě)顯示數(shù)據(jù)操作代碼見(jiàn)表4-7。當(dāng)執(zhí)行該操作時(shí),DB7~DB0引腳上的數(shù)據(jù)D7~D0被寫(xiě)入到模塊內(nèi)部的顯示存儲(chǔ)器中,并且列地址會(huì)自動(dòng)加1。

(7)讀顯示數(shù)據(jù)操作代碼見(jiàn)表4-8。當(dāng)執(zhí)行該操作時(shí),LCD模塊顯示存儲(chǔ)器中的內(nèi)容通過(guò)DB7~DB0被讀出,并由外部處理器取走,每次操作列地址自動(dòng)加1。此次設(shè)計(jì)中LCD端口僅作為輸出口,單片機(jī)通過(guò)接口向LCD模塊寫(xiě)入命令和數(shù)據(jù),不去讀取LCD的狀態(tài)和數(shù)據(jù)。表4-6讀狀態(tài)操作代碼表4-7寫(xiě)顯示數(shù)據(jù)操作代碼表4-8讀顯示數(shù)據(jù)操作代碼4.4.3RS-485通信電路設(shè)計(jì)為了采集多個(gè)點(diǎn)的溫度,取得較遠(yuǎn)的傳輸距離,提高數(shù)據(jù)傳輸?shù)目煽啃圆⑶液?jiǎn)化電路,降低硬件成本,本設(shè)計(jì)采用了RS-485總線來(lái)實(shí)現(xiàn)溫度的采集傳輸。RS-485總線是一種性能優(yōu)良的半雙工通信線路,由于采用了差分信號(hào)進(jìn)行數(shù)據(jù)的傳輸,因而總線的抗干擾性能較強(qiáng),傳輸速度可以達(dá)到10Mb/s。RS-485總線規(guī)范更多的是規(guī)定了總線傳輸?shù)碾姎馓匦?,并沒(méi)有嚴(yán)格的軟件通信協(xié)議,通常情況下用戶需要自己編制通信的協(xié)議及軟件。此次設(shè)計(jì)中選用了MAX485芯片來(lái)實(shí)現(xiàn)RS-485接口,該芯片有8個(gè)引腳,各引腳的定義如表4-9所示。表4-9MAX485引腳圖4-11為RS-485接口電路圖。圖中MAX485的2、3腳并接在一起由單片機(jī)控制,當(dāng)DE/RE為低電平時(shí)總線處于接收狀態(tài),總線上的差分信號(hào)經(jīng)MAX485轉(zhuǎn)換成單端信號(hào)由單片機(jī)的串行口線RXD接收;當(dāng)DE/RE為高電平時(shí)總線處于發(fā)送狀態(tài),由單片機(jī)串口線TXD發(fā)送出的數(shù)據(jù)經(jīng)MAX485轉(zhuǎn)換為差分信號(hào)發(fā)送出去。?在差分對(duì)線上并接120?的終端電阻,用以吸收信號(hào)反射。圖4-11RS-485通信接口4.5溫度測(cè)量控制節(jié)點(diǎn)控制器設(shè)計(jì)4.5.1溫度測(cè)量控制節(jié)點(diǎn)控制器電路設(shè)計(jì)溫度測(cè)量控制節(jié)點(diǎn)控制器(以下簡(jiǎn)稱從機(jī)節(jié)點(diǎn))電路包含溫度傳感器電路、繼電器驅(qū)動(dòng)電路、RS-485總線接口及鍵盤(pán)指示電路等。溫度傳感器用于溫度的測(cè)量,根據(jù)設(shè)計(jì)要求選用了集成數(shù)字化溫度傳感器DS18B20。單片機(jī)主處理器選用了89C2051,通過(guò)串口對(duì)DS18B20進(jìn)行操作,完成溫度的測(cè)量工作。通過(guò)RS-485總線,從機(jī)節(jié)點(diǎn)可以接收主機(jī)的呼叫,并與主機(jī)進(jìn)行通信。主機(jī)可以通過(guò)這種方式采集從機(jī)節(jié)點(diǎn)的溫度,并可以設(shè)置從機(jī)節(jié)點(diǎn)的運(yùn)行溫度值。當(dāng)從機(jī)節(jié)點(diǎn)的溫度達(dá)到設(shè)定溫度值時(shí),從機(jī)控制的繼電器對(duì)溫度進(jìn)行調(diào)節(jié)。從機(jī)節(jié)點(diǎn)電路中設(shè)置了簡(jiǎn)單的鍵盤(pán)和LED指示,主要用于從機(jī)節(jié)點(diǎn)地址的設(shè)置和通信狀態(tài)的指示。圖4-12是溫度測(cè)量控制節(jié)點(diǎn)控制器電路圖。圖4-12溫度測(cè)量控制節(jié)點(diǎn)控制器電路4.5.2DS18B20原理與操作

1.DS18B20概況

DS18B20是DALLAS公司生產(chǎn)的一線式數(shù)字溫度傳感器,具有3引腳TO-92小體積封裝形式,測(cè)溫分辨率可達(dá)0.0625℃,被測(cè)溫度用帶符號(hào)擴(kuò)展的16位數(shù)字量方式串行輸出。其工作電源可采用直接供電方式,也可采用寄生電源供電方式。CPU只需一根端口線就能與多個(gè)DS18B20通信,占用微處理器的端口線少,構(gòu)成系統(tǒng)時(shí)硬件結(jié)構(gòu)簡(jiǎn)單。

DS18B20測(cè)量溫度范圍為-55~+125℃,在-10~+85℃范圍內(nèi),精度為±0.5℃?,F(xiàn)場(chǎng)溫度直接以“一線總線”的數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性。DS18B20適合于惡劣環(huán)境的現(xiàn)場(chǎng)溫度測(cè)量,應(yīng)用范圍廣。

2.DS18B20內(nèi)部結(jié)構(gòu)圖4-13為DS18B20內(nèi)部結(jié)構(gòu)框圖。當(dāng)DS18B20工作時(shí),溫度傳感器進(jìn)行溫度轉(zhuǎn)換并把轉(zhuǎn)換結(jié)果存入高速緩存存儲(chǔ)器內(nèi)的兩個(gè)字節(jié)中,通過(guò)單總線接口,用戶可以讀取到溫度轉(zhuǎn)換結(jié)果。其中64位的ROM從高位到低位依次為8位CRC、48位序列號(hào)和8位產(chǎn)品代碼(28H),每一個(gè)DS18B20都有唯一的48位序列號(hào),這是區(qū)分不同傳感器芯片的標(biāo)識(shí),這也正是DS18B20可以采用單總線結(jié)構(gòu)的原因。高速緩存存儲(chǔ)器由9個(gè)字節(jié)組成,其中第1、2個(gè)字節(jié)用來(lái)存儲(chǔ)溫度轉(zhuǎn)換結(jié)果,第3、4個(gè)字節(jié)用于存放溫度報(bào)警值的備份。DS18B20內(nèi)部有兩個(gè)E2PROM寄存器TH、TL,分別用于存放高、低溫報(bào)警值,DS18B20工作時(shí)將這兩個(gè)寄存器內(nèi)的值復(fù)制到高速緩存寄存器中。高速緩存寄存器的第5個(gè)字節(jié)為配置寄存器,第6~8個(gè)字節(jié)保留未用,第9個(gè)字節(jié)為前8個(gè)字節(jié)數(shù)據(jù)內(nèi)容的CRC校驗(yàn)碼。圖4-13DS18B20內(nèi)部結(jié)構(gòu)圖

3.DS18B20的配置

DS18B20的配置是通過(guò)配置寄存器實(shí)現(xiàn)的,配置寄存器的結(jié)構(gòu)如表4-9所示。其中,TM為測(cè)試模式標(biāo)志位,出廠時(shí)被寫(xiě)入0,用戶不能改變;R0、R1為溫度分辨率設(shè)置位,其對(duì)應(yīng)四種分辨率,如表4-10所示,出廠時(shí)R0、R1置為缺省值:R0=1,R1=1(即12位分辨率),用戶可根據(jù)需要改寫(xiě)配置寄存器以獲得合適的分辨率。分辨率越高,單次轉(zhuǎn)換時(shí)間越長(zhǎng)。表4-9配置寄存器的結(jié)構(gòu)表4-10配置寄存器與分辨率的關(guān)系

4.DS18B20溫度的存儲(chǔ)

DS18B20溫度轉(zhuǎn)換結(jié)果被存放在高速緩存的第1、2個(gè)字節(jié)單元中。數(shù)據(jù)的存放格式如表4-11所示。其中,高字節(jié)的高5位為溫度值的符號(hào),S=0表示轉(zhuǎn)換的結(jié)果為正,S=1表示轉(zhuǎn)換的結(jié)果為負(fù)。溫度值的整數(shù)部分為8位,小數(shù)部分為4位,采用不同的轉(zhuǎn)換精度時(shí),小數(shù)部分的有效位數(shù)不同。表4-12為典型溫度轉(zhuǎn)換結(jié)果對(duì)照表。

5.DS18B20的接口本次設(shè)計(jì)中DS18B20采用直接供電方式,并且一個(gè)測(cè)溫節(jié)點(diǎn)只接一個(gè)傳感器,電路結(jié)構(gòu)簡(jiǎn)單,具有較高的可靠性。圖4-14為單片機(jī)與其接口連接圖。表4-11溫度的存放格式表4-12典型溫度轉(zhuǎn)換結(jié)果對(duì)照?qǐng)D4-14DS18B20與單片機(jī)的接口4.5.3RS-485通信接口設(shè)計(jì)從機(jī)節(jié)點(diǎn)的RS-485總線接口與主機(jī)的RS-485總線接口類似,不同點(diǎn)在于每一個(gè)從機(jī)節(jié)點(diǎn)均有兩個(gè)總線連接口,這樣做的主要目的是為了實(shí)現(xiàn)菊花鏈形式的總線連接。圖4-15為從機(jī)節(jié)點(diǎn)總線接口電路。對(duì)每一個(gè)從機(jī)節(jié)點(diǎn),一個(gè)接口用于連接RS-485總線輸入,另一個(gè)接口用于連接其他的總線節(jié)點(diǎn),這樣通過(guò)級(jí)聯(lián)就可以在系統(tǒng)中連接多個(gè)從機(jī)節(jié)點(diǎn)。每一個(gè)從機(jī)節(jié)點(diǎn)均有一個(gè)120?的終端電阻,但是該終端電阻是通過(guò)一個(gè)跳線J1連接的,如果節(jié)點(diǎn)不是總線上的最后一個(gè)節(jié)點(diǎn),則可以斷開(kāi)跳線,不連接該終端電阻。如果該從機(jī)節(jié)點(diǎn)為總線系統(tǒng)中的最末一個(gè)節(jié)點(diǎn),則該節(jié)點(diǎn)上的終端電阻必須連接。圖4-15從機(jī)節(jié)點(diǎn)總線接口電路4.5.4其他電路

1.鍵盤(pán)與顯示電路從機(jī)節(jié)點(diǎn)系統(tǒng)中設(shè)置有3個(gè)按鍵和4個(gè)LED發(fā)光管,按鍵主要用于從機(jī)節(jié)點(diǎn)地址號(hào)的設(shè)置。使用從機(jī)節(jié)點(diǎn)時(shí)必須設(shè)置正確的節(jié)點(diǎn)地址號(hào),當(dāng)一個(gè)節(jié)點(diǎn)第一次接入到總線系統(tǒng)中時(shí)其地址號(hào)是不確定的,因此必須進(jìn)行設(shè)置,設(shè)置的方法為:節(jié)點(diǎn)上電后進(jìn)入一個(gè)10s的等待時(shí)間,在該時(shí)間內(nèi)如果S2鍵按下即進(jìn)入到地址設(shè)置模式,通過(guò)S3、S4兩個(gè)鍵可以設(shè)置節(jié)點(diǎn)號(hào)的大小,設(shè)置的節(jié)點(diǎn)號(hào)通過(guò)4位LED以二進(jìn)制的形式顯示出來(lái),再次按下S2鍵則設(shè)置的從機(jī)節(jié)點(diǎn)編號(hào)就被存入到E2PROM芯片AT24C02中,主機(jī)工作時(shí)會(huì)讀出該編號(hào)作為該從機(jī)的節(jié)點(diǎn)地址。如果一個(gè)節(jié)點(diǎn)的地址已經(jīng)被設(shè)置過(guò),下次上電時(shí)用戶無(wú)需設(shè)置,系統(tǒng)會(huì)在等待10s之后進(jìn)入工作模式,從E2PROM中讀取前面設(shè)置好的地址進(jìn)行工作。

2.E2PROM電路從機(jī)節(jié)點(diǎn)中E2PROM的用途主要有兩個(gè):一個(gè)用于記錄設(shè)定溫度和該節(jié)點(diǎn)的歷史溫度,另一個(gè)用于記錄本節(jié)點(diǎn)的節(jié)點(diǎn)地址。

3.繼電器接點(diǎn)繼電器接點(diǎn)在溫度調(diào)節(jié)時(shí)使用,主機(jī)通過(guò)RS-485總線設(shè)置從機(jī)節(jié)點(diǎn)的工作溫度,當(dāng)從機(jī)節(jié)點(diǎn)的溫度超過(guò)或者低于設(shè)定溫度時(shí),繼電器接點(diǎn)閉合,驅(qū)動(dòng)本節(jié)點(diǎn)上的溫度調(diào)節(jié)設(shè)備工作,使溫度維持在設(shè)定溫度。4.6軟件設(shè)計(jì)4.6.1系統(tǒng)程序結(jié)構(gòu)該系統(tǒng)的硬件結(jié)構(gòu)分為主機(jī)和從機(jī)兩個(gè)部分,這也就決定了整個(gè)系統(tǒng)的軟件也分主機(jī)程序和從機(jī)程序兩個(gè)部分。主機(jī)程序的主要功能包括:通過(guò)RS-485總線采集各個(gè)從機(jī)節(jié)點(diǎn)的溫度,并通過(guò)LCD顯示器把采集到的溫度進(jìn)行顯示;可以通過(guò)鍵盤(pán)輸入各個(gè)從機(jī)節(jié)點(diǎn)的設(shè)定溫度,并通過(guò)RS-485總線把設(shè)定溫度傳送給對(duì)應(yīng)的從機(jī)。主機(jī)監(jiān)視從機(jī)溫度時(shí)可以采用自動(dòng)循環(huán)模式,也可以采用手動(dòng)模式,為操作帶來(lái)了方便。從機(jī)程序的主要功能包括:進(jìn)行溫度測(cè)量,把測(cè)量的溫度值與設(shè)定的溫度值進(jìn)行比較,控制本節(jié)點(diǎn)的繼電器進(jìn)行動(dòng)作,驅(qū)動(dòng)相應(yīng)的溫度調(diào)節(jié)設(shè)備對(duì)溫度進(jìn)行調(diào)節(jié);從機(jī)節(jié)點(diǎn)還要響應(yīng)主機(jī)的呼叫,將該從機(jī)節(jié)點(diǎn)的當(dāng)前溫度值和設(shè)定溫度值發(fā)送給主機(jī),或者接收主機(jī)對(duì)從機(jī)節(jié)點(diǎn)運(yùn)行溫度的設(shè)置。除此之外,從機(jī)節(jié)點(diǎn)程序還可以實(shí)現(xiàn)從機(jī)地址的設(shè)置功能等。4.6.2主機(jī)程序設(shè)計(jì)主機(jī)程序的結(jié)構(gòu)框圖如圖4-16所示。主機(jī)上電之后,先進(jìn)行基本的初始化操作,包括LCD端口、串行口、鍵盤(pán)及指示燈的初始化操作等。初始化完成之后主機(jī)會(huì)自動(dòng)進(jìn)入自動(dòng)掃描工作模式,在該模式下主機(jī)逐一地訪問(wèn)各個(gè)從機(jī)節(jié)點(diǎn),從機(jī)節(jié)點(diǎn)響應(yīng)主機(jī)呼叫并把該節(jié)點(diǎn)的當(dāng)前溫度和設(shè)定溫度傳送給主機(jī),主機(jī)顯示從機(jī)節(jié)點(diǎn)送回的溫度和設(shè)定溫度值。如果用戶要單獨(dú)查看某個(gè)節(jié)點(diǎn)的溫度情況,則可以通過(guò)鍵盤(pán)進(jìn)入手動(dòng)模式進(jìn)行操作,具體的操作方法為:在自動(dòng)掃描工作模式下按1號(hào)鍵,則進(jìn)入到手動(dòng)操作模式,進(jìn)入后系統(tǒng)首先與1號(hào)節(jié)點(diǎn)進(jìn)行通信,并把1號(hào)節(jié)點(diǎn)的當(dāng)前溫度和設(shè)定溫度顯示在LCD屏上,用戶如果要查看其他節(jié)點(diǎn)的情況,則可以通過(guò)2號(hào)和3號(hào)鍵來(lái)切換當(dāng)前的節(jié)點(diǎn)號(hào),主機(jī)訪問(wèn)切換到的節(jié)點(diǎn)并把其溫度和設(shè)定溫度顯示出來(lái)。圖4-16主機(jī)程序結(jié)構(gòu)如果被訪問(wèn)的節(jié)點(diǎn)不存在或者通信發(fā)生錯(cuò)誤,則對(duì)應(yīng)節(jié)點(diǎn)的溫度和溫度的設(shè)定值顯示將被忽略,并通過(guò)指示燈指示當(dāng)前通信出錯(cuò)。主機(jī)可以設(shè)置每一個(gè)節(jié)點(diǎn)的運(yùn)行溫度,設(shè)置操作也是在手動(dòng)操作模式下完成的。在手動(dòng)模式下,按5號(hào)鍵即進(jìn)入溫度設(shè)定界面,LCD屏顯示當(dāng)前節(jié)點(diǎn)的設(shè)置溫度值,用戶可以通過(guò)2號(hào)和3號(hào)鍵來(lái)調(diào)整設(shè)定溫度值,調(diào)整完畢后再次按下5號(hào)鍵即可退出溫度設(shè)定界面。此時(shí)主機(jī)把設(shè)定溫度值發(fā)送給從機(jī)節(jié)點(diǎn),溫度設(shè)定工作完成,LCD又返回到手動(dòng)操作模式。要對(duì)某個(gè)節(jié)點(diǎn)的溫度進(jìn)行設(shè)置,必須在手動(dòng)模式下先切換到該節(jié)點(diǎn)與之通信。如果要退出手動(dòng)操作模式重新進(jìn)入自動(dòng)操作模式,則可以在手動(dòng)操作模式下按1號(hào)鍵,即可返回到自動(dòng)操作模式。主機(jī)循環(huán)對(duì)各節(jié)點(diǎn)的溫度情況進(jìn)行采集顯示,對(duì)于不存在的節(jié)點(diǎn)和通信出錯(cuò)的節(jié)點(diǎn),溫度和溫度的設(shè)定值將被忽略。4.6.3從機(jī)程序設(shè)計(jì)

圖4-17是從機(jī)程序的結(jié)構(gòu)框圖。溫度控制從機(jī)節(jié)點(diǎn)主要完成溫度的測(cè)量、與主機(jī)通信及溫度的控制。節(jié)點(diǎn)控制器上電之后先進(jìn)行必要的初始化操作,主要完成指示和串行口E2PROM端口的初始化,隨后進(jìn)入到節(jié)點(diǎn)號(hào)設(shè)置程序,該部分程序的功能是完成從機(jī)節(jié)點(diǎn)編號(hào)的設(shè)置和修改。如果該節(jié)點(diǎn)的編號(hào)已經(jīng)設(shè)置過(guò),則可以不進(jìn)行設(shè)置,經(jīng)過(guò)幾秒鐘的等待之后會(huì)退出節(jié)點(diǎn)編號(hào)設(shè)置程序;如果用戶沒(méi)有對(duì)節(jié)點(diǎn)進(jìn)行編號(hào)或需要修改節(jié)點(diǎn)編號(hào),可以通過(guò)修改程序完成節(jié)點(diǎn)號(hào)的設(shè)置。設(shè)置好的節(jié)點(diǎn)編號(hào)會(huì)被存入E2PROM芯片,下次上電該節(jié)點(diǎn)編號(hào)可以從E2PROM中讀出,因此不用再設(shè)置。圖4-17從機(jī)程序結(jié)構(gòu)為了使用戶能夠清楚地知道節(jié)點(diǎn)的編號(hào),在執(zhí)行完節(jié)點(diǎn)號(hào)設(shè)置程序之后,控制器會(huì)把設(shè)置的節(jié)點(diǎn)編號(hào)從E2PROM中讀出并通過(guò)LED指示燈顯示出來(lái)。RS-485串行口的初始化設(shè)置是在主循環(huán)之前完成的。從機(jī)節(jié)點(diǎn)的主循環(huán)為:檢測(cè)本節(jié)點(diǎn)的溫度→查看有沒(méi)有主機(jī)的通信請(qǐng)求,如果有予以響應(yīng),沒(méi)有則跳過(guò)→檢查當(dāng)前溫度是否超過(guò)設(shè)置溫度,如果超過(guò),則設(shè)置溫度繼電器接點(diǎn)閉合,溫度調(diào)節(jié)設(shè)備運(yùn)行。4.6.4RS-485總線通信程序設(shè)計(jì)在該系統(tǒng)中是以RS-485總線為介質(zhì)把主機(jī)與各個(gè)從機(jī)相連接起來(lái)的,只有主機(jī)擁有RS-485總線的控制權(quán),由它發(fā)起總線訪問(wèn),各個(gè)從機(jī)只對(duì)主機(jī)的總線命令做出響應(yīng),不能主動(dòng)發(fā)起總線訪問(wèn)。主機(jī)與從機(jī)之間的通信過(guò)程如下:主機(jī)需要與某個(gè)從機(jī)進(jìn)行通信,先進(jìn)行地址呼叫,即主機(jī)發(fā)送待訪問(wèn)的從機(jī)地址,并等待從機(jī)進(jìn)行應(yīng)答;此時(shí)各個(gè)從機(jī)均處于地址接收模式,當(dāng)總線連接的各從機(jī)接收到地址信息后,會(huì)把接收到的地址與自身的地址編號(hào)相比較,如果地址不符則該從機(jī)繼續(xù)保持地址監(jiān)聽(tīng)狀態(tài),如果從機(jī)接收到的地址與自身的地址相符,說(shuō)明主機(jī)呼叫該從機(jī),則該從機(jī)轉(zhuǎn)換為發(fā)送狀態(tài),把自己的地址標(biāo)號(hào)發(fā)送到總線上作為向主機(jī)的應(yīng)答信號(hào),之后從機(jī)轉(zhuǎn)入數(shù)據(jù)接收狀態(tài),等待主機(jī)的進(jìn)一步通信請(qǐng)求。主機(jī)如果得到正確的從機(jī)應(yīng)答,即被呼叫的從機(jī)回送了正確的地址號(hào),主機(jī)立刻轉(zhuǎn)換為數(shù)據(jù)發(fā)送模式,此時(shí)主機(jī)與被呼叫的從機(jī)之間就建立起了數(shù)據(jù)通信鏈路,主機(jī)可以向從機(jī)發(fā)送命令和數(shù)據(jù),從機(jī)相應(yīng)地要對(duì)主機(jī)的命令進(jìn)行響應(yīng),接收或發(fā)送數(shù)據(jù)給主機(jī)。在主機(jī)與被呼叫的從機(jī)進(jìn)行數(shù)據(jù)通信的過(guò)程中,其他從機(jī)由于處于地址監(jiān)聽(tīng)模式,因而不會(huì)對(duì)通信造成影響。當(dāng)主機(jī)與被呼叫從機(jī)之間的通信結(jié)束后,當(dāng)前的從機(jī)又會(huì)轉(zhuǎn)入到地址監(jiān)聽(tīng)模式,而主機(jī)則重新轉(zhuǎn)入到地址發(fā)送模式,如果有新的通信主機(jī)又會(huì)重復(fù)前面的過(guò)程。這里主機(jī)與從機(jī)之間進(jìn)行通信主要完成兩個(gè)任務(wù),其一是獲取各個(gè)從機(jī)節(jié)點(diǎn)的溫度,其二是設(shè)置從機(jī)節(jié)點(diǎn)的動(dòng)作溫度值,實(shí)現(xiàn)這些操作的方法是:主機(jī)先呼叫要訪問(wèn)的從機(jī),建立起數(shù)據(jù)通信模式,然后主機(jī)通過(guò)發(fā)送不同的命令表示不同的操作,從機(jī)接收到這些命令后解釋執(zhí)行,如果主機(jī)發(fā)送獲取溫度的命令,則從機(jī)轉(zhuǎn)為發(fā)送狀態(tài)發(fā)送溫度數(shù)據(jù);如果主機(jī)發(fā)送設(shè)置的溫度值的命令,則從機(jī)等待接收要設(shè)置的數(shù)據(jù)。主機(jī)發(fā)送完命令之后,本身也會(huì)根據(jù)所發(fā)送的命令轉(zhuǎn)換自身的狀態(tài),以配合從機(jī)的通信,直至通信過(guò)程結(jié)束。4.7程序清單1.主控制器程序清單

//***********************************

//文件名:define.h

//功能:定義端口和變量

//作者:hadaqu

//時(shí)間:2009-4-15

//***********************************

#defineucharunsignedchar

#defineuintunsignedint

#definenop_nop_();#define key_portXBYTE[0x8000]#definedateportXBYTE[0x8001]sbitlcd_rs=P1^2;sbitlcd_rw=P1^3;sbitlcd_en=P1^4;sbitleft=P1^1;sbitright=P1^0;sbitlcdback=P3^3;sbitRE_DE=P3^5;sbitLED3=P1^7;sbitLED2=P1^6;sbitLED1=P1^5;bitcom_error,over_time_flag;ucharflag;ucharkey;uchartime_count;uchartemp,set_value;ucharadd,point,p;//***********************************//文件名:lcd12864.h//功能:LCD操作函數(shù)//作者:hadaqu//時(shí)間:2009-4-15//***********************************#include<define.h>#include<zimo.h>voiddelay(uintz){ uintx,y; for(x=z;x>0;x--) for(y=220;y>0;y--);}/*voidcheck_busy(){dateport=0xff;lcd_rs=0;lcd_rw=1;lcd_en=1;while(dateport&=0x80){lcd_en=1; lcd_en=0;}}*/voidwrite_com(ucharcom,ucharlcd_left,ucharlcd_right){left=lcd_left;right=lcd_right;//check_busy();lcd_rs=0;lcd_rw=0;dateport=com;lcd_en=1;lcd_en=0;}voidwrite_data(uchardate,ucharlcd_left,ucharlcd_right){left=lcd_left;right=lcd_right;//check_busy();lcd_rs=1;lcd_rw=0;dateport=date;lcd_en=1;lcd_en=0;}voiddisplay_on(ucharo){o=o+0x3e;write_com(o,0,0);}voidstart_line(uchari){i=i+0xc0;write_com(i,0,0);}voidset_xy(ucharx,uchary){x=x+0xb8;y=y+0x40;write_com(x,0,0);

write_com(y,0,0);}voidwdata(uchardate,ucharx,uchary){if(y>=64){set_xy(x,y-64);write_data(date,0,1);

}else{set_xy(x,y);

write_data(date,1,0);}}voidclear(){

ucharx,y;for(x=0;x<8;x++){for(y=0;y<128;y++)wdata(0,x,y);} }voiddisp_Hz(ucharx,uchary,ucharn,ucharfb)//x為該行第x個(gè)字,共8字,y為第幾行,共8行{uchari,dx;

for(i=0;i<16;i++){ dx=Hz[2*i+n*32];//2*i為選擇偶數(shù)行,因其為列掃描

if(fb)dx=~dx;

wdata(dx,y,x*16+i); dx=Hz[(2*i+1)+n*32];

if(fb)dx=~dx;wdata(dx,y+1,x*16+i); }}voiddisp_Ez(ucharx,uchary,ucharn,ucharfb)//顯示數(shù)字或英語(yǔ){uchari,dx;for(i=0;i<8;i++){dx=Ez[2*i+n*16];if(fb)

dx=~dx; wdata(dx,y,x*8+i);//

dx=Ez[(2*i+1)+n*16];if(fb)

dx=~dx;wdata(dx,y+1,x*8+i); }}voiddisp_tu(void) //畫(huà)圖{ucharj;uinti;for(j=0;j<8;j++) //頁(yè)碼

{set_xy(j,0);for(i=1;i<=64;i++)

{write_data(tu[i+j*128],1,0);write_data(tu[63+i+j*128],0,1);}}}voidfloor1(){disp_Hz(0,2,10,1); //disp_Hz(1,2,6,0); //顯示“節(jié)”

disp_Hz(2,2,7,0); //顯示“點(diǎn)”

disp_Hz(3,2,8,0); //顯示“編”

disp_Hz(4,2,9,0); //顯示“號(hào)”

disp_Ez(10,2,10,0); //顯示“:”

disp_Hz(7,2,9,0); //顯示“號(hào)”

disp_Hz(0,4,11,1); //disp_Hz(1,4,0,0); //顯示“當(dāng)”

disp_Hz(2,4,1,0); //顯示“前”

disp_Hz(3,4,2,0); //顯示“溫”

disp_Hz(4,4,3,0); //顯示“度”

disp_Ez(10,4,10,0); //顯示“:”disp_Hz(7,4,3,0); //顯示“度”

disp_Hz(0,6,15,1); //disp_Hz(1,6,4,0); //顯示“設(shè)”

disp_Hz(2,6,5,0); //顯示“置”

disp_Hz(3,6,2,0); //顯示“溫”

disp_Hz(4,6,3,0); //顯示“度”

disp_Ez(10,6,10,0); //顯示“:”

disp_Hz(7,6,3,0); //顯示“度”

if(flag==0){disp_Ez(3,0,23,1); //顯示“=”disp_Hz(2,0,12,1); //disp_Ez(6,0,11,0); //顯示“A”disp_Ez(7,0,12,0); //u

disp_Ez(8,0,13,0); //tdisp_Ez(9,0,14,0); //odisp_Hz(5,0,12,1); //disp_Ez(12,0,23,1); //=}

elseif(flag==1){disp_Ez(3,0,23,1); //=disp_Hz(2,0,12,1); // disp_Ez(6,0,19,0); //Mdisp_Ez(7,0,20,0); //edisp_Ez(8,0,21,0); //ndisp_Ez(9,0,22,0); //u disp_Hz(5,0,12,1); //disp_Ez(12,0,23,1); //=}

elseif(flag==2){disp_Ez(3,0,23,1); //=disp_Hz(2,0,12,1); // disp_Ez(6,0,15,0); //Hdisp_Ez(7,0,16,0); //adisp_Ez(8,0,17,0); //ndisp_Ez(9,0,18,0); //d disp_Hz(5,0,12,1); //disp_Ez(12,0,23,1); //=}}voidfloor2() //設(shè)置節(jié)點(diǎn)溫度界面{disp_Hz(0,0,10,0); //disp_Hz(1,0,10,0); //disp_Hz(2,0,10,0); //disp_Hz(3,0,10,0); //disp_Hz(4,0,10,0); //disp_Hz(5,0,10,0); //disp_Hz(6,0,10,0); //disp_Hz(7,0,10,0); //disp_Hz(1,3,4,0); //設(shè)

disp_Hz(2,3,5,0); //置

disp_Hz(3,3,2,0); //溫

disp_Hz(4,3,3,0); //度

disp_Ez(10,3,10,0); //:

disp_Ez(11,3,set_value/10,0);disp_Ez(12,3,set_value%10,0);disp_Hz(7,3,3,0); //度

disp_Hz(0,6,10,0); //disp_Hz(1,6,10,0); //disp_Hz(2,6,10,0); //disp_Hz(3,6,10,0); //disp_Hz(4,6,10,0); //disp_Hz(5,6,10,0); //

disp_Hz(6,6,10,0); //disp_Hz(7,6,10,0); // }voidlcdinit(){ lcdback=0;display_on(0);clear();display_on(1);start_line(0);disp_tu();delay(3000);clear();}//***********************************//文件名:keyscan.h//功能:鍵盤(pán)掃描操作//作者:hadaqu//時(shí)間:2009-4-15//***********************************ucharkey_scan(void){uchartep;tep=key_port;tep=~tep;if(tep==0){key=0xff;returnkey;}elsedelay(10);//tep=key_port;tep=~tep;if(tep==0){key=0xff;returnkey;}else{switch(tep){case0x01:key=0x01;break;case0x02:key=0x02;break;case0x04:key=0x03;break;case0x08:key=0x04;break;case0x10:key=0x05;break;case0x20:key=0x06;break;case0x40:key=0x07;break;case0x80:key=0x08;break;default:key=0xff;break;}do{tep=key_port; tep=~tep;}while(tep!=0x00);returnkey;}}//***********************************//文件名:zimo.h//功能:定義LCD操作字模//作者:hadaqu//時(shí)間:2009-4-15//***********************************ucharconstcodeHz[]={0x20,0x10,0x22,0x11,0x24,0x11,0x2C,0x11,0x20,0x11,0x20,0x11,0x3F,0x11,0x20,0x11,0x20,0x11,0x28,0x11,0x24,0x11,0xE6,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//"當(dāng)",0*/0x04,0x00,0xF4,0x1F,0x55,0x02,0x55,0x12,0x57,0x12,0xF4,0x1F,0x04,0x00,0x04,0x00,0xE6,0x03,0x05,0x08,0x05,0x10,0xF4,0x0F,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//"前",1*/0x08,0x01,0x11,0x1F,0x82,0x00,0x44,0x10,0x00,0x1F,0x7F,0x11,0x49,0x1F,0x49,0x11,0x49,0x11,0x49,0x1F,0x7F,0x11,0x00,0x1F,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,//"溫",2*/0x00,0x18,0xFE,0x07,0x12,0x10,0x12,0x11,0x12,0x13,0x7E,0x15,0x53,0x09,0x53,0x09,0x7E,0x15,0x12,0x13,0x12,0x11,0x12,0x10,0x02,0x10,0x00,0x00,0x00,0x00,0x00,0x00,//"度",3*/0x20,0x00,0x21,0x00,0xE6,0x1F,0x00,0x08,0x20,0x14,0x50,0x10,0xCF,0x08,0x41,0x05,0x41,0x02,0x4F,0x05,0xD0,0x08,0x50,0x10,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,//"設(shè)",4*/0x04,0x10,0x07,0x10,0xF5,0x1F,0x55,0x15,0x57,0x15,0x55,0x15,0x5D,0x15,0x55,0x15,0x57,0x15,0x55,0x15,0xF5,0x1F,0x07,0x10,0x04,0x10,0x00,0x00,0x00,0x00,0x00,0x00,//"置",5*/0x04,0x00,0x24,0x00,0x24,0x00,0x24,0x00,0x3F,0x00,0xE4,0x1F,0x24,0x00,0x24,0x00,0x3F,0x02,0x24,0x04,0x24,0x04,0xE4,0x03,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//"節(jié)",6*/0x00,0x10,0xE0,0x0D,0x20,0x01,0x20,0x01,0x20,0x05,0x3F,0x19,0x24,0x01,0x24,0x05,0x24,0x19,0x24,0x01,0xE4,0x05,0x04,0x08,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,//"點(diǎn)",7*/0x98,0x19,0x56,0x09,0xB1,0x04,0x18,0x05,0x80,0x00,0xFE,0x1F,0x52,0x02,0xD2,0x1F,0x53,0x02,0xD2,0x1F,0x52,0x12,0xDE,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//"編",8*/0x40,0x00,0x40,0x00,0x5F,0x01,0xD1,0x01,0x51,0x01,0x51,0x01,0x51,0x01,0x51,0x09,0x51,0x11,0x51,0x11,0x5F,0x0F,0x40,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//"號(hào)",9*/0xDF,0xFF,0xDF,0xFF,0x9F,0xE7,0x1F,0xF1,0x1F,0xF8,0x07,0xFC,0x00,0xFC,0x07,0xFC,0x1F,0xF8,0x1F,0xF1,0x9F,0xE7,0xDF,0xFF,0xDF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,//"★",0*/0xFF,0xFF,0xFF,0xF3,0xFF,0xF0,0x3F,0xF0,0x0F,0xF0,0x03,0xF0,0x00,0xF0,0x03,0xF0,0x0F,0xF0,0x3F,0xF0,0xFF,0xF0,0xFF,0xF3,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,//"▲",1*/0xDF,0xFF,0xDF,0xFF,0x9F,0xE7,0x5F,0xF1,0xDF,0xFA,0xE3,0xFD,0xFC,0xFD,0xE3,0xFD,0xDF,0xFA,0x5F,0xF1,0x9F,0xEF,0xDF,0xFF,0xDF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,//"☆",2*/0xFF,0xFF,0x0F,0xFE,0xF7,0xFD,0xFB,0xFB,0xFD,0xF7,0xFD,0xF7,0xFD,0xF7,0xFD,0xF7,0xFD,0xF7,0xFB,0xFB,0xF7,0xFD,0x0F,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,//"○",3*/0xFF,0xFF,0x0F,0xFE,0x07,0xFC,0x03,0xF8,0x01,0xF0,0x01,0xF0,0x01,0xF0,0x01,0xF0,0x01,0xF0,0x03,0xF8,0x07,0xFC,0x0F,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,//"●",4*/0xFF,0xFF,0xBF,0xFF,0x1F,0xFF,0x0F,0xFE,0x07,0xFC,0x03,0xF8,0x01,0xF0,0x03,0xF8,0x07,0xFC,0x0F,0xFE,0x1F,0xFF,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,//"◆",5*/0xFF,0xFF,0xFF,0xF3,0xFF,0xF4,0x3F,0xF7,0xCF,0xF7,0xF3,0xF7,0xFC,0xF7,0xF3,0xF7,0xCF,0xF7,0x3F,0xF7,0xFF,0xF4,0xFF,0xF3,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,//"△",6*/0xFF,0xFF,0x01,0xF0,0xFD,0xF7,0xFD,0xF7,0xFD,0xF7,0xFD,0xF7,0xFD,0xF7,0xFD,0xF7,0xFD,0xF7,0xFD,0xF7,0xFD,0xF7,0x01,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF//"□",7*/};ucharconstcodeEz[]={0xE0,0x03,0x10,0x04,0x08,0x08,0x08,0x08,0x10,0x04,0xE0,0x03,0x00,0x00,0x00,0x00,//"0",0*/0x00,0x00,0x10,0x08,0x10,0x08,0xF8,0x0F,0x00,0x08,0x00,0x08,0x00,0x00,0x00,0x00,//"1",1*/0x00,0x00,0x30,0x0C,0x08,0x0A,0x08,0x09,0x88,0x08,0x70,0x0C,0x00,0x00,0x00,0x00,//"2",2*/0x00,0x00,0x30,0x06,0x08,0x08,0x48,0x08,0x48,0x08,0xB0,0x07,0x00,0x00,0x00,0x00,//"3",3*/0x00,0x01,0xC0,0x02,0x20,0x02,0x10,0x0A,0xFC,0x0F,0x00,0x0A,0x00,0x00,0x00,0x00,//"4",4*/0x00,0x00,0xF8,0x06,0x48,0x08,0x48,0x08,0x48,0x08,0x88,0x07,0x00,0x00,0x00,0x00,//"5",5*/0xE0,0x07,0x90,0x08,0x48,0x08,0x48,0x08,0x48,0x08,0x98,0x07,0x00,0x00,0x00,0x00,//"6",6*/0x00,0x00,0x38,0x00,0x08,0x00,0x88,0x0F,0x68,0x00,0x18,0x00,0x00,0x00,0x00,0x00,//"7",7*/0x30,0x07,0xC8,0x08,0x88,0x08,0x88,0x08,0xC8,0x08,0x30,0x07,0x00,0x00,0x00,0x00,//"8",8*/0xF0,0x0C,0x08,0x09,0x08,0x09,0x08,0x09,0x88,0x04,0xF0,0x03,0x00,0x00,0x00,0x00,//"9",9*/0x00,0x00,0x00,0x00,0x60,0x0C,0x60,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//":",10*/0x00,0x08,0x00,0x0E,0xE0,0x09,0x18,0x01,0xE0,0x09,0x00,0x0E,0x00,0x08,0x00,0x00,//"A",11*/0x40,0x00,0xC0,0x07,0x00,0x08,0x00,0x08,0x40,0x08,0xC0,0x0F,0x00,0x08,0x00,0x00,//"u",12*/0x00,0x00,0x40,0x00,0x40,0x00,0xF0,0x07,0x40,0x08,0x40,0x08,0x00,0x00,0x00,0x00,//"t",13*/0x00,0x00,0x80,0x07,0x40,0x08,0x40,0x08,0x40,0x08,0x80,0x07,0x00,0x00,0x00,0x00,//"o",14*/0x08,0x08,0xF8,0x0F,0x88,0x08,0x80,0x00,0x88,0x08,0xF8,0x0F,0x08,0x08,0x00,0x00,//"H",15*/0x00,0x00,0x80,0x04,0x40,0x0A,0x40,0x09,0x40,0x09,0x80,0x0F,0x00,0x08,0x00,0x00,//"a",16*/0x40,0x08,0xC0,0x0F,0x80,0x08,0x40,0x00,0x40,0x08,0x80,0x0F,0x00,0x08,0x00,0x00,//"n",17*/0x00,0x00,0x80,0x07,0x40,0x08,0x40,0x08,0x48,0x08,0xF8,0x0F,0x00,0x08,0x00,0x00,//"d",18*/0x08,0x08,0xF8,0x0F,0x78,0x00,0x80,0x0F,0x78,0x00,0xF8,0x0F,0x08,0x08,0x00,0x00,//"M",19*/0x00,0x00,0x80,0x07,0x40,0x09,0x40,0x09,0x40,0x09,0x80,0x05,0x00,0x00,0x00,0x00,//"e",20*/0x40,0x08,0xC0,0x0F,0x80,0x08,0x40,0x00,0x40,0x08,0x80,0x0F,0x00,0x08,0x00,0x00,//"n",21*/0x40,0x00,0xC0,0x07,0x00,0x08,0x00,0x08,0x40,0x08,0xC0,0x0F,0x00,0x08,0x00,0x00,//"u",22*/0xDF,0xFE,0xDF,0xFE,0xDF,0xFE,0xDF,0xFE,0xDF,0xFE,0xDF,0xFE,0xFF,0xFF,0xFF,0xFF,//"=",23*/0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,//"-",24//};ucharconstcodetu[]={/*--調(diào)入了一幅圖像:C:\DocumentsandSettings\Administrator\桌面\歡迎使用.bmp--*//*--寬度×高度=128×64--*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xC0,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xC0,0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xC0,0xE0,0xF0,0xF0,0xF0,0xF0,0xF0,0xE7,0xC7,0xFF,0xFF,0xFF,0xFF,0xF0,0xF0,0xF0,0xF0,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xF6,0xFE,0xFC,0xDC,0xDC,0x8C,0x1C,0xFC,0xFE,0xFF,0xFF,0xE7,0xFF,0xFF,0xFE,0xFE,0xFE,0xFE,0xFE,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xE0,0xF8,0xFE,0xFE,0xBC,0xD8,0xF8,0xFB,0xFF,0xFF,0xFF,0xFF,0xFE,0xEC,0xCC,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFB,0xFF,0xFF,0xFF,0x77,0xF3,0xFF,0xFF,0xFF,0x7D,0x3C,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC4,0xC4,0xCE,0xEF,0xFF,0xFF,0x7F,0x7F,0xFF,0xF7,0xC7,0xF7,0xFF,0xFF,0x7F,0x77,0xE7,0xE3,0xE3,0xE1,0xC0,0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x41,0xC1,0xEF,0xEF,0xFF,0xFF,0xF8,0xE7,0xE7,0xCF,0xCF,0xC7,0xC1,0xFF,0xFF,0xFF,0x87,0x87,0x87,0x81,0xC0,0xC0,0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0x07,0x0F,0xEF,0xFF,0xFF,0xFF,0x36,0x3F,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0x0F,0x07,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0xFF,0x1F,0x0F,0x0F,0xFF,0xFF,0xFF,0xC7,0x87,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x03,0x03,0x03,0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x03,0x07,0x07,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0F,0x0F,0x03,0x07,0x06,0x07,0x07,0x07,0x07,0x07,0x0F,0x0F,0x1E,0x1E,0x1E,0x1C,0x1C,0x1C,0x18,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x07,0x07,0x03,0x01,0x03,0x07,0x0F,0x0F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論