基于51單片機(jī)的液晶顯示萬(wàn)年歷設(shè)計(jì)[共42頁(yè)]

上傳人:gfy****yf 文檔編號(hào):40981966 上傳時(shí)間:2021-11-18 格式:DOC 頁(yè)數(shù):42 大?。?58.50KB
收藏 版權(quán)申訴 舉報(bào) 下載
基于51單片機(jī)的液晶顯示萬(wàn)年歷設(shè)計(jì)[共42頁(yè)]_第1頁(yè)
第1頁(yè) / 共42頁(yè)
基于51單片機(jī)的液晶顯示萬(wàn)年歷設(shè)計(jì)[共42頁(yè)]_第2頁(yè)
第2頁(yè) / 共42頁(yè)
基于51單片機(jī)的液晶顯示萬(wàn)年歷設(shè)計(jì)[共42頁(yè)]_第3頁(yè)
第3頁(yè) / 共42頁(yè)

下載文檔到電腦,查找使用更方便

12 積分

下載資源

還剩頁(yè)未讀,繼續(xù)閱讀

資源描述:

《基于51單片機(jī)的液晶顯示萬(wàn)年歷設(shè)計(jì)[共42頁(yè)]》由會(huì)員分享,可在線閱讀,更多相關(guān)《基于51單片機(jī)的液晶顯示萬(wàn)年歷設(shè)計(jì)[共42頁(yè)](42頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、基于51單片機(jī)的液晶顯示萬(wàn)年歷設(shè)計(jì) 摘 要 隨著社會(huì)的進(jìn)步和發(fā)展,電子萬(wàn)年歷作為日常計(jì)時(shí)工具被廣泛地應(yīng)用。此電子萬(wàn)年歷在硬件方面主要采用STC89C51單片機(jī)作為主控核心,由DS1302時(shí)鐘芯片提供時(shí)鐘及1602LCD液晶顯示屏顯示。STC89C51單片機(jī)是由宏晶公司公司生產(chǎn)的,功耗小,電壓可選用3.4v~5.5v電壓供電;DS1302時(shí)鐘芯片是美國(guó)DALLAS公司推出的低功耗實(shí)時(shí)時(shí)鐘芯片,它可以對(duì)年、月、日、星期、時(shí)、分、秒進(jìn)行計(jì)時(shí),而且DS1302的使用壽命長(zhǎng),誤差??;對(duì)于數(shù)字電子萬(wàn)年歷采用直觀的數(shù)字顯示,數(shù)字顯示是采用的1602LCD液晶顯示屏來(lái)顯示,可以同時(shí)顯示年、月、日、星期、時(shí)

2、、分、秒、溫度等信息。此外,該電子萬(wàn)年歷在軟件方面主要包括日歷程序、時(shí)間調(diào)整程序,顯示程序等。所有程序編寫(xiě)完成后,在Keil軟件中進(jìn)行調(diào)試,確定沒(méi)有問(wèn)題后,燒寫(xiě)到單片機(jī)上進(jìn)行測(cè)試。 本次課程設(shè)計(jì)主要由時(shí)鐘芯片DS1302和溫度傳感器DS18B20采集數(shù)據(jù)到單片機(jī)進(jìn)行處理再通過(guò)LCD1602顯示出來(lái),本設(shè)計(jì)主要研究了液晶顯示器LCD及時(shí)鐘芯片DS1302,溫度傳感器DS18B20與單片機(jī)之間的硬件互聯(lián)及通信,對(duì)數(shù)種硬件連接方案進(jìn)行了詳盡的比較。 關(guān)鍵詞:?jiǎn)纹瑱C(jī);DS1302;DS18B20;LCD1602 I ABSTRACT With

3、the social progress and development, Electronic calendar is widely used as a daily timing tool. The electronic calendar in hardware using STC89C51 microcontroller as the main control center, provided by the DS1302 clock chip and 1602LCD LCD display. STC89C51 microcontroller is produced by the macro

4、crystal company, small power consumption, the voltage can be choosen among 3.4V ~ 5.5V for power supply; DS1302 clock chip is a low power real-time clock chip produced by DALLAS, it can be a time of years,months,days,weeks,hours,minutes,seconds, and DS1302 has a long service life. The error is small

5、; for the digital electronic calendar using visual digital display, 1602LCD digital display is used to display LCD screen that can display years, months, days, weeks, hours, minutes and seconds, temperature and other information. In addition, the electronic calendar mainly includes calendar program,

6、time to adjust procedures,display program etc in sofeware. After the completion of all the procedures, in the Keil software debugging, determine no problem after, and burning to the microcontroller test. The curriculum design mainly by the clock chip DS1302 and temperature sensor DS18B20 collectin

7、g data to the microcontroller for processing and then through the LCD1602 display, this design mainly studies the liquid crystal display LCD and the clock chip DS1302, the hardware connection and communication between the temperature sensor DS18B20 and the MCU, a number of hardware connection scheme

8、 for a detailed comparison. Key words:SCM,DS1302,DS18B20,LCD1602 II 目 錄 第一章 緒 論 - 1 - 1.1 單片機(jī)的概述 - 1 - 1.1.1 單片機(jī)的概念 - 1 - 1.1.2 單片機(jī)的特點(diǎn) - 1 - 1.2 課題背景 - 1 - 1.3 課題內(nèi)容 - 2 - 第二章 設(shè)計(jì)要求和方案 - 3 - 2.1 設(shè)計(jì)要求 - 3 - 2.2 設(shè)計(jì)方案 - 3 - 2.2.1 單片機(jī)芯片的選擇 - 3 - 2.2.2 各模塊方案選擇 - 3 - 2.3 工作原理 - 4 -

9、 第三章 系統(tǒng)的硬件設(shè)計(jì)及實(shí)現(xiàn) - 7 - 3.1 電路設(shè)計(jì)原理框圖 - 7 - 3.2 STC89C51單片機(jī)的介紹 - 7 - 3.2.1 主要功能及性能參數(shù) - 7 - 3.2.2單片機(jī)的引腳功能說(shuō)明 - 8 - 3.3 各模塊電路的設(shè)計(jì)及原理圖 - 9 - 3.3.1 時(shí)鐘電路模塊的設(shè)計(jì) - 9 - 3.3.2 溫度采集模塊的設(shè)計(jì)及原理圖 - 10 - 3.3.3 顯示模塊的設(shè)計(jì)及原理 - 11 - 第四章 系統(tǒng)的軟件設(shè)計(jì) - 13 - 4.1 程序流程框圖 - 13 - 4.2 時(shí)間調(diào)整程序流程圖 - 14 - 第五章 系統(tǒng)測(cè)試 - 15 - 5.1

