電子時(shí)鐘畢業(yè)設(shè)計(jì)論文_第1頁(yè)
已閱讀1頁(yè),還剩40頁(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)介

1、<p><b>  摘 要</b></p><p>  電子萬(wàn)年歷是一種非常廣泛日常計(jì)時(shí)工具,對(duì)現(xiàn)代社會(huì)越來(lái)越流行。它可以對(duì)年、月、日、周日、時(shí)、分、秒進(jìn)行計(jì)時(shí),還具有閏年補(bǔ)償?shù)榷喾N功能。本系統(tǒng)選用DALLAS公司生產(chǎn)的日歷時(shí)鐘芯片DS12C887來(lái)作為實(shí)時(shí)時(shí)鐘芯片,為本系統(tǒng)提供詳細(xì)的年、月、日、星期和小時(shí)、分鐘等時(shí)間信息。數(shù)字萬(wàn)年歷采用直觀數(shù)字顯示,可以同時(shí)顯示年、月、日、周日、

2、時(shí)、分、秒和溫度等信息,還具有定時(shí)和時(shí)間校準(zhǔn)等功能。該電路采用AT89S52單片機(jī)作為核心,功耗小,能在3V的低壓工作,電壓可選用3~5V電壓供電。</p><p>  本系統(tǒng)硬件部分由AT89S52單片機(jī)、DS12C887時(shí)鐘芯片、1062液晶顯示器、DS18B20溫度測(cè)量、鍵盤、蜂鳴器系統(tǒng)等部分構(gòu)成。軟件部分在keil環(huán)境下用C51語(yǔ)言編寫,包括時(shí)間設(shè)置、時(shí)間顯示、定時(shí)設(shè)置、定時(shí)鬧鐘、溫度顯示。</p&

3、gt;<p>  沒(méi)有良好的基礎(chǔ)知識(shí)和實(shí)踐經(jīng)驗(yàn)會(huì)受到很大限制,每項(xiàng)功能實(shí)現(xiàn)時(shí)需要那種硬件,程序該如何編寫,算法如何實(shí)現(xiàn)等,沒(méi)有一定的基礎(chǔ)就不可能很好的實(shí)現(xiàn)。在編寫程序過(guò)程中發(fā)現(xiàn)以現(xiàn)有的相關(guān)知識(shí)要獨(dú)自完成編寫任務(wù)困難重重,在老師和同學(xué)的幫助下才完成了程序部分的編寫。</p><p>  文章后附有電路原理圖、程序清單,以供讀者參考。因水平有限,難免有疏落不足之處,敬請(qǐng)老師和同學(xué)能給與批評(píng)指正。<

4、/p><p>  關(guān)鍵詞:時(shí)鐘芯片DS12C887;溫度采集DS18B20;單片機(jī)AT89S52;液晶顯示1602</p><p><b>  目 錄</b></p><p><b>  第一章 概述6</b></p><p>  §1.1實(shí)時(shí)時(shí)鐘研究的背景及意義6</p>

5、<p>  §1.2論文主要研究?jī)?nèi)容6</p><p>  1.2.1 系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)的目標(biāo)6</p><p>  1.2.2 系統(tǒng)的總體設(shè)計(jì)6</p><p>  第二章 硬件電路設(shè)計(jì)8</p><p>  §2.1單片機(jī)最小系統(tǒng)8</p><p>  §2.2時(shí)鐘芯

6、片電路8</p><p>  2.2.1 時(shí)鐘芯片引腳介紹8</p><p>  2.2.2時(shí)鐘芯片DS12C887,其內(nèi)存空間介紹10</p><p>  2.2.3 4個(gè)控制寄存器介紹10</p><p>  §2.4溫度采集電路設(shè)計(jì)12</p><p>  2.4.1 DS18B20的主要特性

7、12</p><p>  2.4.2 DS1820的基本操作指令12</p><p>  2.4.3 溫度測(cè)量的步驟13</p><p>  2.4.4 DS18B20的操作時(shí)序13</p><p>  §2.5 1602LCD液晶顯示屏15</p><p>  2.5.1 1602字符型LCD簡(jiǎn)

8、介15</p><p>  2.5.2 1602引腳功能說(shuō)明15</p><p>  2.5.3 1602LCD的指令說(shuō)明及時(shí)序15</p><p>  2.5.4 1602LCD的RAM地址映射及標(biāo)準(zhǔn)字庫(kù)表17</p><p>  2.5.5 1602LCD的一般初始化(復(fù)位)過(guò)程19</p><p>  

9、2.4.6 1602LCD的電路連接19</p><p>  §2.6 蜂鳴器鬧鈴電路20</p><p>  §2.7 按鍵調(diào)整電路20</p><p>  §2.8 電源模塊21</p><p>  第三章 軟件部分設(shè)計(jì)22</p><p>  §3.1 主程序流程

10、22</p><p>  §3.2 時(shí)間設(shè)置子程序流程22</p><p>  §3.3 鬧鐘設(shè)置子程序流程23</p><p>  §3.4 程序設(shè)計(jì)問(wèn)題24</p><p>  3.4.1 按鍵抖動(dòng)問(wèn)題24</p><p>  3.4.2 蜂鳴器設(shè)置24</p>

11、<p>  3.4.3 液晶顯示的設(shè)置24</p><p>  3.4.4 中斷設(shè)置24</p><p>  3.4.5 時(shí)鐘芯片設(shè)置25</p><p><b>  結(jié)束語(yǔ)28</b></p><p><b>  致謝詞29</b></p><p>

12、<b>  參考文獻(xiàn)30</b></p><p><b>  附件131</b></p><p><b>  第一章 概述</b></p><p>  §1.1實(shí)時(shí)時(shí)鐘研究的背景及意義</p><p>  在現(xiàn)實(shí)我們生活中每個(gè)人都可能有自己的時(shí)鐘,光陰在永不停息的

13、流逝,有了時(shí)鐘人們就能隨著時(shí)間有計(jì)劃的過(guò)著每一天。然而現(xiàn)在絕大部分的時(shí)鐘有的需要不斷地跟換電池,有些時(shí)鐘需要外接電源,如果一旦電池沒(méi)電或者外接電源無(wú)法供電,時(shí)鐘就會(huì)停止計(jì)時(shí)了。而美國(guó)DALLAS 公司的新型時(shí)鐘日歷芯片DS12C887就能解決這一問(wèn)題。該器件能提供實(shí)時(shí)時(shí)鐘(RTC)/日歷、定時(shí)鬧鐘。少于31天的月份,月末日期可自動(dòng)調(diào)整,其中包括閏年補(bǔ)償。該器件還可以工作于24小時(shí)貨代/PM指示的12小時(shí)格式。一個(gè)精密的溫度補(bǔ)償電路用來(lái)監(jiān)

14、視Vcc的狀態(tài)。如果檢測(cè)到主電源故障,該器件可以自動(dòng)切換到備用電源供電。Ds12c887集成了DS12C885l裸片、石英晶體和電池。DS12C885的充電電路被禁止。在沒(méi)有提供Vcc的+25℃環(huán)境下,電池容量可為振蕩器和寄存器供電長(zhǎng)達(dá)10年之久。</p><p>  本時(shí)鐘還具有環(huán)保、走時(shí)無(wú)噪音、低功耗等非實(shí)時(shí)時(shí)鐘不具有的功能。該實(shí)時(shí)時(shí)鐘不但可以作為家用,而且更可以在公共場(chǎng)合使用,如車站、碼頭、商場(chǎng)等場(chǎng)所。&l

