




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 PAGE24 / NUMPAGES25基于AT89C51單片機(jī)的多功能電子萬(wàn)年歷的設(shè)計(jì)AT89C51 SCM-BASED ELCTRONIC DESIGN CALENDAR 畢 業(yè) 論 文學(xué)院名稱瀘 州 職 業(yè) 技 術(shù) 學(xué) 院系部名稱 電 子 工 程 系 專業(yè)名稱應(yīng) 用 電 子 技 術(shù) 2012年12月10日摘要本文介紹了基于AT89C51單片機(jī)的多功能電子萬(wàn)年歷的硬件結(jié)構(gòu)和軟硬件設(shè)計(jì)方法。系統(tǒng)以AT89C51單片機(jī)為控制器,以串行時(shí)鐘日歷芯片DS1302記錄日歷和時(shí)間,利用proteus仿真,它可以對(duì)年、月、日、時(shí)、分、秒進(jìn)行計(jì)時(shí),還具有閏年補(bǔ)償?shù)榷喾N功能。萬(wàn)年歷采用直觀的數(shù)字顯示,可以在
2、1602上同時(shí)顯示年、月、日、周日、時(shí)、分、秒,還具有時(shí)間校準(zhǔn)等功能。此萬(wàn)年歷具有讀取方便、顯示直觀、功能多樣、電路簡(jiǎn)潔、成本低廉等諸多優(yōu)點(diǎn),具有廣闊的市場(chǎng)前景。關(guān)鍵字:AT89C51;電子萬(wàn)年歷; DS1302;1602目 錄 TOC o 1-3 h z u HYPERLINK l _Toc343720633摘要01HYPERLINK l _Toc343720634第一章緒論03HYPERLINK l _Toc3437206351.1 課題研究的背景03HYPERLINK l _Toc3437206361.2課題解決的主要容03第二章HYPERLINK l _Toc343720637系統(tǒng)的總
3、體設(shè)計(jì)04HYPERLINK l _Toc3437206382.1系統(tǒng)硬件電路設(shè)計(jì)04HYPERLINK l _Toc3437206392.1.1系統(tǒng)硬件結(jié)構(gòu)04HYPERLINK l _Toc3437206402.2單片機(jī)與其附屬電路05HYPERLINK l _Toc3437206412.2.1 MCS-51系列單片機(jī)05HYPERLINK l _Toc3437206422.1.2 MCS-51系列單片機(jī)的工作條件電路08HYPERLINK l _Toc3437206432.1.3 DS130209HYPERLINK l _Toc3437206442.1.4 LCD1602顯示電路10HY
4、PERLINK l _Toc3437206452.1.5調(diào)節(jié)電路12HYPERLINK l _Toc343720646第三章系統(tǒng)的軟件設(shè)計(jì)12HYPERLINK l _Toc3437206473.1主程序12HYPERLINK l _Toc3437206483.2 LCD1602的驅(qū)動(dòng)程序13HYPERLINK l _Toc3437206493.3 DS1302的驅(qū)動(dòng)程序14HYPERLINK l _Toc343720650第四章萬(wàn)年歷的設(shè)計(jì)結(jié)論14HYPERLINK l _Toc3437206514.1 萬(wàn)年歷工作原理14HYPERLINK l _Toc3437206524.2 萬(wàn)年歷結(jié)構(gòu)原
5、理圖15HYPERLINK l _Toc343720653致16HYPERLINK l _Toc343720654參考文獻(xiàn)16HYPERLINK l _Toc343720655附錄17HYPERLINK l _Toc343720656附錄1仿真圖片17HYPERLINK l _Toc343720657附錄2程序代碼17-25第一章 緒論1.1 課題研究的背景隨著科技的快速發(fā)展,時(shí)間的流逝,從觀太陽(yáng)、擺鐘到現(xiàn)在電子鐘,人類不斷研究,不斷創(chuàng)新紀(jì)錄。它可以對(duì)年、月、日、時(shí)、分、秒進(jìn)行計(jì)時(shí),還具有閏年補(bǔ)償?shù)榷喾N功能,而且DS1302的使用壽命長(zhǎng),誤差小。對(duì)于數(shù)字電子萬(wàn)年歷采用直觀的數(shù)字顯示,可以同時(shí)顯
6、示年、月、日、時(shí)、分、秒和溫度等信息,還具有時(shí)間校準(zhǔn)等功能。該電路采用AT89C51單片機(jī)作為核心,功耗小,能在3V的低壓工作,電壓可選用35V電壓供電。此萬(wàn)年歷具有讀取方便、顯示直觀、功能多樣、電路簡(jiǎn)潔、成本低廉等諸多優(yōu)點(diǎn),符合電子儀器儀表的發(fā)展趨勢(shì),具有廣闊的市場(chǎng)前景。1.2課題解決的主要容本課題所研究的電子萬(wàn)年歷是單片機(jī)控制技術(shù)的一個(gè)具體應(yīng)用,主要研究容包括以下幾個(gè)方面:(1)選用電子萬(wàn)年歷芯片時(shí),應(yīng)重點(diǎn)考慮功能實(shí)在、使用方便、單片存儲(chǔ)、低功耗、抗斷電的器件。(2)根據(jù)選用的電子萬(wàn)年歷芯片設(shè)計(jì)外圍電路和單片機(jī)的接口電路。(3)在硬件設(shè)計(jì)時(shí),結(jié)構(gòu)要盡量簡(jiǎn)單實(shí)用、易于實(shí)現(xiàn),使系統(tǒng)電路盡量簡(jiǎn)單
7、。(4)根據(jù)硬件電路圖,在開發(fā)板上完成器件的焊接。(5)根據(jù)設(shè)計(jì)的硬件電路,編寫控制AT89C51芯片的單片機(jī)程序。(6)通過編程、編譯、調(diào)試,把程序下載到單片機(jī)上運(yùn)行,并實(shí)現(xiàn)本設(shè)計(jì)的功能。(7)在硬件電路和軟件程序設(shè)計(jì)時(shí),主要考慮提高人機(jī)界面的友好性,方便用戶操作等因素。(8)軟件設(shè)計(jì)時(shí)必須要有完善的思路,要做到程序簡(jiǎn)單,調(diào)試方便。第二章 系統(tǒng)的總體設(shè)計(jì)單片機(jī)電子萬(wàn)年歷的制作有多種方法,可供選擇的器件和運(yùn)用的技術(shù)也有很多種。所以,系統(tǒng)的總體設(shè)計(jì)方案應(yīng)在滿足系統(tǒng)功能的前提下,充分考慮系統(tǒng)使用的環(huán)境,所選的結(jié)構(gòu)要簡(jiǎn)單使用、易于實(shí)現(xiàn),器件的選用著眼于合適的參數(shù)、穩(wěn)定的性能、較低的功耗以與低廉的成本
8、。2.1系統(tǒng)硬件電路設(shè)計(jì)2.1.1系統(tǒng)硬件結(jié)構(gòu)此系統(tǒng)由單片機(jī)主體電路、單片機(jī)工作條件電路、1602顯示電路、時(shí)間條件電路、時(shí)鐘芯片DS1302等幾大部分組成,其中單片機(jī)工作條件電路又包含電源電路、時(shí)鐘電路、復(fù)位電路等幾大部分組成,單片機(jī)工作條件電路使單片機(jī)正常的工作,然后單片機(jī)通過程序設(shè)置,控制DS1302時(shí)鐘芯片,從DS1302芯片讀取數(shù)據(jù)處理后送1602顯示,其顯示的時(shí)間和日期可以通過時(shí)間條件按鍵電路來進(jìn)行調(diào)整,此系統(tǒng)硬件結(jié)構(gòu)框圖如圖2-1圖2-1 系統(tǒng)硬件框圖2.2單片機(jī)與其附屬電路2.2.1 MCS-51系列單片機(jī)MCS-51系列單片機(jī)主要是指Intel公司生產(chǎn)的以51位核的單片機(jī)芯片
9、,具有8位CPU、4K字節(jié)ROM、128字節(jié)RAM、可擴(kuò)展外部64K字節(jié)RAM和ROM、2個(gè)16位的定時(shí)器/計(jì)數(shù)器、4個(gè)8位并行I/O口、1個(gè)全雙工串行I/O口、21字節(jié)的專用寄存器、5個(gè)中斷源、片自帶振蕩器、片單總線等功能部件。AT89C51單片機(jī)就是MCS-51系列單片機(jī)的一種,它的片有4K字節(jié)的在線編程Flash存儲(chǔ)器,可以擦寫1000次,具有掉電模式,而且具有掉電狀態(tài)下的中斷恢復(fù)功能,對(duì)設(shè)計(jì)開發(fā)非常實(shí)用。其引腳圖如圖2-2所示。圖2-2 AT89C51單片機(jī)的引腳圖其引腳功能和部結(jié)構(gòu)如下:1.單片機(jī)的引腳功能AT89C51單片機(jī)有40個(gè)引腳。(1)、Vcc:電源電壓+5V(2)、GND
10、:接地(3)、P0口:P0口是一組8位漏極開路型雙向I/O口,也即地址/數(shù)據(jù)總線復(fù) 用口。作為輸出口用時(shí),每位能驅(qū)動(dòng)8個(gè)TTL邏輯門電路,對(duì)端口寫“1”可作為高阻抗輸入端用。(4)、P1口:P1口是一個(gè)帶部上拉電阻的8位雙向I/O,P1的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯門電路。對(duì)端口寫“1”,通過部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口。作輸入口使用時(shí),因?yàn)椴看嬖谏侠娮?,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流。(5)、P2口:P2口是一個(gè)帶部上拉電阻的8位雙向I/O,P2的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯門電路。對(duì)端口寫“1”,通過部的上拉電阻把端口拉到高
11、電平,此時(shí)可作輸入口。作輸入口使用時(shí),因?yàn)椴看嬖谏侠娮瑁硞€(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流。(6)、P3口還接收一些用于Flash閃速存儲(chǔ)器編程和程序校驗(yàn)的控制信號(hào)。表3-1 P3口的第二功能圖端口引腳第二功能P3.0RXD(串行輸入口)P3.1TXD(串行輸出口)P3.2INT0(外中斷0)P3.3INT1(外中斷1)P3.4T0(定時(shí)/計(jì)時(shí)器0外部輸入)P3.5T1(定時(shí)/計(jì)時(shí)器1外部輸入)P3.6WR(外部數(shù)據(jù)存儲(chǔ)器寫選通)P3.7RD(外部數(shù)據(jù)存儲(chǔ)器讀選通)(7)、RST:復(fù)位輸入。當(dāng)振蕩器工作時(shí),RST引腳出現(xiàn)兩個(gè)機(jī)器周期以上高電平將使單片機(jī)復(fù)位。WDT溢出將使引腳輸出高電平,
12、設(shè)置SFR AUXR的DISRT0(地址8EH)可打開或關(guān)閉該功能。DISRT0位缺省為RESET輸出高電平打開狀態(tài)。(8)、ALE/PROG:當(dāng)訪問外部程序存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)器時(shí),ALE(地址鎖存器允許)輸出脈沖用于鎖存地址的低8位字節(jié)。即使不訪問外部存儲(chǔ)器,ALE仍以時(shí)鐘振蕩頻率的1/6輸出固定的正脈沖信號(hào),因此它可對(duì)外輸出時(shí)鐘或用于定時(shí)目的。要注意的是:每當(dāng)訪問外部數(shù)據(jù)存儲(chǔ)器時(shí)將跳過一個(gè)ALE脈沖。(9)、XTAL1:振蕩器反相放大器與部時(shí)鐘發(fā)生器的輸入端。(10)、XTAL2:振蕩器反相放大器的輸出端。2、AT89C51單片機(jī)部結(jié)構(gòu)看門狗(WDT):WDT是一種需要軟件控制的復(fù)位方式。W
13、DT 由13位計(jì)數(shù)器和特殊功能寄存器中的看門狗定時(shí)器復(fù)位存儲(chǔ)器(WDTRST)構(gòu)成。WDT 在默認(rèn)情況下無(wú)法工作;為了激活WDT,用戶必須往WDTRST 寄存器(地址:0A6H)中依次寫入01EH 和0E1H。當(dāng)WDT激活后,晶振工作,WDT在每個(gè)機(jī)器周期都會(huì)增加。WDT計(jì)時(shí)周期依賴于外部時(shí)鐘頻率。除了復(fù)位(硬件復(fù)位或WDT溢出復(fù)位),沒有辦法停止WDT工作。當(dāng)WDT溢出,它將驅(qū)動(dòng)RSR引腳輸出一個(gè)高電平??删幊檀冢║ART)在AT89C51中,UART 的操作與AT89C51 和AT89C52 一樣。AT89C51系列單片機(jī)的串行通信口可以工作于同步和異步通信方式。當(dāng)工作于異步方式時(shí),它具
14、有全雙工的操作功能,也就是說,它可以同時(shí)進(jìn)行數(shù)據(jù)的發(fā)送和接收。串行口的接收器采用的是雙緩沖結(jié)構(gòu),能夠在接收到的第一個(gè)字節(jié)從接收寄存器讀走之前就開始接收第二個(gè)字節(jié)(當(dāng)然,如果第二個(gè)字節(jié)接收完畢,而第一個(gè)字節(jié)仍然沒有被讀走,那將會(huì)丟掉一個(gè)字節(jié))。串行口的發(fā)送和接收操作都是通過特殊功能寄存器中的數(shù)據(jù)緩沖寄存器SBUF進(jìn)行的,但在SBUF的部,接收寄存器和發(fā)送寄存器在物理結(jié)構(gòu)上是完全獨(dú)立的。如果將數(shù)據(jù)寫入SBUF,數(shù)據(jù)會(huì)被送入發(fā)送寄存器準(zhǔn)備發(fā)送。如果執(zhí)行SBUF指令,則讀出的數(shù)據(jù)一定來自接收緩存器。因此,CPU對(duì)SBUF的讀寫,實(shí)際上是分別訪問2個(gè)不同的寄存器。這2個(gè)寄存器的功能決不能混淆。振蕩電路:
15、AT89C51系列單片機(jī)的部振蕩器,由一個(gè)單極反相器組成。XTAL1反相器的輸入,XTAL2為反相器的輸出。可以利用它部的振蕩器產(chǎn)生時(shí)鐘,只要XTAL1和XTAL2引腳上一個(gè)晶體與電容組成的并聯(lián)諧振電路,便構(gòu)成一個(gè)完整的振蕩信號(hào)發(fā)生器,此方式稱為部方式。另一種方式由外部時(shí)鐘源提供一個(gè)時(shí)鐘信號(hào)到XTAL1端輸入,而XTAL2端浮空。在組成一個(gè)單片機(jī)應(yīng)用系統(tǒng)時(shí),多數(shù)采用這種方式,這種方式結(jié)構(gòu)緊湊,成本低廉,可靠性高。在電路中,對(duì)電容C1和C2的值要求不是很嚴(yán)格,如果使用高質(zhì)的晶振,則不管頻率為多少,C1、C2通常都選擇30pF。定時(shí)/計(jì)數(shù)器:AT89C51單片機(jī)含有2個(gè)16位的定時(shí)器/計(jì)數(shù)器。當(dāng)用
16、于定時(shí)器方式時(shí),定時(shí)器的輸入來自部時(shí)鐘發(fā)生電路,每過一個(gè)機(jī)器周期,定時(shí)器加1,而一個(gè)機(jī)器周期包含有12個(gè)振蕩周期,所以,定時(shí)器的技術(shù)頻率為晶振頻率的1/12,而計(jì)數(shù)頻率最高為晶振頻率的1/24。為了實(shí)現(xiàn)定時(shí)和計(jì)數(shù)功能,定時(shí)器中含有3種基本的寄存器:控制寄存器、方式寄存器和定時(shí)器/計(jì)數(shù)器??刂萍拇嫫魇且粋€(gè)8位的寄存器,用于控制定時(shí)器的工作狀態(tài),方式寄存器是一個(gè)8位的寄存器,用于確定定時(shí)器的工作方式,定時(shí)器/計(jì)數(shù)器是16位的計(jì)數(shù)器,分為高字節(jié)和低字節(jié)兩部分。RAM:高于7FH部數(shù)據(jù)存儲(chǔ)器的地址是8位的,也就是說其地址空間只有256字節(jié),但部RAM的尋址方式實(shí)際上可提供384字節(jié)。的直接地址訪問同一
17、個(gè)存儲(chǔ)空間,高于7FH的間接地址訪問另一個(gè)存儲(chǔ)空間。這樣,雖然高128字節(jié)區(qū)分與專用寄器 ,即特殊功能寄存器區(qū)的地址是重合的,但實(shí)際上它們是分開的。究竟訪問哪一區(qū),存是通過不同的尋址方式加以區(qū)分的。SFR:SFR是具有特殊功能的所有寄存器的集合,共含有22個(gè)不同寄存器,它們的地址分配在80HFFH中。雖然如此,不是所有的單元都被特殊功能寄存器占用,未被占用的單元,其容是不確定的。如對(duì)這些單元進(jìn)行讀操作,得到的是一些隨機(jī)數(shù),而寫入則無(wú)效,所以在編程時(shí)不應(yīng)該將數(shù)據(jù)寫入這些未確定的地址單元中,特殊功能寄存器主要有累加器ACC、B寄存器、程序狀態(tài)字寄存器PSW、堆棧指針SP、數(shù)據(jù)指針DPTR、I/O端
18、口、串行口數(shù)據(jù)緩沖器SBUF、定時(shí)器寄存器、捕捉寄存器、控制寄存器。中斷系統(tǒng):AT89C51單片機(jī)有6個(gè)中斷源,中斷系統(tǒng)主要由中斷允許寄存器IE、中斷優(yōu)先級(jí)寄存器IP、優(yōu)先級(jí)結(jié)構(gòu)和一些邏輯門組成。IE寄存器用于允許或禁止中斷;IP寄存器用于確定中斷源的優(yōu)先級(jí)別;優(yōu)先級(jí)結(jié)構(gòu)用于執(zhí)行中斷源的優(yōu)先排序;有關(guān)邏輯門用于輸入中斷請(qǐng)求信號(hào)。在整個(gè)中斷響應(yīng)過程中CPU所執(zhí)行的操作步驟如下:(1)完成當(dāng)前指令的操作(2)將PC容壓入堆棧(3)保存當(dāng)前的中斷狀態(tài)(4)阻止同級(jí)的中斷請(qǐng)求(5)將中斷程序入口地址送PC寄存器(6)執(zhí)行中斷服務(wù)程序(7)返回2.1.2 MCS-51系列單片機(jī)的工作條件電路MCS-51
19、系列單片機(jī)的工作條件電路包括電源電路、時(shí)鐘電路、復(fù)位電路;1、電源電路:其目的是為單片機(jī)提供電源電壓,MCS-51系列單片機(jī)的電源引腳為Vcc在單片機(jī)的第40腳,本課題只采用仿真,直接用proteus自帶的電源即可,在這里就不在多說。2、時(shí)鐘電路: 此電路的作用是為單片機(jī)提供12MHz時(shí)鐘信號(hào),是單片機(jī)有節(jié)奏的工作,它由兩個(gè)諧振電容、一個(gè)晶振、和單片機(jī)部的振蕩電路構(gòu)成,其電路如圖2-3所示圖2-3 時(shí)鐘電路3、復(fù)位電路: 其作用是使單片機(jī)回到初始狀態(tài),它由一個(gè)開關(guān)和一個(gè)上拉電阻構(gòu)成,其電路如圖2-4所示圖2-4復(fù)位電路2.1.3 DS1302DS1302 是美國(guó)DALLAS公司推出的一種高性能
20、、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘電路,它可以對(duì)年、月、日、周日、時(shí)、分、秒進(jìn)行計(jì)時(shí),具有閏年補(bǔ)償功能,工作電壓為2.5V5.5V。采用三線接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)或RAM數(shù)據(jù)。DS1302部有一個(gè)318的用于臨時(shí)性存放數(shù)據(jù)的RAM寄存器。DS1302是DS1202的升級(jí)產(chǎn)品,與DS1202兼容,但增加了主電源/后背電源雙電源引腳,同時(shí)提供了對(duì)后背電源進(jìn)行涓細(xì)電流充電的能力。 DS1302的引腳如圖2-5所示圖2-5 DS1302與單片機(jī)的連接圖Vcc2:芯片主電源,其作用是為芯片提供電源電壓。Vcc1:后備電源,其作用是在主電源關(guān)閉的情況下,也能保持時(shí)鐘
21、的連續(xù)運(yùn)行。X1和X2:振蕩源,外接32.768kHz晶振。I/O:串行數(shù)據(jù)輸出端;RST:是復(fù)位/片選線,其作用有兩個(gè),(1)RST接通控制邏輯,允許地址/命令序列送入移位寄存器;(2)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í),在Vcc2.5V之前,RST必須保持低電平。只有在SCLK為低電平時(shí),才能將RST置為高電平。I/O為串行數(shù)據(jù)輸入輸出端(雙向),后面有詳細(xì)說明。SCLK:時(shí)鐘是輸入端,其作用是為芯片提供時(shí)鐘信號(hào)。2.1.
22、4 LCD1602顯示電路在此設(shè)計(jì)中其結(jié)果在1602液晶屏上顯示出來,1602能顯示16x2個(gè)字符,它的液晶芯片是HD44780,其芯片的引腳圖如圖2-6所示:圖2-6 LCD1602的引腳圖1、各引腳的功能如下:VSS:電源地,即電源接地端; VDD:芯片電源端,為芯片提供電源電壓,其工作電壓可在4.5v5.5v之間,通常為5v; VEE:背光燈電源,為1602液晶屏的背光燈提供電源,其電壓與芯片的電源一樣,可在4.5v5.5v之間,通常為5v; RS:數(shù)據(jù)/指令選擇端(H/L),通過控制該腳的電平,可選擇是向芯片寫入指令,還是向芯片寫入數(shù)據(jù); RW:讀/寫選擇端(H/L), 通過控制該腳的
23、電平,可選擇是向芯片傳入指令數(shù)據(jù)或指令,還是從芯片中讀取指令數(shù)據(jù)或指令;E:使能信號(hào)端,它的作用是為芯片提供使能信號(hào);D0D7:并行數(shù)據(jù)傳送端;2、LCD1602各引腳與單片機(jī)的連接如圖2-7所示圖2-7 LCD1602與單片機(jī)的連接D0D7數(shù)據(jù)端口連接在單片機(jī)的P0口,由于單片機(jī)的P0口是一組8位漏極開路型雙向I/O口,所以需要在數(shù)據(jù)端口上接上拉電阻。2.1.5調(diào)節(jié)電路在該設(shè)計(jì)電路中,時(shí)間和日期的調(diào)節(jié)采用四個(gè)獨(dú)立鍵盤構(gòu)成,其原理和結(jié)構(gòu)都非常簡(jiǎn)單在這里就不多做介紹,本系統(tǒng)它與單片機(jī)的連接如圖2-8所示。2-8 獨(dú)立按鍵與單片機(jī)的連接圖中K1為調(diào)節(jié)的“選擇”即是調(diào)節(jié)時(shí)間、日期、還是星期;K2為選
24、擇項(xiàng)目的“加”動(dòng)作K3為選擇項(xiàng)目的“減”動(dòng)作K4為選擇項(xiàng)目的“確定”動(dòng)作和做加減動(dòng)作的“確認(rèn)”。(K1接2.3口、K2接2.4口、K3接2.5口、K4接2.6口)第三章 系統(tǒng)的軟件設(shè)計(jì)該設(shè)計(jì)的軟件采用模塊化的設(shè)計(jì)方案,與各個(gè)硬件模塊都對(duì)應(yīng)相應(yīng)的子程序,通過主函數(shù)調(diào)用各子函數(shù)和子函數(shù)之間的相互調(diào)用來完成電子萬(wàn)年歷的功能。3.1主程序主程序主要完成獨(dú)立鍵盤的掃描、液晶的初始化、1602送顯等功能,其程序流程圖如圖3-1所示: 3-1 主程序流程圖3.2 LCD1602的驅(qū)動(dòng)程序1602分為兩行顯示,第一行顯示DATE字符和當(dāng)前的日期(年、月、日),第二行顯示TIME字符和當(dāng)前時(shí)間(時(shí)、分、秒)。其
25、程序流程圖如圖3-2所示:圖3-2 LCD1602的驅(qū)動(dòng)程序流程圖3.3 DS1302的驅(qū)動(dòng)程序DS1302工作時(shí)為了對(duì)任何數(shù)據(jù)傳送進(jìn)行初始化,需要將復(fù)位腳(RST)置為高電平且將8位地址和命令信息裝入移位寄存器。數(shù)據(jù)在時(shí)鐘(SCLK)的上升沿串行輸入,前8位指定訪問地址,命令字裝入移位寄存器后,在之后的時(shí)鐘周期,讀操作時(shí)輸出數(shù)據(jù),寫操作時(shí)輸出數(shù)據(jù)。時(shí)鐘脈沖的個(gè)數(shù)在單字節(jié)方式下為8+8(8位地址+8位數(shù)據(jù)),在多字節(jié)方式下為8加最多可達(dá)248的數(shù)據(jù)。圖3-3 DS1302的驅(qū)動(dòng)程序流程圖第四章 萬(wàn)年歷的設(shè)計(jì)結(jié)論本課題從理論到實(shí)際應(yīng)用,用AT89C51單片機(jī)、DS1302、1602等一些電路的組
26、合,成功的設(shè)計(jì)出了一個(gè)電子萬(wàn)年歷。而且所設(shè)計(jì)的電子萬(wàn)年歷設(shè)計(jì)也按當(dāng)初要求的能夠在PROTEUS中進(jìn)行仿真,并且能夠很精確的顯示年歷。可以說該電子萬(wàn)年歷具有很高的實(shí)用價(jià)值。4.1 萬(wàn)年歷工作原理此系統(tǒng)由單片機(jī)主體電路、單片機(jī)工作條件電路、1602顯示電路、時(shí)間條件電路、時(shí)鐘芯片DS1302等幾大部分組成,它具有年、月、日、星期、時(shí)、分、秒的顯示功能,它的工作是是靠實(shí)時(shí)時(shí)鐘DS1302這個(gè)芯片的強(qiáng)大功能來完成的,首先單片機(jī)通過程序設(shè)置,控制DS1302時(shí)鐘芯片,從DS1302芯片讀取數(shù)據(jù)處理后送1602顯示,其顯示的時(shí)間和日期可以通過按鍵來進(jìn)行調(diào)整,這樣可以使時(shí)間和日期更加的準(zhǔn)確。4.2 萬(wàn)年歷結(jié)
27、構(gòu)原理圖在軟件設(shè)計(jì)的過程中,利用了Keil這個(gè)軟件在程序錄入和調(diào)試的時(shí)候的優(yōu)越性,讓我能夠在編寫軟件的時(shí)候很方便的發(fā)現(xiàn)軟件中的錯(cuò)誤,現(xiàn)在已經(jīng)能夠使用Keil對(duì)所設(shè)計(jì)的程序進(jìn)行調(diào)試。對(duì)于PROTEUS這款軟件,也能熟練掌握電路設(shè)計(jì)仿真。由于平時(shí)沒有接觸過這兩個(gè)軟件,加上畢業(yè)設(shè)計(jì)的時(shí)間有限,對(duì)于他們的連接調(diào)試程序,未能熟練掌握,但以后有機(jī)會(huì)的話會(huì)再好好學(xué)習(xí)的。本次設(shè)計(jì)的電子萬(wàn)年歷也存在的不足的地方,有待于以后的改進(jìn)。致 經(jīng)過三個(gè)多月的時(shí)間,畢業(yè)設(shè)計(jì)按照預(yù)期完成了,由于本人的知識(shí)水平有限,論文和設(shè)計(jì)中有遺漏和缺陷的地方懇請(qǐng)指正。感我的導(dǎo)師龍艦涵老師給了我莫大的幫助,在他悉心的指導(dǎo)和嚴(yán)格的要求下,作品
28、和論文順利完成了。論文從選題和最終完成,凝結(jié)著導(dǎo)師的辛勤的汗水,他不辭勞苦的教導(dǎo)、嚴(yán)謹(jǐn)?shù)淖黠L(fēng)使我終生受益。在此畢業(yè)設(shè)計(jì)完成之際,謹(jǐn)向?qū)熀退袔椭^我的老師致以崇高的敬意和衷心的感。還有感家人、朋友還有宿舍里所有的室友,是他們給我創(chuàng)造了良好的學(xué)習(xí)氛圍,在學(xué)習(xí)和生活中給了我支持和幫助。在以后的學(xué)習(xí)生活中我會(huì)時(shí)時(shí)敦促自己更加努力,不辜負(fù)師長(zhǎng)、親人、朋友對(duì)我的期望。參考文獻(xiàn)1 長(zhǎng)德.微型計(jì)算機(jī)原理與接口技術(shù)M.:機(jī)械工業(yè),1999:98-350.2 平.單片機(jī)的原理與接口技術(shù)M.:電子工業(yè),2006:1-113.3 王忠民.微型計(jì)算機(jī)原理M.:科技大學(xué),2003:15-55.4 胡戴明.計(jì)算機(jī)組成原
29、理M.:經(jīng)濟(jì)科學(xué),2005:43-56.5 紀(jì)宗南.單片機(jī)外圍器件使用手冊(cè)M.:航空航天大學(xué),622-655.6 周雪.模擬電子技術(shù)M: 電子科技大學(xué),2005:81-95.7 左金生.電子與模擬電子技術(shù)M.:電子工業(yè),2004:105-131.8 勇.單片機(jī)開發(fā)環(huán)境Vision2的開發(fā)指南M. :航空航天大學(xué),2004:173-199.9 斌武.單片機(jī)系統(tǒng)Proteus設(shè)計(jì)與仿真M. :電子工業(yè),2005:52-89.附錄附錄1仿真圖片附錄2程序代碼#include #include #define uchar unsigned char#define uint unsigned intsb
30、it SDA=P10; /DS1302數(shù)據(jù)線sbit CLK=P11; /DSB1302時(shí)鐘線sbit RST=P12; /DS1302復(fù)位線sbit RS=P20; /LCD寄存器選擇sbit RW=P21; /LCD讀/寫控制sbit EN=P22; /LCD啟用sbit K1=P23; /選擇sbit K2=P24; /加sbit K3=P25; /減sbit K4=P26; /確定uchar tCount=0;/一年中每個(gè)月的天數(shù),二月的天數(shù)由年份決定uchar MonthsDays=0,31,0,31,30,31,30,31,31,30,31,30,31;/周日,周一到周六0,1-6
31、 讀取DS1302時(shí)分別是1-7uchar *WEEK=SUN,MON,TUS,WEN,THU,FRI,SAT;/LCD顯示緩沖uchar LCD_DSY_BUFFER1=DATE 00-00-00 ;uchar LCD_DSY_BUFFER2=TIME 00:00:00 ;uchar DateTime7; /所讀取的日期時(shí)間char Adjust_Index=-1; /當(dāng)前調(diào)節(jié)的時(shí)間對(duì)象:秒,分,時(shí),日,月,年(0,1,2,3,4,6)uchar Change_Flag=-MHDM-Y; /(分,時(shí),日,月,年)(不調(diào)節(jié)秒周)/延時(shí),向DS1302寫、讀一字節(jié)以與從DS1302指定位置度、寫
32、數(shù)據(jù)的程序/延時(shí)void DelayMS(uint x)uchar i;while(x-) for(i=0;i120;i+);/向DS1302寫入一個(gè)字節(jié)void Write_A_Byte_TO_DS1302(uchar x)uchar i;for(i=0;i=1;/從DA1302讀取一字節(jié)uchar Get_A_Byte_FROM_DS1302()uchar i,b,t;for(i=0;i=1;t=SDA;b|=t7;CLK=1;CLK=0;/BCD碼轉(zhuǎn)換return b/16*10+b%16;/從DS1302指定的位置讀數(shù)據(jù)uchar Read_Data(uchar addr)uchar
33、dat;RST=0;CLK=0;RST=1;Write_A_Byte_TO_DS1302(addr);dat=Get_A_Byte_FROM_DS1302();CLK=1;RST=0;return dat;/向DS1302某地址寫入數(shù)據(jù)void Write_DS1302(uchar addr,uchar dat)CLK=0;RST=1;Write_A_Byte_TO_DS1302(addr);Write_A_Byte_TO_DS1302(dat);CLK=0;RST=0;/設(shè)置時(shí)間void SET_DS1302()uchar i;Write_DS1302(0 x8E,0 x00);/寫控制字,
34、取消寫保護(hù)for(i=1;i7;i+) /分時(shí)日月年依次寫入/分的起始地址10000010(0 x82),后面續(xù)依次是時(shí),日,月,周,年,寫入地址每次遞增2 Write_DS1302(0 x80+ 2*i,(DateTimei/104)|(DateTimei%10); Write_DS1302(0 x8E,0 x80);/加保護(hù)/讀取當(dāng)前日期時(shí)間/void GetTime()uchar i;for(i=0;i7;i+)DateTimei=Read_Data(0 x81+2*i);/ /1602LCD的若干顯示控制代碼。/uchar Read_LCD_State() 讀LCD狀態(tài)uchar Re
35、ad_LCD_State()uchar state;RS=0;RW=1;EN=1;DelayMS(1);state=P0;EN=0;DelayMS(1);return state;/void LCD_Busy_Wait() 忙等待void LCD_Busy_Wait()while(Read_LCD_State()&0 x80)=0 x80);DelayMS(5);/void Write_LCD_Data(uchar dat) 向LCD寫數(shù)據(jù)void Write_LCD_Data(uchar dat) LCD_Busy_Wait(); RS=1;RW=0;EN=0;P0=dat;EN=1;Del
36、ayMS(1);EN=0;/void Write_LCD_Command(uchar cmd) 寫LCD指令void Write_LCD_Command(uchar cmd)LCD_Busy_Wait();RS=0;RW=0;EN=0;P0=cmd;EN=1;DelayMS(1);EN=0;/void Init_LCD() LCD初始化void Init_LCD()Write_LCD_Command(0 x38);DelayMS(1);Write_LCD_Command(0 x01);DelayMS(1);Write_LCD_Command(0 x06);DelayMS(1);Write_LC
37、D_Command(0 x0c);DelayMS(1);/void Set_LCD_POS(uchar P) 設(shè)置液晶顯示位置void Set_LCD_POS(uchar p)Write_LCD_Command(p|0 x80);/在LCD上顯示字符串void Display_LCD_String(uchar p,uchar *s)uchar i;Set_LCD_POS(p);for(i=0;i16;i+)Write_LCD_Data(si); DelayMS(1);/日期與時(shí)間值轉(zhuǎn)換為數(shù)字字符void Format_DateTime(uchar d,uchar *a)a0=d/10+0;a1
38、=d%10+0;/判斷是否為閏年uchar isLeapYear(uint y)return(y%4=0&y%100!=0)|(y%400=0);/求自2000.1.1開始的任何一天是星期幾/函數(shù)沒有通過,求出總天數(shù)后再求星期幾,/因?yàn)榍罂偺鞌?shù)可能會(huì)超越uint的圍。void RefreshWeekDay()uint i,d,w=5;/已知1999.12.31是周五for(i=2000;i2000+DateTime6;i+)d=isLeapYear(i)?366:365;w=(w+d)%7;d=0;for(i=1;iDateTime4;i+) d+=MonthsDaysi;d+=DateTim
39、e3;/保存星期,06表示星期日至周六,為了與DS1302的星期格式匹配,返回值需要加1DateTime5=(w+d)%7+1;/void DateTime_Adjust(char x)switch(Adjust_Index)case 6:/年00-99 if(x=1&DateTime60) DateTime6-; /獲取2月天數(shù) MonthsDays2=isLeapYear(2000+DateTime6)?29:28; /如果年份變化后當(dāng)前月份的天數(shù)大于上限則設(shè)為上限 if(DateTime3MonthsDaysDateTime4) DateTime3=MonthsDaysDateTime4
40、; RefreshWeekDay();/刷新星期 break;case 4:/月01-12 if(x=1&DateTime41)DateTime4-; /獲取2月天數(shù) MonthsDays2=isLeapYear(2000+DateTime6)?29:28; /如果月份變化后當(dāng)前月份的天數(shù)大于上限則設(shè)為上限 if(DateTime3MonthsDaysDateTime4) DateTime3=MonthsDaysDateTime4; RefreshWeekDay();/刷新星期 break; case 3:/日00-28/29/30/31;調(diào)節(jié)之前首先根據(jù)年份得出該年中2月的天數(shù) MonthsDays2=isLeapYear(2000+DateTime6)?29:28; /根據(jù)當(dāng)前月份決定調(diào)節(jié)日期的上限 if(x=1&DateTime30) DateTime3-; RefreshW
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 學(xué)前衛(wèi)生學(xué)-全部課件
- 《乘法的人生》課件
- 《高分子材料加工技術(shù)》課件
- 白酒釀造過程節(jié)能減排技術(shù)考核試卷
- 1+X運(yùn)動(dòng)營(yíng)養(yǎng)師考試題與答案(附解析)
- 冬季安全教育主題班會(huì)
- 貨運(yùn)樞紐站物流企業(yè)財(cái)務(wù)戰(zhàn)略與融資考核試卷
- 種子種苗市場(chǎng)細(xì)分與目標(biāo)客戶定位考核試卷
- 航空公司航班運(yùn)行成本分析與控制考核試卷
- 升降機(jī)安全防護(hù)門的安裝考核試卷
- 西紅門鎮(zhèn)生活垃圾轉(zhuǎn)運(yùn)站及環(huán)衛(wèi)停車場(chǎng)工程報(bào)告表
- 2025年信息系統(tǒng)監(jiān)理師考試題(附答案)
- 農(nóng)村留守兒童教育支持體系構(gòu)建研究
- 車場(chǎng)管理考試試題及答案
- 福建省三明市2025年普通高中高三畢業(yè)班五月質(zhì)量檢測(cè)物理(三明四檢)
- 人教版(2024)七年級(jí)下冊(cè)Unit 3 Keep fit 素養(yǎng)檢測(cè)(含解析)
- 2025年四川省成都市成華區(qū)中考二診英語(yǔ)試題(含筆試答案無(wú)聽力音頻及原文)
- 綏化綏化市2025年度“市委書記進(jìn)校園”事業(yè)單位引才287人筆試歷年參考題庫(kù)附帶答案詳解
- 西部計(jì)劃面試題及答案
- 腫瘤科病歷書寫規(guī)范
- 歷史七年級(jí)歷史下冊(cè)期中復(fù)習(xí)知識(shí)點(diǎn)梳理課件 2024-2025學(xué)年七年級(jí)歷史下冊(cè)(統(tǒng)編版2024)
評(píng)論
0/150
提交評(píng)論