10、硬件測(cè)試 - 15 - 5.2 軟件測(cè)試 - 15 - 第六章 總結(jié)與致謝 - 17 - 6.1 總結(jié) - 17 - 6.2 致謝 - 18 - 參考文獻(xiàn) - 19 - 附 錄 - 21 - 附錄一:實(shí)物圖 - 21 - 附錄二:源程序 - 22 - 第一章 緒 論 1.1 單片機(jī)的概述 1.1.1 單片機(jī)的概念 單片機(jī)即單片微型計(jì)算機(jī),是把中央處理器、存儲(chǔ)器、定時(shí)/計(jì)數(shù)器、輸入輸出接口都集成在一塊集成電路芯片上的微型計(jì)算機(jī)。與應(yīng)用在個(gè)人電腦中的通用型微處理器相比,它更強(qiáng)調(diào)自供應(yīng)和節(jié)約成本。單片機(jī)也被稱為微控制器,是因?yàn)樗钤绫挥糜诠I(yè)控制領(lǐng)域。單片機(jī)的

11、芯片內(nèi)僅由CPU的專(zhuān)用處理器發(fā)展而來(lái)。最早的設(shè)計(jì)理念是通過(guò)將大量外圍設(shè)備和CPU集成在一個(gè)芯片中,使計(jì)算機(jī)系統(tǒng)更小,更容易集成復(fù)雜的而對(duì)體積要求嚴(yán)格的控制設(shè)備當(dāng)中。 1.1.2 單片機(jī)的特點(diǎn) 單片機(jī)以其卓越的性能,得到了廣泛的應(yīng)用,已深入到各個(gè)領(lǐng)域。單片機(jī)應(yīng)用在檢測(cè)、控制領(lǐng)域中,具有如下特點(diǎn): 1、體積小、控制功能強(qiáng)、成本低。因而可以方便地組裝各種智能式控制設(shè)備和儀器,做到機(jī)、電、儀一體化。 2、易擴(kuò)展。很容易構(gòu)成各種規(guī)模的應(yīng)用系統(tǒng),為應(yīng)用系統(tǒng)的設(shè)計(jì)和生產(chǎn)帶來(lái)極大方便。 3、可靠性好、使用溫度范圍寬。在各種惡劣的環(huán)境下都能可靠的工作,這是其他機(jī)種無(wú)法比擬的。 4、種類(lèi)多,型號(hào)全。很

12、多單片機(jī)廠家逐年擴(kuò)大適應(yīng)各種需要,有針對(duì)性地推出一系列型號(hào)產(chǎn)品,使系統(tǒng)開(kāi)發(fā)工程師有很大的選擇余地。大部分產(chǎn)品有較好的兼容性,保證了已開(kāi)發(fā)產(chǎn)品能順利移植,較容易地使產(chǎn)品進(jìn)行升級(jí)換代。 5、低功耗?,F(xiàn)在新型單片機(jī)的功耗越來(lái)越小,供電電壓從5V降低到了3.2V,甚至1V,工作電流從mA降到A級(jí),工作頻率從十幾兆可編程到幾十千赫茲。 1.2 課題背景 生活中我們無(wú)時(shí)無(wú)刻不在與時(shí)間聯(lián)系,是時(shí)間牽引著我們上班不遲到,日常生活都有著一定的規(guī)律。隨著社會(huì)、科技的發(fā)展,人們得知時(shí)間,從觀太陽(yáng)、擺鐘到現(xiàn)在電子鐘的不斷研究、創(chuàng)新。為了在觀測(cè)時(shí)間的同時(shí)能夠了解其它與人類(lèi)密切相關(guān)的信息,比如溫度、星期、日期等,所

13、以誕生了電子萬(wàn)年歷,它是集時(shí)間、日期、星期和溫度功能于一身,具有讀取方便、顯示直觀、功能多樣、電路簡(jiǎn)潔等諸多優(yōu)點(diǎn),符合電子儀器儀表的發(fā)展趨勢(shì)。伴隨著電子技術(shù)的迅速發(fā)展,特別是隨大規(guī)模集成電路出現(xiàn),給人類(lèi)生活帶來(lái)了根本性的改變。尤其是單片機(jī)技術(shù)的應(yīng)用產(chǎn)品已經(jīng)走進(jìn)了千家萬(wàn)戶。 1.3 課題內(nèi)容 單片機(jī)以其體積小、功能全、性價(jià)比高等諸多優(yōu)點(diǎn),在工業(yè)控制、家用電器、通信設(shè)備、信息處理、尖端武器等各種測(cè)控領(lǐng)域的應(yīng)用中獨(dú)占霸主,單片機(jī)開(kāi)發(fā)技術(shù)已成為電子信息、電氣、通信、自動(dòng)化、機(jī)電一體化等專(zhuān)業(yè)技術(shù)人員必須掌握的技術(shù)。用最少的芯片就能實(shí)現(xiàn)最強(qiáng)大的功能,這是將來(lái)電子產(chǎn)品的主流方向,它將無(wú)可置疑地一步步取代

14、其它同類(lèi)產(chǎn)品,其數(shù)量之大和應(yīng)用面之廣,是其它任何類(lèi)型的計(jì)算機(jī)所無(wú)法比擬的。 以基于單片機(jī)的萬(wàn)年歷作為設(shè)計(jì)的課題,因?yàn)樗泻芎玫拈_(kāi)放性和可發(fā)揮性,對(duì)作者的要求比較高,不僅考察了對(duì)單片機(jī)的掌握能力而且強(qiáng)調(diào)了對(duì)單片機(jī)擴(kuò)展的應(yīng)用。另外液晶顯示的萬(wàn)年歷已經(jīng)越來(lái)越流行,特別適合在家庭居室、辦公室、會(huì)議室、車(chē)站和廣場(chǎng)等地方使用,它具有顯示清晰直觀、走時(shí)準(zhǔn)確、可以進(jìn)行夜視等功能,并且還可以擴(kuò)展出其它多種功能。所以,電子萬(wàn)年歷作為設(shè)計(jì)課題很有價(jià)值。 本電子萬(wàn)年歷的設(shè)計(jì)在硬件方面主要采用STC89C51單片機(jī)作為主控核心,由DS1302時(shí)鐘芯片提供時(shí)鐘及1602LCD液晶顯示屏顯示。STC89C51單片機(jī)是由