15、t;/p><p>  §1.2論文主要研究?jī)?nèi)容</p><p>  1.2.1 系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)的目標(biāo)</p><p>  本文是以實(shí)時(shí)時(shí)鐘芯片DS12C887和AT89S52單片機(jī)為主要研究對(duì)象,著重進(jìn)行51單片機(jī)控制系統(tǒng)的設(shè)計(jì)研究和如何讀取DS12C887內(nèi)部時(shí)鐘信息的研究。以及運(yùn)用18B20進(jìn)行實(shí)時(shí)溫度檢測(cè)。主要內(nèi)容包括:</p><p&

16、gt;<b>  實(shí)時(shí)溫度顯示;</b></p><p>  年月日星期時(shí)分秒顯示;</p><p>  年月日星期時(shí)分秒調(diào)整;</p><p>  鬧鐘定時(shí)小時(shí)分鐘和秒;</p><p>  1.2.2 系統(tǒng)的總體設(shè)計(jì)</p><p>  采用AT89S52作為主控單片機(jī),時(shí)鐘模塊選用DS12C

17、887作為時(shí)鐘芯片,溫度模塊選用DS18B20作為溫度傳感器,顯示模塊選用LCD1602,設(shè)置部分選用按鍵電路。</p><p>  AT89S52與MCS-51單片機(jī)產(chǎn)品兼容 、8K字節(jié)在系統(tǒng)可編程Flash存儲(chǔ)器、 1000次擦寫周期、 全靜態(tài)操作:0Hz~33Hz 、 三級(jí)加密程序存儲(chǔ)器 、 32個(gè)可編程I/O口線 、三個(gè)16位定時(shí)器/計(jì)數(shù)器 八個(gè)中斷源 、全雙工UART串行通道、 低功耗空閑和掉電模式 、

18、掉電后中斷可喚醒 、看門狗定時(shí)器 、雙數(shù)據(jù)指針 、掉電標(biāo)識(shí)符 。</p><p>  DS12C887 實(shí)時(shí)時(shí)鐘芯片功能豐富,可以用來(lái)直接代替IBM PC 上的時(shí)鐘日歷芯片DS12887,同時(shí),它的管腳也和MC146818B、DS12887 相兼容。由于DS12C887 能夠自動(dòng)產(chǎn)生世紀(jì)、年、月、日、時(shí)、分、秒等時(shí)間信息,其內(nèi)部又增加了世紀(jì)寄存器,從而利用硬件電路解決子“千年”問(wèn)題;DS12C887 中自帶有鋰電

19、池,外部掉電時(shí),其內(nèi)部時(shí)間信息還能夠保持10 年之久;對(duì)于一天內(nèi)的時(shí)間記錄,有12 小時(shí)制和24 小時(shí)制兩種模式。用戶還可對(duì)DS12C887 進(jìn)行編程以實(shí)現(xiàn)多種方波輸出,并可對(duì)其內(nèi)部的三路中斷通過(guò)軟件進(jìn)行屏蔽。</p><p>  DS18B20可組網(wǎng)數(shù)字溫度傳感器芯片封裝而成,具有耐磨耐碰,體積小,使用方便,封裝形式多樣,適用于各種狹小空間設(shè)備數(shù)字測(cè)溫和控制領(lǐng)域??删幊痰姆直媛蕿?~12位 溫度轉(zhuǎn)換為12位數(shù)字

20、格式最大值為750毫秒 用戶可定義的非易失性溫度報(bào)警設(shè)置。DS18B20內(nèi)部結(jié)構(gòu)主要由四部分組成:64位光刻ROM、溫度傳感器、非揮發(fā)的溫度報(bào)警觸發(fā)器TH和TL、配置寄存器。采用一線通信接口。</p><p>  該系統(tǒng)的系統(tǒng)框圖如圖1.1示:</p><p><b>  圖1-1系統(tǒng)框圖</b></p><p>  第二章 硬件電路設(shè)計(jì)&l

21、t;/p><p>  §2.1單片機(jī)最小系統(tǒng)</p><p>  本系統(tǒng)以AT89S52單片機(jī)為核心,本系統(tǒng)選用11.0592MHZ的晶振,,使得單片機(jī)有合理的運(yùn)行速度。起振電容30pF對(duì)振蕩器的頻率高低、振蕩器的穩(wěn)定性和起振的快速性影響較合適,復(fù)位電路為按鍵高電平復(fù)位。</p><p>  AT89S52單片機(jī)最小系統(tǒng)電路設(shè)計(jì)如圖2.1所示。</p&g

22、t;<p>  圖2-1 單片機(jī)最小系統(tǒng)</p><p>  §2.2時(shí)鐘芯片電路</p><p>  2.2.1 時(shí)鐘芯片引腳介紹</p><p>  時(shí)鐘芯片DS12C887,其引腳分布圖如下所示</p><p>  圖2-2時(shí)鐘引腳分布</p><p>  MOT (1腳) :總線時(shí)序模式

23、選擇腳。接高電平,選擇MOTOROLA總線時(shí);序;接低電平或懸空,擇選擇INTEL總線時(shí)序。</p><p>  NC (2,3,16,20,21,22腳):懸空腳。</p><p>  AD0~AD7(4~11腳):地址/地址數(shù)據(jù)復(fù)用總線引腳。</p><p>  CS(13腳):片選腳,低電平有效。</p><p>  AS(14腳):

24、地址鎖存輸入腳。下降沿時(shí),地址被鎖存,緊接著的上升沿來(lái)時(shí)地址被清除。</p><p>  R/W(15腳):讀/寫輸入腳。在選擇MOTOROLA總線時(shí)序模式時(shí),此引腳用于指示當(dāng)前的讀寫周期,高電平指示當(dāng)前為讀周期,低電平指示當(dāng)前為寫周期;選擇INTEL中線時(shí)序模式時(shí),此引腳為低電平有效的輸入腳,相當(dāng)于通用RAM的寫使能信號(hào)(/WE)</p><p>  DS(17腳):選擇MOTOROLA

25、總線時(shí)序模式時(shí),此引腳為數(shù)據(jù)鎖存腳;選擇INTEL總線時(shí)序模式時(shí),此引腳為讀輸入腳,低電平有效,相當(dāng)于典型的內(nèi)存的輸出使能信號(hào)(/OE)</p><p>  RESET(18腳):復(fù)位腳,低電平有效,復(fù)位不會(huì)影響到時(shí)鐘、日歷和RAM。</p><p>  IRQ(19腳):中斷申請(qǐng)輸出腳,低電平有效,可作為微處理器的中斷輸入。</p><p>  SQW(23腳):

