




已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
瀘州職業(yè)技術(shù)學(xué)院畢業(yè)論文:基于AT89C51單片機的多功能電子萬年歷的設(shè)計基于AT89C51單片機的多功能電子萬年歷的設(shè)計AT89C51 SCM-BASED ELCTRONIC DESIGN CALENDAR 畢 業(yè) 論 文 學(xué)院名稱 瀘 州 職 業(yè) 技 術(shù) 學(xué) 院 系部名稱 電 子 工 程 系 專業(yè)名稱 應(yīng) 用 電 子 技 術(shù) 2012年12月10日共 25 頁 瀘州職業(yè)技術(shù)學(xué)院畢業(yè)論文:基于AT89C51單片機的多功能電子萬年歷的設(shè)計摘要本文介紹了基于AT89C51單片機的多功能電子萬年歷的硬件結(jié)構(gòu)和軟硬件設(shè)計方法。系統(tǒng)以AT89C51單片機為控制器,以串行時鐘日歷芯片DS1302記錄日歷和時間,利用proteus仿真,它可以對年、月、日、時、分、秒進行計時,還具有閏年補償?shù)榷喾N功能。萬年歷采用直觀的數(shù)字顯示,可以在1602上同時顯示年、月、日、周日、時、分、秒,還具有時間校準(zhǔn)等功能。此萬年歷具有讀取方便、顯示直觀、功能多樣、電路簡潔、成本低廉等諸多優(yōu)點,具有廣闊的市場前景。關(guān)鍵字:AT89C51;電子萬年歷; DS1302;1602第 24 頁 共 25 頁瀘州職業(yè)技術(shù)學(xué)院畢業(yè)論文:基于AT89C51單片機的多功能電子萬年歷的設(shè)計目 錄摘要01第一章 緒論031.1 課題研究的背景031.2課題解決的主要內(nèi)容03第二章 系統(tǒng)的總體設(shè)計042.1系統(tǒng)硬件電路設(shè)計042.1.1系統(tǒng)硬件結(jié)構(gòu)042.2單片機及其附屬電路052.2.1 MCS-51系列單片機052.1.2 MCS-51系列單片機的工作條件電路082.1.3 DS1302092.1.4 LCD1602顯示電路102.1.5調(diào)節(jié)電路12第三章 系統(tǒng)的軟件設(shè)計123.1主程序123.2 LCD1602的驅(qū)動程序13 3.3 DS1302的驅(qū)動程序14第四章 萬年歷的設(shè)計結(jié)論144.1 萬年歷工作原理144.2 萬年歷結(jié)構(gòu)原理圖15致謝16參考文獻16附錄17附錄【1】仿真圖片17附錄【2】程序代碼17-25第一章 緒論1.1 課題研究的背景隨著科技的快速發(fā)展,時間的流逝,從觀太陽、擺鐘到現(xiàn)在電子鐘,人類不斷研究,不斷創(chuàng)新紀(jì)錄。它可以對年、月、日、時、分、秒進行計時,還具有閏年補償?shù)榷喾N功能,而且DS1302的使用壽命長,誤差小。對于數(shù)字電子萬年歷采用直觀的數(shù)字顯示,可以同時顯示年、月、日、時、分、秒和溫度等信息,還具有時間校準(zhǔn)等功能。該電路采用AT89C51單片機作為核心,功耗小,能在3V的低壓工作,電壓可選用35V電壓供電。此萬年歷具有讀取方便、顯示直觀、功能多樣、電路簡潔、成本低廉等諸多優(yōu)點,符合電子儀器儀表的發(fā)展趨勢,具有廣闊的市場前景。1.2課題解決的主要內(nèi)容本課題所研究的電子萬年歷是單片機控制技術(shù)的一個具體應(yīng)用,主要研究內(nèi)容包括以下幾個方面:(1)選用電子萬年歷芯片時,應(yīng)重點考慮功能實在、使用方便、單片存儲、低功耗、抗斷電的器件。(2)根據(jù)選用的電子萬年歷芯片設(shè)計外圍電路和單片機的接口電路。(3)在硬件設(shè)計時,結(jié)構(gòu)要盡量簡單實用、易于實現(xiàn),使系統(tǒng)電路盡量簡單。(4)根據(jù)硬件電路圖,在開發(fā)板上完成器件的焊接。(5)根據(jù)設(shè)計的硬件電路,編寫控制AT89C51芯片的單片機程序。(6)通過編程、編譯、調(diào)試,把程序下載到單片機上運行,并實現(xiàn)本設(shè)計的功能。(7)在硬件電路和軟件程序設(shè)計時,主要考慮提高人機界面的友好性,方便用戶操作等因素。(8)軟件設(shè)計時必須要有完善的思路,要做到程序簡單,調(diào)試方便。第二章 系統(tǒng)的總體設(shè)計單片機電子萬年歷的制作有多種方法,可供選擇的器件和運用的技術(shù)也有很多種。所以,系統(tǒng)的總體設(shè)計方案應(yīng)在滿足系統(tǒng)功能的前提下,充分考慮系統(tǒng)使用的環(huán)境,所選的結(jié)構(gòu)要簡單使用、易于實現(xiàn),器件的選用著眼于合適的參數(shù)、穩(wěn)定的性能、較低的功耗以及低廉的成本。2.1系統(tǒng)硬件電路設(shè)計2.1.1系統(tǒng)硬件結(jié)構(gòu)此系統(tǒng)由單片機主體電路、單片機工作條件電路、1602顯示電路、時間條件電路、時鐘芯片DS1302等幾大部分組成,其中單片機工作條件電路又包含電源電路、時鐘電路、復(fù)位電路等幾大部分組成,單片機工作條件電路使單片機正常的工作,然后單片機通過程序設(shè)置,控制DS1302時鐘芯片,從DS1302芯片讀取數(shù)據(jù)處理后送1602顯示,其顯示的時間和日期可以通過時間條件按鍵電路來進行調(diào)整,此系統(tǒng)硬件結(jié)構(gòu)框圖如圖2-1圖2-1 系統(tǒng)硬件框圖2.2單片機及其附屬電路2.2.1 MCS-51系列單片機MCS-51系列單片機主要是指Intel公司生產(chǎn)的以51位內(nèi)核的單片機芯片,具有8位CPU、4K字節(jié)ROM、128字節(jié)RAM、可擴展外部64K字節(jié)RAM和ROM、2個16位的定時器/計數(shù)器、4個8位并行I/O口、1個全雙工串行I/O口、21字節(jié)的專用寄存器、5個中斷源、片內(nèi)自帶振蕩器、片內(nèi)單總線等功能部件。AT89C51單片機就是MCS-51系列單片機的一種,它的片內(nèi)有4K字節(jié)的在線編程Flash存儲器,可以擦寫1000次,具有掉電模式,而且具有掉電狀態(tài)下的中斷恢復(fù)功能,對設(shè)計開發(fā)非常實用。其引腳圖如圖2-2所示。圖2-2 AT89C51單片機的引腳圖其引腳功能和內(nèi)部結(jié)構(gòu)如下:1.單片機的引腳功能AT89C51單片機有40個引腳。(1)、Vcc:電源電壓+5V(2)、GND:接地(3)、P0口:P0口是一組8位漏極開路型雙向I/O口,也即地址/數(shù)據(jù)總線復(fù) 用口。作為輸出口用時,每位能驅(qū)動8個TTL邏輯門電路,對端口寫“1”可作為高阻抗輸入端用。(4)、P1口:P1口是一個帶內(nèi)部上拉電阻的8位雙向I/O,P1的輸出緩沖級可驅(qū)動(吸收或輸出電流)4個TTL邏輯門電路。對端口寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時可作輸入口。作輸入口使用時,因為內(nèi)部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流。(5)、P2口:P2口是一個帶內(nèi)部上拉電阻的8位雙向I/O,P2的輸出緩沖級可驅(qū)動(吸收或輸出電流)4個TTL邏輯門電路。對端口寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時可作輸入口。作輸入口使用時,因為內(nèi)部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流。(6)、P3口還接收一些用于Flash閃速存儲器編程和程序校驗的控制信號。表3-1 P3口的第二功能圖端口引腳第二功能P3.0RXD(串行輸入口)P3.1TXD(串行輸出口)P3.2INT0(外中斷0)P3.3INT1(外中斷1)P3.4T0(定時/計時器0外部輸入)P3.5T1(定時/計時器1外部輸入)P3.6WR(外部數(shù)據(jù)存儲器寫選通)P3.7RD(外部數(shù)據(jù)存儲器讀選通)(7)、RST:復(fù)位輸入。當(dāng)振蕩器工作時,RST引腳出現(xiàn)兩個機器周期以上高電平將使單片機復(fù)位。WDT溢出將使引腳輸出高電平,設(shè)置SFR AUXR的DISRT0(地址8EH)可打開或關(guān)閉該功能。DISRT0位缺省為RESET輸出高電平打開狀態(tài)。(8)、ALE/PROG:當(dāng)訪問外部程序存儲器或數(shù)據(jù)存儲器時,ALE(地址鎖存器允許)輸出脈沖用于鎖存地址的低8位字節(jié)。即使不訪問外部存儲器,ALE仍以時鐘振蕩頻率的1/6輸出固定的正脈沖信號,因此它可對外輸出時鐘或用于定時目的。要注意的是:每當(dāng)訪問外部數(shù)據(jù)存儲器時將跳過一個ALE脈沖。(9)、XTAL1:振蕩器反相放大器及內(nèi)部時鐘發(fā)生器的輸入端。(10)、XTAL2:振蕩器反相放大器的輸出端。2、AT89C51單片機內(nèi)部結(jié)構(gòu)看門狗(WDT):WDT是一種需要軟件控制的復(fù)位方式。WDT 由13位計數(shù)器和特殊功能寄存器中的看門狗定時器復(fù)位存儲器(WDTRST)構(gòu)成。WDT 在默認(rèn)情況下無法工作;為了激活WDT,用戶必須往WDTRST 寄存器(地址:0A6H)中依次寫入01EH 和0E1H。當(dāng)WDT激活后,晶振工作,WDT在每個機器周期都會增加。WDT計時周期依賴于外部時鐘頻率。除了復(fù)位(硬件復(fù)位或WDT溢出復(fù)位),沒有辦法停止WDT工作。當(dāng)WDT溢出,它將驅(qū)動RSR引腳輸出一個高電平??删幊檀冢║ART)在AT89C51中,UART 的操作與AT89C51 和AT89C52 一樣。AT89C51系列單片機的串行通信口可以工作于同步和異步通信方式。當(dāng)工作于異步方式時,它具有全雙工的操作功能,也就是說,它可以同時進行數(shù)據(jù)的發(fā)送和接收。串行口內(nèi)的接收器采用的是雙緩沖結(jié)構(gòu),能夠在接收到的第一個字節(jié)從接收寄存器讀走之前就開始接收第二個字節(jié)(當(dāng)然,如果第二個字節(jié)接收完畢,而第一個字節(jié)仍然沒有被讀走,那將會丟掉一個字節(jié))。串行口的發(fā)送和接收操作都是通過特殊功能寄存器中的數(shù)據(jù)緩沖寄存器SBUF進行的,但在SBUF的內(nèi)部,接收寄存器和發(fā)送寄存器在物理結(jié)構(gòu)上是完全獨立的。如果將數(shù)據(jù)寫入SBUF,數(shù)據(jù)會被送入發(fā)送寄存器準(zhǔn)備發(fā)送。如果執(zhí)行SBUF指令,則讀出的數(shù)據(jù)一定來自接收緩存器。因此,CPU對SBUF的讀寫,實際上是分別訪問2個不同的寄存器。這2個寄存器的功能決不能混淆。振蕩電路:AT89C51系列單片機的內(nèi)部振蕩器,由一個單極反相器組成。XTAL1反相器的輸入,XTAL2為反相器的輸出??梢岳盟鼉?nèi)部的振蕩器產(chǎn)生時鐘,只要XTAL1和XTAL2引腳上一個晶體及電容組成的并聯(lián)諧振電路,便構(gòu)成一個完整的振蕩信號發(fā)生器,此方式稱為內(nèi)部方式。另一種方式由外部時鐘源提供一個時鐘信號到XTAL1端輸入,而XTAL2端浮空。在組成一個單片機應(yīng)用系統(tǒng)時,多數(shù)采用這種方式,這種方式結(jié)構(gòu)緊湊,成本低廉,可靠性高。在電路中,對電容C1和C2的值要求不是很嚴(yán)格,如果使用高質(zhì)的晶振,則不管頻率為多少,C1、C2通常都選擇30pF。定時/計數(shù)器:AT89C51單片機內(nèi)含有2個16位的定時器/計數(shù)器。當(dāng)用于定時器方式時,定時器的輸入來自內(nèi)部時鐘發(fā)生電路,每過一個機器周期,定時器加1,而一個機器周期包含有12個振蕩周期,所以,定時器的技術(shù)頻率為晶振頻率的1/12,而計數(shù)頻率最高為晶振頻率的1/24。為了實現(xiàn)定時和計數(shù)功能,定時器中含有3種基本的寄存器:控制寄存器、方式寄存器和定時器/計數(shù)器??刂萍拇嫫魇且粋€8位的寄存器,用于控制定時器的工作狀態(tài),方式寄存器是一個8位的寄存器,用于確定定時器的工作方式,定時器/計數(shù)器是16位的計數(shù)器,分為高字節(jié)和低字節(jié)兩部分。RAM:高于7FH內(nèi)部數(shù)據(jù)存儲器的地址是8位的,也就是說其地址空間只有256字節(jié),但內(nèi)部RAM的尋址方式實際上可提供384字節(jié)。的直接地址訪問同一個存儲空間,高于7FH的間接地址訪問另一個存儲空間。這樣,雖然高128字節(jié)區(qū)分與專用寄器 ,即特殊功能寄存器區(qū)的地址是重合的,但實際上它們是分開的。究竟訪問哪一區(qū),存是通過不同的尋址方式加以區(qū)分的。SFR:SFR是具有特殊功能的所有寄存器的集合,共含有22個不同寄存器,它們的地址分配在80HFFH中。雖然如此,不是所有的單元都被特殊功能寄存器占用,未被占用的單元,其內(nèi)容是不確定的。如對這些單元進行讀操作,得到的是一些隨機數(shù),而寫入則無效,所以在編程時不應(yīng)該將數(shù)據(jù)寫入這些未確定的地址單元中,特殊功能寄存器主要有累加器ACC、B寄存器、程序狀態(tài)字寄存器PSW、堆棧指針SP、數(shù)據(jù)指針DPTR、I/O端口、串行口數(shù)據(jù)緩沖器SBUF、定時器寄存器、捕捉寄存器、控制寄存器。中斷系統(tǒng):AT89C51單片機有6個中斷源,中斷系統(tǒng)主要由中斷允許寄存器IE、中斷優(yōu)先級寄存器IP、優(yōu)先級結(jié)構(gòu)和一些邏輯門組成。IE寄存器用于允許或禁止中斷;IP寄存器用于確定中斷源的優(yōu)先級別;優(yōu)先級結(jié)構(gòu)用于執(zhí)行中斷源的優(yōu)先排序;有關(guān)邏輯門用于輸入中斷請求信號。在整個中斷響應(yīng)過程中CPU所執(zhí)行的操作步驟如下:(1)完成當(dāng)前指令的操作(2)將PC內(nèi)容壓入堆棧(3)保存當(dāng)前的中斷狀態(tài)(4)阻止同級的中斷請求(5)將中斷程序入口地址送PC寄存器(6)執(zhí)行中斷服務(wù)程序(7)返回2.1.2 MCS-51系列單片機的工作條件電路MCS-51系列單片機的工作條件電路包括電源電路、時鐘電路、復(fù)位電路;1、電源電路:其目的是為單片機提供電源電壓,MCS-51系列單片機的電源引腳為Vcc在單片機的第40腳,本課題只采用仿真,直接用proteus自帶的電源即可,在這里就不在多說。2、時鐘電路: 此電路的作用是為單片機提供12MHz時鐘信號,是單片機有節(jié)奏的工作,它由兩個諧振電容、一個晶振、和單片機內(nèi)部的振蕩電路構(gòu)成,其電路如圖2-3所示圖2-3 時鐘電路3、復(fù)位電路: 其作用是使單片機回到初始狀態(tài),它由一個開關(guān)和一個上拉電阻構(gòu)成,其電路如圖2-4所示圖2-4復(fù)位電路2.1.3 DS1302 DS1302 是美國DALLAS公司推出的一種高性能、低功耗、帶RAM的實時時鐘電路,它可以對年、月、日、周日、時、分、秒進行計時,具有閏年補償功能,工作電壓為2.5V5.5V。采用三線接口與CPU進行同步通信,并可采用突發(fā)方式一次傳送多個字節(jié)的時鐘信號或RAM數(shù)據(jù)。DS1302內(nèi)部有一個318的用于臨時性存放數(shù)據(jù)的RAM寄存器。DS1302是DS1202的升級產(chǎn)品,與DS1202兼容,但增加了主電源/后背電源雙電源引腳,同時提供了對后背電源進行涓細電流充電的能力。 DS1302的引腳如圖2-5所示圖2-5 DS1302與單片機的連接圖Vcc2:芯片主電源,其作用是為芯片提供電源電壓。Vcc1:后備電源,其作用是在主電源關(guān)閉的情況下,也能保持時鐘的連續(xù)運行。X1和X2:振蕩源,外接32.768kHz晶振。I/O:串行數(shù)據(jù)輸出端;RST:是復(fù)位/片選線,其作用有兩個,(1)RST接通控制邏輯,允許地址/命令序列送入移位寄存器;(2)RST提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當(dāng)RST為高電平時,所有的數(shù)據(jù)傳送被初始化,允許對DS1302進行操作。如果在傳送過程中RST置為低電平,則會終止此次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。上電運行時,在Vcc2.5V之前,RST必須保持低電平。只有在SCLK為低電平時,才能將RST置為高電平。I/O為串行數(shù)據(jù)輸入輸出端(雙向),后面有詳細說明。SCLK:時鐘是輸入端,其作用是為芯片提供時鐘信號。2.1.4 LCD1602顯示電路在此設(shè)計中其結(jié)果在1602液晶屏上顯示出來,1602能顯示16x2個字符,它的液晶芯片是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), 通過控制該腳的電平,可選擇是向芯片傳入指令數(shù)據(jù)或指令,還是從芯片中讀取指令數(shù)據(jù)或指令;E:使能信號端,它的作用是為芯片提供使能信號;D0D7:并行數(shù)據(jù)傳送端;2、LCD1602各引腳與單片機的連接如圖2-7所示圖2-7 LCD1602與單片機的連接D0D7數(shù)據(jù)端口連接在單片機的P0口,由于單片機的P0口是一組8位漏極開路型雙向I/O口,所以需要在數(shù)據(jù)端口上接上拉電阻。2.1.5調(diào)節(jié)電路在該設(shè)計電路中,時間和日期的調(diào)節(jié)采用四個獨立鍵盤構(gòu)成,其原理和結(jié)構(gòu)都非常簡單在這里就不多做介紹,本系統(tǒng)它與單片機的連接如圖2-8所示。2-8 獨立按鍵與單片機的連接圖中K1為調(diào)節(jié)的“選擇”即是調(diào)節(jié)時間、日期、還是星期;K2為選擇項目的“加”動作K3為選擇項目的“減”動作K4為選擇項目的“確定”動作和做加減動作的“確認(rèn)”。(K1接2.3口、K2接2.4口、K3接2.5口、K4接2.6口)第三章 系統(tǒng)的軟件設(shè)計該設(shè)計的軟件采用模塊化的設(shè)計方案,及各個硬件模塊都對應(yīng)相應(yīng)的子程序,通過主函數(shù)調(diào)用各子函數(shù)和子函數(shù)之間的相互調(diào)用來完成電子萬年歷的功能。3.1主程序主程序主要完成獨立鍵盤的掃描、液晶的初始化、1602送顯等功能,其程序流程圖如圖3-1所示: 3-1 主程序流程圖3.2 LCD1602的驅(qū)動程序1602分為兩行顯示,第一行顯示DATE字符和當(dāng)前的日期(年、月、日),第二行顯示TIME字符和當(dāng)前時間(時、分、秒)。其程序流程圖如圖3-2所示:圖3-2 LCD1602的驅(qū)動程序流程圖3.3 DS1302的驅(qū)動程序DS1302工作時為了對任何數(shù)據(jù)傳送進行初始化,需要將復(fù)位腳(RST)置為高電平且將8位地址和命令信息裝入移位寄存器。數(shù)據(jù)在時鐘(SCLK)的上升沿串行輸入,前8位指定訪問地址,命令字裝入移位寄存器后,在之后的時鐘周期,讀操作時輸出數(shù)據(jù),寫操作時輸出數(shù)據(jù)。時鐘脈沖的個數(shù)在單字節(jié)方式下為8+8(8位地址+8位數(shù)據(jù)),在多字節(jié)方式下為8加最多可達248的數(shù)據(jù)。圖3-3 DS1302的驅(qū)動程序流程圖第四章 萬年歷的設(shè)計結(jié)論本課題從理論到實際應(yīng)用,用AT89C51單片機、DS1302、1602等一些電路的組合,成功的設(shè)計出了一個電子萬年歷。而且所設(shè)計的電子萬年歷設(shè)計也按當(dāng)初要求的能夠在PROTEUS中進行仿真,并且能夠很精確的顯示年歷??梢哉f該電子萬年歷具有很高的實用價值。4.1 萬年歷工作原理此系統(tǒng)由單片機主體電路、單片機工作條件電路、1602顯示電路、時間條件電路、時鐘芯片DS1302等幾大部分組成,它具有年、月、日、星期、時、分、秒的顯示功能,它的工作是是靠實時時鐘DS1302這個芯片的強大功能來完成的,首先單片機通過程序設(shè)置,控制DS1302時鐘芯片,從DS1302芯片讀取數(shù)據(jù)處理后送1602顯示,其顯示的時間和日期可以通過按鍵來進行調(diào)整,這樣可以使時間和日期更加的準(zhǔn)確。4.2 萬年歷結(jié)構(gòu)原理圖在軟件設(shè)計的過程中,利用了Keil這個軟件在程序錄入和調(diào)試的時候的優(yōu)越性,讓我能夠在編寫軟件的時候很方便的發(fā)現(xiàn)軟件中的錯誤,現(xiàn)在已經(jīng)能夠使用Keil對所設(shè)計的程序進行調(diào)試。對于PROTEUS這款軟件,也能熟練掌握電路設(shè)計仿真。由于平時沒有接觸過這兩個軟件,加上畢業(yè)設(shè)計的時間有限,對于他們的連接調(diào)試程序,未能熟練掌握,但以后有機會的話會再好好學(xué)習(xí)的。本次設(shè)計的電子萬年歷也存在的不足的地方,有待于以后的改進。致 謝經(jīng)過三個多月的時間,畢業(yè)設(shè)計按照預(yù)期完成了,由于本人的知識水平有限,論文和設(shè)計中有遺漏和缺陷的地方懇請指正。感謝我的導(dǎo)師龍艦涵老師給了我莫大的幫助,在他悉心的指導(dǎo)和嚴(yán)格的要求下,作品和論文順利完成了。論文從選題和最終完成,凝結(jié)著導(dǎo)師的辛勤的汗水,他不辭勞苦的教導(dǎo)、嚴(yán)謹(jǐn)?shù)淖黠L(fēng)使我終生受益。在此畢業(yè)設(shè)計完成之際,謹(jǐn)向?qū)熀退袔椭^我的老師致以崇高的敬意和衷心的感謝。還有感謝家人、朋友還有宿舍里所有的室友,是他們給我創(chuàng)造了良好的學(xué)習(xí)氛圍,在學(xué)習(xí)和生活中給了我支持和幫助。在以后的學(xué)習(xí)生活中我會時時敦促自己更加努力,不辜負(fù)師長、親人、朋友對我的期望。參考文獻1 趙長德.微型計算機原理與接口技術(shù)M.北京:機械工業(yè)出版社,1999:98-350.2 蘇平.單片機的原理與接口技術(shù)M.北京:電子工業(yè)出版社,2006:1-113.3 王忠民.微型計算機原理M.西安:西安科技大學(xué)出版社,2003:15-55.4 胡戴明.計算機組成原理M.北京:經(jīng)濟科學(xué)出版社,2005:43-56.5 紀(jì)宗南.單片機外圍器件使用手冊M.北京:北京航空航天大學(xué)出版社,622-655.6 周雪.模擬電子技術(shù)M西安: 西安電子科技大學(xué)出版社,2005:81-95.7 左金生.電子與模擬電子技術(shù)M.北京:電子工業(yè)出版社,2004:105-131.8 尹勇.單片機開發(fā)環(huán)境Vision2的開發(fā)指南M. 北京:北京航空航天大學(xué)出版社,2004:173-199.9 張斌武.單片機系統(tǒng)Proteus設(shè)計與仿真M. 北京:電子工業(yè)出版社,2005:52-89.附錄附錄【1】仿真圖片 附錄【2】程序代碼#include #include #define uchar unsigned char#define uint unsigned intsbit SDA=P10; /DS1302數(shù)據(jù)線sbit CLK=P11; /DSB1302時鐘線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;/一年中每個月的天數(shù),二月的天數(shù)由年份決定uchar MonthsDays=0,31,0,31,30,31,30,31,31,30,31,30,31;/周日,周一到周六0,1-6 讀取DS1302時分別是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; /所讀取的日期時間char Adjust_Index=-1; /當(dāng)前調(diào)節(jié)的時間對象:秒,分,時,日,月,年(0,1,2,3,4,6)uchar Change_Flag=-MHDM-Y; /(分,時,日,月,年)(不調(diào)節(jié)秒周)/延時,向DS1302寫、讀一字節(jié)以及從DS1302指定位置度、寫數(shù)據(jù)的程序/延時-void DelayMS(uint x)uchar i;while(x-) for(i=0;i120;i+);/向DS1302寫入一個字節(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 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è)置時間-void SET_DS1302()uchar i;Write_DS1302(0x8E,0x00);/寫控制字,取消寫保護for(i=1;i7;i+) /分時日月年依次寫入/分的起始地址10000010(0x82),后面續(xù)依次是時,日,月,周,年,寫入地址每次遞增2 Write_DS1302(0x80+ 2*i,(DateTimei/104)|(DateTimei%10); Write_DS1302(0x8E,0x80);/加保護/-/讀取當(dāng)前日期時間/-void GetTime()uchar i;for(i=0;i7;i+)DateTimei=Read_Data(0x81+2*i);/- /1602LCD的若干顯示控制代碼。/uchar Read_LCD_State() 讀LCD狀態(tài)uchar Read_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()&0x80)=0x80);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;DelayMS(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(0x38);DelayMS(1);Write_LCD_Command(0x01);DelayMS(1);Write_LCD_Command(0x06);DelayMS(1);Write_LCD_Command(0x0c);DelayMS(1);/void Set_LCD_POS(uchar P) 設(shè)置液晶顯示位置void Set_LCD_POS(uchar p)Write_LCD_Command(p|0x80);/-/在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);/-/日期與時間值轉(zhuǎn)換為數(shù)字字符void Format_DateTime(uchar d,uchar *a)a0=d/10+0;a1=d%10+0;/-/判斷是否為閏年uchar isLeapYear(uint y)return(y%4=0&y%100!=0)|(y%400=0);/-/求自2000.1.1開始的任何一天是星期幾/函數(shù)沒有通過,求出總天數(shù)后再求星期幾,/因為求總天數(shù)可能會超越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+=DateTime3;/保存星期,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; 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-; RefreshWeekDay();/刷新星期 break; case 2:/時 if(x=1&Da
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 臨床急性胸痛患者急救護理
- 一場精彩的足球比賽記敘文兼事件報道4篇
- 快遞公司物流派送記錄表格
- 無線通信網(wǎng)絡(luò)建設(shè)合作合同
- 人流與車流動態(tài)管理在提升樞紐承載能力中的創(chuàng)新實踐
- 校園里的友誼故事記敘文(9篇)
- 基礎(chǔ)教育生態(tài)系統(tǒng)演變與變革的內(nèi)在驅(qū)動力
- 農(nóng)村社區(qū)農(nóng)業(yè)生態(tài)建設(shè)協(xié)議
- 古代漢語常用詞匯的演變與含義解析教案
- 商品庫存變動與銷售記錄表
- SCMP練習(xí)試卷附答案(一)
- 國家開放大學(xué)《金融學(xué)》機考題庫
- 江蘇省蘇州市(2024年-2025年小學(xué)六年級語文)部編版小升初真題(下學(xué)期)試卷及答案
- 證據(jù)法學(xué)復(fù)習(xí)資料
- 老年骨關(guān)節(jié)病康復(fù)護理
- 【MOOC】機械工程測試技術(shù)-東南大學(xué) 中國大學(xué)慕課MOOC答案
- 【MOOC】人格與精神障礙-學(xué)做自己的心理醫(yī)生-暨南大學(xué) 中國大學(xué)慕課MOOC答案
- 經(jīng)皮內(nèi)鏡下胃(空腸)造口術(shù)臨床應(yīng)用中國專家共識(2024版)解讀
- 商標(biāo)基礎(chǔ)知識培訓(xùn)課件
- 隆基公司所簽的勞動合同
- 圍術(shù)期肺部超聲的應(yīng)用
評論
0/150
提交評論