15、宏晶公司公司生產(chǎn)的,功耗小,電壓可選用3.4~5.5V電壓供電;DS1302時(shí)鐘芯片是美國(guó)DALLAS公司推出的低功耗實(shí)時(shí)時(shí)鐘芯片,它可以對(duì)年、月、日、星期、時(shí)、分、秒進(jìn)行計(jì)時(shí),而且DS1302的使用壽命長(zhǎng),誤差??;數(shù)字顯示是采用的LED液晶顯示屏來(lái)顯示,可以同時(shí)顯示年、月、日、星期、時(shí)、分、秒、溫度等信息。所有程序編寫(xiě)完成后,在Keil軟件中進(jìn)行調(diào)試,確定沒(méi)有問(wèn)題后,燒寫(xiě)到單片機(jī)上進(jìn)行測(cè)試。 第二章 設(shè)計(jì)要求和方案 2.1 設(shè)計(jì)要求 1、可顯示年、月、日、時(shí)、分、秒、星期的功能; 2、掉電重啟時(shí),無(wú)需重新調(diào)時(shí); 3、具有溫度測(cè)定的功能,可準(zhǔn)確顯示當(dāng)前的時(shí)間和實(shí)時(shí)溫度等信息。 2

16、.2 設(shè)計(jì)方案 2.2.1 單片機(jī)芯片的選擇 本設(shè)計(jì)采用STC89C51芯片作為硬件核心,片內(nèi)含8k Bytes的可反復(fù)擦寫(xiě)1000次的Flash只讀程序存儲(chǔ)器,器件兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及80C51引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和ISP Flash存儲(chǔ)單元,具有在系統(tǒng)可編程特性,配合PC端的控制程序即可將用戶的程序代碼下載進(jìn)單片機(jī)內(nèi)部,省去了購(gòu)買(mǎi)通用編程器,而且速度更快。能與5v電壓工作,當(dāng)在對(duì)電路進(jìn)行調(diào)試時(shí),由于程序的錯(cuò)誤修改或?qū)Τ绦虻男略龉δ苄枰獰氤绦驎r(shí),避免芯片的多次拔插對(duì)芯片造成的損壞。 2.2.2 各模塊方案選擇 1、顯示模塊方案選擇 采用LCD液晶顯示

17、屏,液晶顯示屏的顯示功能強(qiáng)大,可顯示大量文字,圖形,顯示多樣,清晰可見(jiàn),對(duì)于電子萬(wàn)年歷而言,一個(gè)1602的液晶屏即可,價(jià)格也還能接受,需要的接口線較多,但給調(diào)試可以帶來(lái)諸多方便,所以此設(shè)計(jì)中采用LCD1602液晶顯示屏作為顯示模塊。 2、時(shí)鐘芯片方案選擇 采用DS1302時(shí)鐘芯片實(shí)現(xiàn)時(shí)鐘,DS1302是美國(guó)DALLAS公司推出的一種高性能、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘電路,它可以對(duì)年、月、日、星期、時(shí)、分、秒進(jìn)行計(jì)時(shí),工作電壓為2.0V~5.5V。采用三線接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)或RAM數(shù)據(jù)。DS1302內(nèi)部有一個(gè)318的用于臨時(shí)性存放數(shù)據(jù)的RAM

18、寄存器。DS1302是DS1202的升級(jí)產(chǎn)品,與DS1202兼容,但增加了主電源/后背電源雙電源引腳,同時(shí)提供了對(duì)后背電源進(jìn)行涓細(xì)電流充電的能力。主要特點(diǎn)是采用串行數(shù)據(jù)傳輸,可為掉電保護(hù)電源提供可編程的充電功能,并且可以關(guān)閉充電功能。采用普通32.768kHz晶振。因此,本設(shè)計(jì)中采用DS1302提供時(shí)鐘。 3、溫度傳感器方案選擇 采用數(shù)字式溫度傳感器DS18B20,此類(lèi)傳感器為數(shù)字式傳感器而且僅需要一條數(shù)據(jù)線進(jìn)行數(shù)據(jù)傳輸,易于與單片機(jī)連接,可以避免A/D模數(shù)轉(zhuǎn)換模塊,降低硬件成本,簡(jiǎn)化系統(tǒng)電路。另外,數(shù)字式溫度傳感器還具有測(cè)量精度高、測(cè)量范圍廣等優(yōu)點(diǎn)。因此,本設(shè)計(jì)DS18B20溫度傳感器作

19、為溫度采集模塊。 2.3 工作原理 1、LCD1602工作原理 1602字符型LCD通常有14條引腳線或16條引腳線的LCD,多出來(lái)的2條線是背光電源線。1602液晶模塊內(nèi)部的字符發(fā)生存儲(chǔ)器已經(jīng)存儲(chǔ)了160個(gè)不同的點(diǎn)陣字符;1602通過(guò)D0~D7的8位數(shù)據(jù)端傳輸數(shù)據(jù)和指令。 (1) 顯示模式設(shè)置:(初始化)00111000[0x38]設(shè)置162顯示,57點(diǎn)陣,8位數(shù)據(jù)接口; (2) 顯示開(kāi)關(guān)及光標(biāo)設(shè)置:(初始化)00001DCBD顯示(1有效)、C光標(biāo)顯示(1有效)、B光標(biāo)閃爍(1有效); (3) 數(shù)據(jù)指針設(shè)置:數(shù)據(jù)首地址為80H,所以數(shù)據(jù)地址為80H+地址碼(0-27H,40-6

20、7H)。 2、DS1302工作原理 (1) DS1302引腳圖如下圖1所示: 圖1 DS1302引腳圖 (2) 管腳描述 X1、X2:32.768KHz晶振管腳; GND:地; RST:復(fù)位腳; I/O:數(shù)據(jù)輸入/輸出引腳; SCLK:串行時(shí)鐘; Vcc1、Vcc2:電源供電管腳; DS1302:串行時(shí)鐘芯片8腳DIP。 3、DS18B20工作原理 (1) DS18B20的主要特征 u 最高12位分辨率,精度可達(dá)土0.5攝氏度; u 12位分辨率時(shí)的最大工作周期為750毫秒; u 可選擇寄生工作方式; u 檢測(cè)溫度范圍為–55C~+125C(–67F ~+

21、257F); u 內(nèi)置EEPROM,限溫報(bào)警功能; (2) DS18B20芯片的封裝結(jié)構(gòu)如下圖2所示: 圖2 DS18B20封裝圖 (3) 管腳描述 GND:接地; DQ:單數(shù)據(jù)總線; VDD:電源電壓。 第三章 系統(tǒng)的硬件設(shè)計(jì)及實(shí)現(xiàn) 3.1 電路設(shè)計(jì)原理框圖 本設(shè)計(jì)主要采用STC89C51單片機(jī)作為主控核心,由DS1302時(shí)鐘芯片提供時(shí)鐘,1602液晶顯示屏提供顯示,按鍵開(kāi)關(guān)控制時(shí)間,DS18B20進(jìn)行溫度采集。其原理圖如圖3所示: 16