26、方波信號(hào)輸出腳??赏ㄟ^(guò)設(shè)置寄存器位SQWE關(guān)斷此信號(hào)輸出,此信號(hào)的輸出頻率也可通過(guò)對(duì)芯片內(nèi)部的寄存器編程予以改變。</p><p>  VCC(24腳):+5v電源端。</p><p>  2.2.2時(shí)鐘芯片DS12C887,其內(nèi)存空間介紹</p><p>  圖2-3 時(shí)鐘、日歷和鬧鐘數(shù)據(jù)模式——BCD模式(DM=0)</p><p>  

27、圖2-4 時(shí)鐘、日歷和鬧鐘數(shù)據(jù)模式——二進(jìn)制模式(DM=1)</p><p>  2.2.3 4個(gè)控制寄存器介紹</p><p>  DS12C887有4個(gè)控制寄存器,在任何時(shí)間都可以進(jìn)行訪問(wèn),即使處于更新周期。</p><p>  寄存器A字節(jié)的內(nèi)容如下。</p><p>  MSB

28、 LSB</p><p>  UIP: 更新標(biāo)志位。為只讀位且不受復(fù)位操作的影響,為1時(shí),表示即將發(fā)生的數(shù)據(jù)更新;為0時(shí),表示至少244US不會(huì)更新數(shù)據(jù)。當(dāng)UIP為0時(shí),可以獲得所有時(shí)鐘、日歷、鬧鐘信息。將寄存器B中的SET位置1可以限制任何數(shù)據(jù)更新操作,并且清除UIP位。</p><p>  DV2、DV1、DV0:此3位為010時(shí)將

29、打開晶振,并開始計(jì)時(shí)。RES3、RES2、RES1、RES0:用于設(shè)置周期性中斷產(chǎn)生的時(shí)間周期和輸出方波的頻率。</p><p>  寄存器B字節(jié)的內(nèi)容如下。</p><p>  MSB LSB</p><p>  SET:設(shè)置位,可讀寫,不受復(fù)位操作影響

30、。為0時(shí),不處于設(shè)置狀態(tài),芯片進(jìn)行正常時(shí)間數(shù)據(jù)更新;為1時(shí),抑制數(shù)據(jù)更新,可以通過(guò)程序設(shè)定時(shí)間和日歷信息。</p><p>  PIE:周期性中斷使能位,可讀寫,復(fù)位時(shí)清除此位。為1時(shí),允許寄存器C中的周期中斷標(biāo)志位PF,驅(qū)動(dòng)/IRQ引腳為低產(chǎn)生中斷信號(hào)輸出,中斷信號(hào)產(chǎn)生的周期由RS3~RE0決定。</p><p>  AIE:鬧鐘中斷使能位,可讀寫。為1時(shí),允許寄存器C中的鬧鐘中斷標(biāo)志位

31、AF、鬧鐘發(fā)生時(shí)就會(huì)通過(guò)/IRQ引腳產(chǎn)生中斷輸出。</p><p>  UIE:數(shù)據(jù)更新結(jié)束中斷使能位,可讀寫。復(fù)位或者SET位為1時(shí)清除此位。為1時(shí)允許寄存器C中的更新結(jié)束標(biāo)志UF,更新結(jié)束時(shí)就會(huì)通過(guò)/IRQ引腳產(chǎn)生中斷輸出。</p><p>  SQWE:方波使能位,可讀寫,復(fù)位時(shí)清除此位。為0時(shí),SQW引腳保持低電平;為1時(shí),SQW引腳輸出方波信號(hào),其頻率由RS3~RS0決定。<

32、;/p><p>  DM:數(shù)據(jù)模式位,可讀寫,不受復(fù)位操作影響。為0時(shí),設(shè)置時(shí)間、日歷信息為二進(jìn)制數(shù)據(jù);為1時(shí),設(shè)置為BCD碼數(shù)據(jù)。</p><p>  24/12:時(shí)間模式設(shè)置為,可讀寫,不受復(fù)位操作影響。為0時(shí),設(shè)置為12小時(shí)模式;為1時(shí),設(shè)置為24小時(shí)模式。</p><p>  DSE:為1時(shí),會(huì)引起兩次特殊的時(shí)間更新;4月的第一個(gè)星期日凌晨1:59:59會(huì)直接更

33、新到3:00:00,10月的最后一個(gè)星期日凌晨1:59:59會(huì)直接更新到1:00:00;為0時(shí),時(shí)間信息正常更新,此位可讀寫,不受復(fù)位操作影響。</p><p>  寄存器C字節(jié)內(nèi)容如下。</p><p>  MSB LSB</p><p>  IQRF:

34、中斷申請(qǐng)標(biāo)志位。為1時(shí),/IRQ引腳為低,產(chǎn)生中斷申請(qǐng)。當(dāng)PF、PIE為1時(shí)或者AF、ATE為1或者UF、UIE為1時(shí),此位為1,否則置0.</p><p>  PF:中期中斷標(biāo)志位。為1時(shí),它是只讀位,和PIE位狀態(tài)無(wú)關(guān),由復(fù)位操作或者寄存器C操作清除。</p><p>  AF:鬧鐘中斷標(biāo)志位。為1時(shí),表示當(dāng)前時(shí)間和鬧鐘設(shè)定時(shí)間一至,由復(fù)位操作或讀寄存器C操作清除。</p>

35、<p>  UF:數(shù)據(jù)更新結(jié)束中斷標(biāo)志位。每個(gè)更新周期后此位都會(huì)置1,當(dāng)UIE位位置1時(shí),UF若為1就會(huì)引起IRQF置1,將驅(qū)動(dòng)/IRQ引腳為低電平,申請(qǐng)中斷。此位由復(fù)位操作或讀寄存器C操作清除。</p><p>  寄存器D字節(jié)的內(nèi)容如下。</p><p>  MSB

36、 LSB</p><p>  VRT;RAM和時(shí)間有效位。用于指示和VBAT引腳連接的電池狀態(tài)。此位不可寫,也不受操作為影響,正常情況下讀取時(shí)總?cè)?,如果出現(xiàn)讀取為0的情況,則表示電池耗盡,時(shí)間數(shù)據(jù)和RAM中的數(shù)據(jù)就會(huì)出現(xiàn)問(wèn)題。</p><p>  芯片DS12CR887的113字節(jié)普通RAM空間為非易失性RAM空間,他不專門用于某些特別功能,而是可以在未處理器程序中作為非易失性內(nèi)存

37、空間使用。</p><p>  §2.4溫度采集電路設(shè)計(jì)</p><p>  2.4.1 DS18B20的主要特性</p><p>  適應(yīng)電壓范圍更寬,電壓范圍:3.0~5.5V,在寄生電源方式下可由數(shù)據(jù)線供電。②獨(dú)特的單線接口方式,DS18B20在與微處理器連接時(shí)僅需要一條口線即可實(shí)現(xiàn)微處理器與DS18B20的雙向通訊。③DS18B20支持多點(diǎn)組網(wǎng)

