版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 摘 要</b></p><p> 隨著現(xiàn)代工農(nóng)業(yè)技術的發(fā)展及人們對生活環(huán)境要求的提高,人們在生活的許多方面都有著對溫度進行感知和控制的需要。而傳統(tǒng)的溫度計由于各種原因,精度不能達到我們預期的效果,隨著現(xiàn)代微電子及信息科學的發(fā)展,數(shù)字溫度計無疑成為溫度計設計的最有效方案。</p><p> 本文是介紹基于單片機的數(shù)字溫度計的設計,該溫
2、度計由中央控制器、溫度檢測器、顯示器及報警部分組成。該溫度計的基本范圍為-50℃-110℃,精度誤差小于0.5℃,LCD液晶顯示器直接讀取溫度值顯示,當測量溫度超出報警門限時,系統(tǒng)將輸出光報警信號。</p><p> 本文主要包括兩個方面的設計:一方面是硬件電路的設計,另一方面是系統(tǒng)程序的設計。其中,硬件電路各部分組成如下:中央控制器采用單片機AT89S51,溫度檢測部分采用DS18B20溫度傳感器,用LCD液
3、晶1602作為顯示器。其次,系統(tǒng)軟件程序包括主程序,溫度值讀取、轉換及計算程序,顯示數(shù)據(jù)刷新程序等。</p><p> 該溫度計整體功能的實現(xiàn)是通過溫度傳感器DS18B20采集溫度信號送該給單片機處理,單片機再把溫度數(shù)據(jù)送液晶顯示器1602顯示。</p><p> 【關鍵詞】單片機 溫度傳感器 DS18B20 LCD液晶顯示器 </p><p><
4、b> ABSTRACT</b></p><p> As the modern industrial and agricultural technology development and people's living environment of increased demand, people in many aspects of life have a right temper
5、ature sensing and control needs. And the traditional thermometer for various reasons, can not achieve the accuracy of the results we expected, with modern microelectronics and the development of information science, digi
6、tal thermometer thermometer undoubtedly become the most effective design programme.</p><p> This paper describes the digital thermometer which is consisted of the central controller, temperature detectors,
7、 monitors and police components.The thermometer’s basic range is from -50 ℃ to 110 ℃,its accuracy error is less than 0.5 ℃ and LCD directly shows numerical temperature. When the measured temperature exceed the limit alar
8、m doors, the system will output alarm signal.</p><p> The paper includes tow aspects of the design: one is hardware circuit design, the other is the system process design. Among them, the hardware component
9、s are as following: the central controller SCM AT89S51,the temperature detection DS18B20 part of a temperature sensor,and LCD monitors, as LCD 1602 F; the system software programs, including the main program, the tempera
10、ture reading, conversion and calculation procedures, the data show that refresh procedures and so on.</p><p> Temperature Sensor DS18B20 acquisition of the temperature signal sent to SCM for processing, SC
11、M then the temperature data sent 1602 F LCD display.</p><p> 【Key words】SCM temperature sensor DS18B20 LCD liquid crystal display </p><p><b> 目 錄</b></p><p><b
12、> 前 言5</b></p><p> 第一章 數(shù)字溫度計的總體方案設計及論證6</p><p> 第二章 數(shù)字溫度計硬件電路的實現(xiàn)8</p><p> 第一節(jié) 復位電路及晶振電路設計8</p><p><b> 一、復位電路8</b></p><p>
13、;<b> 二、晶振電路8</b></p><p> 第二節(jié) 溫度傳感器設計9</p><p><b> 一、概述 9</b></p><p> 二、DS18B20的外形及內(nèi)部結構9</p><p> 三、DS18B20工作原理 14</p><p>
14、 四、DS18B20 溫度測量通信協(xié)議14</p><p> 五、DS18B2的外部電路圖17</p><p> 第三節(jié) 液晶顯示電路設計17</p><p> 一、1602的引腳功能介紹18</p><p> 二、1602的標準字庫18</p><p> 三、1602液晶模塊內(nèi)部的控制指令19
15、</p><p> 四、1602的外部電路圖21</p><p> 第三章 數(shù)字溫度計軟件設計流程及程序22</p><p> 第一節(jié) 主程序設計22</p><p> 第二節(jié) 溫度值讀取程序設計23</p><p> 一、DS18B20的延時程序24</p><p>
16、二、DS18B20的初始化程序24</p><p> 三、DS18B20的讀時序程序25</p><p> 四、DS18B20的寫時序程序26</p><p> 第三節(jié) 計算溫度程序設計27</p><p> 第四節(jié) 顯示數(shù)據(jù)及刷新程序設計28</p><p> 第四章 程序調試29</p
17、><p><b> 結 論36</b></p><p><b> 結束語37</b></p><p><b> 參考文獻38</b></p><p><b> 附 件39</b></p><p><b>
18、 一、英文原文39</b></p><p><b> 二、英文翻譯48</b></p><p> 三、工程設計圖紙57</p><p><b> 四、源程序58</b></p><p><b> 五、教學檔案</b></p><p
19、><b> 前 言</b></p><p> 信息科學和微電子技術的飛速發(fā)展給控制領域帶來了巨大的飛躍,控制技術更加趨向自動化和智能化,為無數(shù)的使用者帶來了方便。在控制領域里,溫度是一個常見的名詞,然而它所帶來的技術問題和所起的作用卻是非同一般的。在控制領域中,對溫度的控制有著舉足輕重的作用。例如陶瓷的燒烤,只有控制住溫度的適度,才能制作出一件完美的藝術品,否則只是一件廢品;還有
20、如釀酒的過程,也需要對溫度進行控制??梢?,在生活的許多方方面面都有著對溫度進行感知和控制的需要。</p><p> 溫度是一個十分重要的物理量,對它的測量與控制有十分重要的意義。隨著現(xiàn)代工農(nóng)業(yè)技術的發(fā)展及人們對生活環(huán)境要求的提高,人們也迫切需要檢測與控制溫度。在人類的生活環(huán)境中,溫度扮演著極其重要的角色。無論你生活在哪里,從事什么工作,無時無刻不在與溫度打著交道。在冶金、鋼鐵、石化、水泥、玻璃、醫(yī)藥等等行業(yè),可
21、以說幾乎80%的工業(yè)部門都不得不考慮著溫度的因素。溫度對于工業(yè)如此重要,由此推進了溫度傳感器的發(fā)展。 </p><p> 測量溫度的基本方法是使用溫度計直接讀取溫度。最常見到的測量溫度的工具是各種各樣的溫度計,例如,水銀玻璃溫度計,酒精溫度計,熱電偶或熱電阻溫度計等。它們常常以刻度的形式表示溫度的高低,人們必須通過讀取刻度值的多少來測量溫度。而在傳統(tǒng)的模擬信號溫度測量系統(tǒng)中,測溫電路的電磁環(huán)境非常惡劣,各
22、種干擾信號較強,模擬溫度信號容易受到干擾而產(chǎn)生測量誤差,影響測量精度,不能滿足數(shù)字化時代的需求。利用單片機和溫度傳感器構成的電子式智能溫度計精度高、抗干擾能力強,可擴展性強、集成方便得到了廣泛的應用。而且可以直接測量溫度,得到溫度的數(shù)字值,既簡單方便,又直觀準確,新型數(shù)字溫度傳感器是溫度計設計的最有效方案。</p><p> 本課題就是一個對溫度進行檢測,采集和顯示的溫度檢測系統(tǒng)。它以單片機(AT89S51)為
23、主要控制器件,DS18B20為溫度傳感器,并通過LCD液晶1602直接顯示所測溫度的新型數(shù)字溫度計。由于本人所學知識有限,設計過程中難免會出現(xiàn)錯誤,還請各位老師指正。</p><p> 第一章 數(shù)字溫度計的總體方案設計及論證</p><p> 根據(jù)系統(tǒng)設計的功能,本時鐘溫度系統(tǒng)的設計必須采用單片機軟件系統(tǒng)實現(xiàn),用單片機的自動控制能力來測量、顯示溫度數(shù)值。</p><
24、;p> 初步確定設計系統(tǒng)由單片機主控模塊、測溫模塊、顯示模塊、報警模塊共4個模塊組成,電路系統(tǒng)框圖如圖1.1所示。</p><p> 圖1.1 系統(tǒng)基本方框圖</p><p> 對于單片機的選擇,如果用8051系列,由于它沒有內(nèi)部RAM,系統(tǒng)又需要一定的內(nèi)存存儲數(shù)據(jù)。AT89S51是一個低功耗、高性能CMOS 8位的單片機,片內(nèi)含8k Bytes ISP的可反復擦寫1000次的
25、Flash只讀程序存儲器,兼容標準MCS-51指令系統(tǒng)及80C51引腳結構,功能強大的AT89S51可為許多嵌入式控制應用系統(tǒng)提供高性價比的解決方案。而AT89S51與AT89C51相比,外型管腳完全相同,AT89C51的HEX程序無須任何轉換可直接在AT89S51運行,且AT89S51比AT89C51新增了一些功能,相比較后,在本設計中選用AT89S51更能很好的實現(xiàn)溫度計控制功能。 </p><p> 測溫
26、電路可以使用熱敏電阻之類的器件,利用其感溫效應,將被測溫度變化的電壓或電流采集過來,進行A/D轉換后,就可以用單片機進行數(shù)據(jù)處理。但是這種感溫電路比較復雜,且采用熱敏電阻精度低,重復性、可靠性都比較差。</p><p> 如果采用溫度傳感器DS18B20可以減少外部硬件電路,而且可以很容易直接讀取被測溫度值,進而轉換,還可以在高溫報警,且成本低、易使用,可以很好的滿足設計要求。所以本文采用傳感器DS18B20代
27、替?zhèn)鹘y(tǒng)的測溫電路。</p><p> 溫度的顯示可以采用LED數(shù)碼管來顯示,LED亮度高、醒目,但是電路復雜,占用資</p><p> 源多且信息量小。而采用液晶顯示器有明顯的優(yōu)點:工作電流比LED小幾個數(shù)量級,功耗低;尺寸小,厚度約為LED的1/3;字跡清晰、美觀、使人舒服;壽命長,使用方便,可得性強。故本設計采用LCD來顯示溫度。</p><p> 第二章
28、 數(shù)字溫度計硬件電路的實現(xiàn)</p><p> 第一節(jié) 復位電路及晶振電路設計</p><p> 根據(jù)方案的設計,系統(tǒng)硬件電路主要由主控單片機AT80S51、溫度傳感器DS18B20、液晶顯示器1602等組成。</p><p> 影響單片機系統(tǒng)運行穩(wěn)定性的內(nèi)部因素包括復位電路和振蕩源的穩(wěn)定性,振蕩源的穩(wěn)定性主要由起振時間、頻率穩(wěn)定度和占空比穩(wěn)定度決定,起振時
29、間可由電路參數(shù)整定,穩(wěn)定度受振蕩器類型、溫度和電壓等參數(shù)影響。</p><p><b> 一、復位電路</b></p><p> 復位電路的基本功能是:系統(tǒng)上電時提供復位信號,直至系統(tǒng)電源穩(wěn)定后,撤銷復位信號。在本系統(tǒng)中,上電復位采用電平方式開關復位,具體電路如圖2.1所示。上電復位采用RC電路,其中電容為10F,電阻為10K。</p><p&
30、gt;<b> 二、晶振電路</b></p><p> 單片機系統(tǒng)里晶振的作用非常大,它結合單片機內(nèi)部的電路,產(chǎn)生單片機所必須的時鐘頻率,單片機的一切指令的執(zhí)行都是建立在這個基礎上的,晶振提供的十種頻率越高,單片機運行的速度也就越快。單片機的晶振頻率應低于40MHZ,本設計中采用的晶振頻率為12MHZ,具體電路如2.2所示,在晶振上并聯(lián)兩個30F電容。</p><p&
31、gt; 第二節(jié) 溫度傳感器設計</p><p> 一、概述 DS18B20溫度傳感器是一種改進型智能溫度傳感器,與傳統(tǒng)的熱敏電阻等測溫元件相比,它能直接讀出被測溫度,并且可根據(jù)實際要求通過簡單的編程實現(xiàn)9~12位的數(shù)字值讀數(shù)方式。DS18B20的性能特點如下: ①獨特的單線接口僅需要一個端口引腳進行通信; ②多個DS18B20可以并聯(lián)在惟一的三線上,實現(xiàn)多點組網(wǎng)功能; ③無須
32、外部器件; ④可通過數(shù)據(jù)線供電,電壓范圍為3.0~5.5V; ⑤零待機功耗; ⑥溫度以9或12位數(shù)字; ⑦用戶可定義報警設置; ⑧報警搜索命令識別并標志超過程序限定溫度(溫度報警條件)的器件; ⑨負電壓特性,電極接反時,溫度計不會因發(fā)熱而燒毀,只是不能正常工作。</p><p> 二、DS18B20的外形及內(nèi)部結構</p><p> 1、
33、DS18B20引腳定義及電源工作方式</p><p> DS18B20的外形及引腳如圖2.3所示。</p><p> DS18B20引腳功能的詳細描述如表2.1所示。</p><p> DS18B20的電源供電方式有兩種,一種為寄生電源供電方</p><p> 式,另一種為外部電源工作方式。其中,在寄生電源供電方式</p>
34、<p> 下,DS18B20從單線信號線上汲取能量:在信號線DQ處于高電 </p><p> 平期間把能量儲存在內(nèi)部電容里,在信號線處于低電平期間消耗</p><p> 電容上的電能工作,直到高電平到來再給寄生電源(電容)充電。 圖2.3 DS18B20的引腳</p><p> 其具體電路如圖2.4。</p><p>
35、; 表2.1 DS18B20詳細引腳功能描述圖</p><p> 圖2.4 寄生電源工作方式</p><p> DS18B20獨特的寄生電源方式有如下三個好處: ①進行遠距離測溫時,無需本地電源; ②可在沒有常規(guī)電源的條件下讀取ROM;
36、; ③電路更簡潔,僅用一根I/O口實現(xiàn)測溫 要使DS18B20進行精確的溫度轉換,I/O線必須保證在溫度轉換期間提供足夠的能量,由于每個DS18B20在溫度轉換期間工作電流要達到1mA,當幾個溫度傳感器掛在同一根I/O線上進行多點測溫時,只靠4.7K上拉電阻就無法提供足夠的能量,會造成無法轉換溫度或溫度誤差大。 因此,圖2.4的寄生電源電路只適應于單一溫度傳感器測溫情況下使用,不
37、適宜采用電池供電系統(tǒng)中。并且工作電源VCC必須保證在5V,當電源電壓下降時,寄生電源能夠汲取的能量也降低,會使溫度誤差變大。 DS18B20外部電源供電方式如圖2.5所示,其工作電源由VDD引腳接入,此時I/O線不需要強上拉,不存在電源電流不足的問題,可以保證轉換精度,同時在總線理論上可以掛接任意多個DS18B20傳感器,組成多點測溫系統(tǒng)。注意:在外部供電的方式下,DS18B20的GND引腳不能懸空,否則不能轉換溫度,讀取的溫度
38、總是85</p><p> 外部電源供電方式是DS18B20最佳的工作方式,工作穩(wěn)定可靠,抗干擾能力強,而且電路也比較簡單,本設計中使用外部電源供電方式。在外接電源方式下,可以充分發(fā)揮DS18B20寬</p><p> 電源電壓范圍的優(yōu)點,即使電源電壓VCC降到3V時,依然能夠保證溫度量精度。</p><p> 圖2.5 外部電源工作方式</p>
39、<p> 2、DS18B20內(nèi)部結構</p><p> DS18B20內(nèi)部結構如圖2.6,它主要由四部分組成:64位光刻ROM、溫度傳感器、存儲器、非揮發(fā)的溫度報警觸發(fā)器TH和TL。</p><p> 圖2.6 DS18B20內(nèi)部結構圖</p><p><b> (1)、光刻ROM</b></p><p&
40、gt; 光刻ROM中的64位序列號是出廠前被光刻好的,它可以看作是該DS18B20的地址序列碼。64位光刻ROM的排列是:開始8位(28H)是產(chǎn)品類型標號,接著的48位是該DS18B20自身的序列號,最后8位是前面56位的循環(huán)冗余校驗碼(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一個DS18B20都各不相同,這樣就可以實現(xiàn)一根總線上掛接多個DS18B20的目的。</p><p><b>
41、?。?)、溫度傳感器</b></p><p> DS18B20中的溫度傳感器可完成對溫度的測量,以12位轉化為例:用16位符號擴展的二進制補碼讀數(shù)形式提供,以0.0625℃/LSB形式表達,其中S為符號位,12位轉化后得到的12位數(shù)據(jù),存儲在DS18B20的兩個8比特的RAM中。DS18B20溫度值格式如二進制表2.2所示,其中,前5位是符號位,如果測得的溫度大于0,這5位為0,只要將測得的數(shù)值乘以
42、0.0625即可得到實際溫度;如果溫度小于0,這5位為1,測到的數(shù)值需要取反加1再乘于 0.0625即可得到實際溫度。</p><p> 例如+125℃的數(shù)字輸出為07D0H,+25.0625℃的數(shù)字輸出為0191H,-25.0625℃的數(shù)字輸出為FF6FH,-55℃的數(shù)字輸出為FC90H。</p><p> 表2.2 DS18B20溫度值格式表</p><p>
43、; ?。?)、DS18B20的存儲器</p><p> DS18B20溫度傳感器的內(nèi)部存儲器包括一個高速暫存RAM和一個非易失性的可電擦除的EEPRAM,后者存放高溫度和低溫度觸發(fā)器的TH、TL。</p><p> ①、配置寄存器DS18B20配置寄存器各字節(jié)意義如表2.3下:</p><p> 表2.3 DS18B20寄存器中各位內(nèi)容</p>
44、<p> 其中,低五位一直都是"1",TM是測試模式位,用于設置DS18B20在工作模式還是在測試模式。在DS18B20出廠時該位被設置為0,用戶不要去改動。其中,R1和R0用來設置分辨率,具體設置如表2.4所示:(DS18B20出廠時被設置為12位)。</p><p> 表2.4 溫度分辨率設置表</p><p> ?、凇⒏咚贂捍娲鎯ζ?#160;
45、 高速暫存存儲器由9個字節(jié)組成,其分配如表2.5所示。當溫度轉換命令發(fā)布后,經(jīng)轉換所得的溫度值以二進制補碼形式存放在高速暫存存儲器的第0和第1個字節(jié)。單片機可通過單線接口讀到該數(shù)據(jù),讀取時低位在前,高位在后,數(shù)據(jù)格式如表2.2所示。對應的溫度計算:當符號位S=0時,直接將二進制位轉換為十進制;當S=1時,先將補碼變?yōu)樵a,再計算十進制值。第九個字節(jié)是冗余檢驗字節(jié)。</p><p&
46、gt; 表2.5 DS18B20暫存寄存器分布</p><p> 三、DS18B20工作原理 DS18B20的溫度值的位數(shù)因分辨率不同而不同,溫度轉換時的最大延時為750ms。 DS18B20測溫原理如圖2.7所示。圖中低溫度系數(shù)晶振的振蕩頻率受溫度影響很小,用于產(chǎn)生固定頻率的脈沖信號送給計數(shù)器1。高溫度系數(shù)晶振隨溫度變化其振蕩率明顯改變,所產(chǎn)生的信號作為計數(shù)器
47、2的脈沖輸入。計數(shù)器1和溫度寄存器被預置在-55℃所對應的一個基數(shù)值。計數(shù)器1對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進行減法計數(shù),當計數(shù)器1的預置值減到0時,溫度寄存器的值將加1,計數(shù)器1的預置將重新被裝入,計數(shù)器1重新開始對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進行計數(shù),如此循環(huán)直到計數(shù)器2計數(shù)到0時,停止溫度寄存器值的累加,此時溫度寄存器中的數(shù)值即為所測溫度。圖中的斜率累加器用于補償和修正測溫過程中的非線性,其輸出用于修正計數(shù)器1的預置值。</
48、p><p> 圖2.7 DS18B20測溫原理</p><p> 四、DS18B20 溫度測量通信協(xié)議</p><p> 由于DS18B20采用的是1-Wire總線協(xié)議方式,即在一根數(shù)據(jù)線實現(xiàn)數(shù)據(jù)的雙向傳輸,而對AT89S51單片機來說,硬件上并不支持單總線協(xié)議,因此,我們必須采用軟件的方法來模擬單總線的協(xié)議時序來完成對DS18B20芯片的訪問?! ∮捎贒S1
49、8B20是在一根I/O線上讀寫數(shù)據(jù),因此,對讀寫的數(shù)據(jù)位有著嚴格的時序要求。</p><p> DS18B20有嚴格的通信協(xié)議來保證各位數(shù)據(jù)傳輸?shù)恼_性和完整性。該協(xié)議定義了幾種信號的</p><p> 時序:初始化時序、讀時序、寫時序。所有時序都是將主機作為主設備,單總線器件作為從設備。而每一次命令和數(shù)據(jù)的傳輸都是從主機主動啟動寫時序開始,如果要求單總線器件回送數(shù)據(jù),在進行寫命令后,
50、主機需啟動讀時序完成數(shù)據(jù)接收。數(shù)據(jù)和命令的傳輸都是低位在先。 DS18B20的復位時序如圖2.8所示: 圖2.8 DS18B20的復位時序</p><p> DS18B20的讀時序如圖2.9所示:</p><p> 圖2.9 DS18B20的讀時序</p><p> 對于DS18B20的讀時序分為讀0時
51、序和讀1時序兩個過程?! τ贒S18B20的讀時隙是從主機把單總線拉低之后,在15um之內(nèi)就得釋放單總線,以讓DS18B20把數(shù)據(jù)傳輸?shù)絾慰偩€上。DS18B20在完成一個讀時序過程,至少需要60us才能完成。 DS18B20的寫時序如圖2.10所示:</p><p> 圖2.10 DS18B20的寫時序</p><p> 對于DS18B20的寫時序仍然分為寫0時序和寫1時序
52、兩個過程?! τ贒S18B20寫0和寫1時序的要求不同,當要寫0時序時,單總線要被拉低至少60us,保證DS18B20能夠在15us到45us之間能夠正確地采樣I/O總線上的“0”電平,當要寫1時序時,單總線被拉低之后,在15us之內(nèi)就得釋放單總線。 系統(tǒng)對 DS18B20 的各種操作必須按協(xié)議進行。根據(jù) DS18B20 的協(xié)議規(guī)定,微控制器控制 DS18B20 完成溫度的轉換必須經(jīng)過以下 4 個步驟 :</p>
53、<p> ?、倜看巫x寫前對 DS18B20 進行復位初始化。復位要求主 CPU 將數(shù)據(jù)線下拉 500us ,然后釋放, DS18B20 收到信號后等待 16us~60ms 左右,然后發(fā)出60us~240us 的存在低脈沖,主 CPU 收到此信號后表示復位成功。</p><p> ?、诎l(fā)送一條 ROM 指令,具體ROM指令如表2.6所示:</p><p> 表2.6 DS18
54、B20的ROM指令集</p><p> ③發(fā)送存儲器指令,具體存儲器指令如表2.7所示。</p><p><b> ?、苓M行數(shù)據(jù)通信。</b></p><p> 表2.7 DS18B20 的存儲器指令集</p><p> 五、DS18B2的外部電路圖</p><p> 根據(jù)設計要求,傳感器
55、的硬件電路圖如圖2.11所示。</p><p> 圖2.11 DS18B20外部電路圖</p><p> 第三節(jié) 液晶顯示電路設計</p><p> 液晶屏顯示模塊與數(shù)碼管相比,它顯得更為專業(yè)、漂亮。液晶顯示屏以其微功耗、體積小、顯示內(nèi)容豐富、超薄輕巧、使用方便等諸多優(yōu)點,在通訊、儀器儀表、電子設備、家用電器等低功耗應用系統(tǒng)中得到越來越廣泛的應用,使這些電
56、子設備的人機界面變得越來越直觀形象,目前已廣泛應用于電子表、計算器、IC卡電話機、液晶電視機、便攜式電腦、掌上型電子玩具、復</p><p> 印機、傳真機等許多方面。1602字符型液晶模塊(帶背光),是目前工控系統(tǒng)中使用最為廣泛的液晶屏之一。</p><p> 一、1602的引腳功能介紹</p><p> 1602采用標準的16腳接口,其引腳功能如下:<
57、;/p><p> 第1腳:VSS為電源地,接GND?!? 第2腳:VDD接5V正電源。 第3腳:VL為液晶顯示器對比度調整端,接正電源時對比度最弱,接地電源時對比度最高,對比度過高時會產(chǎn)生“鬼影”,使用時可以通過一個10K的電位器調整對比度。 第4腳:RS為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器?! ?第5腳:RW為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當RS和RW
58、共同為低電平時可以寫入指令或者顯示地址,當RS為低電平RW為高電平時可以讀忙信號,當RS為高電平RW為低電平時可以寫入數(shù)據(jù)?! ?第6腳:E端為使能端,當E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令?! ?第7~14腳:D0~D7為8位雙向數(shù)據(jù)線?! ?第15腳:BLA背光電源正極(+5V)輸入引腳?! ?第16腳:BLK背光源負極,接GND</p><p> 二、1602的標準字庫
59、60; 1602液晶模塊內(nèi)帶標準字庫,內(nèi)部的字符發(fā)生存儲器(CGROM)已經(jīng)存儲了192個5×7點陣字符,這些字符如表3.1所示。</p><p> 另外還有字符生成RAM(CGRAM)512字節(jié),供用戶自定義字符,這些字符有:阿拉伯數(shù)字、英文字母的大小寫、常用的符號、和日文假名等,每一個字符都有一個固定的代碼,比如大寫的英文字母“A”的代碼是01000001B(41
60、H),顯示時模塊把地址41H中的點陣字符圖形顯示出來,我們就能看到字母“A”。</p><p> 表3.1 CGROM和CGRAM中字符代碼與字符圖形部分對應關系</p><p> 三、1602液晶模塊內(nèi)部的控制指令</p><p> 1602液晶模塊內(nèi)部的控制器共有11條控制指令,如表3.2所示。</p><p> 1602的讀寫操
61、作、屏幕和光標的操作都是通過指令編程來實現(xiàn)的(其中,1為高電平、0為低電平),各指令的解釋如下:</p><p> 指令1:清顯示,指令碼01H,光標復位到地址00H位置;</p><p> 指令2:光標復位,光標返回到地址00H;指令3:光標和顯示模式設置 I/D:光標移動方向,高電平右移,低電平左移;S:屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則無效;</p&
62、gt;<p> 表3.2 1602控制器指令</p><p> 指令4:顯示開關控制。 D:控制整體顯示的開與關,高電平表示開顯示,低電平表示關顯示 C:控制光標的開與關,高電平表示有光標,低電平表示無光標 B:控制光標是否閃爍,高電平閃爍,低電平不閃爍;</p><p> 指令5:光標或顯示移位 S/C:高電平時移動顯示的文字,低電平時移動光標;</p>
63、<p> 指令6:功能設置命令 DL:高電平時為4位總線,低電平時為8位總線 N:低電平時為單行顯示,高電平時雙行顯示 F: 低電平時顯示5x7的點陣字符,高電平時顯示5x10的點陣字符;</p><p> 指令7:字符發(fā)生器RAM地址設置;</p><p> 指令8:DDRAM地址設置;</p><p> 指令9:讀忙信號和光標地址 BF:為忙
64、標志位,高電平表示忙,此時模塊不能接收命令或者數(shù)據(jù),如果為低電平表示不忙;</p><p><b> 指令10:寫數(shù)據(jù);</b></p><p><b> 指令11:讀數(shù)據(jù);</b></p><p> 液晶顯示模塊是一個慢顯示器件,所以在執(zhí)行每條指令之前一定要確認模塊的忙標志為低電平,表示不忙,否則此指令失效。要顯示
65、字符時要先輸入顯示字符地址,也就是告訴模塊在哪里顯示字符。表3.3是1602的內(nèi)部顯示地址。</p><p> 表3.3 1602的內(nèi)部顯示地址</p><p> 比如第二行第一個字符的地址是40H,那么是否直接寫入40H就可以將光標定位在第二行第一個字符的位置呢?這樣不行,因為寫入顯示地址時要求最高位D7恒定為高電平1所以實際寫入的數(shù)據(jù)應該是01000000B(40H)+100000
66、00B(80H)=11000000B(C0H)。</p><p> 四、1602的外部電路圖</p><p> 根據(jù)設計要求,1602液晶顯示器的硬件電路圖如圖3.1所示。</p><p> 圖3.1 LCD1602外部連接圖</p><p> 第三章 數(shù)字溫度計軟件設計流程及程序</p><p> 單片機
67、應用系統(tǒng)軟件可采用匯編語言和C語言進行編寫,由于匯編語言的可讀性和可移植性都較差,采用匯編語言編寫的單片機應用程序不但周期長,而且調試和排錯也比較困難。為了提高編制單片機應用程序的效率,改善程序的可讀性和可移植性,采用C語言無疑是一種最好的選擇。C語言具有一般高級語言的特點,還能直接對計算機的硬件進行操作,表達和運算能力也較強。所以,本設計采用C語言編寫程序。</p><p><b> 第一節(jié) 主程序
68、設計</b></p><p> 主程序的主要功能是負責讀出并處理DS18B20的測量的當前溫度值、實時顯示溫度值。溫度測量每1s進行一次,這樣可以在一秒之內(nèi)測量一次被測溫度。系統(tǒng)主程序首先對系統(tǒng)進行初始化,然后顯示開機畫面。由于單片機沒有停止指令,所以可以設計系統(tǒng)程序不斷地循環(huán)執(zhí)行上述顯示結果。其程序流程如圖3.1所示。</p><p> 第二節(jié) 溫度值讀取程序設計<
69、/p><p> 讀出溫度子程序的主要功能是讀出RAM中的9字節(jié),在讀出時需進行CRC校驗,校驗有錯時不進行溫度數(shù)據(jù)的改寫。其程序流程圖如圖2.1。溫度轉換命令子程序主要是發(fā)溫度轉換開始命令,當采用12位分辨率時轉換時間約為750毫秒,在本程序設計中采用1秒顯示程序延時法等待轉換的完成。</p><p> 由于DS18B20有嚴格的通信協(xié)議來保證各位數(shù)據(jù)傳輸?shù)恼_性和完整性。該協(xié)議定義了三種
70、時序:初始化時序、讀時序、寫時序。我們應很好的理解和完成DS18B20各時序程序設計。</p><p> 一、DS18B20的延時程序</p><p> 首先,設置DS18B20的延時子程序,以利于各時序的精確延時等待,其具體程序如下。</p><p> void delay_18B20(unsigned int i)</p><p>
71、 {while(i--);</p><p><b> }</b></p><p> 該延時的指令條數(shù)為2×i+5,每一條指令的周期為2us。</p><p> 二、DS18B20的初始化程序</p><p> 由第二章對DS18B20的介紹可知,對DS18B20的初始化要求主 CPU 將數(shù)據(jù)線下拉
72、500us ,然后釋放,DS18B20 收到信號后等待 16us~60us 左右,然后發(fā)出 60us~240us 的存在低脈沖,主 CPU 收到此信號后表示復位成功。根據(jù)初始化時序的要求編寫初始化子程序如下:</p><p> void Init_DS18B20(void) { DQ = 1;
73、 //復位 DS18B20通信端口 delay_18B20(8); //稍做延時 DQ = 0; //單片機將DQ拉低,準備復位DS18B20 delay_18B20(125); //精確延時510us</p>&l
74、t;p> delay_18B20(125); </p><p> DQ = 1; //拉高數(shù)據(jù)線 delay_18B20(4); //稍做延時后</p><p> while(DQ) </
75、p><p><b> {</b></p><p> NOP() ; //等待DS18B20的ACK信號,如果DQ =0則初始化成功;DQ =1則初始化失敗</p><p><b> }</b></p><p> } delay_18B20(60);</
76、p><p> DQ=1; //拉高數(shù)據(jù)線,準備數(shù)據(jù)傳輸}</p><p> 三、DS18B20的讀時序程序</p><p> DS18B20的讀時序分為讀0時序和讀1時序兩個過程,對于DS18B20的讀時隙是從主機把單總線拉低之后,在15秒之內(nèi)就得釋放單總線,以讓DS18B20把數(shù)據(jù)傳輸?shù)絾慰偩€上。DS18B20在完成一個讀時
77、序過程,至少需要60us才能完成。由此,DS18B20的寫一個字節(jié)程序如下。 static void ReadOneChar(void) { uchar i=0; uchar dat = 0; for (i=8;i>0;i--) //每次讀取一位,8個字節(jié)需要讀取8次 {</p><p> dat>>=
78、1; //低位先發(fā) DQ = 0; // 高電平拉成低電平時讀周期開始 NOP(); DQ = 1; // 必須寫一,否則讀出的數(shù)據(jù)將是不預期的數(shù)據(jù) </p><p&g
79、t; delay_18B20(2);if(DQ)dat︱=0x80; </p><p> delay_18B20(30);</p><p><b> DQ=1;</b></p><p> NOP(); //恢復一線總線</p><p> }
80、 return(dat); }</p><p> 四、DS18B20的寫時序程序</p><p> DS18B20的寫時序仍然分為寫0時序和寫1時序兩個過程。對于DS18B20寫0時序和寫1時序的要求不同,當要寫0時序時,單總線要被拉低至少60us,保證DS18B20能夠在15us到45us之間能夠正確地采樣I/O總線上的“0”電平,當要寫1時序時,單總線被
81、拉低之后,在15us之內(nèi)就得釋放單總線。由此,DS18B20的讀字一個節(jié)程序如下。 void WriteOneChar(uchar cmd) { unsigned char i=0;</p><p> for (i=8; i>0; i--) {</p><p> if(cmd&0
82、x01) //地位在前 {DQ = 0; //從高電平拉至低電平時,寫周期的開始 delay_18B20(20); //60us到120us延時 DQ = 1;}
83、0; //發(fā)送數(shù)據(jù)</p><p><b> else</b></p><p> { DQ = 0; </p><p> delay_18B20(20);</p><p><b> DQ = 0;}</b></p><p
84、> delay_18B20(30); //等待DS18B20采樣</p><p> cmd>>=1; //從最低位到最高位傳入 }</p><p><b> }</b></p><p> 第三節(jié) 計算溫度程序設計</p><p>
85、計算溫度子程序將RAM中讀取值進行BCD碼的轉換運算,并進行溫度值正負的判定,其程序流程圖如圖3.3。</p><p> 第四節(jié) 顯示數(shù)據(jù)及刷新程序設計</p><p> 顯示數(shù)據(jù)刷新子程序主要時對顯示緩沖器中的顯示數(shù)據(jù)進行刷新操作,當最高顯示位為零時將符號顯示位移入下一位。程序流程圖如圖4.1。</p><p> 第四章 Keil C51調試過程介紹<
86、;/p><p> 程序的調試我們采用Keil C51.Keil C51 軟件是眾多單片機應用開發(fā)的優(yōu)秀軟件之一,它集編輯,編譯,仿真于一體,支持匯編,PLM 語言和 C 語言的程序設計,界面友好,易學易用。</p><p> 具體的調試過程如下:</p><p> 進入 Keil C51 后,屏幕如下圖4.1,4.2所示。幾秒鐘后出現(xiàn)編輯界</p>
87、<p> 圖4.1 啟動Keil C51時的屏幕</p><p> 圖4.2 進入Keil C51后的編輯界面</p><p><b> 建立一個新工程</b></p><p> 單擊Project菜單,在彈出的下拉菜單中選中New Project選項,如圖4.3.</p><p><b>
88、 圖4.3 新建工程</b></p><p> 然后選擇你要保存的路徑,輸入工程文件的名字,比如保存到C51目錄里,工程文件的名字為C51,如圖4.4所示,然后點擊保存.</p><p><b> 圖4.4</b></p><p> 這時會彈出一個對話框,要求選擇單片機的型號,可以根據(jù)需要選擇單片機,keil c51幾乎支持所
89、有的51核的單片機,這里我們選用Atmel 的89S51,如圖4.5所示,選擇89S51之后,右邊欄是對這個單片機的基本的說明,然后點擊確定.</p><p><b> 圖4.5</b></p><p> 完成上一步驟后,屏幕如下圖所示4.6.</p><p><b> 圖4.6</b></p><
90、;p> 到現(xiàn)在為止,我們還沒有編寫一句程序,下面開始編寫我們的第一個程序。</p><p> 單擊“File”菜單,再在下拉菜單中單擊“New”選項,如圖4.7.</p><p><b> 圖4.7</b></p><p> 新建文件后屏幕如圖4.8所示 </p><p><b> 圖4.8&l
91、t;/b></p><p> 此時光標在編輯窗口里閃爍,這時可以鍵入用戶的應用程序了,但筆者建議首先保存該空白的文件,單擊菜單上的“File”,在下拉菜單中選中“Save As”選項單擊,屏幕如圖</p><p> 4.9所示,在“文件名”欄右側的編輯框中,鍵入欲使用的文件名,同時,必須鍵入正確的擴展名。注意,如果用C語言編寫程序,則擴展名為(.c);如果用匯編語言編寫程序,則擴
92、展名必須為(.asm)。然后,單擊“保存”按鈕。 </p><p><b> 圖4.9</b></p><p> 回到編輯界面后,單擊“Target 1”前面的“+”號,然后在“Source Group 1”上單</p><p> 擊右鍵,彈出如圖4.10菜單</p><p><b> ?。?10<
93、/b></p><p> 然后單擊“Add File to Group ‘Source Group 1’” 屏幕如圖4.11所示 </p><p><b> 圖4.11</b></p><p> 選中Test.c,然后單擊“Add ”屏幕如圖4.12所示.</p><p><b> 4.
94、12</b></p><p> 注意到“Source Group 1”文件夾中多了一個子項“Text1.c”了嗎?子項的多少與所增加的源程序的多少相同 </p><p> ④ 現(xiàn)在,請輸入如下的C語言源程序: </p><p> #include <reg52.h> //包含文件 #include <st
95、dio.h> void main(void) //主函數(shù) { SCON=0x52; TMOD=0x20; TH1=0xf3; TR1=1; //此行及以上3行為PRINTF函數(shù)所必須 printf(“Hello I am KEIL. \n”); //打印程序執(zhí)行的信息 printf(“I will be
96、your friend.\n”); while(1); } </p><p> 在輸入上述程序時,可以看到事先保存待編輯的文件的好處,即Keil c51會自動識別關鍵字,并以不同的顏色提示用戶加以注意,這樣會使用戶少犯錯誤,有利于提高編程效率。程序輸入完畢后,在上圖中,單擊“Project”菜單,再在下拉菜單中單擊“Built Target”選項,編譯成功后,再單擊“Project”菜單,在下拉
97、菜單中單擊“Start/Stop Debug Session”,</p><p> 屏幕如圖4.13所示.</p><p><b> ?。?13</b></p><p><b> 調試程序</b></p><p> 在上圖中,單擊“Debug”菜單,在下拉菜單中單擊“Go”選項,然后再單擊“D
98、ebug”菜單,在下拉菜單中單擊“Stop Running”選項;再單擊“View”菜單,再在下拉菜單中單擊“Serial Windows #1”選項,就可以看到程序運行后的結果,其結果如圖4.14所示.</p><p><b> 4.14</b></p><p> 至此,我們在Keil C51上做了一個完整工程的全過程。</p><p>
99、<b> 結 論</b></p><p> 溫度的檢測和控制是一個經(jīng)典的課題,生活中的各個領域里經(jīng)常需要檢測和控制某一特定環(huán)境的溫度,使之能夠穩(wěn)定在一定的溫度范圍之內(nèi)。這就要求系統(tǒng)對溫度的檢測具有足夠的精度和實時性,控制要有足夠的精度,并且盡可能具有較低的成本,這樣的產(chǎn)品才具有實用價值。DS18B20恰好具有這樣的優(yōu)勢,由于其可直接輸出數(shù)字量,不需要AD轉換,測溫范圍大,與單片機容易接
100、口,成為原來廣為使用的熱電阻、熱電偶的理想替代品。因此本設計可以應用于多種溫度控制場合。</p><p> 本設計敘述了智能溫度計的設計,包括硬件組成和軟件的設計。該系統(tǒng)在硬件設計上主要是通過其核心控制器件AT89S51將采集到的數(shù)字溫度電壓值經(jīng)單片機處理得到相應的溫度值,送到LCD顯示器,以數(shù)字形式顯示測量的溫度。整個系統(tǒng)的軟件編程就是通過C語言對單片機AT89S51實現(xiàn)其控制功能,整個系統(tǒng)結構緊湊,簡單可靠
101、,操作靈活,功能強大,性能價格比高,較好的滿足了現(xiàn)代農(nóng)業(yè)生產(chǎn)和科研的需要。</p><p> 通過仿真軟件Proteus仿真后,很好的實現(xiàn)了溫度值得顯示,滿足課程要求,具體的仿真圖如下:</p><p><b> 結束語</b></p><p> 畢業(yè)設計完成了,在這個過程中使我覺得不論從理論知識還是從實際設計中都學到了不少知識。首先我要
102、感謝我的導師劉雙臨老師,他在我完成論文的過程中,給予了我很大的幫助。</p><p> 在論文開始的初期,由于對于溫度計的認識很少,我對于論文的結構以及文獻選取等方面都有很多問題,通過對溫度計原理的認識,并比較多種不同的設計方案,最后確定了設計溫度計的功能以及各類功能模塊的器件選擇。并在導師的幫助下,找到相應的各類資料,并大致整理,粗略閱讀了一遍。認識到很多知識以前都沒有接觸過,所以制定了一個大致的計劃,希望能
103、夠很好的完成論文。</p><p> 在接下來的畢業(yè)設計中,由于在公司實習,相對在畢業(yè)設計的時間少了很多。主要是深入對前期溫度設計方案的認識。在這期間,很多知識都是第一次接觸,通過查找了很多知識,認真閱讀,有了一定的認識。相對困難最大的還是硬件的設計和程序編寫方面。這些都需要很多的實際設計經(jīng)驗,第一次設計起來覺得相當吃力,剛開始不知道從何下手。后來,通過老師的指導,在實際的設計過程中,都有了很大進步。</
104、p><p> 在畢業(yè)設計的過程中,還認識到理論知識對實踐有很大的指導作用,只有在正確的理論指導下,才能設計出合乎實際需要的硬件電路。但同時,實際的應用中與理論又會有一定出入,所以要很好的掌握好理論與實際的矛盾。</p><p> 這次畢業(yè)設計是對大學三年所學知識的一次實際應用與檢閱,同時對自學能力提出了很高的要求,所以平時的學習離開思考,就是嚴重的錯誤,不能只為了考試而學習。并且在學習的過
105、程中更要廣闊的接觸各方面的知識,才能更好的為以后的工作打好基礎。</p><p> 在我寫論文的過程中,劉雙臨老師給我提供了許多資料,并對實踐中出現(xiàn)的問題給予了耐心的解答,完稿之后在百忙中仔細閱讀,給出修改意見。在設計過程中,還有很多同學給予我各方面的支持,在此對他們都表示誠摯感謝!</p><p><b> 參考文獻</b></p><p&g
106、t; [1] 徐愛鈞,智能化測量控制儀表原理與設計(第二版),北京航空航天大學出版社,2004</p><p> [2] 吳金戌,沈慶陽,郭庭吉,8051單片機實踐與應用,清華大學出版社,2002</p><p> [3] “電子愛好者”網(wǎng)站:http://www.etun.com;</p><p> [4] 肖玲妮,袁增貴,Protel 99 SE印刷電路
107、板設計教程,清華大學出版社,2003年8月</p><p> [5] 安新艷,Proteus仿真技術在單片機教學中的應用,常州信息職業(yè)技術學院學報,2008年7卷1期</p><p> [6]張存吉,羅芬,廖威,葉穎,楊春,基于DS18B20的智能語音數(shù)字溫度計的設計,大眾科技,2007年12期</p><p><b> [7]</b>&
108、lt;/p><p><b> [8]</b></p><p><b> [9]</b></p><p><b> [10]</b></p><p><b> [11]</b></p><p><b> [12]<
109、;/b></p><p><b> [13]</b></p><p><b> [14]</b></p><p><b> [15]</b></p><p><b> 附 件</b></p><p><b>
110、; 一、英文原文</b></p><p> The Introduction of AT89S51</p><p> Description</p><p> The AT89S51 is a low-power, high-performance CMOS 8-bit microcomputer with 4K bytes of Flash m
111、emory.The device is manufactured using Atmel’s high-density nonvolatile memory technology and is compatible with the industry-standard MCS-51 instruction set and pinout. The on-chip Flash allows the program memory to be
112、reprogrammed in-system or by a conventional nonvolatile memory programmer. By combining a versatile 8-bit CPU with Flash on a monolithic chip, the Atmel AT89S51 is a powerful microcomput</p><p> The AT89S51
113、 provides the following standard features: 4K bytes of Flash, 128 bytes of RAM, 32 I/O lines, two 16-bit timer/counters, a five vector two-level interrupt architecture, a full duplex serial port, on-chip oscillator and c
114、lock circuitry. In addition, the AT89S51 is designed with static logic for operation down to zero frequency and supports two software selectable power saving modes. The Idle Mode stops the CPU while allowing the RAM, tim
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)字溫度計課程設計---基于51單片機數(shù)字溫度計設計
- 數(shù)字溫度計課程設計---基于51單片機數(shù)字溫度計設計
- 基于單片機的數(shù)字溫度計的設計
- 溫度計課程設計---基于51單片機數(shù)字溫度計設計
- 基于單片機的數(shù)字溫度計的設計二稿.doc
- 論文--基于單片機的數(shù)字溫度計設計
- 基于單片機的數(shù)字溫度計設計論文
- 基于單片機的數(shù)字溫度計設計論文
- 單片機課程設計-- 基于單片機的數(shù)字溫度計設計
- 基于單片機數(shù)字溫度計畢業(yè)設計
- 基于單片機數(shù)字溫度計畢業(yè)設計
- 單片機課程設計---基于單片機的數(shù)字溫度計設計
- 基于單片機數(shù)字溫度計畢業(yè)設計
- 基于單片機數(shù)字溫度計課程設計
- 單片機課程設計--基于單片機的數(shù)字溫度計的設計
- 基于單片機的數(shù)字溫度計設計【文獻綜述】
- 基于單片機的數(shù)字溫度計課程設計
- 基于單片機數(shù)字溫度計開題報告
- 畢業(yè)設計--基于單片機數(shù)字溫度計
- 基于單片機的數(shù)字溫度計畢業(yè)設計
評論
0/150
提交評論