22、02液晶顯示屏顯示 DS1302時(shí)鐘芯片控制 按鍵控制 STC89C51單片機(jī)主控制 DS18B20溫度采集 圖3 系統(tǒng)原理圖 3.2 STC89C51單片機(jī)的介紹 3.2.1 主要功能及性能參數(shù) 1、內(nèi)置標(biāo)準(zhǔn)51內(nèi)核,機(jī)器周期:增強(qiáng)型為6時(shí)鐘,普通型為12時(shí)鐘; 2、工作頻率范圍:0~40MHZ,相當(dāng)于普通8051的0~80MHZ; 3、STC89C5xRC對(duì)應(yīng)Flash空間:4KB\8KB\15KB; 4、內(nèi)部存儲(chǔ)器(RAM):512B; 5、定時(shí)器\計(jì)數(shù)器:3個(gè)16位; 6、通用異步通信口(UART)1

23、個(gè); 7、通用I\O口:32\36個(gè); 8、工作電壓:3.8~5.5V; 3.2.2單片機(jī)的引腳功能說(shuō)明 STC89C51單片機(jī)的引腳圖如圖4所示: 圖4 STC89C51單片機(jī)的引腳圖 1、VCC:電源電壓; 2、GND:地; 3、P0口:P0口是一組8位漏極開(kāi)路型雙向I/O口,也即地址/數(shù)據(jù)總線復(fù)用口。作為輸出口用時(shí),每位能吸收電流的方式驅(qū)動(dòng)8個(gè)TTL邏輯門(mén)電路,對(duì)端口P0寫(xiě)“1”時(shí)可作為高阻抗輸入端用; 4、P1口:P1是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O口,P1的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTE邏輯門(mén)電路。對(duì)端口寫(xiě)“1”,通過(guò)內(nèi)部的上拉電阻把端口拉到高

24、電平,此時(shí)可作輸入口。作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流(ILL); 5、P2口:P2是一個(gè)帶有內(nèi)部上拉電阻的8位雙向I/O口,P2的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯門(mén)電路。對(duì)端口P2寫(xiě)“1”,通過(guò)內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口,作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流(ILL); 6、P3口:P3口是一組帶有內(nèi)部上拉電阻的8位雙向I/O口。P3口輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯門(mén)電路。對(duì)P3口寫(xiě)入“1”時(shí),它們被內(nèi)部上拉電阻拉高并可作為輸入端口。此時(shí),被外部拉低的

25、P3口將用上拉電阻輸出電流(ILL); P3口除了作為一般的I/O口線外,更重要的用途是它的第二功能,其第二功能如表一所示: 表一 P3口的第二功能 端口引腳 第二功能 P3.0 RXD(串行輸入口) P3.1 TXD(串行輸出口) P3.2 (外中斷0) P3.3 (外中斷1) P3.4 T0(定時(shí)/計(jì)數(shù)0) P3.5 T1(定時(shí)/計(jì)數(shù)1) P3.6 (外部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通) P3.7 (外部數(shù)據(jù)存儲(chǔ)器讀選通) 7、RST:復(fù)位輸入。當(dāng)振蕩器工作時(shí),RST引腳出現(xiàn)兩個(gè)機(jī)器周期以上高電平將使單片機(jī)復(fù)位; 8、XTAL1:振蕩器反相放大器的及內(nèi)部時(shí)

26、鐘發(fā)生器的輸入端; 9、XTAL2:振蕩器反相放大器的輸出端。 3.3 各模塊電路的設(shè)計(jì)及原理圖 3.3.1 時(shí)鐘電路模塊的設(shè)計(jì) 1、設(shè)計(jì)說(shuō)明及介紹 DS1302是美國(guó)DALLAS公司推出的一種高性能、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘芯片,它可以對(duì)年、月、日、周、時(shí)、分、秒進(jìn)行計(jì)時(shí),工作電壓為2.0V~5.5V。采用三線接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)或RAM數(shù)據(jù)。DS1302內(nèi)部有一個(gè)318的用于臨時(shí)性存放數(shù)據(jù)的RAM寄存器。 DS1302的引腳排列中Vcc1為后備電源,Vcc2為主電源。在主電源關(guān)閉的情況下,也能保持時(shí)鐘的連續(xù)運(yùn)行。DS1302由V

27、cc1或Vcc2兩者中的較大者供電。當(dāng)Vcc2大于Vcc1+0.2V時(shí),Vcc2給DS1302供電。當(dāng)Vcc2小于Vcc1時(shí),DS1302由Vcc1供電。X1和X2是振蕩源,外接32.768kHz晶振。RST是復(fù)位/片選線,通過(guò)把RST輸入驅(qū)動(dòng)置高電平來(lái)啟動(dòng)所有的數(shù)據(jù)傳送。RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當(dāng)RST為高電平時(shí),所有的數(shù)據(jù)傳送被初始化,允許對(duì)DS1302進(jìn)行操作。如果在傳送過(guò)程中RST置為低電平,則會(huì)終止此次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。上電運(yùn)行時(shí),在Vcc>2.0V之前,RST必

28、須保持低電平。只有在SCLK為低電平時(shí),才能將RST置為高電平。 2、原理圖 時(shí)鐘電路DS1302芯片的X1和X2接晶振模塊電路,VCC2作為電池電路為時(shí)鐘芯片供電,其原理圖如圖5所示: 圖5 時(shí)鐘電路原理圖 3.3.2 溫度采集模塊的設(shè)計(jì)及原理圖 1、溫度采集模塊的設(shè)計(jì) 采用數(shù)字式溫度傳感器DS18B20,它是數(shù)字式溫度傳感器,具有測(cè)量精度高,電路連接簡(jiǎn)單的特點(diǎn),此類(lèi)傳感器僅需要一條數(shù)據(jù)線進(jìn)行數(shù)據(jù)傳輸,使用P3.5與DS18B20的I/O口連接加一個(gè)上拉電阻,Vcc接電源,Vss接地。獨(dú)特的一線接口,只需要一條口線通信多點(diǎn)能力,簡(jiǎn)化