38、功能,多個(gè)DS18B20可以并聯(lián)在唯一的三線上,實(shí)現(xiàn)組網(wǎng)多點(diǎn)測(cè)溫④DS18B20在使用中不需要任何外圍元件,全部傳感元件及轉(zhuǎn)換電路集成在形如一只三極管的集成電路內(nèi)。⑤溫范圍-55℃~+125℃,在-10~+85℃時(shí)精度為0.5℃。⑥可編程的分辨率為9~12位,對(duì)應(yīng)的可分辨溫度分別為0.5℃、0.25℃、0.125℃和0.0625℃,可實(shí)現(xiàn)高精度測(cè)溫。⑦在9位分辨率時(shí)最多在93.75ms內(nèi)把溫度轉(zhuǎn)換為數(shù)字,12位分辨率時(shí)最多在750

39、ms內(nèi)把溫度值轉(zhuǎn)換為數(shù)字,速度更快。⑧測(cè)量結(jié)果直接輸出數(shù)字溫度信號(hào),以"一線總線"串行傳送給CPU,同時(shí)可傳送CRC校驗(yàn)碼,具有極強(qiáng)的抗干擾糾錯(cuò)能力。</p><p> ?、嶝?fù)壓特性:電源極性接反時(shí),芯片不會(huì)因發(fā)熱而燒毀,但不能正常工作。</p><p>  2.4.2 DS1820的基本操作指令</p><p>  DS1820的操作指令分為

40、ROM操作命令和存儲(chǔ)器操作命令。</p><p> ?。?)、ROM操作命令及其含義</p><p>  Read ROM指令代碼(33h):如果只有一片DS1820,可用此命令讀出其序列號(hào),若在線DS1820多于一個(gè),將發(fā)生沖突。</p><p>  Match ROM指令代碼(55h):多個(gè)DS1820在線時(shí),可用此命令匹配一個(gè)給定序列號(hào)的DS1820,此后的命

41、令就針對(duì)該DS1820。</p><p>  Skip ROM指令代碼(CCh):此命令執(zhí)行后的存儲(chǔ)器操作將針對(duì)在線的所有DS1820。</p><p>  Search ROM指令代碼(F0h):用以讀出在線的DS1820的序列號(hào)。</p><p>  Alarm Search指令代碼(ECh):當(dāng)溫度值高于TH或低于TL中的數(shù)值時(shí),此命令可以讀出報(bào)警的DS182

42、0。 </p><p> ?。?)、存儲(chǔ)器操作指令代碼及其含義 </p><p>  Write Scratchpad指令代碼(4Eh):寫兩個(gè)字節(jié)的數(shù)據(jù)到溫度寄存器。</p><p>  Read Scratchpad指令代碼(BEh):讀取溫度寄存器的溫度值。</p><p>  Copy Scratchpad指令代碼

43、(48h):將溫度寄存器的數(shù)值拷貝到EERAM中,保證溫度值不丟失。</p><p>  Convert T指令代碼(44h):?jiǎn)?dòng)在線DS1280做溫度A/D轉(zhuǎn)換。</p><p>  Recall E2指令代碼(B8h):將EERAM中的數(shù)值拷貝到溫度寄存器中。</p><p>  Read Power Supply指令代碼(B4h):在本命令送到DS1280之

44、后的每一個(gè)讀數(shù)據(jù)間隙,指出電源模式:“0”為寄生電源;“1”為外部電源。</p><p>  2.4.3 溫度測(cè)量的步驟</p><p>  (1).Read ROM(33 h),每次對(duì)DS1820進(jìn)行操作之前都要對(duì)它進(jìn)行初始化,主要目的在于確定傳感器已經(jīng)連接到單總線上。</p><p>  (2).Search ROM(F0h),這條指令使處理器用排除的

45、方法去辨別總線上的DS1820。</p><p>  (3).Match ROM(55h),只有準(zhǔn)確的符合64位ROM序列的DS1820才能響應(yīng)其后的指令,當(dāng)然,單點(diǎn)測(cè)溫時(shí)可以使用Skip ROM(CCh)指令來(lái)跳過(guò)這一步。</p><p>  (4).Convert T(44h),發(fā)完指令后應(yīng)查詢總線上的電平,當(dāng)電平位高時(shí)溫度轉(zhuǎn)換完成。</p><p>

46、  (5).Read Scratchpad(BEh),將讀指令發(fā)出后,就可從總線上讀得表示溫度的2字節(jié)二進(jìn)制數(shù)。</p><p>  2.4.4 DS18B20的操作時(shí)序</p><p>  由于采用單總線數(shù)據(jù)傳輸方式,DS18B20的數(shù)據(jù)I/O均由同一條線完成,因此,對(duì)讀寫的操作時(shí)序要求嚴(yán)格。它的各種時(shí)序如圖2-5所示</p><p>  圖2-5 DS18B2

47、0的操作時(shí)序</p><p>  為了保證DS18B20的嚴(yán)格I/O時(shí)序。需要做較精確的延時(shí)。在DS18B20操作中,用到的延時(shí)有15μS,90μS,270μS,540μS等。因這些延時(shí)均為15μS的整倍,因此在程序中可以編寫一個(gè)以15μS為基準(zhǔn)的延時(shí)函數(shù)。</p><p>  圖2-6溫度采集電路</p><p>  §2.5 1602LCD液晶顯示屏&

48、lt;/p><p>  2.5.1 1602字符型LCD簡(jiǎn)介</p><p>  字符型液晶顯示模塊是一種專門用于顯示字母、數(shù)字、符號(hào)等點(diǎn)陣式LCD,本設(shè)計(jì)采用16列*2行的字符型LCD1602帶背光的液晶顯示屏。</p><p>  1602LCD主要技術(shù)參數(shù):</p><p>  顯示容量:16×2個(gè)字符</p>&

49、lt;p>  芯片工作電壓:4.5—5.5V</p><p>  工作電流:2.0mA(5.0V)</p><p>  模塊最佳工作電壓:5.0V</p><p>  字符尺寸:2.95×4.35(W×H)mm</p><p>  2.5.2 1602引腳功能說(shuō)明</p><p>  各引腳接

50、口說(shuō)明如表所示:</p><p><b>  表2-1</b></p><p>  表2-1:引腳接口說(shuō)明:</p><p>  第1腳:VSS為地電源。</p><p>  第2腳:VDD接5V正電源。</p><p>  第3腳:VL為液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地時(shí)對(duì)比度

51、最高,對(duì)比度過(guò)高時(shí)會(huì)產(chǎn)生“鬼影”,使用時(shí)可以通過(guò)一個(gè)10K的電位器調(diào)整對(duì)比度。</p><p>  第4腳:RS為寄存器選擇,高電平時(shí)選擇數(shù)據(jù)寄存器、低電平時(shí)選擇指令寄存器。</p><p>  第5腳:R/W為讀寫信號(hào)線,高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫操作。當(dāng)RS和R/W共同為低電平時(shí)可以寫入指令或者顯示地址,當(dāng)RS為低電平R/W為高電平時(shí)可以讀忙信號(hào),當(dāng)RS為高電平R/W為低電平時(shí)

52、可以寫入數(shù)據(jù)。</p><p>  第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。</p><p>  第7~14腳:D0~D7為8位雙向數(shù)據(jù)線。</p><p>  第15腳:背光源正極。</p><p>  第16腳:背光源負(fù)極。</p><p>  2.5.3 1602LCD的指令說(shuō)明及時(shí)

