版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 本科畢業(yè)論文(設(shè)計(jì))</p><p> 題 目 數(shù)字溫度計(jì)的設(shè)計(jì) </p><p> 指導(dǎo)教師 職稱(chēng) 講師 </p><p><b> 數(shù)字溫度計(jì)的設(shè)計(jì)</b></p><p><b> 摘
2、要</b></p><p> 本文綜述了數(shù)字溫度計(jì)的設(shè)計(jì)與制作過(guò)程,詳細(xì)介紹了設(shè)計(jì)制作一個(gè)完整的數(shù)字溫度計(jì)需要做的前期準(zhǔn)備和制作過(guò)程。通過(guò)對(duì)題目的透徹理解以及所要設(shè)計(jì)的產(chǎn)品的各項(xiàng)性能功能,決定用單片機(jī)作為控制內(nèi)核,其次主要用溫度傳感器DS18B20,及其他主要電路配合下設(shè)計(jì)出一套完整的硬件系統(tǒng)和一套滿足設(shè)計(jì)要求的軟件系統(tǒng),最后得到了一款基于AT89S52單片機(jī)控制的數(shù)字溫度計(jì)。本溫度計(jì)屬于多功能溫度
3、計(jì),設(shè)計(jì)不僅實(shí)現(xiàn)了用LCD1602顯示器顯示溫度,而且可以同步顯示時(shí)間日歷,日期和時(shí)間都可通過(guò)按鍵校整,以及可以設(shè)置上下報(bào)警溫度,當(dāng)溫度不再設(shè)置范圍內(nèi)時(shí),可以報(bào)警。</p><p> 關(guān)鍵詞:AT89S52 單片機(jī);數(shù)字溫度傳感器 DS18B20;顯示器LCD1602;</p><p> THE DIGITAL THERMOMETER DESIGN</p><p&g
4、t;<b> Abstract</b></p><p> Digital thermometer was reviewed in this paper the design and manufacture process, detailed introduces the design of a complete digital thermometer need to do prepara
5、tion and production process. Through the thorough understanding of subject and the design products of various performance function, decided to use single chip microcomputer as control core, second main use temperature se
6、nsor DS18B20, and other main circuit design with a complete set of hardware system and a set of software system to</p><p> KEY WORDS:AT89S52 single-chip microcomputer; Digital temperature sensor DS18B20; Di
7、splay LCD1602.</p><p><b> 目錄</b></p><p> 中文摘要……………………………………………………………………………Ⅰ</p><p> Abstract ……………………………………………………………………………Ⅱ </p><p> 第一章 緒論…………………………………
8、………………………………………1</p><p> 選題背景…………………………………………………………………………1</p><p> 數(shù)字溫度計(jì)簡(jiǎn)介…………………………………………………………………2</p><p> 1.2.1數(shù)字溫度計(jì)的特征…………………………………………………………2</p><p> 1.2.2設(shè)計(jì)實(shí)現(xiàn)的
9、目標(biāo)……………………………………………………………2</p><p> 第二章 數(shù)字溫度計(jì)的設(shè)計(jì)方案……………………………………………………2</p><p> 2.1 設(shè)計(jì)方案論證與比較……………………………………………………………2</p><p> 2.1.1 顯示電路方案………………………………………………………………2</p><
10、p> 2.1.2 測(cè)溫電路方案………………………………………………………………3</p><p> 2.2 系統(tǒng)總體方案……………………………………………………………………3</p><p> 第三章 數(shù)字溫度計(jì)的硬件電路的設(shè)計(jì)……………………………………………4</p><p> 3.1 系統(tǒng)硬件框圖…………………………………………………………………
11、….4</p><p> 32 控制電路…………………………………………………………………………4</p><p> 3.2.1 單片機(jī)AT89S52芯片的功能特性…………………………………………4 </p><p> 3.2.2 最小系統(tǒng)模塊………………………………………………………………6</p><p> 3.2.3 系統(tǒng)模塊
12、分析………………………………………………………………6</p><p> 3.2.4 單片機(jī)的復(fù)位電路…………………………………………………………7</p><p> 3.2.5單片機(jī)的晶振電路…………………………………………………………8</p><p> 3.2 溫度傳感器設(shè)計(jì)…………………………………………………………………9</p>&l
13、t;p> 3.2.1 DS18B20 簡(jiǎn)介……………………………………………………………9</p><p> 3.2.2 溫度傳感器與單片機(jī)的連接……………………………………………12</p><p> 3.3 單片機(jī)與報(bào)警電路……………………………………………………………12</p><p> 3.4 顯示電路……………………………………………………
14、…………………13</p><p> 3.4.1 LCD液晶顯示模塊………………………………………………………13</p><p> 3.4.2LCD1602液晶顯示屏………………………………………………………14</p><p> 3.4.3液晶顯示器的工作原理…………………………………………………15</p><p> 3.5 掉
15、電充電電路…………………………………………………………………16</p><p> 3.6系統(tǒng)整體硬件電路………………………………………………………………17</p><p> 第四章 軟件設(shè)計(jì)…………………………………………………………………18</p><p> 4.1主程序設(shè)計(jì)……………………………………………………………………18</p>
16、<p> 4.2 鍵盤(pán)子程序設(shè)計(jì)………………………………………………………………20</p><p> 4.3 溫度子程序……………………………………………………………………22</p><p> 4.4 顯示子程序設(shè)計(jì)……………………………………………………………… 24</p><p> 第五章 數(shù)據(jù)測(cè)試…………………………………………………
17、………………25</p><p> 結(jié)束語(yǔ)………………………………………………………………………………25</p><p> 致謝…………………………………………………………………………………26</p><p> 參考文獻(xiàn)……………………………………………………………………………26</p><p> 附錄一 源程序代碼………………
18、………………………………………………27</p><p><b> 緒論</b></p><p><b> 1.1選題背景</b></p><p> 國(guó)際上從20世紀(jì)70年代開(kāi)始,國(guó)內(nèi)自80年代開(kāi)始,單片機(jī)的應(yīng)用十分廣泛。</p><p> 目前單片機(jī)滲透到我們生活的各個(gè)領(lǐng)域,幾乎很難找到哪
19、個(gè)領(lǐng)域沒(méi)有單片機(jī)的蹤跡,對(duì)各個(gè)行業(yè)的技術(shù)改造和產(chǎn)品智能化的更新?lián)Q代起著重要的推動(dòng)作用,而現(xiàn)在最受關(guān)注的是單片機(jī)廣泛用于各種實(shí)時(shí)測(cè)控系統(tǒng)中,對(duì)于控制過(guò)程中的各種物理參數(shù)(如轉(zhuǎn)速,位移,壓力,流量,溫度等)進(jìn)行測(cè)量和控制.將測(cè)量技術(shù),自動(dòng)控制技術(shù)和計(jì)算機(jī)技術(shù)相結(jié)合,充分發(fā)揮數(shù)據(jù)處理和實(shí)時(shí)控制功能,使系統(tǒng)工作在最佳狀態(tài),提高系統(tǒng)的生產(chǎn)效率和產(chǎn)品的質(zhì)量。所以日常生活中各種控制系統(tǒng)都可以使用單片機(jī)作為控制器。例如近年來(lái)家用電器涉及千家萬(wàn)戶,生產(chǎn)規(guī)
20、模大。如全自動(dòng)洗牙機(jī),熱水器,高級(jí)音響設(shè)備和電子游戲機(jī)等,配上微電腦后其身價(jià)更是提高百倍,深得用戶的歡迎。廉價(jià)的單片機(jī)微機(jī)在家用電器中應(yīng)用前途十分廣闊。此外,單片機(jī)在工商,金融,科研,教育,國(guó)防航天等領(lǐng)域都有著十分廣泛的用途。綜上所述單片機(jī)的應(yīng)用從根本上改變了傳統(tǒng)的控制系統(tǒng),以前必須由模擬電路和數(shù)字電路實(shí)現(xiàn)的大部分功能,現(xiàn)在能用單片機(jī)通過(guò)軟件方法實(shí)現(xiàn)了。</p><p> 隨著現(xiàn)代信息技術(shù)的飛速發(fā)展和傳統(tǒng)工業(yè)改
21、造的逐步實(shí)現(xiàn)。能夠獨(dú)立工作的溫度檢測(cè)和顯示系統(tǒng)應(yīng)用于諸多領(lǐng)域。傳統(tǒng)的溫度檢測(cè)以熱敏電阻作為溫度敏感元件。熱敏電阻的成本低,但需后續(xù)信號(hào)處理電路,而且可靠性相對(duì)較差,測(cè)溫準(zhǔn)確度低,檢測(cè)系統(tǒng)也有一定的誤差。與傳統(tǒng)的溫度計(jì)相比,該設(shè)計(jì)的數(shù)字溫度計(jì)具有讀數(shù)方便,測(cè)溫范圍廣,測(cè)溫精確,數(shù)字顯示,適用范圍寬等特點(diǎn)。選用AT89S52單片機(jī)作為主控制器件,DS18B20作為溫度傳感器通過(guò)LCD1602并行傳送數(shù)據(jù),實(shí)現(xiàn)溫度顯示。通過(guò)DS18B20直接
22、讀取被測(cè)溫度值,進(jìn)行數(shù)據(jù)轉(zhuǎn)換,該器件的物理化學(xué)性能穩(wěn)定,線性度較好,在-55℃~125℃最大線性偏差小于0.1℃。該器件可以直接向單片機(jī)傳輸數(shù)字信號(hào),便于單片機(jī)處理及控制。另外,該溫度計(jì)還能直接采用測(cè)溫器件測(cè)量溫度,從而簡(jiǎn)化數(shù)據(jù)傳輸與處理過(guò)程。</p><p> 1.2 數(shù)字溫度計(jì)簡(jiǎn)介</p><p> 1.2.1 數(shù)字溫度計(jì)的特征</p><p> 溫度是我
23、們?nèi)粘Ia(chǎn)和生活中實(shí)時(shí)接觸到的物理量,但是它是看不到的,僅憑感覺(jué)只能感覺(jué)到大概的溫度值。數(shù)字溫度計(jì)的出現(xiàn)可以讓人們直觀的了解自己想知道的溫度到底是多少度。數(shù)字溫度計(jì)采用溫度敏感元件也就是溫度傳感器(如鉑電阻,熱電偶,半導(dǎo)體,熱敏電阻等),將溫度的變化轉(zhuǎn)換成電信號(hào)的變化,如電壓和電流的變化,溫度變化和電信號(hào)的變化有一定的關(guān)系,如線性關(guān)系,一定的曲線關(guān)系等,這個(gè)電信號(hào)可以使用模數(shù)轉(zhuǎn)換的電路即AD轉(zhuǎn)換電路將模擬信號(hào)轉(zhuǎn)換為數(shù)字信號(hào),數(shù)字信號(hào)再送
24、給處理單元,如單片機(jī)或者PC機(jī)等,處理單元經(jīng)過(guò)內(nèi)部的軟件計(jì)算將這個(gè)數(shù)字信號(hào)和溫度聯(lián)系起來(lái),成為可以顯示出來(lái)的溫度數(shù)值,如25.0攝氏度,然后通過(guò)顯示單元,如LED,LCD或者電腦屏幕等顯示出來(lái)給人觀察。這樣就完成了數(shù)字溫度計(jì)的基本測(cè)溫。</p><p> 1.2.2 設(shè)計(jì)實(shí)現(xiàn)的目標(biāo)</p><p> 1) 測(cè)溫基本范圍-55℃~125℃。</p><p>
25、2) 測(cè)溫精度誤差小于或等于0.5℃。</p><p> 3) 超溫報(bào)警(20℃~30℃)。</p><p> 4) LCD屏幕顯示實(shí)時(shí)溫度,時(shí)間,日期。</p><p> 5) 四個(gè)按鍵可以對(duì)時(shí)間,日期進(jìn)行調(diào)整。</p><p> 第二章 數(shù)字溫度計(jì)的設(shè)計(jì)方案</p><p> 2.1 設(shè)計(jì)方案論證和比
26、較</p><p> 2.1.1 顯示電路方案</p><p> 方案一: 用動(dòng)態(tài)數(shù)碼管顯示</p><p> 采用七段LED數(shù)碼管,采用動(dòng)態(tài)顯示的方法來(lái)顯示各項(xiàng)指標(biāo),該方案價(jià)格成本低,但是顯示單一,不具有靈活性,且功耗較大。</p><p> 方案二:采用1602LCD液晶顯示</p><p> 采用該液晶
27、顯示,此方案顯示內(nèi)容豐富,靈活性較好,價(jià)格不貴,且功耗相對(duì)較小。</p><p> 綜合上述原因,采用方案二。</p><p> 2.1.2 測(cè)溫電路方案</p><p> 方案一: 采用模擬溫度傳感器測(cè)溫</p><p> 本設(shè)計(jì)是測(cè)溫電路,可以使用熱敏電阻之類(lèi)的器件利用它們的感溫效應(yīng),把被測(cè)溫度的電壓或電流采集過(guò)來(lái),進(jìn)行A/D轉(zhuǎn)換
28、后,用單片機(jī)進(jìn)行數(shù)據(jù)處理,被測(cè)溫度就能夠在顯示電路中顯示出來(lái)。但是這種設(shè)計(jì)需要用到A/D轉(zhuǎn)化電路,感溫電路比較麻煩。</p><p> 方案二:采用數(shù)字溫度傳感器</p><p> 在單片機(jī)的設(shè)計(jì)電路中,大多都是使用傳感器,所以可以采用溫度傳感器DS18B20,此傳感器可以很容易直接讀取被測(cè)溫度值,進(jìn)行轉(zhuǎn)換,電路簡(jiǎn)單,軟件設(shè)計(jì)也比較簡(jiǎn)單,滿足設(shè)計(jì)要求。</p><p
29、> 綜合上述原因,采用方案二</p><p> 2.2 系統(tǒng)總體方案</p><p> 根據(jù)上述方案之間的比較,結(jié)合題目可以將系統(tǒng)分文主控模塊,溫度采集模塊,顯示模塊,其框圖如下:</p><p> 數(shù)字溫度計(jì)的硬件電路的設(shè)計(jì)</p><p> 3.1 系統(tǒng)硬件框圖</p><p><b>
30、 3.2 控制電路</b></p><p> 3.2.1單片機(jī)AT89S52芯片的功能特性</p><p><b> 主要性能</b></p><p> 1)與Mcs-51單片機(jī)兼容 2)8k字節(jié)在系統(tǒng)可編程Flash存儲(chǔ)器 </p><p> 3)
31、1000次擦寫(xiě)周期 </p><p> 4)全靜態(tài)操作:0Hz~33Hz </p><p> 5)三級(jí)加密程序存儲(chǔ)器 </p><p> 6)32個(gè)可編程I/O口線 </p><p&g
32、t; 7)三個(gè)16位定時(shí)器/計(jì)數(shù)器 </p><p> 8) 八個(gè)中斷源9) 全雙工UART串行通道</p><p> 10)低功耗空閑掉電模式</p><p> 11) 掉電后中斷可喚醒</p><p><b> 12)看門(mén)狗定時(shí)器</b></p><p><b> 1
33、3) 雙數(shù)據(jù)指針</b></p><p><b> 14) 掉電標(biāo)識(shí)符</b></p><p> AT89S52是一種低功耗,高性能的CMOS8位微控制器,具有8K在系統(tǒng)可編程flash存儲(chǔ)器。使用ATMEL公司高密度非易失性存儲(chǔ)器技術(shù)制造,與工業(yè)80c51產(chǎn)品指令和引腳完全兼容。片上flash允許程序存儲(chǔ)器在系統(tǒng)中可編程,亦適用于常規(guī)編程器。在單芯片
34、上,擁有靈巧的8位CPU和在系統(tǒng)可編程flash,使得ATS89S52位眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活,有效的解決方案。</p><p> ATS89S52具有以下功能標(biāo)準(zhǔn)功能:8K字節(jié)Flash,256字節(jié)RAM,32位I/O口線,看門(mén)狗定時(shí)器,2個(gè)數(shù)據(jù)指針,三個(gè)16位定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級(jí)中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及實(shí)時(shí)時(shí)鐘。另外,ATS89S52可降至0Hz靜態(tài)邏輯操作,支持2種軟件可選擇
35、節(jié)電模式??臻e模式下,CPU停止工作,允許RAM,定時(shí)器/計(jì)數(shù)器,串口,中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。</p><p> 3.2.2 最小系統(tǒng)模塊</p><p> 3.2.3系統(tǒng)模塊分析</p><p> 在本系統(tǒng)中,最小系統(tǒng)模塊居于非常重要的地位。它是整個(gè)系統(tǒng)的中樞,系統(tǒng)運(yùn)行
36、所需的每個(gè)操作指令都要由其發(fā)出。它一方面控制著測(cè)溫模塊進(jìn)行溫度信息的采集和時(shí)鐘信息,另一方面也控制著顯示模塊的工作。最重要的是,由測(cè)溫模塊所采集到的溫度信息必須經(jīng)由主控模塊的處理才能在顯示模塊上顯示,從而使整個(gè)系統(tǒng)進(jìn)行正常的運(yùn)轉(zhuǎn)和工作。針對(duì)以上分析本系統(tǒng)主控模塊中的單片機(jī)芯片采用了AT89S52芯片,此芯片功能強(qiáng)大,能夠完全滿足系統(tǒng)運(yùn)行的需求。</p><p> 3.2.4 單片機(jī)的復(fù)位電路</p>
37、<p> 單片機(jī)復(fù)位時(shí)RESET需要保持96個(gè)晶振周期的高電平(即需8個(gè)機(jī)器周期)。復(fù)位以后P0─P3口輸出高電平,堆棧指針SP指向07H,其他特殊功能寄存器和程序計(jì)數(shù)器PC清零。只要RESET保持高電平,AT89S52就會(huì)循環(huán)復(fù)位。RESET當(dāng)由高電平變?yōu)榈碗娖胶?,單片機(jī)從程序存儲(chǔ)器0地址開(kāi)始執(zhí)行程序。但單片機(jī)復(fù)位不影響內(nèi)部RAM的狀態(tài),包括工作寄存器R0─R7。</p><p> 常見(jiàn)的復(fù)位
38、電路有:上電復(fù)位電路和上電按鈕復(fù)位電路,在本設(shè)計(jì)中均采用上電復(fù)位電路,對(duì)于微型單片機(jī)而言,復(fù)位是一項(xiàng)很重要的歸零調(diào)整操作。該復(fù)位就是將高電平加到RESET引腳上,并保持時(shí)間超過(guò)兩個(gè)機(jī)器周期以上,也就是2μS如圖2.3所示。</p><p><b> 復(fù)位電路</b></p><p> 3.2.5 單片機(jī)的晶振電路</p><p> 所謂的
39、晶振電路即指單片機(jī)的時(shí)鐘電路。該電路通常有內(nèi)部時(shí)鐘電路和外部時(shí)鐘電路。一般選用前者。單片機(jī)芯片內(nèi)部有一個(gè)反相放大器構(gòu)成的振蕩器。反相放大器的輸入端為XTAL1,輸出端為XTAL2,把XTAL1和XTAL2與外部石英晶體及兩個(gè)電容連接起來(lái)可構(gòu)成一個(gè)石英晶體振蕩器如圖2.4所示。時(shí)鐘發(fā)生器是一個(gè)2分頻電路。它把晶體振蕩器的頻率2分頻后供給片內(nèi)其他電路。一般電容C1和C2起到穩(wěn)定振蕩頻率、快速起振的作用。</p><p&g
40、t;<b> 晶振電路</b></p><p> 3.2 溫度傳感器設(shè)計(jì)</p><p> 3.2.1 DS18B20 簡(jiǎn)介</p><p><b> 引腳說(shuō)明</b></p><p> 1)DS18B20簡(jiǎn)介</p><p> ?。?)獨(dú)特的單線接口方式:DS18
41、B20與微處理器連接時(shí)僅需要一條口線即可實(shí)現(xiàn)微處理器與DS18B20的雙向通訊。</p><p> (2)在使用中不需要任何外圍元件。</p><p> ?。?)可用數(shù)據(jù)線供電,電壓范圍:+3.0 ~ +5.5 V。</p><p> (4)測(cè)溫范圍:-55 ~ +125 ℃。固有測(cè)溫分辨率為0.5 ℃。</p><p> ?。?)通過(guò)編
42、程可實(shí)現(xiàn)9~12位的數(shù)字讀數(shù)方式。</p><p> ?。?)用戶可自設(shè)定非易失性的報(bào)警上下限值。</p><p> ?。?)支持多點(diǎn)組網(wǎng)功能,多個(gè)DS18B20可以并聯(lián)在惟一的三線上,實(shí)現(xiàn)多點(diǎn)測(cè)溫。</p><p> ?。?)負(fù)壓特性,電源極性接反時(shí),溫度計(jì)不會(huì)因發(fā)熱而燒毀,但不能正常工作。</p><p> 2)DS18B20的測(cè)溫原理
43、</p><p> DS18B20內(nèi)部結(jié)構(gòu)圖</p><p> DS18B20內(nèi)部結(jié)構(gòu)主要由四部分組成:64位光刻ROM、溫度傳感器、非揮發(fā)的溫度報(bào)警觸發(fā)器TH和TL、配置寄存器。光刻ROM中的64位序列號(hào)是出廠前被光刻好的,它可以看作是該DS18B20的地址序列碼。64位光刻ROM的排列是:開(kāi)始8位(28H)是產(chǎn)品類(lèi)型標(biāo)號(hào),接著的48位是該DS18B20自身的序列號(hào),最后8位是前面5
44、6位的循環(huán)冗余校驗(yàn)碼(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一個(gè)DS18B20都各不相同,這樣就可以實(shí)現(xiàn)一根總線上掛接多個(gè)DS18B20的目的。 </p><p> DS18B20中的溫度傳感器可完成對(duì)溫度的測(cè)量,以12位轉(zhuǎn)化為例:用16位符號(hào)擴(kuò)展的二進(jìn)制補(bǔ)碼讀數(shù)形式提供,以0.0625℃/LSB形式表達(dá),其中S為符號(hào)位。 這是12位轉(zhuǎn)化后得到的12位數(shù)據(jù),存儲(chǔ)在18B20的兩個(gè)8比特的RAM中
45、,二進(jìn)制中的前面5位是符號(hào)位,如果測(cè)得的溫度大于0,這5位為0,只要將測(cè)到的數(shù)值乘于0.0625即可得到實(shí)際溫度;如果溫度小于0,這5位為1,測(cè)到的數(shù)值需要取反加1再乘于0.0625即可得到實(shí)際溫度。 例如+125℃的數(shù)字輸出為07D0H,+25.0625℃的數(shù)字輸出為0191H,-25.0625℃的數(shù)字輸出為FF6FH,-55℃的數(shù)字輸出為FC90H。 </p><p> DS18B20溫度傳感器的內(nèi)部存儲(chǔ)器
46、包括一個(gè)高速暫存RAM和一個(gè)非易失性的可電擦除的E2RAM,后者存放高溫度和低溫度觸發(fā)器TH、TL和結(jié)構(gòu)寄存器。暫存存儲(chǔ)器包含了8個(gè)連續(xù)字節(jié),前兩個(gè)字節(jié)是測(cè)得的溫度信息,第一個(gè)字節(jié)的內(nèi)容是溫度的低八位,第二個(gè)字節(jié)是溫度的高八位。第三個(gè)和第四個(gè)字節(jié)是TH、TL的易失性拷貝,第五個(gè)字節(jié)是結(jié)構(gòu)寄存器的易失性拷貝,這三個(gè)字節(jié)的內(nèi)容在每一次上電復(fù)位時(shí)被刷新。第六、七、八個(gè)字節(jié)用于內(nèi)部計(jì)算。第九個(gè)字節(jié)是冗余檢驗(yàn)字節(jié)。該字節(jié)各位的意義如下:TM R1
47、 R0 1 1 1 1 1低五位一直都是1 ,TM是測(cè)試模式位,用于設(shè)置DS18B20在工作模式還是在測(cè)試模式。在DS18B20出廠時(shí)該位被設(shè)置為0,用戶不要去改動(dòng)。R1和R0用來(lái)設(shè)置分辨率,如表所示(DS18B20出廠時(shí)被設(shè)置為12位)DS18B20溫度轉(zhuǎn)換時(shí)間表:</p><p> 根據(jù)DS18B20的通訊協(xié)議,主機(jī)控制DS18B20完成溫度轉(zhuǎn)換必須經(jīng)過(guò)三個(gè)步驟:每一次讀寫(xiě)之前都要對(duì)DS18B20進(jìn)行復(fù)位,
48、復(fù)位成功后發(fā)送一條ROM指令,最后發(fā)送RAM指令,這樣才能對(duì)DS18B20進(jìn)行預(yù)定的操作。復(fù)位要求主CPU將數(shù)據(jù)線下拉500微秒,然后釋放,DS18B20收到信號(hào)后等待16~60微秒左右,后發(fā)出60~240微秒的存在低脈沖,主CPU收到此信號(hào)表示復(fù)位成功。</p><p> 3.2.2 溫度傳感器與單片機(jī)的連接</p><p> 溫度傳感器的單總線(1-Wire)與單片機(jī)的P3.7連接
49、,P3.7是單片機(jī)的高位地址線A8。P3端口是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O,其輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯門(mén)電路。對(duì)該端口寫(xiě)“1”,可通過(guò)內(nèi)部上拉電阻將其端口拉至高電平,此時(shí)可作為輸入口使用,這是因?yàn)閮?nèi)部存在上拉電阻,某一引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流。在訪問(wèn)外部程序存儲(chǔ)器或16位地址的外部數(shù)據(jù)存儲(chǔ)器時(shí)。如執(zhí)行MOVX DPTR指令,則表示P3端口送出高8位的地址數(shù)據(jù)。在訪問(wèn)8位地址的外部數(shù)據(jù)存儲(chǔ)器時(shí),可執(zhí)
50、行MOVX RI指令,P3端口內(nèi)容即為特殊功能寄存器(SFR)區(qū)中R2寄存器內(nèi)容,整個(gè)訪問(wèn)期間不改變。在Flash編程和程序校驗(yàn)時(shí),P3端口也接收高位地址和其他控制信號(hào)。內(nèi)部結(jié)構(gòu)。</p><p> 3.3單片機(jī)與報(bào)警電路</p><p> 系統(tǒng)中的報(bào)警電路是由發(fā)光二極管和限流電阻組成,并與單片機(jī)的P2.7端口連接。當(dāng)溫度不再所設(shè)定的上下溫度范圍的時(shí)候,發(fā)光二極管工作報(bào)警。</p
51、><p><b> 3.4 顯示電路</b></p><p> 3.4.1 LCD液晶顯示模塊</p><p> 3.4.2 LCD1602液晶顯示屏</p><p> 1)LCD1602液晶顯示屏主要技術(shù)參數(shù)</p><p><b> 主要參數(shù)</b></p&g
52、t;<p> (2)LCD1602液晶顯示屏引腳說(shuō)明</p><p> SMC1602A是LCD1602中的一種,它共有16個(gè)引腳,各引腳接口信號(hào)說(shuō)明如下。 </p><p><b> 引腳說(shuō)明</b></p><p><b> 狀態(tài)字說(shuō)明 </b></p>&l
53、t;p> SMC1602A狀態(tài)字說(shuō)明表</p><p> SMC1602狀態(tài)字功能表</p><p> 其基本操作時(shí)序共有4個(gè)狀態(tài)分別是:</p><p> 1讀狀態(tài):輸入:RS=L,RW=H,E=H 輸出:D0~D7=狀態(tài)字</p><p> 2 寫(xiě)指令:輸入:RS=L,RW=L,D0~D7=指令碼,E=高脈沖 輸出
54、:無(wú)</p><p> 3 讀數(shù)據(jù):輸入:RS=H,RW=H,E=H 輸出:D0~D7=數(shù)據(jù)</p><p> 4 寫(xiě)數(shù)據(jù):輸入:RS=H,RW=L,D0~D7=數(shù)據(jù),E=高脈沖 輸出:無(wú) </p><p> 3.4.3液晶顯示器的工作原理</p><p> 液晶顯示器的英文縮寫(xiě)為L(zhǎng)CD(Liquid Crystal Di
55、splay),它是一種數(shù)字顯示技術(shù),內(nèi)部有LCD面板、驅(qū)動(dòng)和控制電路組合而成,可以通過(guò)液晶和彩色過(guò)濾器過(guò)濾光源,在平面面板上產(chǎn)生圖像。</p><p> 液晶是一種呈液體狀的化學(xué)物質(zhì),像磁場(chǎng)中的金屬一樣,當(dāng)受到外界電場(chǎng)影響時(shí),其分子會(huì)產(chǎn)生精確有序的排列。如果對(duì)分子的排列進(jìn)行適當(dāng)?shù)目刂?,光線就可以穿越液晶分子。位于最后面得一層是由熒光物質(zhì)組成的可以發(fā)射光線的背光層。當(dāng)LCD中的電極產(chǎn)生電場(chǎng)時(shí),液晶分子就會(huì)產(chǎn)生扭曲
56、,從而將穿越其中的光線進(jìn)行有規(guī)則的折射,然后通過(guò)第二層過(guò)濾層的過(guò)濾在屏幕上顯示出來(lái)。</p><p> 在單片機(jī)應(yīng)用系統(tǒng)中,液晶顯示器主要分為段位式LCD,字符式LCD,和點(diǎn)陣式LCD。而本設(shè)計(jì)用的是字符式LCD只能顯示字符和數(shù)字。字符式LCD模塊是由字符LCD顯示器和專(zhuān)用的行列驅(qū)動(dòng)器、控制器及必要的連接、結(jié)構(gòu)件裝配而成,可以顯示數(shù)字和英文字符,這種字符LCD模塊本身具有字符發(fā)生器,顯示容量大,功能豐富,常用1
57、6字×2行。</p><p><b> 3.5掉電充電電路</b></p><p> 實(shí)時(shí)時(shí)鐘電路DS1302是一種具有涓細(xì)電流充電能力的電路,采用32.768kHz晶振,可為掉電保護(hù)電源提供可編程的充電功能。DS1302實(shí)時(shí)時(shí)鐘電路如圖所示。</p><p> 3.6 系統(tǒng)整體硬件電路</p><p>
58、<b> 第四章 軟件設(shè)計(jì)</b></p><p><b> 4.1主程序設(shè)計(jì)</b></p><p> 程序才用模塊化設(shè)計(jì),流程圖如圖1所示。</p><p> 從上面主程序看出,主程序的組成是通過(guò)分別調(diào)用各子程序組成總體系統(tǒng)功能,能很直觀的看出主程序所要完成的功能,首先是初始化各模塊,之后調(diào)用鍵盤(pán)完成時(shí)間,日歷
59、,時(shí)鐘的初始化和時(shí)間數(shù)據(jù)的讀寫(xiě),調(diào)用溫度子程序完成溫度芯片的初始化和讀寫(xiě),調(diào)用顯示子程序顯示數(shù)據(jù),最后又轉(zhuǎn)到鍵盤(pán)程序來(lái)回循環(huán)。</p><p> 初始化部分主要有初始化定時(shí)器部分和和一些寄存器、標(biāo)志位、初始化時(shí)間等對(duì)定時(shí)器T0初始化時(shí),首先置初值,CPU開(kāi)中斷,定時(shí)器T0開(kāi)中斷,并且開(kāi)始計(jì)數(shù),而對(duì)定時(shí)器T1初始化時(shí),首先置初值,,定時(shí)器T1關(guān)中斷,并且停止計(jì)數(shù),只有收到命令時(shí)才能產(chǎn)生中斷。</p>
60、<p> 寄存器的初始化主要是初始化執(zhí)行程序時(shí)用到的部分RAM空間,防止程序執(zhí)行時(shí)帶來(lái)混亂。</p><p> 標(biāo)志位初始化是對(duì)時(shí)間調(diào)整時(shí)判斷是調(diào)分還是調(diào)時(shí)等而專(zhuān)設(shè)的位標(biāo)志,初始化過(guò)程中標(biāo)志位全部置0,即開(kāi)始時(shí)是處于顯示狀態(tài),而不是調(diào)整狀態(tài),這一點(diǎn)在程序中相當(dāng)明了。</p><p> 初始化時(shí)間是開(kāi)機(jī)時(shí)顯示的時(shí)間,并通過(guò)調(diào)用日歷時(shí)鐘的寫(xiě)程序來(lái)完成時(shí)間的置初值。</p
61、><p><b> 圖 1主程序流程圖</b></p><p> 4.2 鍵盤(pán)子程序設(shè)計(jì)</p><p> 多功能鍵盤(pán)程序的設(shè)計(jì)是本設(shè)計(jì)的難點(diǎn),也是完成本設(shè)計(jì)的重點(diǎn),當(dāng)有鍵按下時(shí),調(diào)用10ms延時(shí)程序,再判斷是否有鍵按下無(wú)則返回,若有先調(diào)用顯示程序再判斷是否松開(kāi),否則再轉(zhuǎn)到顯示程序,這樣避免了在按鍵松開(kāi)之前能正常顯示。 K1鍵按下后對(duì)應(yīng)的位置
62、閃爍。當(dāng)判斷鍵值為1時(shí)則為調(diào)秒狀態(tài),對(duì)應(yīng)的秒低位閃爍,為2時(shí)為調(diào)分狀態(tài)并分閃爍,為3時(shí)為調(diào)時(shí)狀態(tài)并時(shí)閃爍,為4時(shí)為調(diào)日狀態(tài)并日閃爍,為5時(shí)為調(diào)月?tīng)顟B(tài)并月閃爍,為6時(shí)為調(diào)年?duì)顟B(tài)并年閃爍,為7時(shí)為調(diào)星期狀態(tài)并星期閃爍。K2為加1鍵,K3為減1鍵,K4為總返回鍵,即在調(diào)時(shí)間時(shí)不用只有按下K1鍵值為8才返回,而通過(guò)按下K4鍵即可返回。鍵盤(pán)子程序流程圖如圖2所示。</p><p> 在鍵盤(pán)子程序中當(dāng)判斷鍵值為1~7時(shí)是對(duì)
63、時(shí)間秒、分、時(shí)、日、月、年、星期調(diào)整原理和調(diào)秒相同,由于鍵盤(pán)流程圖非常復(fù)雜,在此省略了調(diào)分時(shí)等。</p><p><b> 4.3 溫度子程序</b></p><p> 由于DS18B20采用的是單總線協(xié)議方式,即在一根數(shù)據(jù)線上實(shí)現(xiàn)數(shù)據(jù)的雙向傳輸,而對(duì)AT89S52單片機(jī)來(lái)說(shuō),硬件上并不支持單總線協(xié)議,因此,我們必須采用軟件的方法來(lái)模擬單總線的協(xié)議時(shí)序來(lái)完成對(duì)DS
64、18B20芯片的訪問(wèn)。由于DS18B20是在一根I/O線上讀寫(xiě)數(shù)據(jù),因此,對(duì)讀寫(xiě)的數(shù)據(jù)位有著嚴(yán)格的時(shí)序要求。DS18B20有嚴(yán)格的通信協(xié)議來(lái)保證各位數(shù)據(jù)傳輸?shù)恼_性和完整性。該協(xié)議定義了幾種信號(hào)的時(shí)序:初始化時(shí)序、讀時(shí)序、寫(xiě)時(shí)序。所有時(shí)序都是將主機(jī)作為主設(shè)備,單總線器件作為從設(shè)備。而每一次命令和數(shù)據(jù)的傳輸都是從主機(jī)啟動(dòng)寫(xiě)時(shí)序開(kāi)始,如果要求單總線器件回送數(shù)據(jù),在進(jìn)行寫(xiě)命令后,主機(jī)需啟動(dòng)讀時(shí)序完成數(shù)據(jù)接收。數(shù)據(jù)和命令的傳輸都是低位在先。&l
65、t;/p><p> 輸?shù)絾慰偩€上。DS18B20在完成一個(gè)讀時(shí)序過(guò)程,至少需要60us才能完成。DS18B20轉(zhuǎn)換后的溫度值以2字節(jié)16位補(bǔ)碼形式存放在高速暫存存儲(chǔ)器的第1、2個(gè)字節(jié)里,高位在前,低位在后。所以讀取溫度時(shí),要分兩次進(jìn)行。讀溫度子程序如圖4所示。</p><p> 4.4顯示子程序設(shè)計(jì)</p><p> 電子產(chǎn)品是否實(shí)用其中顯示占了很重要的地位,很多
66、數(shù)人都渴求用視覺(jué)效果好,范圍廣,直觀明了,LCD符合以上的要求,但相應(yīng)的硬件設(shè)計(jì)相對(duì)復(fù)雜。</p><p> 本設(shè)計(jì)的顯示部分具有消隱和閃爍功能,當(dāng)時(shí)分秒等高位為0時(shí)顯示消隱, </p><p> 此時(shí)在讀時(shí)間時(shí)更加明了,但低位不能顯示消隱。閃爍功能也是本設(shè)計(jì)的一個(gè)難點(diǎn),本設(shè)計(jì)采用8個(gè)位標(biāo)志位,其中一個(gè)標(biāo)志位通過(guò)用定時(shí)器0產(chǎn)生一個(gè)周期大約為每秒1.5次,使閃爍時(shí)效果達(dá)到最好。此時(shí)定時(shí)器
67、采用定時(shí)中斷的工作方式,這樣可以充分利用CPU資源。另外7個(gè)標(biāo)志位是時(shí)分秒等的位標(biāo)志位,當(dāng)秒標(biāo)志位置1時(shí)即秒開(kāi)閃爍,與用中斷產(chǎn)生的標(biāo)志位相結(jié)合,即在一個(gè)周期內(nèi)為0時(shí)此時(shí)消隱為1時(shí)開(kāi)顯示,這樣就使在調(diào)時(shí)間時(shí)對(duì)應(yīng)的位閃爍。</p><p><b> 第五章 數(shù)據(jù)測(cè)試</b></p><p> 用手觸屏溫度傳感器,可以發(fā)現(xiàn)溫度大概顯示為32度左右。將溫度傳感器與塑料袋裝
68、的冰水混合物接觸,觀察液晶顯示的溫度是否為零度。</p><p><b> 結(jié)束語(yǔ)</b></p><p> 本論文重點(diǎn)介紹了單片機(jī)和數(shù)字溫度傳感器DS18B20的原理和功能,并用DS18B20與AT89S52單片機(jī)、LCD1602組成數(shù)字溫度計(jì),有超溫報(bào)警,日期時(shí)間顯示功能。</p><p> 在這次課程設(shè)計(jì)的整個(gè)過(guò)程中,我做了一次全面
69、、較規(guī)范的設(shè)計(jì)練習(xí),全面地溫習(xí)了以前所學(xué)過(guò)的知識(shí),理論聯(lián)系實(shí)際并結(jié)合單片機(jī)原理課程來(lái)解決實(shí)際問(wèn)題,鞏固、加深和擴(kuò)展了有關(guān)單片機(jī)設(shè)計(jì)方面的知識(shí)。尤其重要的是讓我養(yǎng)成了科學(xué)的習(xí)慣,在設(shè)計(jì)過(guò)程中一定要注意掌握設(shè)計(jì)進(jìn)度,按預(yù)定計(jì)劃完成階段性的目標(biāo),在底圖設(shè)計(jì)階段,注意設(shè)計(jì)計(jì)算與結(jié)構(gòu)設(shè)計(jì)畫(huà)圖交替進(jìn)行,采用正確的設(shè)計(jì)方法。在整個(gè)設(shè)計(jì)過(guò)程中注意對(duì)設(shè)計(jì)資料和計(jì)算數(shù)據(jù)的保存和積累,保持記錄的完整性。在課程設(shè)計(jì)的實(shí)踐中進(jìn)行了設(shè)計(jì)基本技能的訓(xùn)練,掌握了查閱和
70、使用標(biāo)準(zhǔn)、規(guī)范、手冊(cè)、圖冊(cè)、及相關(guān)技術(shù)資料的基本技能以及計(jì)算、數(shù)據(jù)處理等方面的能力。</p><p> 在本次設(shè)計(jì)的過(guò)程中,我發(fā)現(xiàn)了很多的問(wèn)題,雖然以前還做過(guò)類(lèi)似這樣的設(shè)計(jì)但這次設(shè)計(jì)真的讓我長(zhǎng)進(jìn)了很多,讓我深刻體會(huì)到了單片機(jī)課程設(shè)計(jì)重點(diǎn)就在于軟件算法的設(shè)計(jì),需要有很巧妙的程序算法,雖然以前寫(xiě)過(guò)幾次程序,但我覺(jué)的寫(xiě)好一個(gè)程序并不是一件簡(jiǎn)單的事。</p><p> 通過(guò)對(duì)通用89C52單片
71、機(jī)、常用元器件的設(shè)計(jì),掌握了一般單片機(jī)設(shè)計(jì)的程序和方法,讓我對(duì)整個(gè)單片機(jī)程序的設(shè)計(jì),C語(yǔ)言有了一個(gè)比較深的理解。通過(guò)這次的課程設(shè)計(jì),讓我我真正的意識(shí)到,在學(xué)習(xí)過(guò)程中理論聯(lián)系實(shí)際的重要性。只有把所學(xué)的理論知識(shí)用到實(shí)際當(dāng)中,所學(xué)的知識(shí)才會(huì)有價(jià)值,學(xué)習(xí)單機(jī)片機(jī)更是如此,軟件編程能力只有在經(jīng)常的寫(xiě)與讀的過(guò)程中才能得到提高,這是我在這次課程設(shè)計(jì)中的最大收獲。</p><p><b> 致謝</b>&
72、lt;/p><p> 經(jīng)過(guò)一段時(shí)間的努力,畢業(yè)設(shè)計(jì)基本完成了。在畢業(yè)設(shè)計(jì)的實(shí)踐中,我學(xué)到了很多有用的知識(shí),也積累了很多寶貴的經(jīng)驗(yàn)。</p><p> 在此要特別感謝白銀生老師,本論文是在老師的全面指導(dǎo)中完成的,老師對(duì)我非常的嚴(yán)格,畢業(yè)設(shè)計(jì)的順利完成離不開(kāi)老師的幫助,老師認(rèn)真負(fù)責(zé)的工作態(tài)度促使我更好的完成了本畢業(yè)設(shè)計(jì),和老師相處的時(shí)間不多,但老師對(duì)專(zhuān)業(yè)的態(tài)度非常值得我學(xué)習(xí),讓我對(duì)本專(zhuān)業(yè)有了更
73、大的學(xué)習(xí)興趣。同時(shí)感謝身邊的同學(xué),他們?yōu)槲姨峁┝撕芏鄬氋F的資料。在論文完成之際,向他們致以最真摯的感謝和最崇高的敬意!</p><p> 由于自己本身對(duì)一些知識(shí)的掌握不是很深刻,設(shè)計(jì)難免會(huì)出現(xiàn)一些漏洞,雖然設(shè)計(jì)做的不是很完美,但是畢竟是自己認(rèn)認(rèn)真真做出來(lái)的,希望各位老師給予指正。同時(shí)感謝母校對(duì)我四年來(lái)的教育和關(guān)心,在這里我不僅學(xué)到了專(zhuān)業(yè)知識(shí),而且學(xué)到了很多做人做事的道理,是我明確了以后發(fā)展的方向,樹(shù)立了良好的價(jià)
74、值觀,所學(xué)到的一切都將使我終身受益。</p><p> 再次衷心感謝所有關(guān)心和幫助過(guò)我的老師和同學(xué),謝謝你們!</p><p><b> 參考文獻(xiàn)</b></p><p> [1] 陳永真.全國(guó)大學(xué)生電子設(shè)計(jì)競(jìng)賽試題精解選.北京: 電子工業(yè)出版社,2007</p><p> [2] 李朝青.單片機(jī)原理及
75、接口技術(shù).北京: 北京航空航天大學(xué)出版社,1998</p><p> [3] 張琳娜,劉武發(fā).傳感檢測(cè)技術(shù)及應(yīng)用.北京: 中國(guó)計(jì)量出版社,1999</p><p> [4] 李廣弟.單片機(jī)基礎(chǔ).北京: 北京航空航天大學(xué)出版社,1994</p><p> [5] 謝自美. 電子線路綜合設(shè)計(jì)[M]. 武漢:華中科技大學(xué)出版社, 200
76、7.</p><p> [6] 康華光. 電子技術(shù)基礎(chǔ)(模擬部分)(第五版)[M]. 武漢:華中科技大學(xué)出版社, 2007.</p><p> [7] 吳微,文軍.單片機(jī)原理與制作[M].武漢:武漢大學(xué)出版社,1991.3</p><p> [8] 梅開(kāi)鄉(xiāng).數(shù)字邏輯電路(第2版).北京:電子工業(yè)出版社,2005</p><p> [9
77、] 馬忠梅.單片機(jī)的C語(yǔ)言應(yīng)用程序設(shè)計(jì)(第3版) .北京:航空航天大學(xué)出版社,2003</p><p> [10] 吉 雷.Protel99從入門(mén)到精通.西安:西安電子科技大學(xué)出版社,2004</p><p> [11] 趙負(fù)圖.傳感器集成電路手冊(cè).北京:化學(xué)工業(yè)出版社,2002</p><p> [12] 李 華.MCS-51單片機(jī)實(shí)用接口技術(shù).北京:北
78、京航空航天出版社,1997</p><p><b> 附錄一 源程序代碼</b></p><p> #include <reg52.h></p><p> #include <intrins.h></p><p> #define uint unsigned int</p>
79、<p> #define uchar unsigned char</p><p> sbit DS1302_CLK = P3^6; //實(shí)時(shí)時(shí)鐘時(shí)鐘線引腳 </p><p> sbit DS1302_IO = P3^4; //實(shí)時(shí)時(shí)鐘數(shù)據(jù)線引腳 </p><p> sbit DS1302
80、_RST = P3^5; //實(shí)時(shí)時(shí)鐘復(fù)位線引腳</p><p> sbit ACC0 = ACC^0;</p><p> sbit ACC7 = ACC^7;</p><p> char hide_sec,hide_min,hide_hour,hide_day,hide_week,hide_month,hide_year; /
81、/秒,分,時(shí)到日,月,年位閃的計(jì)數(shù)</p><p> sbit Set = P2^3; //模式切換鍵</p><p> sbit Up = P2^4; //加法按鈕</p><p> sbit Down = P2^5; //減法按鈕</p><p> sbit out = P2^6;
82、//立刻跳出調(diào)整模式按鈕</p><p> sbit DQ = P3^7; //溫度傳送數(shù)據(jù)IO口</p><p> sbit led=P2^7;</p><p> uchar dat[4]={0,0,0,0};</p><p> char done,count,temp,flag,up_flag,down_flag;
83、 //</p><p> uchar temp_value; //溫度值</p><p> uchar TempBuffer[5],week_value[2]; //</p><p> void show_time(); //液晶顯示程序</p><p> /***********1602液
84、晶顯示部分子程序****************/</p><p> //Port Definitions**********************************************************</p><p> sbit LcdRs= P2^0;</p><p> sbit LcdRw= P2^1;</p>
85、<p> sbit LcdEn = P2^2;</p><p> sfr DBPort = 0x80;//P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.數(shù)據(jù)端口</p><p> //內(nèi)部等待函數(shù)**************************************************************************&
86、lt;/p><p> unsigned char LCD_Wait(void)</p><p><b> {</b></p><p><b> LcdRs=0;</b></p><p> LcdRw=1;_nop_();</p><p> LcdEn=1;_nop_
87、();</p><p><b> LcdEn=0;</b></p><p> return DBPort;</p><p><b> }</b></p><p> //向LCD寫(xiě)入命令或數(shù)據(jù)*************************************************
88、***********</p><p> #define LCD_COMMAND0 // Command</p><p> #define LCD_DATA1 // Data</p><p> #define LCD_CLEAR_SCREEN0x01 // 清屏</p><p> #defi
89、ne LCD_HOMING 0x02 // 光標(biāo)返回原點(diǎn)</p><p> void LCD_Write(bit style, unsigned char input)</p><p><b> {</b></p><p><b> LcdEn=0;</b></p><p>
90、 LcdRs=style;</p><p> LcdRw=0;_nop_();</p><p> DBPort=input;_nop_();//注意順序</p><p> LcdEn=1;_nop_();//注意順序</p><p> LcdEn=0;_nop_();</p><p> LCD_
91、Wait();</p><p><b> }</b></p><p> //設(shè)置顯示模式************************************************************</p><p> #define LCD_SHOW0x04 //顯示開(kāi)</p><p>
92、#define LCD_HIDE0x00 //顯示關(guān) </p><p> #define LCD_CURSOR0x02 //顯示光標(biāo)</p><p> #define LCD_NO_CURSOR0x00 //無(wú)光標(biāo) </p><p> #define LCD_FLASH0x01 //光標(biāo)閃動(dòng)</p
93、><p> #define LCD_NO_FLASH0x00 //光標(biāo)不閃動(dòng)</p><p> void LCD_SetDisplay(unsigned char DisplayMode)</p><p><b> {</b></p><p> LCD_Write(LCD_COMMAND, 0x08|Dis
94、playMode);</p><p><b> }</b></p><p> //設(shè)置輸入模式************************************************************</p><p> #define LCD_AC_UP0x02</p><p> #defi
95、ne LCD_AC_DOWN0x00 // default</p><p> #define LCD_MOVE0x01 // 畫(huà)面可平移</p><p> #define LCD_NO_MOVE0x00 //default</p><p> void LCD_SetInput(unsigned char Inpu
96、tMode)</p><p><b> {</b></p><p> LCD_Write(LCD_COMMAND, 0x04|InputMode);</p><p><b> }</b></p><p> //初始化LCD***********************************
97、*************************</p><p> void LCD_Initial()</p><p><b> {</b></p><p><b> LcdEn=0;</b></p><p> LCD_Write(LCD_COMMAND,0x38);
98、 //8位數(shù)據(jù)端口,2行顯示,5*7點(diǎn)陣</p><p> LCD_Write(LCD_COMMAND,0x38);</p><p> LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR); //開(kāi)啟顯示, 無(wú)光標(biāo)</p><p> LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏&l
99、t;/p><p> LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE); //AC遞增, 畫(huà)面不動(dòng)</p><p><b> }</b></p><p> //液晶字符輸入的位置************************</p><p> void GotoXY(unsigned
100、 char x, unsigned char y)</p><p><b> {</b></p><p><b> if(y==0)</b></p><p> LCD_Write(LCD_COMMAND,0x80|x);</p><p><b> if(y==1)</b>
101、;</p><p> LCD_Write(LCD_COMMAND,0x80|(x-0x40));</p><p><b> }</b></p><p> //將字符輸出到液晶顯示</p><p> void Print(unsigned char *str)</p><p><b&g
102、t; {</b></p><p> while(*str!='\0')//while(*str!='\0')</p><p><b> {</b></p><p> LCD_Write(LCD_DATA,*str);</p><p><b> str++;&
103、lt;/b></p><p><b> }</b></p><p><b> }</b></p><p> /***********DS1302時(shí)鐘部分子程序******************/</p><p> typedef struct SYSTEMTIME</p>
104、<p><b> {</b></p><p> unsigned char Second;</p><p> unsigned char Minute;</p><p> unsigned char Hour;</p><p> unsigned char Week;</p><
105、;p> unsigned char Day;</p><p> unsigned char Month;</p><p> unsigned char Year;</p><p> unsigned char DateString[11];</p><p> unsigned char TimeString[9];</p
106、><p> }SYSTEMTIME;//定義的時(shí)間類(lèi)型</p><p> SYSTEMTIME CurrentTime; //</p><p> #define AM(X)X</p><p> #define PM(X)(X+12) // 轉(zhuǎn)成24小時(shí)制</p><p>
107、#define DS1302_SECOND0x80 //時(shí)鐘芯片的寄存器位置,存放時(shí)間</p><p> #define DS1302_MINUTE0x82</p><p> #define DS1302_HOUR0x84 </p><p> #define DS1302_WEEK0x8A</p><p>
108、 #define DS1302_DAY0x86</p><p> #define DS1302_MONTH0x88</p><p> #define DS1302_YEAR0x8C </p><p> void DS1302InputByte(unsigned char d) //實(shí)時(shí)時(shí)鐘寫(xiě)入一字節(jié)(內(nèi)部函數(shù))</p><p&
109、gt;<b> { </b></p><p> unsigned char i;</p><p><b> ACC = d;</b></p><p> for(i=8; i>0; i--)</p><p><b> {</b></p><p&
110、gt; DS1302_IO = ACC0; //相當(dāng)于匯編中的 RRC</p><p> DS1302_CLK = 1;</p><p> DS1302_CLK = 0;</p><p> ACC = ACC >> 1; </p><p><b> } </b></p&g
111、t;<p><b> }</b></p><p> unsigned char DS1302OutputByte(void) //實(shí)時(shí)時(shí)鐘讀取一字節(jié)(內(nèi)部函數(shù))</p><p><b> { </b></p><p> unsigned char i;</p><p> f
112、or(i=8; i>0; i--)</p><p><b> {</b></p><p> ACC = ACC >>1; //相當(dāng)于匯編中的 RRC </p><p> ACC7 = DS1302_IO;</p><p> DS1302_CLK = 1;</p>
113、<p> DS1302_CLK = 0;</p><p><b> } </b></p><p> return(ACC); </p><p><b> }</b></p><p> void Write1302(unsigned char ucAddr, unsigned
114、char ucDa)//ucAddr: DS1302地址, ucData: 要寫(xiě)的數(shù)據(jù)</p><p><b> {</b></p><p> DS1302_RST = 0;</p><p> DS1302_CLK = 0;</p><p> DS1302_RST = 1;</p><p&g
115、t; DS1302InputByte(ucAddr); // 地址,命令 </p><p> DS1302InputByte(ucDa); // 寫(xiě)1Byte數(shù)據(jù)</p><p> DS1302_CLK = 1;</p><p> DS1302_RST = 0;</p><p><b> } &
116、lt;/b></p><p> unsigned char Read1302(unsigned char ucAddr)//讀取DS1302某地址的數(shù)據(jù)</p><p><b> {</b></p><p> unsigned char ucData;</p><p> DS1302_RST = 0;&l
117、t;/p><p> DS1302_CLK = 0;</p><p> DS1302_RST = 1;</p><p> DS1302InputByte(ucAddr|0x01); // 地址,命令 </p><p> ucData = DS1302OutputByte(); // 讀1Byte數(shù)據(jù)</p
溫馨提示
- 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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)論文---數(shù)字溫度計(jì)的設(shè)計(jì)
- 畢業(yè)論文---數(shù)字溫度計(jì)
- 數(shù)字溫度計(jì)畢業(yè)論文
- 數(shù)字溫度計(jì)論文數(shù)字溫度計(jì)設(shè)計(jì)論文
- 畢業(yè)論文范文——數(shù)字溫度計(jì)
- 畢業(yè)論文范文——數(shù)字溫度計(jì)
- 數(shù)字溫度計(jì)畢業(yè)設(shè)計(jì)論文
- 畢業(yè)論文-數(shù)字溫度計(jì)設(shè)計(jì)【精校排版】
- 畢業(yè)論文---單片機(jī)數(shù)字溫度計(jì)設(shè)計(jì)
- 數(shù)字溫度計(jì)設(shè)計(jì)畢業(yè)課題論文
- 溫度計(jì)畢業(yè)論文
- 智能數(shù)字溫度計(jì)設(shè)計(jì)-自動(dòng)化畢業(yè)論文
- 畢業(yè)設(shè)計(jì)(論文)數(shù)字溫度計(jì)的設(shè)計(jì)
- 基于spce061a的數(shù)字溫度計(jì)設(shè)計(jì)【畢業(yè)論文】
- 畢業(yè)論文---基于單片機(jī)的數(shù)字溫度計(jì)設(shè)計(jì)
- 基于單片機(jī)的數(shù)字溫度計(jì)設(shè)計(jì)畢業(yè)論文
- 基于單片機(jī)的數(shù)字溫度計(jì)設(shè)計(jì)【畢業(yè)論文】
- 數(shù)字溫度計(jì)畢業(yè)設(shè)計(jì)論文1
- 電子溫度計(jì)畢業(yè)論文
- 基于單片機(jī)的數(shù)字溫度計(jì)設(shè)計(jì)畢業(yè)論文
評(píng)論
0/150
提交評(píng)論