29、了分布式溫度傳感應(yīng)用無(wú)需外部元件可用數(shù)據(jù)總線供電,電壓范圍為3.4V至5.5V無(wú)需備用電源 測(cè)量溫度范圍為-55度至+125度。-10度至+85度范圍內(nèi)精度為0.5度溫度傳感器可編程的分辨率為9~12位。 2、原理圖 單片機(jī)使用P3.0口與DS18B20的2號(hào)引腳相接,溫度傳感器采用外部供電方案,由1、3引腳提供電源。電路圖如圖6所示: 圖6 溫度采集電路 3.3.3 顯示模塊的設(shè)計(jì)及原理 1、顯示模塊的設(shè)計(jì) 采用LCD1602液晶顯示器,單片機(jī)P0口作為數(shù)據(jù)輸出口,通過(guò)10R的上拉電阻連接到VCC,VCC接5V電源,GND接地。GND為液晶顯示器對(duì)比度調(diào)整端,可以通過(guò)滑動(dòng)變阻

30、器RH1調(diào)顯示器的對(duì)比度。RS為寄存器選擇,高電平1時(shí)選擇數(shù)據(jù)寄存器、低電平0時(shí)選擇指令寄存器。R/W為讀寫(xiě)信號(hào)線,高電平(1)時(shí)進(jìn)行讀操作,低電平(0)時(shí)進(jìn)行寫(xiě)操作。E(或EN)端為使能(enable)端,下降沿使能。BLA、BLK分別為顯示器背光燈的正、負(fù)極。 2、原理圖 顯示電路由1602液晶接口插槽組成,如下圖7所示。使能端EN由單片機(jī)P2.2引腳控制,數(shù)據(jù)/命令選擇端由單片機(jī)的P0端控制。 圖7 LCD顯示電路 第四章 系統(tǒng)的軟件設(shè)計(jì) 4.1 程序流程框圖 主程序流程圖如下圖8所

31、示。由于LCD1602,DS18B20,DS1302的數(shù)據(jù)讀取及指令寫(xiě)入函數(shù)均已在各自的頭文件中完成,在主程序中只須引用即可。 開(kāi)始 單片機(jī)讀DS1302數(shù)據(jù) 單片機(jī)送數(shù)據(jù)到LCD1602 單片機(jī)判斷按鍵 單片機(jī)處理按鍵調(diào)顯示數(shù)據(jù) 結(jié)束 圖8 主程序流程圖 4.2 時(shí)間調(diào)整程序流程圖 由于在硬件電路方面上設(shè)計(jì)了時(shí)間調(diào)整按鍵和開(kāi)關(guān),因此應(yīng)有對(duì)應(yīng)的時(shí)間調(diào)整程序。時(shí)間調(diào)整程序的流程圖如下圖9所示。 日加一 減鍵有效 日減一 加鍵有效 Y 控制鍵有效,進(jìn)入日調(diào)整程序 是否執(zhí)行月調(diào)

32、Y 開(kāi)始 控制鍵有效,進(jìn)入年調(diào)整程序 等待按鍵程序 是否執(zhí)行年調(diào) 加鍵有效 減鍵有效 年加一 年減一 控制鍵有效,進(jìn)入月調(diào)整程序 等待按鍵程序 加鍵有效 減鍵有效 月加一 月減一 N N 等待按鍵程序 是否執(zhí)行日調(diào)日 Y N 控制鍵有效,進(jìn)入星期調(diào)整程序 等待按鍵程序 是否執(zhí)行星期調(diào) 加鍵有效 減鍵有效 星期加一 星期減一 控制鍵有效,進(jìn)入時(shí)調(diào)整程 Y N 圖9 時(shí)間調(diào)整程序流程圖 第五章 系統(tǒng)測(cè)試 5.1 硬件測(cè)試 在調(diào)試硬件時(shí)遇到過(guò)很多問(wèn)題,但只要細(xì)心、認(rèn)真檢查這些問(wèn)題都是可以避免的,主要問(wèn)題及解決辦法如下:

33、(1)認(rèn)真檢查電路是否有短路及斷路的地方,線與線之間,管腳刺破鄰近的漆包線之間是否連接在一起,有的話要用刀劃開(kāi),或者重新焊接。 (2)檢查完畢后接通電源后LCD1602沒(méi)有正確的顯示。在不通電狀態(tài)下用萬(wàn)用表檢測(cè)電路是否正常連接,在檢查回路時(shí)發(fā)現(xiàn)有的點(diǎn)之間看似連接,但由于虛焊導(dǎo)致其并沒(méi)有連接,此刻就對(duì)焊腳進(jìn)行在焊接直到解決問(wèn)題。 5.2 軟件測(cè)試 由于本系統(tǒng)涉及到多個(gè)子程序,多個(gè)芯片的編程。首先必須對(duì)可編程芯片的控制字即其控制指令要熟記于心。其次,芯片很多都有時(shí)鐘輸入端,需要晶振支持。對(duì)芯片的讀寫(xiě)都需要在相應(yīng)的觸發(fā)沿到來(lái)時(shí)才能進(jìn)行。由于DS18B20是串行通信數(shù)據(jù),只用一個(gè)口線傳輸,在處理

34、采集的模擬信號(hào)時(shí)需要一定的時(shí)間,會(huì)對(duì)延時(shí)有較高要求。所以在調(diào)用溫度子程序時(shí),先關(guān)閉定時(shí)器1中斷允許,在溫度子程序返回時(shí)再打開(kāi)定時(shí)器1中斷允許。 第六章 總結(jié)與致謝 6.1 總結(jié) 在本次課程設(shè)計(jì)的過(guò)程中,我發(fā)現(xiàn)很多的問(wèn)題,剛開(kāi)始著手做電子萬(wàn)年歷時(shí)給我的感覺(jué)是模糊,拿到復(fù)雜的電路圖心里有點(diǎn)慌張,但靜下心來(lái)經(jīng)過(guò)反復(fù)的分析和測(cè)試,終于對(duì)電路的原理及功能有所理解,同時(shí)提高了自己對(duì)電路的設(shè)計(jì)能力與分析能力及焊接能力。經(jīng)過(guò)本次課程設(shè)計(jì),基本完