53、序</p><p>  1602液晶模塊內(nèi)部的控制器共有11條控制指令,如表2-2所示:</p><p><b>  表2-2</b></p><p>  表2-2字符控制命令說(shuō)明:</p><p>  1602液晶模塊的讀寫操作、屏幕和光標(biāo)的操作都是通過(guò)指令編程來(lái)實(shí)現(xiàn)的。(說(shuō)明:1為高電平、0為低電平)</p&g

54、t;<p>  指令1:清顯示,指令碼01H,光標(biāo)復(fù)位到地址00H位置。</p><p>  指令2:光標(biāo)復(fù)位,光標(biāo)返回到地址00H。</p><p>  指令3:光標(biāo)和顯示模式設(shè)置 I/D:光標(biāo)移動(dòng)方向,高電平右移,低電平左移 S:屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則無(wú)效。</p><p>  指令4:顯示開關(guān)控制。 D:控制整體

55、顯示的開與關(guān),高電平表示開顯示,低電平表示關(guān)顯示 C:控制光標(biāo)的開與關(guān),高電平表示有光標(biāo),低電平表示無(wú)光標(biāo) B:控制光標(biāo)是否閃爍,高電平閃爍,低電平不閃爍。</p><p>  指令5:光標(biāo)或顯示移位 S/C:高電平時(shí)移動(dòng)顯示的文字,低電平時(shí)移動(dòng)光標(biāo)。</p><p>  指令6:功能設(shè)置命令 DL:高電平時(shí)為4位總線,低電平時(shí)為8位總線 N:低電平時(shí)為單行顯示,高電平時(shí)雙行顯示 F: 低

56、電平時(shí)顯示5x7的點(diǎn)陣字符,高電平時(shí)顯示5x10的點(diǎn)陣字符。</p><p>  指令7:字符發(fā)生器RAM地址設(shè)置。</p><p>  指令8:DDRAM地址設(shè)置。</p><p>  指令9:讀忙信號(hào)和光標(biāo)地址 BF:為忙標(biāo)志位,高電平表示忙,此時(shí)模塊不能接收命令或者數(shù)據(jù),如果為低電平表示不忙。</p><p><b>  指令

57、10:寫數(shù)據(jù)。</b></p><p><b>  指令11:讀數(shù)據(jù)。</b></p><p><b>  芯片時(shí)序表如下:</b></p><p><b>  表2-3</b></p><p><b>  基本操作時(shí)序表</b></p&

58、gt;<p>  讀寫操作時(shí)序如圖2-7和2-8所示:</p><p><b>  圖2-7讀操作時(shí)序</b></p><p>  圖2-8 寫操作時(shí)序</p><p>  2.5.4 1602LCD的RAM地址映射及標(biāo)準(zhǔn)字庫(kù)表</p><p>  液晶顯示模塊是一個(gè)慢顯示器件,所以在執(zhí)行每條指令之前一定要

59、確認(rèn)模塊的忙標(biāo)志為低電平,表示不忙,否則此指令失效。要顯示字符時(shí)要先輸入顯示字符地址,也就是告訴模塊在哪里顯示字符,圖2-9是1602的內(nèi)部顯示地址。</p><p>  圖2-9液晶內(nèi)部顯示地址</p><p>  例如第二行第一個(gè)字符的地址是40H,那么是否直接寫入40H就可以將光標(biāo)定位在第二行第一個(gè)字符的位置呢?這樣不行,因?yàn)閷懭腼@示地址時(shí)要求最高位D7恒定為高電平1所以實(shí)際寫入的數(shù)

60、據(jù)應(yīng)該是01000000B(40H)+10000000B(80H)=11000000B(C0H)。</p><p>  在對(duì)液晶模塊的初始化中要先設(shè)置其顯示模式,在液晶模塊顯示字符時(shí)光標(biāo)是自動(dòng)右移的,無(wú)需人工干預(yù)。每次輸入指令前都要判斷液晶模塊是否處于忙的狀態(tài)。</p><p>  1602液晶模塊內(nèi)部的字符發(fā)生存儲(chǔ)器(CGROM)已經(jīng)存儲(chǔ)了160個(gè)不同的點(diǎn)陣字符圖形,如圖10-58所示,

61、這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫、常用的符號(hào)、和日文假名等,每一個(gè)字符都有一個(gè)固定的代碼,比如大寫的英文字母“A”的代碼是01000001B(41H),顯示時(shí)模塊把地址41H中的點(diǎn)陣字符圖形顯示出來(lái),我們就能看到字母“A”。</p><p>  圖2-10 字符代碼與圖形對(duì)應(yīng)圖</p><p>  2.5.5 1602LCD的一般初始化(復(fù)位)過(guò)程</p><p

62、><b>  延時(shí)15mS</b></p><p>  寫指令38H(不檢測(cè)忙信號(hào))</p><p><b>  延時(shí)5mS</b></p><p>  寫指令38H(不檢測(cè)忙信號(hào))</p><p><b>  延時(shí)5mS</b></p><p>

63、  寫指令38H(不檢測(cè)忙信號(hào))以后每次寫指令、讀/寫數(shù)據(jù)操作均需要檢測(cè)忙信號(hào)</p><p>  寫指令38H:顯示模式設(shè)置</p><p>  寫指令08H:顯示關(guān)閉</p><p>  寫指令01H:顯示清屏</p><p>  寫指令06H:顯示光標(biāo)移動(dòng)設(shè)置</p><p>  寫指令0CH:顯示開及光標(biāo)設(shè)置&

64、lt;/p><p>  2.4.6 1602LCD的電路連接</p><p>  液晶5端為讀/寫選擇端,因?yàn)槲覀儾粡囊壕е凶x取數(shù)據(jù),只向其寫入命令和顯示數(shù)據(jù),因此此端始終選擇為寫狀態(tài),即低電平接地。液晶6端為使能信號(hào),是操作時(shí)必須的信號(hào)。其電路如圖2-11所示:</p><p>  圖2-11 1602的電路連接</p><p>  §

65、;2.6 蜂鳴器鬧鈴電路</p><p>  當(dāng)單片機(jī)給蜂鳴器一個(gè)低電平時(shí),三極管導(dǎo)通驅(qū)動(dòng)蜂鳴器發(fā)出聲音作為定時(shí)鬧鈴,其電路圖如圖2-12所示:</p><p>  圖2-12 蜂鳴器連接電路</p><p>  §2.7 按鍵調(diào)整電路</p><p>  系統(tǒng)四個(gè)獨(dú)立鍵盤均采用查詢方式,S2用于設(shè)置年、月、日、時(shí)、分、秒、星期的數(shù)

66、值加,以及鬧鐘開,S3用于設(shè)置年、月、日、時(shí)、分、秒、星期的數(shù)值減以及鬧鐘關(guān),s1用于具體設(shè)置時(shí)鐘位的切換,s4鍵用于設(shè)置鬧鐘。其電路圖如2-13所示:</p><p>  圖2-13 按鍵電路連接</p><p><b>  §2.8 電源模塊</b></p><p>  電子鐘的電源為5伏直流電源,本設(shè)計(jì)中我使用的是5V的充電電池

