版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 編號(hào) </p><p><b> 畢業(yè)論文</b></p><p><b> 二〇一二年六月</b></p><p> 題 目基于單片機(jī)的電子日歷的設(shè)計(jì)</p><p><b> 摘 要</b></p><p
2、> 隨著科技的快速發(fā)展,時(shí)間的流逝,從觀太陽、擺鐘到現(xiàn)在電子鐘,人類不斷研究,不斷創(chuàng)新紀(jì)錄。美國(guó)DALLAS公司推出的具有涓細(xì)電流充電能的低功耗實(shí)時(shí)時(shí)鐘電路DS1302。它可以對(duì)年、月、日、周日、時(shí)、分、秒進(jìn)行計(jì)時(shí),還具有閏年補(bǔ)償?shù)榷喾N功能,而且DS1302的使用壽命長(zhǎng),誤差小。對(duì)于數(shù)字電子萬年歷采用直觀的數(shù)字顯示,可以同時(shí)顯示年、月、日、周 日、時(shí)、分、秒信息,還具有時(shí)間校準(zhǔn)等功能。本設(shè)計(jì)以數(shù)字集成電路技術(shù)為基礎(chǔ),單片機(jī)技術(shù)為
3、核心。軟件設(shè)計(jì)采用模塊化結(jié)構(gòu),C語言編程。系統(tǒng)通過LCD顯示數(shù)據(jù),可以顯示公歷日期(年、月、日、時(shí)、分、秒)以及星期。在內(nèi)容安排上首先描述系統(tǒng)硬件工作原理,著重介紹了各硬件接口技術(shù)和各個(gè)接口模塊;其次,詳細(xì)的闡述了程序的各個(gè)模塊和實(shí)現(xiàn)過程。具體實(shí)現(xiàn)功能:</p><p> 顯示年月日時(shí)分秒及星期信息</p><p> 具有可調(diào)整日期和時(shí)間功能</p><p>
4、 關(guān)鍵詞:萬年歷 單片機(jī) DS1302 </p><p><b> 目 錄</b></p><p><b> 摘 要I</b></p><p> 第一章 方案論證1</p><p> 1.1單片機(jī)芯片的選擇方案和論證1</p><p> 1.2顯示
5、模塊選擇方案和論證1</p><p> 1.3時(shí)鐘芯片的選擇方案和論證1</p><p> 1.4電路設(shè)計(jì)最終方案決定2</p><p> 第二章 系統(tǒng)的硬件設(shè)計(jì)與實(shí)現(xiàn)3</p><p> 2.1 總體電路3</p><p> 2.2單片機(jī)主控制模塊的設(shè)計(jì)3</p><p&g
6、t; 2.2.1 AT89S52的介紹3</p><p> 2.2.2 單片機(jī)主控制模塊介紹5</p><p> 2.3 時(shí)鐘模塊設(shè)計(jì)5</p><p> 2.3.1 DS1302的性能特性5</p><p> 2.3.2 DS1302數(shù)據(jù)操作原理6</p><p> 2.3.3 DS1302與A
7、T89S52接口電路設(shè)計(jì)7</p><p> 2.4顯示模塊的設(shè)計(jì)8</p><p> 2.4.1 LCM1602介紹8</p><p> 2.4.2 LCM1602與單片機(jī)的接口9</p><p> 第三章 系統(tǒng)的軟件設(shè)計(jì)11</p><p> 3.1程序總體描述11</p>&
8、lt;p> 3.2模塊程序描述11</p><p> 第四章 Proteus仿真13</p><p> 4.1 Proteus工作界面13</p><p> 4.2 Proteus功能仿真13</p><p> 第五章 測(cè)試與結(jié)果分析15</p><p> 5.1測(cè)試儀器15</
9、p><p> 5.2硬件測(cè)試15</p><p> 5.3軟件測(cè)試16</p><p> 5.4 測(cè)試結(jié)果分析與結(jié)論16</p><p> 5.4.1 測(cè)試結(jié)果分析16</p><p> 5.4.2 測(cè)試結(jié)論16</p><p> 第六章 總結(jié)與展望17</p>
10、<p><b> 致 謝19</b></p><p><b> 參考文獻(xiàn)21</b></p><p> 附錄1 系統(tǒng)電路圖23</p><p> 附錄2 系統(tǒng)程序24</p><p><b> 第一章 方案論證</b></p>&
11、lt;p> 1.1單片機(jī)芯片的選擇方案和論證</p><p><b> 方案一: </b></p><p> 采用89C51芯片作為硬件核心,采用Flash ROM,內(nèi)部具有4KB ROM 存儲(chǔ)空間,能于3V的超低壓工作,而且與MCS-51系列單片機(jī)完全兼容,但是運(yùn)用于電路設(shè)計(jì)中時(shí)由于不具備ISP在線編程技術(shù), 當(dāng)在對(duì)電路進(jìn)行調(diào)試時(shí),由于程序的錯(cuò)誤修改或?qū)?/p>
12、程序的新增功能需要燒入程序時(shí),對(duì)芯片的多次拔插會(huì)對(duì)芯片造成一定的損壞。</p><p><b> 方案二:</b></p><p> 采用AT89S52,片內(nèi)ROM全都采用Flash ROM;能以3V的超底壓工作;同時(shí)也與MCS-51系列單片機(jī)完全該芯片內(nèi)部存儲(chǔ)器為8KB ROM 存儲(chǔ)空間,同樣具有89C51的功能,且具有在線編程可擦除技術(shù),當(dāng)在對(duì)電路進(jìn)行調(diào)試時(shí),
13、由于程序的錯(cuò)誤修改或?qū)Τ绦虻男略龉δ苄枰獰氤绦驎r(shí),不需要對(duì)芯片多次拔插,所以不會(huì)對(duì)芯片造成損壞。</p><p> 所以選擇采用AT89S52作為主控制系統(tǒng).</p><p> 1.2顯示模塊選擇方案和論證</p><p><b> 方案一:</b></p><p> 采用LED數(shù)碼管動(dòng)態(tài)掃描,LED數(shù)碼管價(jià)格
14、適中,對(duì)于顯示數(shù)字合適,采用動(dòng)態(tài)掃描法與單片機(jī)連接時(shí),雖然占用的單片機(jī)口線少,但連線比較繁雜,所以也不用此種作為顯示。</p><p><b> 方案二:</b></p><p> 采用點(diǎn)陣式數(shù)碼管顯示,點(diǎn)陣式數(shù)碼管是由八行八列的發(fā)光二極管組成,對(duì)于顯示文字比較適合,如采用在顯示數(shù)字顯得太浪費(fèi),且價(jià)格也相對(duì)較高,所以也不用此種作為顯示。</p>&l
15、t;p><b> 方案三:</b></p><p> 采用LCD液晶顯示屏,液晶顯示屏的顯示功能強(qiáng)大,可顯示大量文字,圖形,顯示多樣,清晰可見,并且我做的最小系統(tǒng)上帶一個(gè)TS1620-1,和AT89S52已經(jīng)接好,省了很多麻煩,所以在此設(shè)計(jì)中采用LCD液晶顯示屏。</p><p> 1.3時(shí)鐘芯片的選擇方案和論證</p><p>&
16、lt;b> 方案一:</b></p><p> 直接采用單片機(jī)定時(shí)計(jì)數(shù)器提供秒信號(hào),使用程序?qū)崿F(xiàn)年、月、日、星期、時(shí)、分、秒計(jì)數(shù)。采用此種方案雖然減少芯片的使用,節(jié)約成本,但是,實(shí)現(xiàn)的時(shí)間誤差較大,所以不采用此方案。</p><p><b> 方案二:</b></p><p> 采用DS1302時(shí)鐘芯片實(shí)現(xiàn)時(shí)鐘,DS1
17、302芯片是一種高性能的時(shí)鐘芯片,可自動(dòng)對(duì)秒、分、時(shí)、日、周、月、年進(jìn)行計(jì)數(shù),而且精度高,位的RAM做為數(shù)據(jù)暫存區(qū),工作電壓2.5V~5.5V范圍內(nèi),2.5V時(shí)耗電小于300nA。</p><p> 1.4電路設(shè)計(jì)最終方案決定</p><p> 綜上各方案所述,對(duì)此次作品的方案選定: 采用AT89S52作為主控制器;時(shí)間數(shù)據(jù)是通過時(shí)鐘芯片DS1302來讀??;LCD液晶顯示屏作為顯示。&
18、lt;/p><p> 第二章 系統(tǒng)的硬件設(shè)計(jì)與實(shí)現(xiàn)</p><p><b> 2.1 總體電路</b></p><p> 本次設(shè)計(jì)主要采用AT89S52單片機(jī)來控制,具體模塊主要包括LCD液晶顯示模塊、DS1302時(shí)鐘模塊和鍵盤模塊,系統(tǒng)框圖如圖1所示,AT89S52主要用來控制整個(gè)電路,采用DS1302時(shí)鐘模塊來產(chǎn)生時(shí)間信號(hào),通過鍵盤模塊
19、來進(jìn)行修改,由LCD液晶模塊顯示出來。如圖2-1是程序的系統(tǒng)框圖。</p><p><b> 圖2-1 系統(tǒng)框圖</b></p><p> 2.2單片機(jī)主控制模塊的設(shè)計(jì) </p><p> 根據(jù)方案論證,本次設(shè)計(jì)采用AT89S52單片機(jī)作為主控模塊的控制器件。</p><p> 2.2.1 AT89S52的介紹&
20、lt;/p><p> AT89S52具有以下標(biāo)準(zhǔn)功能:8K字節(jié)Flash,256字節(jié)RAM,32位I/O口線,看門狗定時(shí)器,2個(gè)數(shù)據(jù)指針,三個(gè)16位定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級(jí)中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時(shí)鐘電路。另外,AT89S52可降至0Hz靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU停止工作,允許RAM、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié)
21、,單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。引腳圖如圖2-2所示。</p><p> P0口:P0口是一個(gè)8 位漏極開路的雙向I/O口。作為輸出口,每位能驅(qū)動(dòng)8個(gè)TTL邏 輯電平。對(duì)P0 端口寫“1”時(shí),引腳用作高阻抗輸入。當(dāng)訪問外部程序和數(shù)據(jù)存儲(chǔ)器時(shí),P0口也被作為低8位地址/數(shù)據(jù)復(fù)用。在這種模式P0 具有內(nèi)部上拉電阻。在flash編程時(shí),P0口也用來接收指令字節(jié);在程序校驗(yàn)時(shí),輸出指令字節(jié)。程序校驗(yàn)
22、時(shí),需要外部上拉電阻。 </p><p> P1口:P1口是一個(gè)具有內(nèi)部上拉電阻的8 位雙向I/O口,P1 輸出緩沖器能驅(qū)動(dòng)4個(gè)TTL 邏輯電平。對(duì)P1 端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL )。 </p><p> 此外,P1.0 和P1.2 分別作定時(shí)器/計(jì)數(shù)器2 的外部計(jì)數(shù)輸入(P
23、1.0/T2)和時(shí)器/計(jì)數(shù)器2 的觸發(fā)輸入 (P1.1/T2EX)。在flash 編程和校驗(yàn)時(shí),P1口接收低8 位地址字節(jié)。</p><p> P2口:P2口是一個(gè)具有內(nèi)部上拉電阻的8 位雙向I/O口,P2 輸出緩沖器能驅(qū)動(dòng)4 個(gè)TTL 邏輯電平。對(duì)P2 端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL )。在訪問外部程序存儲(chǔ)
24、器或用16 位地址讀取外部數(shù)據(jù)存儲(chǔ)器(例如執(zhí)行MOVX @DPTR)時(shí),P2口送出高八位地址。在這種應(yīng)用中,P2 口使用很強(qiáng)的內(nèi)部上拉發(fā)送1。在使用8 位地址(如MOVX @RI )訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),P2口輸出P2 鎖存器的內(nèi)容。在flash 編程和校驗(yàn)時(shí),P2口也接收高8 位地址字節(jié)和一些控制信號(hào)。 </p><p> P3口:P3口是一個(gè)具有內(nèi)部上拉電阻的8 位雙向I/O口,P2輸出緩沖器能驅(qū)動(dòng)4個(gè)T
25、TL 邏輯電平。對(duì)P3端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL )。 </p><p> P3口亦作為AT89S52 特殊功能(第二功能)使用在flash 編程和校驗(yàn)時(shí),P3口也接收一些控制信號(hào)。</p><p> 圖2-2 AT89S52引腳圖</p><p> 2
26、.2.2 單片機(jī)主控制模塊介紹</p><p> AT89S52單片機(jī)為40引腳雙列直插芯片,有四個(gè)I/O口P0、P1、P2、P3,MCS-51單片機(jī)共有4個(gè)8位的I/O口(P0、P1、P2、P3),每一條I/O線都能獨(dú)立地作輸出或輸入。</p><p> 單片機(jī)的最小系統(tǒng)如圖2-3所示,18引腳和19引腳接時(shí)鐘電路,XTAL1接外部晶振和微調(diào)電容的一端,在片內(nèi)它是振蕩器倒相放大器的輸
27、入,XTAL2接外部晶振和微調(diào)電容的另一端,在片內(nèi)它是振蕩器倒相放大器的輸出。第9引腳為復(fù)位輸入端,接上電容,電阻及開關(guān)后夠上電復(fù)位電路,20引腳為接地端,40引腳為電源端。 </p><p> 圖2-3 主控模塊電路 </p><p> 2.3 時(shí)鐘模塊設(shè)計(jì)</p><p> 2.3.1 DS1302的性能特性</p><p>
28、圖2-4示出DS1302的引腳圖,X1 X2 32.768KHz 晶振管腳,GND 地,RST 復(fù)位腳,I/O 數(shù)據(jù)輸入/輸出引腳,SCLK 串行時(shí)鐘,Vcc1,Vcc2 電源供電管腳。</p><p> 圖2-4 DS1302的引腳圖</p><p> 2.3.2 DS1302數(shù)據(jù)操作原理</p><p> (1) 時(shí)鐘芯片DS1302的工作原理</p
29、><p> DS1302在每次進(jìn)行讀、寫程序前都必須初始化,先把SCLK端置 “0”,接著把RST端置“1”,最后才給予SCLK脈沖;讀/寫時(shí)序如下圖3所示。表1為DS1302的控制字,此控制字的位7必須置1,若為0則不能把對(duì)DS1302進(jìn)行讀寫數(shù)據(jù)。對(duì)于位6,若對(duì)程序進(jìn)行讀/寫時(shí)RAM=1,對(duì)時(shí)間進(jìn)行讀/寫時(shí),CK=0。位1至位5指操作單元的地址。位0是讀/寫操作位,進(jìn)行讀操作時(shí),該位為1;該位為0則表示進(jìn)行的是
30、寫操作。控制字節(jié)總是從最低位開始輸入/輸出的。表6為DS1302的日歷、時(shí)間寄存器內(nèi)容:“CH”是時(shí)鐘暫停標(biāo)志位,當(dāng)該位為1時(shí),時(shí)鐘振蕩器停止,DS1302處于低功耗狀態(tài);當(dāng)該位為0時(shí),時(shí)鐘開始運(yùn)行。“WP”是寫保護(hù)位,在任何的對(duì)時(shí)鐘和RAM的寫操作之前,WP必須為0。當(dāng)“WP”為1時(shí),寫保護(hù)位防止對(duì)任一寄存器的寫操作。</p><p> (2) DS1302的控制字節(jié)</p><p>
31、 DS1302的控制字如表2.1所示。控制字節(jié)的高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫入DS1302中,位6如果0,則表示存取日歷時(shí)鐘數(shù)據(jù),為1表示存取RAM數(shù)據(jù);位5至位1指示操作單元的地址;最低有效位(位0)如為0表示要進(jìn)行寫操作,為1表示進(jìn)行讀操作,控制字節(jié)總是從最低位開始輸出。</p><p> 表2.1 DS1302的控制字格式</p><p> RAM
32、 RD</p><p> 1 A4 A3 A2 A1 A0 </p><p> / CK /WR</p><p> (3) 數(shù)據(jù)輸入輸出(I
33、/O)</p><p> 在控制指令字輸入后的下一個(gè)SCLK時(shí)鐘的上升沿時(shí),數(shù)據(jù)被寫入DS1302,數(shù)據(jù)輸入從低位即位0開始。同樣,在緊跟8位的控制指令字后的下一個(gè)SCLK脈沖的下降沿讀出DS1302的數(shù)據(jù),讀出數(shù)據(jù)時(shí)從低位0位到高位7,如圖2-5。</p><p> 圖2-5 DS1302單字節(jié)讀/寫時(shí)序圖</p><p> (4) DS1302的寄存器&
34、lt;/p><p> DS1302有12個(gè)寄存器,其中有7個(gè)寄存器與日歷、時(shí)鐘相關(guān),存放的數(shù)據(jù)位為BCD碼形式,其日歷、時(shí)間寄存器及其控制字見表2.2。</p><p> 表2.2 DS1302的日歷、時(shí)間寄存器</p><p> 此外,DS1302 還有年份寄存器、控制寄存器、充電寄存器、時(shí)鐘突發(fā)寄存器及與RAM相關(guān)的寄存器等。時(shí)鐘突發(fā)寄存器可一次性順序讀寫除充
35、電寄存器外的所有寄存器內(nèi)容。 DS1302與RAM相關(guān)的寄存器分為兩類:一類是單個(gè)RAM單元,共31個(gè),每個(gè)單元組態(tài)為一個(gè)8位的字節(jié),其命令控制字為C0H~FDH,其中奇數(shù)為讀操作,偶數(shù)為寫操作;另一類為突發(fā)方式下的RAM寄存器,此方式下可一次性讀寫所有的RAM的31個(gè)字節(jié),命令控制字為FEH(寫)、FFH(讀)。</p><p> 2.3.3 DS1302與AT89S52接口電路設(shè)計(jì)</p>&
36、lt;p> 圖2-6示出DS1302與AT89S52接口電路,其中Vcc1為后備電源,Vcc2為主電源。在主電源關(guān)閉的情況下,也能保持時(shí)鐘的連續(xù)運(yùn)行。DS1302由Vcc1或Vcc2兩者中的較大者供電。當(dāng)Vcc2大于Vcc1+0.2V時(shí),Vcc2給DS1302供電。當(dāng)Vcc2小于Vcc1時(shí),DS1302由Vcc1供電。X1和X2是振蕩源,外接32.768KHz晶振。RST是復(fù)位/片選線,通過把RST輸入驅(qū)動(dòng)置高電平來啟動(dòng)所有的數(shù)
37、據(jù)傳送。RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當(dāng)RST為高電平時(shí),所有的數(shù)據(jù)傳送被初始化,允許對(duì)DS1302進(jìn)行操作。如果在傳送過程中RSTS置為低電平,則會(huì)終止此次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。上電動(dòng)行時(shí),在Vcc大于等于2.5V之前,RST必須保持低電平。中有在SCLK 為低電平時(shí),才能將RST置為高電平,I/O為串行數(shù)據(jù)輸入端(雙向)。
38、SCLK始終是輸入端。</p><p> 圖2-6 DS1302與AT89S52接口電路</p><p> 2.4顯示模塊的設(shè)計(jì)</p><p> 本設(shè)計(jì)顯示模塊采用LCD液晶顯示,由LCM1602具體實(shí)現(xiàn) 。</p><p> 2.4.1 LCM1602介紹</p><p> LCM1602 液晶模塊采用H
39、D44780 控制器。HD44780 具有簡(jiǎn)單而功能較強(qiáng)的指令集、可以實(shí)現(xiàn)字符移動(dòng)、閃爍等功能。LCM1602 與單片機(jī)MCU (Microcontroller Unit )通訊可采 用 8 位或者4 位并行傳輸兩種方式。 </p><p> 表2.3 LCM1602 引腳說明</p><p> HD44780 控制器由兩個(gè) 8 位寄存器、指令
40、寄存器(IR)和數(shù)據(jù)寄存器(DR )、忙標(biāo)志(BF)、顯示數(shù)據(jù)RAM(DDRAM )、字符發(fā)生器ROM(CGROM)、字符發(fā)生器 RAM(CGRAM)、地址計(jì)數(shù)器(AC )。IR 用于寄存指令碼,只能寫入不能讀 出;DR 用于寄存數(shù)據(jù),數(shù)據(jù)由內(nèi)部操作自動(dòng)寫入DDRAM 和CGRAM,或者暫存從DDRAM 和 CGRAM 讀出的數(shù)據(jù)。BF 為 1 時(shí),液晶模塊處于內(nèi)部處理模式,不響應(yīng)外部操作指令 和接受數(shù)據(jù)。DDRAM 用來存儲(chǔ)顯示的字符
41、,能存儲(chǔ) 80 個(gè)字符碼。CGROM 由8 位字符碼 生成 5*7 點(diǎn)陣字符 160 種和 5*10 點(diǎn)陣字符32 種,8 位字符編碼和字符的對(duì)應(yīng)關(guān)系,CGRAM 是為用戶編寫特殊字符留用的,它的容量?jī)H64 字節(jié)。 可以自定義8個(gè)5*7 點(diǎn)陣字符或者4 個(gè) 5*10 點(diǎn)陣字符。AC 可以存儲(chǔ)DDRAM 和CGRAM 的地址,如果地址碼隨指令寫入IR,則IR自動(dòng)把地址碼裝入AC,同時(shí)選擇DDRAM 或 者CGRAM 單元。LCM1602
42、 液晶模塊的引腳功能見表2.3。</p><p> 2.4.2 LCM1602與單片機(jī)的接口</p><p> 如圖2-7為L(zhǎng)CD顯示模塊,和最小系統(tǒng)上的連線一樣,無需修改。</p><p> 圖2-7 LCD顯示連接圖</p><p> 第三章 系統(tǒng)的軟件設(shè)計(jì)</p><p><b> 3.1程
43、序總體描述</b></p><p> 本程序主要實(shí)現(xiàn)對(duì)年、月、日、周日、時(shí)、分、秒進(jìn)行計(jì)時(shí),具有時(shí)間校準(zhǔn)等功能,具體包括主程序部分,LCD液晶顯示部分,DS1302時(shí)鐘部分,鍵盤部分,程序見附錄2,圖3-1為主程序流程框圖。</p><p> 圖3-1 主程序流程圖</p><p><b> 3.2模塊程序描述</b><
44、/p><p> 本程序具體包括主程序部分,LCD液晶顯示部分,DS1302時(shí)鐘部分,鍵盤部分。程序通過DS1302時(shí)鐘芯片的時(shí)鐘計(jì)數(shù)功能實(shí)現(xiàn)對(duì)秒、分鐘、小時(shí)、月、星期、年的計(jì)數(shù),通過LCM1602來實(shí)現(xiàn)顯示,通過按鍵的方式來實(shí)現(xiàn)的時(shí)間的修改,鍵盤子程序框圖如圖3-2所示。</p><p> 圖3-2 鍵盤子程序流程圖</p><p> 第四章 Proteus仿真
45、</p><p> 4.1 Proteus工作界面</p><p> Proteus ISIS的工作界面是一種標(biāo)準(zhǔn)的Windows界面通過左側(cè)工具欄中的P(從庫(kù)中選擇元件命令)命令,在Pick Devices 左側(cè)窗口中選擇所需元件的關(guān)鍵字,然后放置元件并調(diào)整方向和位置以及參數(shù)設(shè)置,最后進(jìn)行連線,如圖4-1所示。</p><p> 圖4-1 Proteus連接
46、圖</p><p> 4.2 Proteus功能仿真</p><p> 上電后LCD顯示如圖4-2所示。</p><p> 圖4-2 LCD顯示圖</p><p> 通過按鍵分別設(shè)定秒鐘、分鐘、時(shí)鐘、星期、日期、月份、年份、最后按確定鍵。</p><p> 按鍵功能自上而下依次為:選擇修改項(xiàng)鍵、增大鍵、減小鍵
47、、確定鍵。</p><p><b> 圖4-3 按鍵</b></p><p> 第五章 測(cè)試與結(jié)果分析</p><p><b> 5.1測(cè)試儀器</b></p><p><b> 表5.1 測(cè)試儀器</b></p><p><b>
48、 5.2硬件測(cè)試</b></p><p> 單片機(jī)應(yīng)用系統(tǒng)的硬件調(diào)試和軟件調(diào)試是分不開的,許多硬件故障在軟件調(diào)試時(shí)才能發(fā)現(xiàn),但通常要先排除系統(tǒng)中明顯的硬件故障。調(diào)試工作可以分為四步:</p><p> 線路檢查:根據(jù)硬件邏輯設(shè)計(jì)圖,仔細(xì)檢查樣機(jī)線路是否連接正確,并核對(duì)元器件的型號(hào)、規(guī)格和安裝是否符合要求,必要時(shí)可用萬用表檢測(cè)線路通斷情況。</p><p&
49、gt; 電源調(diào)試:樣機(jī)的第一次通電測(cè)試很重要,若樣機(jī)中存在電源故障,則加電后將造成器件損壞。調(diào)試的方法有兩種:一種是斷開樣機(jī)穩(wěn)壓電源的輸出端,檢查空載時(shí)電源工作情況;另一種是拔下樣機(jī)上的主要集成芯片,檢查電源的負(fù)載能力(用假負(fù)載)。確保電源無故障并性能符合設(shè)計(jì)要求。</p><p> 通電檢查:在確保電源良好前提下,接通電源。最好在電源與其余電路之間串接一個(gè)電流表。若接通后電流很大,必須立即切斷電源。電源大得
50、超出正常范圍,說明電路中有短路或故障。通電檢查的主要目的是看系統(tǒng)是否存在短路或由元器件損壞、裝配錯(cuò)誤引起的電流異常。</p><p> 檢查芯片的邏輯關(guān)系是否出錯(cuò):加電后檢查各芯片插座上相關(guān)引腳的電位,仔細(xì)測(cè)量相應(yīng)的輸入輸出電平是否正常。單片機(jī)系統(tǒng)大都是數(shù)字邏輯電路,使用電平檢查法可首先查出邏輯設(shè)計(jì)是否正確,選用器件和連接關(guān)系是否符合要求等。</p><p> 在本成電子萬年歷的設(shè)計(jì)調(diào)
51、試中遇到了很多的問題?;叵脒@些問題只要認(rèn)真多思考都是可以避免的,以下為主要的問題:</p><p> ?。?)LCD液晶顯示屏顯示部分已經(jīng)連在最小系統(tǒng)上,節(jié)省了不少時(shí)間和精力。</p><p> ?。?)對(duì)萬年歷修改時(shí)間或日期時(shí),有時(shí)LCD液晶顯示屏被屏蔽掉,造成不亮現(xiàn)象。</p><p> 解決:根據(jù)儀器的測(cè)試,發(fā)現(xiàn)電路的驅(qū)動(dòng)能力不足,最后在DS1302時(shí)鐘芯片
52、的/CS、SCLK、RET端接入5.1K的上拉電阻后,電路的驅(qū)動(dòng)能力才能滿足,即可解決不亮現(xiàn)象。</p><p><b> 5.3軟件測(cè)試</b></p><p> 本設(shè)計(jì)是在Proteus軟件和keil C軟件相結(jié)合調(diào)試的,完全用仿真軟件在PC機(jī)上對(duì)目標(biāo)電路原理圖和程序進(jìn)行檢測(cè)和調(diào)試。調(diào)試過程中單片機(jī)相應(yīng)輸入端由通用鍵盤和鼠標(biāo)設(shè)定,運(yùn)行狀態(tài)、各寄存器狀態(tài)、端口狀
53、態(tài)等都可以在指定的窗口區(qū)域顯示出來,以確定程序運(yùn)行有無錯(cuò)誤。</p><p> 目標(biāo)程序糾錯(cuò):該階段工作通常在目標(biāo)程序編輯時(shí)就完成。一般來說,仿真軟件能為用戶輸入的程序指令糾錯(cuò),包括書寫格式、標(biāo)號(hào)未定義或多重定義、轉(zhuǎn)移地址溢出等錯(cuò)誤。</p><p> 整體程序調(diào)試:即把各子程序整體連起來進(jìn)入到綜合電路調(diào)試,看是否能實(shí)現(xiàn)預(yù)計(jì)的功能顯示。在這階段若發(fā)生故障,可以考慮各子程序在運(yùn)行時(shí)是否破
54、壞現(xiàn)場(chǎng),數(shù)據(jù)緩沖單元是否發(fā)生沖突,標(biāo)志位的建立和清除在設(shè)計(jì)上是否失誤,堆棧是否溢出,輸入輸出狀態(tài)是否正常等。</p><p> 最后經(jīng)過多次的模塊子程序的修改,一步一步的完成,最終解決了軟件。在軟件的調(diào)試過程中遇到的主要問題是:</p><p> 燒入程序后,LCD液晶顯示屏顯示亮度不好。</p><p> 解決:一遍旋轉(zhuǎn)10K歐的滑動(dòng)變阻器,一遍觀看LCD顯
55、示屏,知道看到合適的亮度為止。</p><p> 5.4 測(cè)試結(jié)果分析與結(jié)論</p><p> 5.4.1 測(cè)試結(jié)果分析</p><p> 在測(cè)試中遇到LCD液晶顯示屏為不顯示時(shí),首先使用試測(cè)儀對(duì)電路進(jìn)行測(cè)試,觀察是否存在漏焊,虛焊,或者元件損壞,滑動(dòng)變阻器器沒有調(diào)好:查看燒寫的程序是否正確無誤,對(duì)程序進(jìn)行認(rèn)真修改。</p><p>
56、 5.4.2 測(cè)試結(jié)論</p><p> 經(jīng)過多次的反復(fù)測(cè)試與分析,可以對(duì)電路的原理及功能更加熟悉,同時(shí)提高了設(shè)計(jì)能力與及對(duì)電路的分析能力。同時(shí)在軟件的編程方面得到更到的提高,對(duì)編程能力得到加強(qiáng),同時(shí)對(duì)所學(xué)的知識(shí)得到很大的提高與鞏固。</p><p> 第六章 總結(jié)與展望</p><p> 經(jīng)過將近三周的單片機(jī)課程設(shè)計(jì),終于完成了我的電子日歷的設(shè)計(jì),從方案的
57、搜索、選擇、確定到最終實(shí)現(xiàn)功能真的是非常的高興,但在高興之余還要深思總結(jié)。</p><p> 在本次設(shè)計(jì)的過程中,我發(fā)現(xiàn)很多的問題,,一開始的時(shí)候不能確定到底用什么來實(shí)現(xiàn)時(shí)鐘的功能,經(jīng)過分析終于得出結(jié)論。再設(shè)計(jì)方案以及制作的過程中一定要保持清晰的思路,制作時(shí)更要小心謹(jǐn)慎。寫程序一定要按照先輪廓后內(nèi)容的順序來寫,不能馬虎,調(diào)試時(shí)要戒驕戒躁,仔細(xì)分析。</p><p> 從這次的課程設(shè)計(jì)中
58、,我真真正正的意識(shí)到,在以后的學(xué)習(xí)中,要理論聯(lián)系實(shí)際,把我們所學(xué)的理論知識(shí)用到實(shí)際當(dāng)中,學(xué)習(xí)單機(jī)片機(jī)更是如此,程序只有在經(jīng)常的寫與讀的過程中才能提高,這就是我在這次課程設(shè)計(jì)中的最大收獲。</p><p><b> 致 謝</b></p><p> 在論文完成之際,我首先向關(guān)心幫助和指導(dǎo)我的指導(dǎo)老師馮成龍老師表示衷心的感謝并致以崇高的敬意!</p>
59、<p> 在論文工作中,遇到了很多的困難,一直得到馮成龍老師的親切關(guān)懷和悉心指導(dǎo),使我克服了這些。馮成龍老師以其淵博的學(xué)識(shí)、嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度、求實(shí)的工作作風(fēng)和他敏捷的思維給我留下了深刻的印象,我將終生難忘。再一次向他表示衷心的感謝,感謝他為學(xué)生營(yíng)造的濃郁學(xué)術(shù)氛圍,以及學(xué)習(xí)、生活上的無私幫助! 值此論文完成之際,謹(jǐn)向馮成龍老師致以最崇高的謝意!</p><p> 在學(xué)校的學(xué)習(xí)生活即將結(jié)束,回顧兩年多來的
60、學(xué)習(xí)經(jīng)歷,面對(duì)現(xiàn)在的收獲,我感到無限欣慰。為此,我向熱心幫助過我的所有老師和同學(xué)表示由衷的感謝!</p><p> 特別感謝我的師兄、師姐以及班主任對(duì)我的學(xué)習(xí)和生活所提供的大力支持和關(guān)心!還要感謝一直關(guān)心幫助我成長(zhǎng)的室友黃夢(mèng)寧、李琳娜、趙潔、王佩!</p><p> 在我即將完成學(xué)業(yè)之際,我深深地感謝我的家人給予我的全力支持!</p><p> 最后,衷心地感
61、謝在百忙之中評(píng)閱論文和參加答辯的各位專家、教授!</p><p><b> 參考文獻(xiàn)</b></p><p> 1. 陳景初.單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)與實(shí)踐[M].北京航空航天大學(xué)出版社,2006</p><p> 2. 徐愛鈞.彭秀華.單片機(jī)高級(jí)語言編程與uVision2應(yīng)用實(shí)踐.電子工業(yè)出版社,2004</p><p&g
62、t; 3.劉勇.數(shù)字電路.電子工業(yè)出版社,2004</p><p> 4.王法能.單片機(jī)原理及應(yīng)用.科學(xué)出版社, 2004</p><p> 5. 何立民.MCS-51系列單片機(jī)應(yīng)用系列設(shè)計(jì)[M].北京航空航天大學(xué)出版社,2006</p><p> 6. 李廣弟,朱月秀,王秀山.單片機(jī)基礎(chǔ)[M].北京航空航天大學(xué)出版社,2004</p><
63、;p> 7. 馬家辰.MCS-51單片機(jī)原理與接口技術(shù)[M].哈爾濱工業(yè)大學(xué)出版社,2005</p><p> 8. 陳正振.電子電路設(shè)計(jì)與制作.廣西交通職業(yè)技術(shù)學(xué)院信息工程系,2007</p><p> 9. 楊子文.單片機(jī)原理及應(yīng)用.西安電子科技大學(xué)出版社,2006</p><p> 10.何立民.MCS-51系列單片機(jī)應(yīng)用系列設(shè)計(jì)[M].航空航天
64、大學(xué)出版社,2004</p><p><b> 附錄1 系統(tǒng)電路圖</b></p><p><b> 附錄2 系統(tǒng)程序</b></p><p> #include <REG51.H></p><p> #include <intrins.h></p>&
65、lt;p> //#include "LCD1602.h"</p><p> //#include "DS1302.h"</p><p> #define uint unsigned int</p><p> #define uchar unsigned char</p><p> sbi
66、t DS1302_CLK = P1^7; //實(shí)時(shí)時(shí)鐘時(shí)鐘線引腳 </p><p> sbit DS1302_IO = P1^6; //實(shí)時(shí)時(shí)鐘數(shù)據(jù)線引腳 </p><p> sbit DS1302_RST = P1^5; //實(shí)時(shí)時(shí)鐘復(fù)位線引腳</p><p> sbit
67、 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; //秒,分,時(shí)到日,月,年位閃的計(jì)數(shù)</p><p> sbit Set = P2^0; //模
68、式切換鍵</p><p> sbit Up = P2^1; //加法按鈕</p><p> sbit Down = P2^2; //減法按鈕</p><p> sbit out = P2^3; //立刻跳出調(diào)整模式按鈕</p><p> char done,count,temp,flag,up_fl
69、ag,down_flag;</p><p> uchar TempBuffer[5],week_value[2];</p><p> void show_time(); //液晶顯示程序</p><p> /***********1602液晶顯示部分子程序****************/</p><p> //Port Defi
70、nitions**********************************************</p><p> sbit LcdRs= P2^5;</p><p> sbit LcdRw= P2^6;</p><p> sbit LcdEn = P2^7;</p><p> sfr DBPort = 0x
71、80;//P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.數(shù)據(jù)端口</p><p><b> //內(nèi)部等待函數(shù)</b></p><p> ******************************************************************</p><p> unsigned char
72、LCD_Wait(void)</p><p> {LcdRs=0;LcdRw=1;_nop_();LcdEn=1;_nop_();LcdEn=0;return DBPort;}</p><p> //向LCD寫入命令或數(shù)據(jù)</p><p> ********************************************************
73、****</p><p> #define LCD_COMMAND0 // Command</p><p> #define LCD_DATA1 // Data</p><p> #define LCD_CLEAR_SCREEN0x01 // 清屏</p><p> #define LCD_
74、HOMING 0x02 // 光標(biāo)返回原點(diǎn)</p><p> void LCD_Write(bit style, unsigned char input)</p><p> {LcdEn=0;LcdRs=style;LcdRw=0;_nop_();DBPort=input;_nop_();//注意順序</p><p> LcdEn=1;
75、_nop_();//注意順序</p><p> LcdEn=0;_nop_();LCD_Wait();</p><p><b> }</b></p><p> //設(shè)置顯示模式***************************</p><p> #define LCD_SHOW0x04 /
76、/顯示開</p><p> #define LCD_HIDE0x00 //顯示關(guān) </p><p> #define LCD_CURSOR0x02 //顯示光標(biāo)</p><p> #define LCD_NO_CURSOR0x00 //無光標(biāo) </p><p> #define LCD_F
77、LASH0x01 //光標(biāo)閃動(dòng)</p><p> #define LCD_NO_FLASH0x00 //光標(biāo)不閃動(dòng)</p><p> void LCD_SetDisplay(unsigned char DisplayMode)</p><p> {LCD_Write(LCD_COMMAND, 0x08|DisplayMode);}<
78、;/p><p> //設(shè)置輸入模式*****************************************</p><p> #define LCD_AC_UP0x02</p><p> #define LCD_AC_DOWN0x00 // default</p><p> #define LCD_MOVE
79、0x01 // 畫面可平移</p><p> #define LCD_NO_MOVE0x00 //default</p><p> void LCD_SetInput(unsigned char InputMode)</p><p> {LCD_Write(LCD_COMMAND, 0x04|InputMode);}</p
80、><p> //初始化LCD**********************************************</p><p> void LCD_Initial()</p><p><b> {LcdEn=0;</b></p><p> LCD_Write(LCD_COMMAND,0x38);
81、 //8位數(shù)據(jù)端口,2行顯示,5*7點(diǎn)陣</p><p> LCD_Write(LCD_COMMAND,0x38);</p><p> LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR); //開啟顯示, 無光標(biāo)</p><p> LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //
82、清屏</p><p> LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE); //AC遞增, 畫面不動(dòng)}</p><p> //液晶字符輸入的位置************************</p><p> void GotoXY(unsigned char x, unsigned char y)</p>&
83、lt;p> {if(y==0)LCD_Write(LCD_COMMAND,0x80|x);</p><p> if(y==1)LCD_Write(LCD_COMMAND,0x80|(x-0x40));}</p><p> //將字符輸出到液晶顯示</p><p> void Print(unsigned char *str)</p>&l
84、t;p> {while(*str!='\0')</p><p> {LCD_Write(LCD_DATA,*str);str++;}}</p><p> /***********DS1302時(shí)鐘部分子程序******************/</p><p> typedef struct __SYSTEMTIME__</p>
85、;<p><b> {</b></p><p> unsigned char Second;</p><p> unsigned char Minute;</p><p> unsigned char Hour;</p><p> unsigned char Week;</p>&l
86、t;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];<
87、/p><p> }SYSTEMTIME;//定義的時(shí)間類型</p><p> SYSTEMTIME CurrentTime;</p><p> #define AM(X)X</p><p> #define PM(X)(X+12) // 轉(zhuǎn)成24小時(shí)制</p><p> #def
88、ine DS1302_SECOND0x80 //時(shí)鐘芯片的寄存器位置,存放時(shí)間</p><p> #define DS1302_MINUTE0x82</p><p> #define DS1302_HOUR0x84 </p><p> #define DS1302_WEEK0x8A</p><p> #d
89、efine DS1302_DAY0x86</p><p> #define DS1302_MONTH0x88</p><p> #define DS1302_YEAR0x8C </p><p> void DS1302InputByte(unsigned char d) //實(shí)時(shí)時(shí)鐘寫入一字節(jié)(內(nèi)部函數(shù))</p><p>
90、 { unsigned char i;ACC = d; for(i=8; i>0; i--)</p><p> {DS1302_IO = ACC0; //相當(dāng)于匯編中的 RRC</p><p> DS1302_CLK = 1; DS1302_CLK = 0; ACC = ACC >> 1; } }</p><p> un
91、signed char DS1302OutputByte(void) //實(shí)時(shí)時(shí)鐘讀取一字節(jié)(內(nèi)部函數(shù))</p><p> { unsigned char i; for(i=8; i>0; i--)</p><p> { ACC = ACC >>1; //相當(dāng)于匯編中的 RRC </p><p> ACC7 = DS
92、1302_IO; DS1302_CLK = 1;DS1302_CLK = 0; } </p><p> return(ACC); }</p><p> void Write1302(unsigned char ucAddr, unsigned char ucDa)//ucAddr: DS1302地址, ucData: 要寫的數(shù)據(jù)</p><p> { DS1
93、302_RST = 0;</p><p> DS1302_CLK = 0;</p><p> DS1302_RST = 1;</p><p> DS1302InputByte(ucAddr); // 地址,命令 </p><p> DS1302InputByte(ucDa); // 寫1Byte數(shù)據(jù)<
94、/p><p> DS1302_CLK = 1;</p><p> DS1302_RST = 0;</p><p> } unsigned char Read1302(unsigned char ucAddr)//讀取DS1302某地址的數(shù)據(jù)</p><p> { unsigned char ucData;</p><
95、p> DS1302_RST = 0;</p><p> DS1302_CLK = 0;</p><p> DS1302_RST = 1;</p><p> DS1302InputByte(ucAddr|0x01); // 地址,命令 </p><p> ucData = DS1302OutputByte();
96、 // 讀1Byte數(shù)據(jù)</p><p> DS1302_CLK = 1;</p><p> DS1302_RST = 0;</p><p> return(ucData);}</p><p> void DS1302_GetTime(SYSTEMTIME *Time) //獲取時(shí)鐘芯片的時(shí)鐘數(shù)據(jù)到自定義的結(jié)構(gòu)型數(shù)組&l
97、t;/p><p> {unsigned char ReadValue;</p><p> ReadValue = Read1302(DS1302_SECOND);</p><p> Time->Second = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);</p><
98、p> ReadValue = Read1302(DS1302_MINUTE);</p><p> Time->Minute = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);</p><p> ReadValue = Read1302(DS1302_HOUR);</p><p>
99、 Time->Hour = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);</p><p> ReadValue = Read1302(DS1302_DAY);</p><p> Time->Day = ((ReadValue&0x70)>>4)*10 + (ReadValue&am
100、p;0x0F);</p><p> ReadValue = Read1302(DS1302_WEEK);</p><p> Time->Week = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);</p><p> ReadValue = Read1302(DS1302_MONTH)
101、;</p><p> Time->Month = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);</p><p> ReadValue = Read1302(DS1302_YEAR);</p><p> Time->Year = ((ReadValue&0x70)>
102、>4)*10 + (ReadValue&0x0F);}</p><p> void DateToStr(SYSTEMTIME *Time) </p><p> { if(hide_year<2) </p><p> { Time->DateString[0] = '2';&l
103、t;/p><p> Time->DateString[1] = '0'; </p><p> Time->DateString[2] = Time->Year/10 + '0';</p><p> Time->DateString[3] = Time->Year%10 + '0';}&
104、lt;/p><p> else{ Time->DateString[0] = ' '; Time->DateString[1] = ' '; </p><p> Time->DateString[2] = ' '; Time->DateString[3] = ' ';}</p>&l
105、t;p> Time->DateString[4] = '/';</p><p> if(hide_month<2)</p><p> {Time->DateString[5] = Time->Month/10 + '0';</p><p> Time->DateString[6] = Tim
106、e->Month%10 + '0';}</p><p> else{ Time->DateString[5] = ' '; Time->DateString[6] = ' ';}</p><p> Time->DateString[7] = '/';</p><p> if
107、(hide_day<2)</p><p> {Time->DateString[8] = Time->Day/10 + '0';</p><p> Time->DateString[9] = Time->Day%10 + '0';}</p><p> else{Time->DateString
108、[8] = ' ';Time->DateString[9] = ' '; }</p><p> if(hide_week<2){</p><p> week_value[0] = Time->Week%10 + '0'; //星期的數(shù)據(jù)另外放到 week_value[]數(shù)組里,跟年,月,日的分開存放,因?yàn)榈纫幌?/p>
109、要在最后顯示}</p><p> else { week_value[0] = ' ';}</p><p> week_value[1] = '\0';</p><p> Time->DateString[10] = '\0'; //字符串末尾加 '\0' ,判斷結(jié)束字符}</p>
110、;<p> void TimeToStr(SYSTEMTIME *Time) //將時(shí),分,秒數(shù)據(jù)轉(zhuǎn)換成液晶顯示字符放到數(shù)組 TimeString[];</p><p> { if(hide_hour<2)</p><p> { Time->TimeString[0] = Time->Hour/10 + '0';</p>
111、;<p> Time->TimeString[1] = Time->Hour%10 + '0';}</p><p> else{ Time->TimeString[0] = ' ';Time->TimeString[1] = ' ';}</p><p> Time->TimeString[2]
112、 = ':';</p><p> if(hide_min<2){ Time->TimeString[3] = Time->Minute/10 + '0';</p><p> Time->TimeString[4] = Time->Minute%10 + '0';}</p><p>
113、else {Time->TimeString[3] = ' ';Time->TimeString[4] = ' '; }</p><p> Time->TimeString[5] = ':';</p><p> if(hide_sec<2)</p><p> {Time->TimeS
114、tring[6] = Time->Second/10 + '0';</p><p> Time->TimeString[7] = Time->Second%10 + '0';}</p><p> else{Time->TimeString[6] = ' ';Time->TimeString[7] = '
115、; '; }</p><p> Time->DateString[8] = '\0';}</p><p> void Initial_DS1302(void) //時(shí)鐘芯片初始化</p><p> { unsigned char Second=Read1302(DS1302_SECOND);</p><
116、p> if(Second&0x80) //判斷時(shí)鐘芯片是否關(guān)閉 </p><p> {Write1302(0x8e,0x00); //寫入允許</p><p> Write1302(0x8c,0x07); 下寫入初始化時(shí)間Write1302(0x88,0x07);Write1302(0x86,0x25);</p><p> W
117、rite1302(0x8a,0x07);Write1302(0x84,0x23);Write1302(0x82,0x59);</p><p> Write1302(0x80,0x55);Write1302(0x8e,0x80); //禁止寫入}}</p><p> void Delay1ms(unsigned int count)</p><p> {unsi
118、gned int i,j;for(i=0;i<count;i++)for(j=0;j<120;j++);}</p><p><b> /*延時(shí)子程序*/</b></p><p> void mdelay(uint delay)</p><p> {uint i;for(;delay>0;delay--){for(i=0
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)(論文)-電子日歷的制作51單片機(jī)的應(yīng)用
- 單片機(jī)畢業(yè)設(shè)計(jì)--基于51單片機(jī)的數(shù)碼日歷鐘的設(shè)計(jì)與制作
- 單片機(jī)畢業(yè)設(shè)計(jì)---基于51系列的單片機(jī)日歷和時(shí)鐘顯示設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)論文 基于單片機(jī)的電子日歷設(shè)計(jì)
- 單片機(jī)畢業(yè)設(shè)計(jì)---基于51系列的單片機(jī)進(jìn)行的實(shí)時(shí)日歷和時(shí)鐘顯示設(shè)計(jì)
- 單片機(jī)畢業(yè)設(shè)計(jì)--基于51系列的單片機(jī)進(jìn)行的實(shí)時(shí)日歷和時(shí)鐘顯示設(shè)計(jì)
- 單片機(jī)電子日歷畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)(論文)基于51單片機(jī)的電子時(shí)鐘設(shè)計(jì)
- 基于5單片機(jī)的電子日歷設(shè)計(jì)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)(2) 單片機(jī)電子日歷
- 畢業(yè)設(shè)計(jì)-基于51系列的單片機(jī)進(jìn)行的實(shí)時(shí)日歷和時(shí)鐘顯示設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)論文-基于51單片機(jī)的數(shù)字電子鐘設(shè)計(jì)
- 單片機(jī)電子日歷畢業(yè)設(shè)計(jì)2
- 單片機(jī)畢業(yè)設(shè)計(jì)--基于單片機(jī)的電子時(shí)鐘
- 電子溫度計(jì)臺(tái)歷畢業(yè)設(shè)計(jì)--基于51單片機(jī)
- 畢業(yè)設(shè)計(jì)---基于51系列的單片機(jī)進(jìn)行的實(shí)時(shí)日歷和時(shí)鐘顯示設(shè)計(jì)
- 基于51單片機(jī)的紅外遙控設(shè)計(jì)-畢業(yè)設(shè)計(jì)
- 基于51單片機(jī)數(shù)字時(shí)鐘 畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì) ---基于51單片機(jī)的紅外遙控設(shè)計(jì)
- 單片機(jī)畢業(yè)設(shè)計(jì)--用單片機(jī)設(shè)計(jì)日歷和時(shí)鐘
評(píng)論
0/150
提交評(píng)論