35、成了設(shè)計(jì)任務(wù)的要求。在硬件電路方面,詳盡解析了各個(gè)獨(dú)立元器件的選擇依據(jù),對(duì)三種方案進(jìn)行了全面的比較;在時(shí)鐘芯片的選擇上,若直接采用單片機(jī)定時(shí)計(jì)數(shù)器提供秒信號(hào),使用程序?qū)崿F(xiàn)年、月、日、周、時(shí)、分、秒計(jì)數(shù),采用此種方案雖然可以減少時(shí)鐘芯片的使用,節(jié)約成本,但是它實(shí)現(xiàn)的時(shí)間誤差較大,因此我們小組采用專(zhuān)業(yè)的時(shí)鐘芯片DS1302,因?yàn)樗趯?duì)年、月、日、周、時(shí)、分、秒進(jìn)行計(jì)時(shí)時(shí)采用串行數(shù)據(jù)傳輸,可為掉電保護(hù)電源提供可編程的充電功能;在顯示模塊的選擇上,若采用LED數(shù)碼管動(dòng)態(tài)掃描,LED數(shù)碼管價(jià)格雖適中,對(duì)于顯示數(shù)字也適合,而且采用動(dòng)態(tài)掃描法與單片機(jī)連接時(shí),占用的單片機(jī)口線少。但是由于數(shù)碼管動(dòng)態(tài)掃描需要借助

36、74LS164移位寄存器進(jìn)行移位,該芯片在電路調(diào)試時(shí)往往會(huì)有很多障礙,因此本次課設(shè)選擇了LCD1602,液晶顯示屏的顯示功能強(qiáng)大,可顯示大量文字,圖形,顯示多樣并且清晰可見(jiàn);在溫度采集模塊的選擇上,沒(méi)有采用熱敏電阻,因?yàn)樵O(shè)計(jì)方案需用A/D轉(zhuǎn)換電路,增加硬件成本而且熱敏電阻的感溫特性曲線并不是嚴(yán)格線性的,會(huì)產(chǎn)生較大的測(cè)量誤差。最后選擇了DS18B20,此類(lèi)傳感器為數(shù)字式傳感器而且僅需要一條數(shù)據(jù)線進(jìn)行數(shù)據(jù)傳輸,易于與單片機(jī)連接,可以避免A/D模數(shù)轉(zhuǎn)換模塊,降低硬件成本,簡(jiǎn)化系統(tǒng)電路。另外,數(shù)字式溫度傳感器還具有測(cè)量精度高、測(cè)量范圍廣等優(yōu)點(diǎn)。從元件性能和組裝電路后的測(cè)試結(jié)果來(lái)看,硬件電路的設(shè)計(jì)是比較

37、成功的,各個(gè)功能都可以實(shí)現(xiàn)。 6.2 致謝 這次課程設(shè)計(jì),我一直很努力地去做,過(guò)程中得到了老師的悉心指導(dǎo)和同學(xué)們的大力支持及熱心幫助,并對(duì)我的設(shè)計(jì)提出許多有益的建議,在此對(duì)他們表示衷心的感謝。同時(shí)也要感謝學(xué)校能給我這次機(jī)會(huì)去嘗試自己設(shè)計(jì)一些東西,使自己所學(xué)專(zhuān)業(yè)知識(shí)與實(shí)踐能夠結(jié)合起來(lái),最后也要感謝有關(guān)我參考過(guò)的文獻(xiàn)的作者,是他們?yōu)槲姨峁┲R(shí)的源泉,使我最終能順利地完成這次課程設(shè)計(jì)。 在畢業(yè)之際,我衷心地祝愿我的同學(xué)和朋友們?cè)谝院蟮娜松缆飞显阶咴綄拸V,也深深相信在未來(lái)的日子里我們將一路攜手前行,會(huì)遇到很多的碰撞和交流,我們將始終記得我們?cè)谔m州交通大學(xué)新能源學(xué)院同窗學(xué)習(xí),這將是

38、我克服困難、不斷前進(jìn)的精神動(dòng)力。 參考文獻(xiàn) [1]胡乾斌,李光斌,李玲.單片微型計(jì)算機(jī)原理與應(yīng)用.華中科技大學(xué)出版社,1996 [2]劉勇.?dāng)?shù)字電路.電子工業(yè)出版社,2004 [3]楊子文.單片機(jī)原理及應(yīng)用.西安電子科技大學(xué)出版社,2006 [4]王萍.電子技術(shù)實(shí)驗(yàn)教程.機(jī)械工業(yè)出版社,2009 [5]沈紅衛(wèi).單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)實(shí)例與分析,北京:北京航空航天大學(xué)出版社.2003 [6]李光飛.單片機(jī)課程設(shè)計(jì)實(shí)例指導(dǎo),北京:北京航空航天大學(xué)出版社.2004 [7]王法能.單片機(jī)原理及應(yīng)用,科學(xué)出版社. 2

39、004 [8]樓然苗,李光飛.51系列單片機(jī)設(shè)計(jì)實(shí)例[M].北京航空航天大學(xué)出版社,2003 [9]朱定華,戴汝平.單片微機(jī)原理與應(yīng)用[M].清華大學(xué)出版社,2003 [10]胡漢才.單片機(jī)原理與接口技術(shù)[M].清華大學(xué)出版社,2004 附 錄 附錄一:實(shí)物圖 附錄二:源程序 #include #include sbit DSPORT=P3^0; #defi

40、ne uint unsigned int #define uchar unsigned char //ds1302IO sbit DSIO=P1^1; sbit RST=P1^2; sbit SCLK=P1^0; #define LCD1602_DATAPINS P0 sbit LCD1602_E=P2^2; sbit LCD1602_RW=P2^1; sbit LCD1602_RS=P2^0; sbit SET_KEY=P3^7; sbit ADD_KEY=P3^6; sbit SUB_KEY=P3^5; sbit DETERMINE_KEY=P3^4; uns

41、igned char Set_Step = 0; #define NormalRun 0 #define SetYear 1 #define SetMon 2 #define SetDay 3 #define SetHour 4 #define SetMin 5 #define SetSec 6 #define SetWeek 7 void Ds1302Write(unsigned char addr,unsigned char dat); unsigned char Ds1302Read(unsigned char addr); void Ds1302Init();