67、,電源模塊的原理圖如圖2-15所示:</p><p><b>  圖2-14電源模塊</b></p><p>  第三章 軟件部分設(shè)計(jì)</p><p>  本系統(tǒng)主要包括五個(gè)模塊編程:</p><p><b>  蜂鳴器鬧鈴響編程</b></p><p>  時(shí)鐘芯片12C8

68、87的編</p><p>  液晶顯示屏1602的編程</p><p><b>  按鍵編程</b></p><p>  DS18B20溫度采集編程</p><p>  §3.1 主程序流程</p><p>  主程序開始初始化,并打開中斷,然后執(zhí)行掃描鬧鐘、鍵盤及讀取18B20值。當(dāng)有

69、S1鍵按下時(shí),執(zhí)行時(shí)鐘設(shè)置,當(dāng)有S4鍵按下時(shí),則進(jìn)入鬧鐘設(shè)置,無(wú)論是時(shí)鐘還是鬧鐘,設(shè)置完后退出,溫度、時(shí)鐘恢復(fù)實(shí)時(shí)顯示。主程序流程圖如圖3-1所示:</p><p>  圖3-1主程序流程圖</p><p>  §3.2 時(shí)間設(shè)置子程序流程</p><p>  通過(guò)單片機(jī)判斷S1按下的次數(shù)來(lái)設(shè)置,由s1num標(biāo)志位來(lái)記錄次數(shù),用if語(yǔ)句判斷執(zhí)行命令。系統(tǒng)程

70、序不斷掃面鍵盤,當(dāng)s1鍵按下后產(chǎn)生一個(gè)低電平,即s1num加一。在調(diào)節(jié)時(shí)間之前首先進(jìn)行各個(gè)變量初始化,及設(shè)置起始時(shí)間,同時(shí)為讀取數(shù)據(jù)作準(zhǔn)備。當(dāng)s1=1時(shí)進(jìn)入秒的設(shè)置,地址指針指向miao顯示位置處,通過(guò)兩個(gè)if語(yǔ)句分別循環(huán)控制顯示秒數(shù)的加和減。當(dāng)s1=2時(shí),地址指針指向fen顯示位置處,變量最大值為59。當(dāng)s1=3時(shí),地址指針指向shi顯示位置處,變量最大值設(shè)為23。當(dāng)s1=4時(shí),地址指針指向week顯示位置處,最大值設(shè)為7,1至7分別

71、用MON、TUE、WED、THU 、FRI、SAT、SUN字符串顯示。隨著s2、s3值的的變化顯示不同的字符串。當(dāng)s1=5時(shí),地址指針指向day顯示位置,變量最大值為31。當(dāng)s1=6時(shí),地址指針指向month顯示位置,變量最大值為12。</p><p>  當(dāng)s1=7時(shí),地址指針指向year顯示位置,最大值為99。</p><p>  圖3-2時(shí)間設(shè)置流程圖</p><

72、p>  §3.3 鬧鐘設(shè)置子程序流程</p><p>  時(shí)間設(shè)置程序流程圖如圖3-3所示。在開始時(shí)間設(shè)置之前程序會(huì)關(guān)閉全局中斷,直至設(shè)置結(jié)束,中斷又會(huì)重新開啟,進(jìn)入計(jì)時(shí)狀態(tài)。</p><p>  鬧鐘的設(shè)置時(shí)通過(guò)S1鍵的按下次數(shù)來(lái)判斷的。當(dāng)單片機(jī)檢測(cè)到S4鍵按下一次時(shí)則進(jìn)入鬧鐘設(shè)置界面,光標(biāo)并自動(dòng)跳到秒設(shè)置位置,可以對(duì)秒進(jìn)行設(shè)置,當(dāng)S1鍵依次按下1、2、3次時(shí),則分別進(jìn)入

73、鬧鐘的秒、分、時(shí)關(guān)的設(shè)置。:</p><p>  圖3-3 鬧鐘設(shè)置流程圖</p><p>  §3.4 程序設(shè)計(jì)問(wèn)題</p><p>  3.4.1 按鍵抖動(dòng)問(wèn)題</p><p>  按鍵在按下時(shí)因?yàn)闄C(jī)械原因會(huì)產(chǎn)生抖動(dòng),抖動(dòng)的后果就是當(dāng)按下一次按鍵時(shí)因?yàn)槎秳?dòng)的原因讓系統(tǒng)讀取到多次的按鍵按下的次數(shù),由此導(dǎo)致設(shè)置時(shí)出現(xiàn)錯(cuò)誤。解決的方法

74、如下:當(dāng)按鍵按下時(shí)讀取按鍵鍵值,若5ms后鍵值和按下是相等,則確認(rèn)為有效按鍵,以此消除按鍵抖動(dòng)帶來(lái)的問(wèn)題。</p><p>  3.4.2 蜂鳴器設(shè)置</p><p>  蜂鳴器報(bào)警時(shí),設(shè)置響100毫秒,停100毫秒,循環(huán)響應(yīng),產(chǎn)生滴滴的聲音。</p><p>  3.4.3 液晶顯示的設(shè)置</p><p><b>  初始化設(shè)置&

75、lt;/b></p><p><b>  顯示模式設(shè)置</b></p><p>  寫入指令碼write_com(0x38),設(shè)置功能16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù)接口</p><p>  顯示/開關(guān)及光標(biāo)設(shè)置</p><p>  寫入指令碼write_com(0x0c),設(shè)置開顯示,不顯示光標(biāo),光標(biāo)不閃爍。&

76、lt;/p><p>  寫入指令碼write_com(0x06),設(shè)置當(dāng)讀或?qū)懸粋€(gè)字符后地址指針加一,且光標(biāo)加一。當(dāng)寫一個(gè)字符,整屏顯示不移動(dòng)。</p><p>  顯示清屏,寫入指令碼write_com(0x01)。</p><p>  寫入指令碼函數(shù)write_com()寫指令過(guò)程 :輸入:rs=0,D0-D7=指令碼,E=高脈沖</p><p&

77、gt;  寫入數(shù)據(jù)函數(shù) write_date() 寫指令過(guò)程: 輸入:rs=1,D0-D7=數(shù)據(jù),E=高脈沖</p><p>  寫入指令和數(shù)據(jù)時(shí)rw端已經(jīng)接地。</p><p>  數(shù)據(jù)指針設(shè)置 指令碼80H+地址碼(0-27H)顯示第一行的字符</p><p>  指令碼80H+地址碼(40H-67H)顯示的第二行字符</p><p>

78、  3.4.4 中斷設(shè)置</p><p>  EA=1;//打開總中斷</p><p>  EX1=1;//打開外部中斷</p><p>  IT1=1;//設(shè)置負(fù)跳變沿觸發(fā)中斷</p><p>  當(dāng)鬧鐘到點(diǎn)時(shí)響應(yīng)外部中1 時(shí)間到時(shí)IRQ端從高阻態(tài)轉(zhuǎn)為低電平,此時(shí)讀一次c寄存器清除IRQ端的輸出,等待下一次定時(shí)。</p>&

79、lt;p>  void exter() interrupt 2 //外部中斷1服務(wù)程序</p><p><b>  {</b></p><p>  uchar c;//進(jìn)入中斷表示鬧鐘時(shí)間到</p><p>  flag_ri=1; //設(shè)置標(biāo)志位,用以大程序中報(bào)警</p><p>  c=read_ds(0x

