版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 畢 業(yè) 設(shè) 計(jì) 報(bào) 告</p><p> 題 目 電子日歷的設(shè)計(jì) </p><p> 姓 名 </p><p> 所在系別 </p><p> 專業(yè)名稱 </p&
2、gt;<p> 班級(jí)名稱 </p><p> 學(xué) 號(hào) </p><p> 指導(dǎo)教師 </p><p> 日 期 </p><p> 目
3、 錄</p><p><b> 一、緒論3</b></p><p> ?。ㄒ唬╇娮尤諝v發(fā)展趨勢(shì)3</p><p> (二)電子日歷簡(jiǎn)介3</p><p> 二、系統(tǒng)方案的設(shè)計(jì)4</p><p> (一)系統(tǒng)功能描述4</p><p>
4、 (二)系統(tǒng)設(shè)計(jì)思路4</p><p> ?。ㄈ┯布δ苊枋?</p><p><b> 三、詳細(xì)設(shè)計(jì)5</b></p><p> ?。ㄒ唬┲饕酒榻B5</p><p> ?。ǘ┯布娐吩O(shè)計(jì)10</p><p> 四、系統(tǒng)的軟件設(shè)計(jì)12</p><p&g
5、t; ?。ㄒ唬┲鞒绦蛄鞒?2</p><p> ?。ǘr(shí)間調(diào)整程序流程12</p><p> ?。ㄈ┤諝v時(shí)鐘的讀寫流程14</p><p> ?。ㄋ模╋@示子程序設(shè)計(jì)14</p><p><b> 五、結(jié)束語14</b></p><p><b> 謝辭16</b&
6、gt;</p><p><b> 參考文獻(xiàn)17</b></p><p><b> 附錄18</b></p><p><b> 電子日歷的設(shè)計(jì)</b></p><p> 摘要:本設(shè)計(jì)實(shí)現(xiàn)一個(gè)小巧的電子日歷鐘,利用DS1302讀取日期及時(shí)間并傳至89C51,使用LCD1
7、602液晶顯示屏作為輸出設(shè)備。電路設(shè)有四個(gè)按鍵,可以進(jìn)入設(shè)置菜單對(duì)電子日歷鐘進(jìn)行時(shí)間設(shè)置。電路主要利用MCS-51單片機(jī)控制時(shí)間的讀取,并顯示在液晶屏幕上面,可通過按鍵實(shí)現(xiàn)對(duì)時(shí)間的修改。</p><p> 文章詳細(xì)論述了電子日歷設(shè)計(jì)原理和使用的主要芯片,并對(duì)電路的設(shè)計(jì)方案、電路圖以及軟件程序部分進(jìn)行了分析。</p><p> 關(guān)鍵詞:電子日歷;芯片;單片機(jī);控制;</p>
8、<p> Electronic calendar design</p><p> Abstract:Electronic technology change rapidly today, electronic technology, digital display technology has effectively combined into one, for people to provide
9、 a more convenient, more fashionable function. Electronic calendar has become an indispensable decorations, and make a spurt of progress of electronic technology, electronic calendar with a simple, efficient, beautiful,
10、stable characteristics, has been widely applied. MCU control the time to read and displayed on the LCD screen, and can be</p><p> The design and implementation of a compact electronic calendar clock, you ca
11、n use the DS1302 to read the date and time and sent to 89C51, to display on LCD 1602 liquid crystal display screen. With four keys, can enter the settings menu on electronic calendar clock for time setting.</p>&l
12、t;p> Keywords: Electronic calendar, chip, control, automatic</p><p><b> 一、緒論</b></p><p> ?。ㄒ唬╇娮尤諝v發(fā)展趨勢(shì)</p><p> 隨著科技的快速發(fā)展,時(shí)間的流逝,至從觀太陽、擺鐘到現(xiàn)在電子鐘,人類不斷研究,不斷創(chuàng)新紀(jì)錄。美國DALLAS
13、公司推出的具有涓細(xì)電流充電能的低功耗實(shí)時(shí)時(shí)鐘電路DS1302。它可以對(duì)年、月、日、周日、時(shí)、分、秒進(jìn)行計(jì)時(shí),還具有閏年補(bǔ)償?shù)榷喾N功能,而且DS1302的使用壽命長,誤差小。對(duì)于數(shù)字電子萬年歷采用直觀的數(shù)字顯示,可以同時(shí)顯示年、月、日、周日、時(shí)、分、秒和溫度等信息,還具有時(shí)間校準(zhǔn)等功能。該電路采用AT89C52單片機(jī)作為核心,功耗小,電壓可選用5V電壓作為工作電壓供電。 綜上所述此萬年歷具有讀取方便、顯示直觀、功能多樣、電路簡(jiǎn)潔、成本低廉
14、等諸多優(yōu)點(diǎn),符合電子儀器儀表的發(fā)展趨勢(shì),具有廣闊的市場(chǎng)前景。本設(shè)計(jì)是基于51系列的單片機(jī)進(jìn)行的電子萬年歷設(shè)計(jì),可以顯示年月日時(shí)分秒及周信息,具有可調(diào)整日期和時(shí)間功能。在設(shè)計(jì)的同時(shí)對(duì)單片機(jī)的理論基礎(chǔ)和外圍擴(kuò)展知識(shí)進(jìn)行了比較全面準(zhǔn)備。在硬件與軟件設(shè)計(jì)時(shí),沒有良好的基礎(chǔ)知識(shí)和實(shí)踐經(jīng)驗(yàn)會(huì)受到很大限制,每項(xiàng)功能實(shí)現(xiàn)時(shí)需要那種硬件,程序該如何編寫,算法如何實(shí)現(xiàn)等,沒有一定的基礎(chǔ)就不可能很好的實(shí)現(xiàn)。</p><p><b
15、> ?。ǘ╇娮尤諝v簡(jiǎn)介</b></p><p> 1、開發(fā)的目的和意義</p><p> 目的:學(xué)習(xí)單片機(jī)并口的使用方法,學(xué)習(xí)延時(shí)子程序的編寫和使用,學(xué)習(xí)集成開發(fā)環(huán)境的安裝和使用。</p><p> 意義:當(dāng)今時(shí)代是一個(gè)新技術(shù)層出不窮的時(shí)代,在電子領(lǐng)域尤其是自動(dòng)化智能控制領(lǐng)域,傳統(tǒng)的分立元件或數(shù)字邏輯電路構(gòu)成的控制系統(tǒng),正以前所未見的速度被
16、單片機(jī)智能控制系統(tǒng)所取代。單片機(jī)具有體積孝功能強(qiáng)、成本低、應(yīng)用面廣等優(yōu)點(diǎn),可以說,智能控制與自動(dòng)控制的核心就是單片機(jī)。目前,一個(gè)學(xué)習(xí)與應(yīng)用單片機(jī)的高潮正在工廠、學(xué)校及企事業(yè)單位大規(guī)模地興起。</p><p> 2、 電子日歷的優(yōu)點(diǎn)</p><p> (1)簡(jiǎn)單好用、美觀、體積小、實(shí)用。</p><p> ?。?)用電量少、電壓低,節(jié)能、環(huán)保、創(chuàng)新。</p&
17、gt;<p> 89C51通過執(zhí)行片外程序存儲(chǔ)器2764中的程序來控制P0口所接的燈。P0口有地址線/數(shù)據(jù)線雙用功能,可以做分時(shí)復(fù)用。單片機(jī)擴(kuò)展片外程序存儲(chǔ)器就是利用一個(gè)8D地址鎖存器74373來對(duì)P0口送出的地址進(jìn)行鎖存然后再取數(shù),并由Q0~Q7口傳到P0口,最后由單片機(jī)的寫端口來控制寫的數(shù)據(jù)(既接燈的兩個(gè)74LS373)。</p><p> 3、 電子日歷的特點(diǎn)</p><
18、;p> ?。?)突顯,可以良好清晰的顯示時(shí)間信息。</p><p> ?。?)數(shù)碼管作為一種主動(dòng)顯示器件,亮度高、價(jià)格便宜等,顯示清晰。</p><p> ?。?)簡(jiǎn)單好用,美觀大方。</p><p> 4、本課題研究的主要內(nèi)容</p><p> 利用DS1302實(shí)時(shí)時(shí)鐘電路芯片來讀取系統(tǒng)中的日期以及時(shí)間信息,并利用P1.6端口將相
19、關(guān)信息傳送至AT89C51主芯片之中,利用P2端口使之顯示于LCD1602液晶顯示屏上,四個(gè)按鍵分別置于P1口的0、1、2、3端口可以對(duì)時(shí)間進(jìn)行控制修改。</p><p><b> 二、系統(tǒng)方案的設(shè)計(jì)</b></p><p><b> (一)系統(tǒng)功能描述</b></p><p> 設(shè)計(jì)原理:基于單片機(jī)的電子日歷設(shè)計(jì),
20、本方案采用單片機(jī)AT89C51作為控制單元,與實(shí)時(shí)時(shí)鐘芯片DS1302接口獲得時(shí)間/日歷數(shù)據(jù),通過LCD1602液晶顯示屏顯示時(shí)間和日歷。四個(gè)按鍵分別置于P1口的0、1、2、3端口,用以調(diào)整時(shí)間。</p><p> 相關(guān)說明:點(diǎn)擊“確定”按鍵可以進(jìn)入LCD屏上方顯示的主菜單,點(diǎn)擊“返回”按鍵可以退出菜單,在時(shí)間修改菜單中點(diǎn)擊“修改小時(shí)”按鍵可以修改時(shí)間中的小時(shí)數(shù),點(diǎn)擊“修改分鐘”按鍵可以修改時(shí)間中的分鐘數(shù)。&l
21、t;/p><p><b> ?。ǘ┫到y(tǒng)設(shè)計(jì)思路</b></p><p> 先進(jìn)行系統(tǒng)的整體規(guī)劃確定整個(gè)系統(tǒng)的功能,然后按照每個(gè)功能的具體要求,進(jìn)行各個(gè)模塊的實(shí)物設(shè)計(jì)并逐個(gè)調(diào)試,待全部通過后,進(jìn)行整個(gè)系統(tǒng)的聯(lián)調(diào),最終實(shí)現(xiàn)一個(gè)完整的系統(tǒng)。系統(tǒng)總體框圖包括:?jiǎn)纹瑱C(jī)最小系統(tǒng)電路、電源電路、LCD顯示電路和按鍵電路。</p><p> 整個(gè)系統(tǒng)的原理框
22、圖見圖1。</p><p><b> 圖1系統(tǒng)總體方案圖</b></p><p> 單片機(jī)AT89C51芯片的主要功能是:存儲(chǔ)程序,對(duì)存儲(chǔ)程序進(jìn)行相應(yīng)的處理從I/O口輸出。</p><p> 復(fù)位電路:在單片機(jī)上有一個(gè)復(fù)位引腳RST,在單片機(jī)外部用電容和電阻控制RST。</p><p> 控制電路:是用一個(gè)按鍵控
23、制日歷的省電和正常顯示。</p><p> 顯示電路:主要用于顯示日歷的結(jié)果。</p><p> 電源電路:采用+5V的直流電源供電。</p><p><b> ?。ㄈ┯布δ苊枋?lt;/b></p><p> 1、本設(shè)計(jì)采用DS1302實(shí)時(shí)時(shí)鐘芯片來進(jìn)行計(jì)時(shí),并將DS1302的數(shù)據(jù)輸入單片機(jī)進(jìn)行處理,送入LCD16
24、02液晶顯示屏進(jìn)行顯示。</p><p> 2、用四個(gè)電位按鍵來實(shí)現(xiàn)對(duì)電子時(shí)鐘的調(diào)試工作,當(dāng)按第一下總控鍵時(shí)進(jìn)入中斷程序,即時(shí)鐘的調(diào)整狀態(tài),有兩個(gè)電位按鍵分別來調(diào)整時(shí)鐘的加和減;第四個(gè)按鍵用來調(diào)整時(shí)分秒日月年,按一下調(diào)整秒,連按兩下調(diào)整分,按三下調(diào)整時(shí),四下調(diào)整日,五下調(diào)整月,六下調(diào)整星期,七下調(diào)整年,八下退出時(shí)間設(shè)置。</p><p> 3、用一個(gè)按鍵和其他部件組成的復(fù)位電路與芯片連
25、接來實(shí)現(xiàn)整個(gè)程序及硬件的重新復(fù)位功能。</p><p><b> 三、硬件設(shè)計(jì)</b></p><p><b> ?。ㄒ唬┲饕酒榻B</b></p><p> 1、AT89C51芯片</p><p> AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器(FPEROM--Falsh Pr
26、ogrammable and Erasable Read Only Memory)的低電壓,高性能CMOS8位微處理器,俗稱單片機(jī)。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的AT89C51是一種高效微控制器,為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。AT89C51的引腳圖見圖2。</p>&l
27、t;p> 圖2 AT89C51引腳圖</p><p> 各引腳的主要功能如下:</p><p> Pin40:電源腳,工作電壓為5V。</p><p> Pin20:接地端。</p><p> P0口:P0口為一個(gè)8位漏級(jí)開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時(shí),被定義為高阻輸入。P0能夠用于外部
28、程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。</p><p> P1口:P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。</p><p> P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門電流,當(dāng)P2口被寫“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和
29、控制信號(hào)。</p><p> P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。</p><p> RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。</p><p>
30、 ALE/PROG:當(dāng)訪問外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。</p><p> /PSEN:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/P
31、SEN信號(hào)將不出現(xiàn)。</p><p> /EA/VPP:/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。</p><p> XTAL1:振蕩器反相放大器的及內(nèi)部時(shí)鐘發(fā)生器的輸入端。 </p><p> XTAL2:振蕩器反相放大器的輸出</p><p&
32、gt; 2、實(shí)時(shí)時(shí)鐘芯片DS1302</p><p> DS1302由美國DALLAS公司推出的具有涓細(xì)電流充電能力的低功耗實(shí)時(shí)時(shí)鐘電路,它可以對(duì)年、月、日、周、日、時(shí)、分、秒進(jìn)行計(jì)時(shí),且具有閏年補(bǔ)償?shù)榷喾N功能。DS1302 存在時(shí)鐘精度不高,易受環(huán)境影響,出現(xiàn)時(shí)鐘混亂等缺點(diǎn)。DS1302可以用于數(shù)據(jù)記錄,特別是對(duì)某些具有特殊意義的數(shù)據(jù)點(diǎn)的記錄,能實(shí)現(xiàn)數(shù)據(jù)與出現(xiàn)該數(shù)據(jù)的時(shí)間同時(shí)記錄。</p>&
33、lt;p> (1)DS1302引腳功能</p><p> DS1302的引腳排列,其中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ù)位/片選
34、線,通過把RST輸入驅(qū)動(dòng)置高電平來啟動(dòng)所有的數(shù)據(jù)傳送。RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當(dāng)RST為高電平時(shí),所有的數(shù)據(jù)傳送被初始化,允許對(duì)DS1302進(jìn)行操作。如果在傳送過程中RST置為低電平,則會(huì)終止此次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。上電運(yùn)行時(shí),在Vcc≥2.5V之前,RST必須保持低電平。只有在SCLK為低電平時(shí),才能將RST置為高電
35、平。I/O為串行數(shù)據(jù)輸入輸出端(雙向)。SCLK始終是輸入端。DS1302引腳分配圖見圖3。</p><p> 圖3 DS1302引腳分配圖</p><p> (2) DS1302的控制字節(jié)</p><p> DS1302的控制字見下表1。控制字節(jié)的高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫入DS1302中,位6如果0,則表示存取日歷時(shí)鐘數(shù)據(jù),為
36、1表示存取RAM數(shù)據(jù);位5至位1指示操作單元的地址;最低有效位(位0)如為0表示要進(jìn)行寫操作,為1表示進(jìn)行讀操作,控制字節(jié)總是從最低位開始輸出。</p><p> 表1 DS1302的控制字格式</p><p> RAM RD</p><p> 1
37、A4 A3 A2 A1 A0 </p><p> / CK /WR </p><p> (3)DS1302的數(shù)據(jù)輸入輸出</p><p> 在控制指令字
38、輸入后的下一個(gè)SCLK時(shí)鐘的上升沿時(shí)數(shù)據(jù)被寫入DS1302,數(shù)據(jù)輸入從低位即位0開始。同樣,在緊跟8位的控制指令字后的下一個(gè)SCLK脈沖的下降沿讀出DS1302的數(shù)據(jù),讀出數(shù)據(jù)時(shí)從低位0位至高位7,數(shù)據(jù)讀寫時(shí)序見圖4。</p><p> 圖4 DS1302的數(shù)據(jù)輸入輸出</p><p> (4)DS1302的寄存器</p><p> DS1302有12個(gè)寄存器
39、,其中有7個(gè)寄存器與日歷、時(shí)鐘相關(guān),存放的數(shù)據(jù)位為BCD碼形式,其日歷、時(shí)間寄存器及其控制字見下表2。 </p><p> 表2 日歷、時(shí)間寄存器及其控制字</p><p> 3、顯示器件LCD1602</p><p> 系統(tǒng)中采用LCD1602作為顯示器件輸出信息。與傳統(tǒng)的LED數(shù)碼管顯示器件相比,液晶顯示模塊具有體積小、功耗低、顯示內(nèi)容豐富等優(yōu)點(diǎn),而且不需
40、要外加驅(qū)動(dòng)電路,現(xiàn)在液晶顯示模塊已經(jīng)是單片機(jī)應(yīng)用設(shè)計(jì)中最常用的顯示器件了。各管腳主要功能如下:</p><p> VCC:電源+5V,VSS:電源地,VEE:對(duì)比調(diào)整電壓。</p><p> RS:數(shù)據(jù)或者指令選擇端。處理器寫入指令時(shí),RS為低電平,寫入數(shù)據(jù)時(shí),RS為高電平</p><p> R/W:讀寫控制端。R/W為高電平時(shí),讀取數(shù)據(jù);R/W為低電平時(shí),寫
41、入數(shù)據(jù)</p><p> E:LCD模塊使能信號(hào)控制端。寫數(shù)據(jù)時(shí),需要下降沿觸發(fā)模塊</p><p> D0-D7:8位數(shù)據(jù)總線,三態(tài)雙向。D0為最低位,D7為最高位。</p><p> BLA: LED背光正極。需要背光時(shí),BLA串接一個(gè)限流電阻接VEE。</p><p> BLK: LED背光負(fù)極。接地。</p>&
42、lt;p><b> ?。ǘ┯布娐吩O(shè)計(jì)</b></p><p><b> 1、電源電路</b></p><p> 電源電路中,220 V市電通過變壓器降壓成7.5V的交流電,后經(jīng)過VD1~VD4組成的橋式整流電路整流和Ct濾波,再經(jīng)7805穩(wěn)壓到5 V直流電壓作為時(shí)鐘脈沖產(chǎn)生電路和計(jì)數(shù)器及譯碼顯示電路的電源。</p>&
43、lt;p> 7805是一種固定電壓(5V)三端集成穩(wěn)壓器,其適用于很多應(yīng)用場(chǎng)合。此外它還可以和其它功率轉(zhuǎn)移器件一起構(gòu)成大電流的穩(wěn)壓電源,典型穩(wěn)壓電路見圖5。</p><p><b> 圖5 電源電路</b></p><p> 2、單片機(jī)最小系統(tǒng)電路</p><p> 所謂最小系統(tǒng),是指利用單片機(jī)內(nèi)部資源和最小的外部擴(kuò)展構(gòu)成一個(gè)真正
44、可用的單片機(jī)最小配置系統(tǒng)。單片機(jī)必須在時(shí)鐘的驅(qū)動(dòng)下才能進(jìn)行工作。MCS-51系列單片機(jī)內(nèi)部都有一個(gè)時(shí)鐘振蕩電路,只需外接晶振源,就能產(chǎn)生一定頻率的時(shí)鐘信號(hào)送到單片機(jī)的內(nèi)部的各個(gè)單元,決定單片機(jī)的工作速度。本設(shè)計(jì)就采用這種外接晶振的方法。電路中的兩個(gè)電容的作用有兩個(gè):一是幫助振蕩器起振(C1、C2的值大,起振的速度慢;反之,速度快。);二是對(duì)振蕩器的頻率起到微調(diào)的作用(C1、 C2的值大,頻率略有減少;反之,頻率略有提高)。C1、C2的值
45、采用30pF。復(fù)位電路主要的功能是是整個(gè)系統(tǒng)初始化,在每次上電時(shí)系統(tǒng)自動(dòng)初始化,如果在程序運(yùn)行的過程中程序沒有響應(yīng)或者需要進(jìn)行一次初始化,這是可以通過按復(fù)位開關(guān)來實(shí)現(xiàn)需要的有效操作。</p><p> 單片機(jī)最小系統(tǒng)電路見圖6。</p><p> 圖6 單片機(jī)最小系統(tǒng)電路</p><p><b> 3、按鍵電路</b></p>
46、<p> 考慮到電路設(shè)計(jì)復(fù)雜度不要太高,因而設(shè)計(jì)成4個(gè)按鍵,一個(gè)為復(fù)位S1;S2為+1按鍵,用于對(duì)當(dāng)前設(shè)定位(編輯位)進(jìn)行加1操作;S3為-1按鍵,用于對(duì)當(dāng)前設(shè)定位(編輯位)進(jìn)行減1操作;S4為根據(jù)需要調(diào)整時(shí)間,依據(jù)所按的次數(shù),分別校正分、時(shí)、星期、日、月、年,第八下為退出;開始設(shè)置時(shí)間“0000-00-00-00-00-00-00”;按鍵電路見圖7。</p><p><b> 圖7
47、按鍵電路</b></p><p><b> 4、顯示電路</b></p><p> 本系統(tǒng)設(shè)計(jì)中,顯示電路顯示屏LCD1602可以顯示2行16個(gè)字符,具有8位數(shù)據(jù)總線D0-D7,和RS、R/W、E三個(gè)控制端口,工作電壓為5V,并且?guī)в凶址麑?duì)比度調(diào)節(jié)和背光設(shè)置。顯示電路見圖8。</p><p><b> 圖8 顯示電路
48、</b></p><p><b> 四、軟件設(shè)計(jì)</b></p><p> 系統(tǒng)軟件的設(shè)計(jì)方法與硬件設(shè)計(jì)的方法是相同的,也是根據(jù)系統(tǒng)的各個(gè)功能,劃分成各個(gè)子模塊,分別對(duì)每個(gè)模塊來進(jìn)行設(shè)計(jì),然后在通過各個(gè)模塊之間的調(diào)用來實(shí)現(xiàn)整個(gè)系統(tǒng)的功能。本系統(tǒng)軟件程序主要包括:主程序流程,時(shí)間調(diào)整程序流程,日歷時(shí)鐘子程序流程,顯示子程序設(shè)計(jì),其中液晶LCD1602的底
49、層驅(qū)動(dòng)模塊,定時(shí)器0定時(shí)檢查系統(tǒng)變量模塊,定時(shí)器1按鍵掃描模塊等鑒于篇幅,這里不作一一介紹了。 </p><p><b> (一)主程序流程</b></p><p> 以AT89C51為核心,處理外轉(zhuǎn)電路傳來的信號(hào),實(shí)現(xiàn)時(shí)鐘數(shù)據(jù)讀取,保存,顯示及其鍵盤操作,見圖9。主程序?qū)Ω鱾€(gè)單元初始化,然后不斷循環(huán)調(diào)用按鍵掃描和顯示模塊,同時(shí)
50、進(jìn)行條件判斷并進(jìn)入相應(yīng)的模塊處理,如此循環(huán)執(zhí)行,完成所有的功能。</p><p><b> 圖9 主程序流程圖</b></p><p> (二)時(shí)間調(diào)整程序流程 </p><p> 時(shí)間調(diào)整程序流程圖見圖10。</p><p> 圖10 時(shí)間調(diào)整流程圖</p><p> (三)日歷時(shí)鐘的
51、讀寫流程</p><p> DS1302與CPU的連接需要三條線,即SCLK(6)、I/O(7)、RST(5)。日歷時(shí)鐘DS1302的讀寫需要初始化時(shí)序、讀時(shí)序、寫時(shí)序。所有時(shí)序都是將主機(jī)作為主設(shè)備,單總線器件作為從設(shè)備。而每一次命令和數(shù)據(jù)的傳輸都是從主機(jī)啟動(dòng)寫時(shí)序開始,如果要求單總線器件回送是低位在先。讀寫都是16位數(shù)據(jù)高8位是地址低8位是數(shù)據(jù),在讀寫時(shí)要嚴(yán)格遵從其讀寫時(shí)序,否則讀寫將會(huì)失效。</p&g
52、t;<p> 當(dāng)RST為高電平時(shí),所有的數(shù)據(jù)傳送被初始化,允許對(duì)DS1302進(jìn)行操作。如果在傳送過程中RST置為低電平,則會(huì)終止此次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。上電運(yùn)行時(shí),在Vcc≥2.5V之前,RST必須保持低電平。只有在SCLK為低電平時(shí),才能將RST置為高電平,這一點(diǎn)我們要一定注意。</p><p> 當(dāng)RST置為高電平時(shí),在串行時(shí)鐘的SCLK的上升沿,DS1302從I/O端口讀入一位
53、數(shù)據(jù),8個(gè)串行時(shí)鐘脈沖就可以讀入一字節(jié)的數(shù)據(jù)。在串行時(shí)鐘的下降沿,DS1302向I/O端口輸出一位數(shù)據(jù),8個(gè)串行時(shí)鐘脈沖就可以輸出一字節(jié)的數(shù)據(jù)。</p><p> 日歷時(shí)鐘的寫和讀流程圖見圖11。</p><p> (四)顯示子程序設(shè)計(jì)</p><p> 本設(shè)計(jì)的顯示部分具有消隱和閃爍功能,當(dāng)時(shí)分秒等高位為0時(shí)顯示消隱, 此時(shí)在讀時(shí)間時(shí)更加明了,但低位不能顯示
54、消隱。閃爍功能也是本設(shè)計(jì)的一個(gè)難點(diǎn),本設(shè)計(jì)采用8個(gè)位標(biāo)志位,其中一個(gè)標(biāo)志位通過用定時(shí)器0產(chǎn)生一個(gè)周期大約為每秒1.5次,使閃爍時(shí)效果達(dá)到最好。此時(shí)定時(shí)器采用定時(shí)中斷的工作方式,這樣可以充分利用CPU資源。另外7個(gè)標(biāo)志位是時(shí)分秒等的位標(biāo)志位,當(dāng)秒標(biāo)志位置1時(shí)即秒開閃爍,與用中斷產(chǎn)生的標(biāo)志位相結(jié)合,即在一個(gè)周期內(nèi)為0時(shí)此時(shí)消隱為1時(shí)開顯示,這樣就使在調(diào)時(shí)間時(shí)對(duì)應(yīng)的位閃爍。</p><p><b> 五、結(jié)
55、束語 </b></p><p> 本文介紹的是利用AT89C51單片機(jī)設(shè)計(jì)的電子日歷。并詳細(xì)說明了軟件和硬件設(shè)計(jì)方法。在設(shè)計(jì)過程中可以看出,用單片機(jī)實(shí)現(xiàn)電子日歷的設(shè)計(jì)是比較方便和易于實(shí)現(xiàn)的。當(dāng)然,該電子日歷還有很多不足之處,功能太過單調(diào),只能實(shí)現(xiàn)年、月、日、星期、時(shí)、分、秒的顯示,設(shè)計(jì)比較簡(jiǎn)單,用的器件功能簡(jiǎn)單,不利于實(shí)現(xiàn)時(shí)間的調(diào)節(jié)。比如顯示電路可以使用LED電子產(chǎn)品,它視覺效果好,范圍廣,直觀明了
56、,但相應(yīng)的硬件設(shè)計(jì)相對(duì)復(fù)雜,因此我選用LCD做為顯示,電路圖的設(shè)計(jì)比較簡(jiǎn)單。</p><p><b> 謝辭</b></p><p> 在論文完成之際,我首先向關(guān)心幫助和指導(dǎo)我的老師表示衷心的感謝并致以崇高的敬意!</p><p> 在論文工作中,遇到了很多的問題,一直得到老師的親切關(guān)懷和悉心指導(dǎo),使我自己在論文寫作上面有很大的進(jìn)步,也感
57、覺到老師的良苦用心,老師以其淵博的學(xué)識(shí)、嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度、求實(shí)的工作作風(fēng)和他敏捷的思維給我留下了深刻的印象,我將終生難忘……在學(xué)校的學(xué)習(xí)生活即將結(jié)束,回顧兩年多來的學(xué)習(xí)經(jīng)歷,面對(duì)現(xiàn)在的收獲,我感到無限欣慰。為此,我向熱心幫助過我的所有老師和同學(xué)表示由衷的感謝!</p><p> 最后,衷心地感謝在百忙之中評(píng)閱論文和參加答辯的各位老師,你們的諄諄教導(dǎo)使我在學(xué)業(yè)上受益匪淺,在以后的學(xué)習(xí)過程中我也會(huì)更加的努力!<
58、/p><p><b> 參考文獻(xiàn)</b></p><p> [1] 陳明熒.8051單片機(jī)課程設(shè)計(jì)實(shí)訓(xùn)教材 北京:清華大學(xué)出版社 2004</p><p> [2] 丁元杰.《單片機(jī)原理與應(yīng)用》.機(jī)械工業(yè)出版社出版.2003年2月</p><p> [3] 劉勇, 數(shù)字電路 ,子工業(yè)出版社,2004</p>
59、;<p> [4] 陳正振, 電子電路設(shè)計(jì)與制作,廣西交通職業(yè)技術(shù)學(xué)院信息工程系,2007</p><p> [5] 楊子文, 單片機(jī)原理及應(yīng)用,安電子科技大學(xué)出版社,2006</p><p> [6] 王法能, 單片機(jī)原理及應(yīng)用,科學(xué)出版社,2004</p><p> [7] 吳金戌,沈慶陽。8051單片機(jī)實(shí)踐與應(yīng)用[M}。清華大學(xué)出版社,2
60、002:156~163</p><p><b> 附錄 </b></p><p><b> 1、電子日歷原理圖</b></p><p><b> 2、軟件程序清單</b></p><p> #include <reg51.h></p><
61、p> #include <intrins.h></p><p> #include <absacc.h></p><p> #define uchar unsigned char</p><p> #define uint unsigned int</p><p> #define BUSY 0
62、x80 //lcd忙檢測(cè)標(biāo)志</p><p> #define DATAPORT P1 //定義P0口為LCD通訊端口</p><p> sbit LCM_RS=P2^0; //數(shù)據(jù)/命令端</p><p> sbit LCM_R
63、W=P2^1; //讀/寫選擇端</p><p> sbit LCM_EN=P2^2;</p><p> uchar second; //定義并初始化時(shí)鐘變量</p><p> uchar minite;</p><p> uchar hour;</p>
64、;<p> uchar mstcnt=0;</p><p> uchar t,set=0;</p><p> uchar code str0[]={"DATE :2009-04-15"};</p><p> uchar code str1[]={"TIME : : : "};</p>
65、<p> void delay_LCM(uint); //LCD延時(shí)子程序</p><p> void initLCM( void); //LCD初始化子程序</p><p> void lcd_wait(void); //LCD檢測(cè)忙子程序</p>
66、<p> void WriteCommandLCM(uchar WCLCM,uchar BusyC); //寫指令到ICM子函數(shù)</p><p> void WriteDataLCM(uchar WDLCM); //寫數(shù)據(jù)到LCM子函數(shù)</p><p> void DisplayOneChar(uchar X,uchar Y,uc
67、har DData); //顯示指定坐標(biāo)的一個(gè)字符子函數(shù)</p><p> void DisplayListChar(uchar X,uchar Y,uchar code *DData); //顯示指定坐標(biāo)的一串字符子函數(shù)</p><p> void init_timer0(void); //定時(shí)器初始化</p><p
68、> void displayfun(void);</p><p> void delay_LCM(uint k)</p><p><b> {</b></p><p><b> uint i,j;</b></p><p> for(i=0;i<k;i++)</p>
69、<p><b> {</b></p><p> for(j=0;j<60;j++)</p><p><b> {;}</b></p><p><b> }</b></p><p><b> }</b></p>&l
70、t;p> void WriteCommandLCM(uchar WCLCM,uchar BusyC)</p><p><b> {</b></p><p> if(BusyC)lcd_wait();</p><p> DATAPORT=WCLCM;</p><p> LCM_RS=0;
71、 // 選中指令寄存器</p><p> LCM_RW=0; // 寫模式</p><p><b> LCM_EN=1;</b></p><p><b> _nop_();</b></p><p><b> _nop_();</
72、b></p><p><b> _nop_();</b></p><p><b> LCM_EN=0;</b></p><p><b> }</b></p><p> void WriteDataLCM(uchar WDLCM)</p><p&
73、gt;<b> {</b></p><p> lcd_wait( ); //檢測(cè)忙信號(hào)</p><p> DATAPORT=WDLCM;</p><p> LCM_RS=1; // 選中數(shù)據(jù)寄存器</p><p> LCM_RW=0;
74、 // 寫模式</p><p><b> LCM_EN=1;</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b><
75、;/p><p><b> LCM_EN=0;</b></p><p><b> }</b></p><p> void lcd_wait(void)</p><p><b> {</b></p><p> DATAPORT=0xff;</p
76、><p><b> LCM_EN=1;</b></p><p> LCM_RS=0; </p><p> LCM_RW=1; </p><p><b> _nop_();</b></p><p> while(DATAPORT&BUSY)&l
77、t;/p><p> { LCM_EN=0;</p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> LCM_EN=1;</b></p><p><b> _nop
78、_();</b></p><p><b> _nop_();</b></p><p><b> }</b></p><p> LCM_EN=0;</p><p><b> }</b></p><p> void initLCM(
79、)</p><p><b> {</b></p><p> DATAPORT=0;</p><p> delay_LCM(15);</p><p> WriteCommandLCM(0x38,0); //三次顯示模式設(shè)置,不檢測(cè)忙信號(hào)</p><p> delay_LCM(5);
80、</p><p> WriteCommandLCM(0x38,0);</p><p> delay_LCM(5);</p><p> WriteCommandLCM(0x38,0);</p><p> delay_LCM(5);</p><p> WriteCommandLCM(0x38,1); //8
81、bit數(shù)據(jù)傳送,2行顯示,5*7字型,檢測(cè)忙信號(hào)</p><p> WriteCommandLCM(0x08,1); //關(guān)閉顯示,檢測(cè)忙信號(hào)</p><p> WriteCommandLCM(0x01,1); //清屏,檢測(cè)忙信號(hào)</p><p> WriteCommandLCM(0x06,1); //顯示光標(biāo)右移設(shè)置,檢測(cè)忙信號(hào)</
82、p><p> WriteCommandLCM(0x0c,1); //顯示屏打開,光標(biāo)不顯示,不閃爍,檢測(cè)忙信號(hào)</p><p><b> }</b></p><p> void DisplayOneChar(uchar X,uchar Y,uchar DData)</p><p><b> {<
83、/b></p><p><b> Y&=1;</b></p><p><b> X&=15;</b></p><p> if(Y)X|=0x40; //若y為1(顯示第二行),地址碼+0X40</p><p> X|=0x80;
84、 //指令碼為地址碼+0X80</p><p> WriteCommandLCM(X,0);</p><p> WriteDataLCM(DData);</p><p><b> }</b></p><p> void DisplayListChar(uchar X,uchar Y,uch
85、ar code *DData)</p><p><b> {</b></p><p> uchar ListLength=0;</p><p><b> Y&=0x01;</b></p><p><b> X&=0x0f;</b></p>
86、<p> while(X<16)</p><p><b> {</b></p><p> DisplayOneChar(X,Y,DData[ListLength]);</p><p> ListLength++;</p><p><b> X++;</b></p>
87、;<p><b> }</b></p><p><b> }</b></p><p> void displayfun(void)</p><p><b> {</b></p><p> WriteCommandLCM(0x0c,1); //顯
88、示屏打開,光標(biāo)不顯示,不閃爍,檢測(cè)忙信號(hào)</p><p> DisplayListChar(0,0,str0);</p><p> DisplayListChar(0,1,str1); </p><p> DisplayOneChar(7,1,hour/10+0x30); //液晶上顯示小時(shí)</p>
89、<p> DisplayOneChar(8,1,hour%10+0x30);</p><p> DisplayOneChar(10,1,minite/10+0x30);//液晶上顯示分</p><p> DisplayOneChar(11,1,minite%10+0x30);</p><p> DisplayOneChar(13,1,sec
90、ond/10+0x30); //液晶上顯示秒</p><p> DisplayOneChar(14,1,second%10+0x30);</p><p><b> }</b></p><p> void init_timer0(void)</p><p><b> {</b>
91、</p><p> TMOD=0x01; //time0為定時(shí)器,方式1</p><p> TH0=0x3c; //預(yù)置計(jì)數(shù)初值</p><p><b> TL0=0xb0;</b></p>
92、<p> EA=1; </p><p> ET0=1; </p><p> TR0=1; </p><p><b> }</b></p><p> void timer0(void) interrupt 1 using
93、0 //定時(shí)器0方式1,50ms中斷一次</p><p><b> {</b></p><p><b> TH0=0x3c;</b></p><p><b> TL0=0xb0;</b></p><p><b> mstcnt++;<
94、;/b></p><p> if(mstcnt>=20 )</p><p><b> {</b></p><p><b> second++;</b></p><p><b> mstcnt=0;</b></p><p><b&
95、gt; }</b></p><p> if(second>=60)</p><p><b> {</b></p><p><b> minite++;</b></p><p><b> second=0;</b></p><p&g
96、t;<b> }</b></p><p> if(minite>=60)</p><p><b> {</b></p><p><b> hour++;</b></p><p><b> minite=0;</b></p>&
97、lt;p> delay_LCM(200);</p><p><b> }</b></p><p> if(hour>=24)</p><p><b> {</b></p><p><b> hour=0;</b></p><p>&
98、lt;b> }</b></p><p><b> }</b></p><p> void main(void)</p><p><b> {</b></p><p> P1=0xff; //初始化p1口
99、,全設(shè)為1</p><p> delay_LCM(500); //延時(shí)500ms啟動(dòng)</p><p> initLCM( ); //LCD初始化</p><p> init_timer0( );
100、 //時(shí)鐘定時(shí)器0初始化</p><p> DisplayListChar(0,0,str0);</p><p> DisplayListChar(0,1,str1);</p><p> while (1) </p><p><b> {</b></p><p>
溫馨提示
- 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. 眾賞文庫僅提供信息存儲(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ì)--電子日歷
- 單片機(jī)電子日歷畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)(2) 單片機(jī)電子日歷
- 單片機(jī)電子日歷畢業(yè)設(shè)計(jì)2
- 畢業(yè)設(shè)計(jì)論文 基于單片機(jī)的電子日歷設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---可調(diào)式電子日歷時(shí)鐘的設(shè)計(jì)與實(shí)現(xiàn)
- 畢業(yè)設(shè)計(jì)---基于51單片機(jī)的電子日歷的應(yīng)用
- 數(shù)碼日歷鐘畢業(yè)設(shè)計(jì)論文
- 畢業(yè)設(shè)計(jì)(論文)-電子日歷的制作51單片機(jī)的應(yīng)用
- 日歷時(shí)鐘顯示系統(tǒng)畢業(yè)設(shè)計(jì)
- 數(shù)字日歷時(shí)鐘畢業(yè)設(shè)計(jì)論文
- 基于android的日歷系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)-畢業(yè)設(shè)計(jì)
- 電子信息工程畢業(yè)設(shè)計(jì)帶實(shí)時(shí)日歷時(shí)鐘的溫度檢測(cè)系統(tǒng)的設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)(論文)基于android的日歷系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 電子日歷的制作-課程設(shè)計(jì)
- 電子日歷的制作-課程設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)--電子跑表的設(shè)計(jì)
- 單片機(jī)電子日歷設(shè)計(jì)原文(機(jī)械畢業(yè)設(shè)計(jì)含cad圖紙和說明書)
- 電子羅盤的設(shè)計(jì)【畢業(yè)設(shè)計(jì)】
評(píng)論
0/150
提交評(píng)論