42、void Ds1302ReadTime(); void Delay1ms(unsigned int ); unsigned char Ds18b20Init(); void Ds18b20WriteByte(unsigned char com); unsigned char Ds18b20ReadByte(); void Ds18b20ChangTemp(); void Ds18b20ReadTempCom(); int Ds18b20ReadTemp(); /*在51單片機(jī)12MHZ時(shí)鐘下的延時(shí)函數(shù)*/ //void Delay1us(uint a); void De

43、lay10us(uint c); //誤差 0us /*LCD1602寫(xiě)入8位命令子函數(shù)*/ void LcdWriteCom(uchar com); /*LCD1602寫(xiě)入8位數(shù)據(jù)子函數(shù)*/ void LcdWriteData(uchar dat) ; /*LCD1602初始化子程序*/ void LcdInit(); void LcdDisplay(); void Key_Scan(); //DS1302寫(xiě)入和讀取時(shí)分秒的地址命令 unsigned char READ_RTC_ADDR[7]={0x81,0

44、x83,0x85,0x87,0x89,0x8b,0x8d}; //秒分時(shí)日月周年 最低位讀寫(xiě)位}; unsigned char WRITE_RTC_ADDR[7]={0x80,0x82,0x84,0x86,0x88,0x8a,0x8c}; //DS1302時(shí)鐘初始化2013年1月1日星期二12點(diǎn)00分00秒。存儲(chǔ)順序是秒分時(shí)日月周年,存儲(chǔ)格式是用BCD碼 unsigned char TIME[7]={0x0, 0x0, 0x12, 0x30, 0x9, 0x3, 0x15}; unsigned char Time1outNum = 0; int readVal = 0; void

45、Ds1302Write(unsigned char addr,unsigned char dat) { unsigned char n; SCLK=0; //先將SCLK置低電平。 _nop_(); RST=1; //然后將RST(CE)置高電平。 _nop_(); for(n=0;n<8;n++) //開(kāi)始傳送八位地址命令 { DSIO=addr&0x01;

46、 //數(shù)據(jù)從低位開(kāi)始傳送 addr>>=1; SCLK=1; //數(shù)據(jù)在上升沿時(shí),DS1302讀取數(shù)據(jù) _nop_(); SCLK=0; _nop_(); } for(n=0;n<8;n++) //寫(xiě)入8位數(shù)據(jù) { DSIO=dat&0x01; dat>>=1; SCLK=1; //數(shù)據(jù)在上升沿時(shí),DS1302讀取數(shù)據(jù) _nop_(); SCLK=0; _n

47、op_(); } RST=0; //傳送數(shù)據(jù)結(jié)束 _nop_(); } unsigned char Ds1302Read(unsigned char addr) { unsigned char n,dat,dat1; SCLK=0; //先將SCLK置低電平。 _nop_(); RST=1; //然后將RST(CE)置高電平。 _nop_(); for(

48、n=0;n<8;n++) //開(kāi)始傳送八位地址命令 { DSIO=addr&0x01; //數(shù)據(jù)從低位開(kāi)始傳送 addr>>=1; SCLK=1; //數(shù)據(jù)在上升沿時(shí),DS1302讀取數(shù)據(jù) _nop_(); SCLK=0; //DS1302下降沿時(shí),放置數(shù)據(jù) _nop_(); } _nop_(); for(n=0;n<8;n++)

49、 //讀取8位數(shù)據(jù) { dat1=DSIO; //從最低位開(kāi)始接收 dat=(dat>>1)|(dat1<<7); SCLK =1; _nop_(); SCLK=0; //DS1302下降沿時(shí),放置數(shù)據(jù) _nop_(); } RST=0; _nop_(); //以下為DS1302復(fù)位的穩(wěn)定時(shí)間,必須的。 SCLK=1; _nop_(); DSIO=0; _