80、0c);//讀取12c887c寄存器表示響應(yīng)了中端</p><p><b>  }</b></p><p>  3.4.5 時(shí)鐘芯片設(shè)置</p><p>  首次上電初始化時(shí)間函數(shù):</p><p>  void set_time()</p><p>  {//首次上電初始化時(shí)間函數(shù)</p&

81、gt;<p>  write_ds(0,0);//初始化秒</p><p>  write_ds(1,0);//初始化秒鬧鐘</p><p>  write_ds(2,0);// 初始化分</p><p>  write_ds(3,0);//初始化分鬧鐘</p><p>  write_ds(4,0);//初始化時(shí)</p&

82、gt;<p>  write_ds(5,0);// 初始化時(shí)鬧鐘</p><p>  write_ds(6,0);//初始化星期</p><p>  write_ds(7,0);// 初始化日</p><p>  write_ds(8,0);//初始化月</p><p>  write_ds(9,0);// 初始化年</p

83、><p><b>  }</b></p><p>  寫12C887函數(shù):</p><p>  void write_ds(uchar add,uchar date)</p><p>  { //寫12C887函數(shù)</p><p>  dscs=0; 打開片選信號(hào)</p><

84、p><b>  dsas=1;</b></p><p><b>  dsds=1;</b></p><p><b>  dsrw=1;</b></p><p><b>  P0=add;</b></p><p>  dsas=0; //下降沿鎖存地址

85、</p><p><b>  dsrw=0;</b></p><p><b>  P0=date;</b></p><p>  dsrw=1;//上升沿鎖存數(shù)據(jù)</p><p>  dsas=1;//上升沿清除地址</p><p>  dscs=1;//關(guān)掉片選信號(hào)&

86、lt;/p><p><b>  }</b></p><p><b>  圖3-5 寫時(shí)序圖</b></p><p>  讀12C887函數(shù):</p><p>  uchar read_ds(uchar add)</p><p><b>  {</b><

87、/p><p>  uchar ds_date;</p><p><b>  dsas=1;</b></p><p><b>  dsds=1;</b></p><p><b>  dsrw=1;</b></p><p>  dscs=0;打開片選信號(hào)<

88、/p><p><b>  P0=add;</b></p><p>  dsas=0; //下降沿鎖存地址</p><p><b>  dsds=0;</b></p><p><b>  P0=0xff;</b></p><p>  ds_date=P0;&l

89、t;/p><p>  dsds=1; //下降沿鎖存地址</p><p>  dsas=1;//上升沿清除地址</p><p>  dscs=1;//關(guān)掉片選信號(hào)</p><p>  return ds_date;</p><p><b>  }</b></p><p><

90、;b>  圖3-6 讀時(shí)序圖</b></p><p><b>  結(jié)束語(yǔ)</b></p><p>  本文是一篇關(guān)于用單片機(jī)實(shí)現(xiàn)萬(wàn)年歷的論文,設(shè)計(jì)中使用到了AT89s52和1602液晶顯示屏。在設(shè)計(jì)過(guò)程中我通過(guò)在網(wǎng)上和圖書館查閱資料,收集了關(guān)于單片機(jī)和液晶顯示方面的資料,通過(guò)對(duì)這些資料的學(xué)習(xí),我了解了單片機(jī)的基本結(jié)構(gòu),使用和單片機(jī)在生活和生產(chǎn)中所發(fā)揮

91、的作用;液晶顯示的原理和使用。本次畢業(yè)設(shè)計(jì)除了讓我回顧以前學(xué)過(guò)的知識(shí)外,也使我學(xué)習(xí)到了新的東西。這次畢業(yè)設(shè)計(jì)可以說(shuō)是對(duì)四年的大學(xué)學(xué)習(xí)的總結(jié)。</p><p>  本次畢業(yè)設(shè)計(jì)完成的主要工作和任務(wù)如下:對(duì)設(shè)計(jì)方案的理論研究,單片機(jī)的合理選型,硬件電路的設(shè)計(jì),電路板的制作,元器件的焊接,軟件的編寫和調(diào)試以及畢業(yè)論文的制作。</p><p>  通過(guò)對(duì)本課題的研究我有以下幾個(gè)方面的收獲:<

92、/p><p>  (1)學(xué)習(xí)與掌握了單片機(jī)的基本原理及其各種應(yīng)用,對(duì)它的各種硬件接口與軟件設(shè)計(jì)方法有較深入的認(rèn)識(shí)。</p><p>  (2)對(duì)液晶顯示有了一定的認(rèn)識(shí),能夠初步掌握液晶顯示的原理。</p><p> ?。?)通過(guò)對(duì)電路原理圖、pcb圖的繪制,電路板的制作掌握了對(duì)Altium Designer Winter 09和。</p><p>

93、;  (4)本設(shè)計(jì)重點(diǎn)在于軟件的設(shè)計(jì),因此在設(shè)計(jì)過(guò)程中使自己在大學(xué)學(xué)到的C語(yǔ)言知識(shí)得到了鞏固,同時(shí)提高了解決實(shí)際問(wèn)題的能力。</p><p>  由于時(shí)間倉(cāng)促,再加上作者水平有限,本文不免有很多錯(cuò)誤,懇請(qǐng)各位讀者批評(píng)指正。</p><p><b>  致謝詞</b></p><p>  這篇論文的完成在一定意義上也代表我大學(xué)生涯的結(jié)束,在此我要

94、感謝學(xué)校為我?guī)?lái)的一切,沒(méi)有學(xué)校為我提供的平臺(tái),我也不可能順利地完成大學(xué)的學(xué)習(xí),更不可能完成本次畢業(yè)設(shè)計(jì)。</p><p>  這篇畢業(yè)論文是在我的導(dǎo)師張祥莉老師的親切關(guān)懷和悉心指導(dǎo)下完成的。沒(méi)有張老師的指導(dǎo)我想我不可能順利地完成此次畢業(yè)設(shè)計(jì),在此我想對(duì)他表示由衷的感謝。</p><p>  最后 ,我想表達(dá)對(duì)所有任職老師的感謝,是你們?cè)谶@大學(xué)四年時(shí)間里給了我們知識(shí)和力量,給了我們踏足社會(huì)

95、的能力。</p><p>  在論文即將完成之際,我的心情無(wú)法平靜,從不知道畢業(yè)論文怎么寫,到開始進(jìn)入課題到論文的完成,再到順利完成了畢業(yè)論文答辯稿,有很多老師,同學(xué),朋友向我提供的幫助,在這里請(qǐng)接受我誠(chéng)摯的謝意!</p><p><b>  參考文獻(xiàn)</b></p><p>  [1] 余錫存,曹國(guó)華,單片機(jī)原理及接口技術(shù). 西安:西安電子科

96、技大學(xué)出版社,2000</p><p>  [2] 郭天祥,新概念51單片機(jī)c語(yǔ)言教程。北京:電子工業(yè)出版社,2009</p><p>  [3] 楊拴科, 模擬電子技術(shù)基礎(chǔ). 北京:高等教育出版社, 2003。</p><p>  [4] 李光才,樓然笛.單片機(jī)課程設(shè)計(jì)實(shí)例指導(dǎo). 北京:北京航空航天大學(xué)出版社,2004。</p>

