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