50、nop_(); DSIO=1; _nop_(); return dat; } void Ds1302Init() { unsigned char n; Ds1302Write(0x8E,0X00); //禁止寫(xiě)保護(hù),就是關(guān)閉寫(xiě)保護(hù)功能 for(n=0;n<7;n++) //寫(xiě)入7個(gè)字節(jié)的時(shí)鐘信號(hào):分秒時(shí)日月周年 { Ds1302Write(WRITE_RTC_ADDR[n],TIME[n]); } Ds1302Write(0x8E,0x80); //打開(kāi)寫(xiě)

51、保護(hù)功能 } void Ds1302ReadTime() { unsigned char n; for(n=0;n<7;n++) //讀取7個(gè)字節(jié)的時(shí)鐘信號(hào):分秒時(shí)日月周年 { TIME[n]=Ds1302Read(READ_RTC_ADDR[n]); } } void Delay10us(uint c) //誤差 0us { unsigned int a,b; for(b=c;b>0;b--) for(a=2;a>0;a--); } void

52、 Delay1ms(unsigned int y) { unsigned int x; for(y;y>0;y--) for(x=110;x>0;x--); } unsigned char Ds18b20Init() { unsigned int i; DSPORT=0; //將總線拉低480us~960us i=70; while(i--);//延時(shí)642us DSPORT=1; //然后拉高總線,如果DS18B20做出反應(yīng)會(huì)將在15us~60us

53、后總線拉低 i=0; while(DSPORT) //等待DS18B20拉低總線 { i++; if(i>5000) //等待>5MS return 0; //初始化失敗 } return 1; //初始化成功 } void Ds18b20WriteByte(unsigned char dat) { unsigned int i,j; for(j=0;j<8;j++) {

54、 DSPORT=0; //每寫(xiě)入一位數(shù)據(jù)之前先把總線拉低1us i++; DSPORT=dat&0x01; //然后寫(xiě)入一個(gè)數(shù)據(jù),從最低位開(kāi)始 i=6; while(i--); //延時(shí)68us,持續(xù)時(shí)間最少60us DSPORT=1; //然后釋放總線,至少1us給總線恢復(fù)時(shí)間才能接著寫(xiě)入第二個(gè)數(shù)值 dat>>=1; } } unsigned char Ds18b20ReadByte() { unsi

55、gned char byte,bi; unsigned int i,j; for(j=8;j>0;j--) { DSPORT=0; //先將總線拉低1us i++; DSPORT=1; //然后釋放總線 i++; i++; //延時(shí)6us等待數(shù)據(jù)穩(wěn)定 bi=DSPORT; //讀取數(shù)據(jù),從最低位開(kāi)始讀取 /*將byte左移一位,然后與上右移7位后的bi,注意移動(dòng)之后移掉那位補(bǔ)0。*/

56、 byte=(byte>>1)|(bi<<7); i=4; //讀取完之后等待48us再接著讀取下一個(gè)數(shù) while(i--); } return byte; } void Ds18b20ChangTemp() { Ds18b20Init(); Delay1ms(1); Ds18b20WriteByte(0xcc); //跳過(guò)ROM操作命令 Ds18b20WriteByte(0x44); //溫度轉(zhuǎn)換命令 Delay1ms(100); } void Ds18b2

57、0ReadTempCom() { Ds18b20Init(); Delay1ms(1); Ds18b20WriteByte(0xcc); //跳過(guò)ROM操作命令 Ds18b20WriteByte(0xbe); //發(fā)送讀取溫度命令 } int Ds18b20ReadTemp() { int temp=0; unsigned char tmh,tml; Ds18b20ChangTemp(); //先寫(xiě)入轉(zhuǎn)換命令 Ds18b20ReadTempCom(); //然后等待轉(zhuǎn)換完后發(fā)送讀取溫度命令 tm

58、l=Ds18b20ReadByte(); //讀取溫度值共16位,先讀低字節(jié) tmh=Ds18b20ReadByte(); //再讀高字節(jié) temp=tmh; temp<<=8; temp|=tml; return temp; } void LcdWriteCom(uchar com) //寫(xiě)入命令 { LCD1602_E=0; LCD1602_RS=0; LCD1602_RW=0; LCD1602_DATAPINS=com; Delay10us(1); LCD1602_E=1; Delay10us(1);

59、 LCD1602_E=0; } void LcdWriteData(uchar dat) //寫(xiě)入數(shù)據(jù) { LCD1602_E=0; LCD1602_RS=1; LCD1602_RW=0; LCD1602_DATAPINS=dat; Delay10us(1); LCD1602_E=1; Delay10us(1); LCD1602_E=0; } void LcdInit() //LCD初始化子程序 { LcdWriteCom(0x38); //開(kāi)顯示 LcdWriteCom(0x0c)

60、; //開(kāi)顯示不顯示光標(biāo) // LcdWriteCom(0x0f); LcdWriteCom(0x06); //寫(xiě)一個(gè)指針加1 LcdWriteCom(0x01); //清屏 LcdWriteCom(0x80); //設(shè)置數(shù)據(jù)指針起點(diǎn) } void LcdDisplay() { int tmp = 0; char tmpH = 50; char tmpL = 0; unsigned char fh, ge, shi, xs; //定義數(shù)組 float tp; tmp = readVal; if(

61、tmp< 0) //當(dāng)溫度值為負(fù)數(shù) { //因?yàn)樽x取的溫度是實(shí)際溫度的補(bǔ)碼,所以減1,再取反求出原碼 tmp=tmp-1; tmp=~tmp; tp=tmp; tmp=tp*0.0625*10+0.5; //留一個(gè)小數(shù)點(diǎn)就*10,+0.5是四舍五入,因?yàn)镃語(yǔ)言浮點(diǎn)數(shù)轉(zhuǎn)換為整型的時(shí)候把小數(shù)點(diǎn) //后面的數(shù)自動(dòng)去掉,不管是否大于0.5,而+0.5之后大于0.5的就是進(jìn)1了,小于0.5的就 //算加上0.5,還是在小數(shù)點(diǎn)后面。 fh = -; } else { tp=tmp;//因?yàn)?/p>

62、數(shù)據(jù)處理有小數(shù)點(diǎn)所以將溫度賦給一個(gè)浮點(diǎn)型變量 //如果溫度是正的那么,那么正數(shù)的原碼就是補(bǔ)碼它本身 tmp=tp*0.0625*10+0.5; //留一個(gè)小數(shù)點(diǎn)就*10,+0.5是四舍五入,因?yàn)镃語(yǔ)言浮點(diǎn)數(shù)轉(zhuǎn)換為整型的時(shí)候把小數(shù)點(diǎn) //后面的數(shù)自動(dòng)去掉,不管是否大于0.5,而+0.5之后大于0.5的就是進(jìn)1了,小于0.5的就 //算加上0.5,還是在小數(shù)點(diǎn)后面。 fh = ; } shi = tmp % 1000 / 100; //顯示溫度十位數(shù) ge = tmp % 100 / 10;

63、 //顯示溫度個(gè)位數(shù)+小數(shù)點(diǎn) xs = tmp % 10; //顯示小數(shù)一位 LcdWriteCom(0x80+0X40); LcdWriteData(0+TIME[2]/16); //時(shí) LcdWriteData(0+((TIME[2]%16)&0x0f)); LcdWriteData(:); LcdWriteData(0+TIME[1]/16); //分 LcdWriteData(0+((TIME[1]%16)&0x

64、0f)); LcdWriteData(:); LcdWriteData(0+TIME[0]/16); //秒 LcdWriteData(0+((TIME[0]%16)&0x0f)); LcdWriteCom(0x80+0X4A); LcdWriteData(fh); LcdWriteData(0+shi); LcdWriteData(0+ge); LcdWriteData(.); LcdWriteData(0+xs); LcdWriteData(C); LcdWriteCom(0x80); LcdWriteData(2)

65、; LcdWriteData(0); LcdWriteData(0+TIME[6]/16); //年 LcdWriteData(0+((TIME[6]%16)&0x0f)); LcdWriteData(-); LcdWriteData(0+TIME[4]/16); //月 LcdWriteData(0+((TIME[4]%16)&0x0f)); LcdWriteData(-); LcdWriteData(0+TIME[3]/16); //日 LcdWriteData(0+((TIME[3

66、]%16)&0x0f)); LcdWriteCom(0x8D); LcdWriteData(W); //星期 LcdWriteData(0+((TIME[5]-1)&0x07)); //周 } void Key_Scan() { if(SET_KEY == 0) { Delay10us(5000); if(SET_KEY == 0) { LcdWriteCom(0x0f); //顯示光標(biāo) switch(Set_Step) { case NormalRun: LcdWriteCom(0x83); //設(shè)置guangbiao Set_Step = SetYear; break; case SetYear: LcdWriteCom(0x86); //設(shè)置guangbiao

展開(kāi)閱讀全文
溫馨提示:
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. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!