97、<p>  [6] 楊立民,單片機(jī)技術(shù)及應(yīng)用.西安:西安電子科技大學(xué)出版社,1997.9~12。</p><p>  [7] 馬忠梅,單片機(jī)的C語(yǔ)言應(yīng)用程序設(shè)計(jì).北京:北京航空航天大學(xué)出版社,1997。</p><p>  [8]王天曦 ,李洪儒.電子技術(shù)工藝基礎(chǔ).北京:清華大學(xué)出版社,2000。</p><p>  [9] 弘道工作室,融會(huì)貫通 Prot

98、el99電路設(shè)計(jì).北京: 人民交通出版設(shè),2000。</p><p>  [10] 張偉,王力,趙晶,ProtelDXP 入門與提高.北京:人民郵電出版社, 2003.2。</p><p>  [11] 李廣弟,朱月秀,王秀山.單片機(jī)基礎(chǔ)[M]. 北京:北京航空航天大學(xué)出版社,    2001.7。</p><p>  [12] 譚浩

99、強(qiáng),C程序設(shè)計(jì)(第二版)[M].北京:清華大學(xué)出版社,2003。 </p><p>  [13] 付家才,單片機(jī)控制工程實(shí)踐技術(shù)[M]. 北京:化學(xué)工業(yè)出版社,2004.3。</p><p>  [14] W.Simpson,Editor,The Point-to-Point Protocol, RFC1661 [EB/OL]. July 1994。</p><

100、;p>  [15] WAVECOM,AT Commands Interface Guide, Revision 002[EB/OL].6th November 2003。</p><p><b>  附件1</b></p><p><b>  程序頭文件</b></p><p>  #define uchar uns

101、igned char</p><p>  #define uint unsigned int</p><p>  sbit dsirq=P3^3;</p><p>  sbit dsds=P1^7;</p><p>  sbit dsrw=P1^6;</p><p>  sbit dsas=P1^5;</p>

102、;<p>  sbit dscs=P1^4;</p><p>  sbit lcden=P2^6;</p><p>  sbit rs=P2^5;</p><p>  sbit beep=P2^4;</p><p>  sbit s1=P1^0;</p><p>  sbit s2=P1^1;</p

103、><p>  sbit s3=P1^2;</p><p>  sbit s4=P1^3;</p><p>  sbit ds=P2^3;</p><p>  uint temp;//定義整型的溫度數(shù)據(jù)</p><p>  float f_temp;//定義浮點(diǎn)型的溫度數(shù)</p><p>  bit

104、flag1,flag_ri;</p><p>  uchar count,s1num,flag,t0_num;</p><p>  char miao,shi,fen,year,month,day,week,amiao,afen,ashi;</p><p>  uchar code table[]=" 20 - - ";</p

105、><p>  uchar code table1[]=" : : ";</p><p>  void write_ds(uchar,uchar);</p><p>  void set_alarm(uchar,uchar,uchar);</p><p>  void read_alarm();</

106、p><p>  uchar read_ds(uchar);</p><p>  void set_time();</p><p><b>  附件程序主體</b></p><p>  #include<reg52.h></p><p>  #include<stdio.h>&l

107、t;/p><p>  #include<difine.h></p><p>  void delay(uint z)</p><p><b>  {</b></p><p><b>  uint x,y;</b></p><p>  for(x=z;x>0;x-

108、-)</p><p>  for(y=110;y>0;y--);</p><p><b>  }</b></p><p><b>  void di()</b></p><p><b>  {</b></p><p><b>  beep

109、=0;</b></p><p>  delay(100);</p><p><b>  beep=1;</b></p><p><b>  }</b></p><p>  void write_com(uchar com)</p><p><b>  {

110、</b></p><p><b>  rs=0;</b></p><p><b>  lcden=0;</b></p><p><b>  P0=com;</b></p><p><b>  delay(5);</b></p>&

111、lt;p><b>  lcden=1;</b></p><p><b>  delay(5);</b></p><p><b>  lcden=0;</b></p><p><b>  }</b></p><p>  void write_date(

112、uchar date)</p><p><b>  {</b></p><p><b>  rs=1;</b></p><p><b>  lcden=0;</b></p><p><b>  P0=date;</b></p><p&g

113、t;<b>  delay(3);</b></p><p><b>  lcden=1;</b></p><p><b>  delay(3);</b></p><p><b>  lcden=0;</b></p><p><b>  }<

114、;/b></p><p>  void init()</p><p><b>  {</b></p><p>  uchar num;</p><p><b>  EA=1;</b></p><p><b>  EX1=1;</b></p&g

115、t;<p><b>  IT1=1;</b></p><p><b>  flag1=0;</b></p><p><b>  t0_num=0;</b></p><p><b>  s1num=0;</b></p><p><b>

116、;  week=1;</b></p><p><b>  lcden=0;</b></p><p>  write_ds(0x0A,0x20);</p><p>  write_ds(0x0B,0x26);</p><p>  set_time();</p><p>  write_c

117、om(0x38);</p><p>  write_com(0x0c);</p><p>  write_com(0x06);</p><p>  write_com(0x01);</p><p>  write_com(0x80);</p><p>  for(num=0;num<15;num++)</p

118、><p><b>  {</b></p><p>  write_date(table[num]);</p><p><b>  delay(1);</b></p><p><b>  }</b></p><p>  write_com(0x80+0x40)

119、;</p><p>  for(num=0;num<16;num++)</p><p><b>  {</b></p><p>  write_date(table1[num]);</p><p><b>  delay(1);</b></p><p><b>

120、;  }</b></p><p><b>  }</b></p><p>  void dsreset(void)//ds18b20復(fù)位,初始化函數(shù)</p><p><b>  {</b></p><p><b>  uint i;</b></p>&

121、lt;p><b>  ds=0;</b></p><p><b>  i=103;</b></p><p>  while(i>0)i--;</p><p><b>  ds=1;</b></p><p><b>  i=4;</b></

122、p><p>  while(i>0)i--;</p><p><b>  }</b></p><p>  bit tempreadbit(void)//讀一位數(shù)據(jù)函數(shù)</p><p><b>  {</b></p><p><b>  uint i;</b&

123、gt;</p><p><b>  bit dat;</b></p><p><b>  ds=0;i++;</b></p><p>  ds=1;i++;i++;//i++起延時(shí)作用</p><p><b>  dat=ds;</b></p><p>

124、  i=8;while(i>0)i--;</p><p>  return(dat);</p><p><b>  }</b></p><p>  uchar tempread(void)</p><p><b>  {</b></p><p>  uchar i,j,

125、dat;</p><p><b>  dat=0;</b></p><p>  for(i=1;i<=8;i++)</p><p><b>  {</b></p><p>  j=tempreadbit();</p><p>  dat=(j<<7)|(da

126、t>>1);</p><p><b>  }</b></p><p>  return(dat);</p><p><b>  }</b></p><p>  void tempwritebyte(uchar dat)//向ds18b20寫一個(gè)字節(jié)數(shù)據(jù)函數(shù)</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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論