版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 課 程 設(shè) 計(jì) 報(bào) 告設(shè)計(jì)名稱: 電子萬(wàn)年歷設(shè)計(jì) 學(xué)生姓名: 于 坤 杰 學(xué) 號(hào): 201016010127 專業(yè)班級(jí): 自動(dòng)化10101班 指導(dǎo)教師: 王 南 蘭 完成時(shí)間: 2013年6月9日 評(píng)閱意見(jiàn): 評(píng)閱教師 日期 報(bào)告成績(jī): 摘要本文介紹了基于AT89C51單片機(jī)的多功能電子萬(wàn)年歷的硬件結(jié)構(gòu)和軟硬件設(shè)計(jì)方法。系統(tǒng)以AT89C51單片機(jī)為控制器,以串行時(shí)鐘日歷芯片DS1302記錄日歷和時(shí)間,它可以對(duì)年、月、日、時(shí)、分、秒進(jìn)行計(jì)時(shí),還具有閏年補(bǔ)償?shù)榷喾N功能。萬(wàn)年歷采用直觀的數(shù)字顯示,可以在LED上同時(shí)顯示年、月、日、周日、時(shí)、分、秒,還具有時(shí)間校準(zhǔn)等功能。此萬(wàn)年歷具有讀取方便、顯示直
2、觀、功能多樣、電路簡(jiǎn)潔、成本低廉等諸多優(yōu)點(diǎn),具有廣闊的市場(chǎng)前景。關(guān)鍵字AT89C51;電子萬(wàn)年歷; DS13021 緒論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í)顯示年、月、日、時(shí)、分、秒和溫度等信息,還具有時(shí)間校準(zhǔn)等功能。該電路采用AT89C51單片機(jī)作為核心,功耗小,能在3V的低壓工作,電壓可選用35V電壓供電。此萬(wàn)年歷具有讀取方便、顯示直觀、功能多樣、電路簡(jiǎn)潔、成本低廉等諸
3、多優(yōu)點(diǎn),符合電子儀器儀表的發(fā)展趨勢(shì),具有廣闊的市場(chǎng)前景。1.2課題的研究目的與意義二十一世紀(jì)是數(shù)字化技術(shù)高速發(fā)展的時(shí)代,而單片機(jī)在數(shù)字化高速發(fā)展的時(shí)代扮演著極為重要的角色。電子萬(wàn)年歷的開(kāi)發(fā)與研究在信息化時(shí)代的今天亦是當(dāng)務(wù)之急,因?yàn)樗鼞?yīng)用在學(xué)校、機(jī)關(guān)、企業(yè)、部隊(duì)等單位禮堂、訓(xùn)練場(chǎng)地、教學(xué)室、公共場(chǎng)地等場(chǎng)合,可以說(shuō)遍及人們生活的每一個(gè)角落。所以說(shuō)電子萬(wàn)年歷的開(kāi)發(fā)是國(guó)家之所需,社會(huì)之所需,人民之所需。由于社會(huì)對(duì)信息交換不斷提高的要求及高新技術(shù)的逐步發(fā)展,促使電子萬(wàn)年歷發(fā)展并且投入市場(chǎng)得到廣泛應(yīng)用。1.3課題解決的主要內(nèi)容本課題所研究的電子萬(wàn)年歷是單片機(jī)控制技術(shù)的一個(gè)具體應(yīng)用,主要研究?jī)?nèi)容包括以下幾個(gè)
4、方面:(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)單。(4)根據(jù)設(shè)計(jì)的硬件電路,編寫(xiě)控制AT89C51芯片的單片機(jī)程序。(5)通過(guò)編程、編譯、調(diào)試,把程序下載到單片機(jī)上運(yùn)行,并實(shí)現(xiàn)本設(shè)計(jì)的功能。(6)在硬件電路和軟件程序設(shè)計(jì)時(shí),主要考慮提高人機(jī)界面的友好性,方便用戶操作等因素。(7)軟件設(shè)計(jì)時(shí)必須要有完善的思路,要做到程序簡(jiǎn)單,調(diào)試方便。2 系統(tǒng)的總體設(shè)計(jì)單片機(jī)電子萬(wàn)年歷的制作有多種方法,可供選擇的器件和運(yùn)用的技術(shù)也有很多
5、種。所以,系統(tǒng)的總體設(shè)計(jì)方案應(yīng)在滿足系統(tǒng)功能的前提下,充分考慮系統(tǒng)使用的環(huán)境,所選的結(jié)構(gòu)要簡(jiǎn)單使用、易于實(shí)現(xiàn),器件的選用著眼于合適的參數(shù)、穩(wěn)定的性能、較低的功耗以及低廉的成本。2.1系統(tǒng)方案的構(gòu)想與確定方案一:系統(tǒng)分為主控制器模塊、顯示模塊、按鍵開(kāi)關(guān)模塊,主控制模塊采用AT89C52單片機(jī)為控制中心,顯示模塊采用普通的共陰LED數(shù)碼管,鍵輸入采用中斷實(shí)現(xiàn)功能調(diào)整,計(jì)時(shí)使用AT89C52單片機(jī)自帶的定時(shí)器功能,實(shí)現(xiàn)對(duì)時(shí)間、日期的操作,通過(guò)按鍵盤(pán)開(kāi)關(guān)實(shí)現(xiàn)對(duì)時(shí)間、日期的調(diào)整。方案二:系統(tǒng)分為主控模塊、時(shí)鐘電路模塊、按鍵掃描模塊,LCD顯示模塊,電源電路、復(fù)位電路、晶振電路等模塊。主控模塊采用AT89
6、C52單片機(jī),按鍵模塊用四個(gè)按鍵,用于調(diào)整時(shí)間,顯示模塊采用LCD1602,時(shí)鐘電路模塊采用DS1302時(shí)鐘芯片實(shí)現(xiàn)對(duì)時(shí)間、日期的操作。兩個(gè)方案工作原理大致相同,只有顯示模塊和時(shí)鐘電路不同。LED數(shù)碼管價(jià)格適中,對(duì)于數(shù)字顯示效果較好,而且使用單片機(jī)的端口也較少; LCD1602液晶顯示屏,顯示功能強(qiáng)大,可以顯示大量文字、圖形,顯示多樣性,清晰可見(jiàn),價(jià)格相對(duì)LED數(shù)碼管來(lái)說(shuō)要昂貴些,但是基于本設(shè)計(jì)顯示的東西較多,若采用LED數(shù)碼管的話,所需數(shù)碼管較多,而且不利于控制,因此選擇LCD1602作為顯示模塊。DS1302是一款高性能的實(shí)時(shí)時(shí)鐘芯片,以計(jì)時(shí)準(zhǔn)確、接口簡(jiǎn)單、使用方便、工作電壓范圍寬和低功耗
7、等優(yōu)點(diǎn),得到廣泛的應(yīng)用,實(shí)時(shí)時(shí)鐘有秒、分、時(shí)、星期、日、月和年,月小于31天時(shí)可以自動(dòng)調(diào)整,并具有閏年補(bǔ)償功能,而且在掉電時(shí)能夠在外部紐扣電池的供電下繼續(xù)工作。單片機(jī)有定時(shí)器的功能,但時(shí)間誤差較大,且需要編寫(xiě)時(shí)鐘程序,因此采用DS1302作為時(shí)鐘電路。對(duì)比以上方案,結(jié)合設(shè)計(jì)技術(shù)指標(biāo)與要求我們選擇了方案二進(jìn)行設(shè)計(jì)。2.2 器件的選用元件名稱 型號(hào) 數(shù)量/個(gè)單片機(jī) AT89C52 1 時(shí)鐘芯片 DS1302 1晶振 12MHz 1晶振 32.768kHz 1電容 30pF 2電容 22uF 1按鍵開(kāi)關(guān) 4電阻 10K 9滑動(dòng)變阻器 1K 1電池 1.5V 4LCD LCD1602 1電源Vcc +
8、5V 1導(dǎo)線 若干2.3邏輯總框圖:該電子萬(wàn)年歷的總體設(shè)計(jì)框圖如圖(1)所示。3 系統(tǒng)硬件電路的設(shè)計(jì)3.1主控制系統(tǒng)單片機(jī)中央處理系統(tǒng)的方案設(shè)計(jì),選用AT89C52單片機(jī)作為中央處理器,如圖(2)所示。該單片機(jī)除了擁有MCS-51系列單片機(jī)的所有優(yōu)點(diǎn)外,內(nèi)部還具有8K的在系統(tǒng)可編程FLASH存儲(chǔ)器,低功耗的空閑和掉電模式,極大的降低了電路的功耗,還包含了定時(shí)器、程序存儲(chǔ)器、數(shù)據(jù)存儲(chǔ)器等硬件,其硬件能符合整個(gè)控制系統(tǒng)的要求,不需要外接其他存儲(chǔ)器芯片和定時(shí)器件,方便地構(gòu)成一個(gè)最小系統(tǒng)。整個(gè)系統(tǒng)結(jié)構(gòu)緊湊,抗干擾能力強(qiáng),性價(jià)比高。3.2時(shí)鐘振蕩電路時(shí)鐘振蕩電路圖(3)所示,時(shí)鐘振蕩電路用于產(chǎn)生單片機(jī)正
9、常工作時(shí)所需要的時(shí)鐘信號(hào),電路由兩個(gè)30pF的瓷片電容和一個(gè)12MHz的晶振組成,并接入到單片機(jī)的XTAL1和XTAL2引腳處,使單片機(jī)工作于內(nèi)部振蕩模式。此電路在加電后延遲大約10ms振蕩器起振,在XTAL2引腳產(chǎn)生幅度為3V左右的正弦波時(shí)鐘信號(hào),其振蕩頻率主要由石英晶振的頻率決定。電路中兩個(gè)電容C1、C2的作用使電路快速起振,提高電路的運(yùn)行速度。 圖(3) 時(shí)鐘振蕩電路圖 圖(4) 復(fù)位電路3. 3復(fù)位電路復(fù)位電路由電阻和極性電容組成,如圖(4)所示,通過(guò)高電平使單片機(jī)復(fù)位,在時(shí)鐘電路開(kāi)始工作后,當(dāng)高電平的時(shí)間超過(guò)大約2us時(shí),即可實(shí)現(xiàn)復(fù)位。此復(fù)位電路為上電復(fù)位,較為簡(jiǎn)單。若改進(jìn)可以添加手
10、動(dòng)復(fù)位的功能,上電復(fù)位發(fā)生在開(kāi)機(jī)加電時(shí),由系統(tǒng)自動(dòng)完成,手動(dòng)復(fù)位通過(guò)一個(gè)按鍵來(lái)實(shí)現(xiàn),在程序運(yùn)行時(shí),若遇到死機(jī),死循環(huán)或程序“跑飛”等情況,通過(guò)手動(dòng)復(fù)位就可以實(shí)現(xiàn)重新啟動(dòng)的操作。手動(dòng)按鈕復(fù)位需要人為在復(fù)位輸入端RST上加入高電平。一般采用的辦法是在RST端和正電源Vcc之間接一個(gè)按鈕和一個(gè)電阻。 34 DS1302時(shí)鐘電路時(shí)鐘電路主要由時(shí)鐘芯片DS1302、備用電池、晶振等幾部分組成,如圖(6)所示。DS1302采用3線串行接口,占用引腳少,內(nèi)部集成了可編程日歷時(shí)鐘,用戶可以根據(jù)需要通過(guò)單片機(jī)的控制來(lái)自行設(shè)置,支持雙電源供電,可以使用外部主電源和備用電源,備份電源能夠使時(shí)鐘芯片繼續(xù)工作。 圖(5
11、) DS1302管腳圖 圖(6) DS1302時(shí)鐘電路DS1302各引腳的功能為:8: Vcc1:備用電池端;1: Vcc2:5V電源。當(dāng)Vcc2>Vcc1+0.2V時(shí),由Vcc2向DS1302供電,當(dāng)Vcc2< Vcc1時(shí),由Vcc1向DS1302供電;7: SCLK:串行時(shí)鐘,輸入; 6: I/O:數(shù)據(jù)輸入輸出口;5: CE/RST:復(fù)位腳;2、3: X1、X2 是外接晶振腳 (32.768KHZ的晶振);4: 地(GND)。DS1302有關(guān)日歷、時(shí)間的寄存器:圖(7)DS1302有關(guān)日歷、時(shí)間的寄存器1、秒寄存器(81h、80h)的位7定義為時(shí)鐘暫停標(biāo)志(CH)。
12、當(dāng)初始上電時(shí)該位置為1,時(shí)鐘振蕩器停止,DS1302處于低功耗狀態(tài);只有將秒寄器的該位置改寫(xiě)為0時(shí),時(shí)鐘才能開(kāi)始運(yùn)行。2、小時(shí)寄存器(85h、84h)的位7用于定義DS1302是運(yùn)行于12小時(shí)模式還是24小時(shí)模式。當(dāng)為高時(shí),選擇12小時(shí)模式。在12小時(shí)模式時(shí),位5是 ,當(dāng)為1時(shí),表示PM。在24小時(shí)模式時(shí),位5是第二個(gè)10小時(shí)位3、控制寄存器(8Fh、8Eh)的位7是寫(xiě)保護(hù)位(WP),其它7位均置為0。在對(duì)任何的時(shí)鐘和RAM的寫(xiě)操作之前,WP位必須為0。當(dāng)WP位為1時(shí),寫(xiě)保護(hù)位防止對(duì)任一寄存器的寫(xiě)操作。也就是說(shuō)在電路上電的初始態(tài)WP是1,這時(shí)是不能改寫(xiě)上面任何一個(gè)時(shí)間寄存器的,只有首先將WP改
13、寫(xiě)為0,才能進(jìn)行其它寄存器的寫(xiě)操作。DS1302讀寫(xiě)時(shí)序 DS1302是SPI總線驅(qū)動(dòng)方式。它不僅要向寄存器寫(xiě)入控制字,還需要讀取相應(yīng)寄存器的數(shù)據(jù)。DS1302的控制字如圖(8):圖(8)DS1302的控制字圖控制字的最高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫(xiě)入到DS1302中。位6:如果為0,則表示存取日歷時(shí)鐘數(shù)據(jù),為1表示存取RAM數(shù)據(jù);位5至位1(A4A0):指示操作單元的地址;位0(最低有效位):如為0,表示要進(jìn)行寫(xiě)操作,為1表示進(jìn)行讀操作。讀數(shù)據(jù):讀數(shù)據(jù)時(shí)在緊跟8位的控制字指令后的下一個(gè)SCLK脈沖的下降沿,讀出DS1302的數(shù)據(jù),讀出的數(shù)據(jù)是從最低位到最高位。寫(xiě)數(shù)據(jù)
14、:控制字總是從最低位開(kāi)始輸出。在控制字指令輸入后的下一個(gè)SCLK時(shí)鐘的上升沿時(shí),數(shù)據(jù)被寫(xiě)入DS1302,數(shù)據(jù)輸入也是從最低位(0位)開(kāi)始。35按鍵電路按鍵電路由四個(gè)輕觸開(kāi)關(guān)組成,如圖(9)所示。按鍵用來(lái)調(diào)整時(shí)間,其一端直接接到單片機(jī)的端口,另一端接地,當(dāng)按下按鍵時(shí),相應(yīng)的端口變?yōu)榈碗娖?,通過(guò)一個(gè)與門(mén)只要這四個(gè)按鍵有一個(gè)按下就會(huì)在P3.2檢測(cè)到一低電平就觸發(fā)外部中斷0進(jìn)入按鍵調(diào)節(jié)程序中,通過(guò)與個(gè)各鍵相連的端口P3.4_P3.7可以判斷是哪個(gè)鍵按下,從而作相應(yīng)的操作。圖(9) 按鍵電路3.6顯示電路1602液晶也叫1602字符型液晶 它是一種專門(mén)用來(lái)顯示字母、數(shù)字、符號(hào)等的點(diǎn)陣型液晶模塊 它有若干
15、個(gè)5X7或者5X11等點(diǎn)陣字符位組成,每個(gè)點(diǎn)陣字符位都可以顯示一個(gè)字符。顯示電路采用LCD1602液晶顯示,如圖(10)所示,圖中只畫(huà)出了其相應(yīng)的接口,3腳用于調(diào)節(jié)LCD1602的背光,4、5、6為L(zhǎng)CD1602的控制口,用于控制其寫(xiě)入或是讀出指令,7至14腳為L(zhǎng)CD1602的數(shù)據(jù)口,將數(shù)傳送到LCD1602中。圖(10) LCD1602顯示電路LCD1602的特性+5V電壓,對(duì)比度可調(diào);內(nèi)含復(fù)位電路;提供各種控制命令,如:清屏、字符閃爍、光標(biāo)閃爍、顯示移位等多種功能;有80字節(jié)顯示數(shù)據(jù)存儲(chǔ)器DDRAM;內(nèi)建有160個(gè)5X7點(diǎn)陣的字型的字符發(fā)生器CGROM,8個(gè)可由用戶自定義的5X7的字符發(fā)生
16、器CGRAM;基本操作時(shí)序: 讀狀態(tài):輸入:RS=L,RW=H,E=H;輸出:DB0DB7=狀態(tài)字 ;寫(xiě)指令:輸入:RS=L,RW=L,E=下降沿脈沖,DB0DB7=指令碼 ;輸出:無(wú)。讀數(shù)據(jù):輸入:RS=H,RW=H,E=H;輸出:DB0DB7=數(shù)據(jù) ;寫(xiě)數(shù)據(jù):輸入:RS=H,RW=L,E=下降沿脈沖,DB0DB7=數(shù)據(jù) ;輸出:無(wú)。LCD1602的各種指令不再一一說(shuō)明。4 系統(tǒng)的軟件設(shè)計(jì)4.1程序流程圖主程序首先初始化定時(shí)器、LCD1602及DS1302,然后就開(kāi)始查詢按鍵,有鍵按下則開(kāi)始調(diào)整時(shí)間和日期,若沒(méi)有按下,則執(zhí)行下面的時(shí)間、日期的顯示,最后依次循環(huán)這些相同的操作,相應(yīng)流程圖如圖(
17、11)所示:圖(12)程序流程圖按鍵的檢測(cè)是通過(guò)中斷的辦法來(lái)實(shí)現(xiàn),利用按鍵進(jìn)行間調(diào)整。 K1按下則開(kāi)始設(shè)置時(shí)間及日期,同時(shí)在第一行最右端顯示被選擇的對(duì)象,第一次按下K1時(shí),設(shè)置年份,若按下K3,則是減1操作,按下K2是加1操作,設(shè)置好年后,第二次按下K1時(shí),則是設(shè)置月份,按K3減,按K2則加1,依次循環(huán)下去,則可以將時(shí)間和日期設(shè)置完畢,K4是確定鍵,設(shè)置好按下即可保存設(shè)置了。4. 2軟件設(shè)計(jì)軟件總設(shè)計(jì):主程序首先對(duì)系統(tǒng)環(huán)境初始化,設(shè)置定時(shí)器T0工作模式為16位定時(shí)/計(jì)數(shù)器模式,置位總中斷允許位EA,并對(duì)鍵盤(pán)端口置位,再對(duì)LCD1602初始化,DS1302初始化。接著掃描鍵盤(pán),在鍵盤(pán)程序里面是對(duì)
18、時(shí)間、日期及鬧鐘的調(diào)整,最下面是時(shí)間的顯示。軟件程序編寫(xiě):軟件程序編寫(xiě)的好壞直接影響著系統(tǒng)運(yùn)行情況的良好。因本程序涉及的模塊較多,所以程序編寫(xiě)也采用模塊化設(shè)計(jì),C語(yǔ)言具有編寫(xiě)靈活、移植方便、便于模塊化設(shè)計(jì)的特點(diǎn),所以本系統(tǒng)的軟件采用C51編寫(xiě)。具體程序見(jiàn)附件一:程序4.3軟件調(diào)試在軟件調(diào)試過(guò)程中,當(dāng)調(diào)節(jié)時(shí)間和日期后,單片機(jī)上電后更新的是PC的時(shí)間,后來(lái)查找資料發(fā)現(xiàn),是設(shè)置ds1302的問(wèn)題, 對(duì)于開(kāi)發(fā)板上的液晶一般RW都接的地,故不需要讀液晶狀態(tài),也不需要讀忙,但在仿真中還是加上了這一部分。還有一個(gè)問(wèn)題,在按鍵操作時(shí)有時(shí)會(huì)出現(xiàn)功能不穩(wěn)定,這是由于按鍵存在抖動(dòng),所以后來(lái)加個(gè)去抖動(dòng)的延時(shí)后在判斷,
19、基本就可以解決問(wèn)題,5整體電路與仿真結(jié)果分析電子萬(wàn)年歷硬件電路圖及仿真如圖(13)所示,系統(tǒng)由AT89C52單片機(jī),按鍵掃描電路、顯示電路、時(shí)鐘電路、晶振電路、復(fù)位電路及電源指示電路。仿真正確顯示了時(shí)間,在LCD1602中正確顯示了當(dāng)前日期、時(shí)間,通過(guò)按按鍵K1,就可以開(kāi)始設(shè)置時(shí)間,依次按K1依次在年、月、日、時(shí)、分之間切換,按K2鍵用于加1操作,K3鍵用于減1操作,K4是確定按鈕。仿真正確顯示了時(shí)間和日期,符合設(shè)計(jì)的要求。圖(13) 電子萬(wàn)年歷硬件電路圖結(jié)論與心得在這學(xué)期的課程序設(shè)計(jì)中,收獲知識(shí)的同時(shí),還收獲了閱歷,收獲了成熟,通過(guò)查找大量資料,請(qǐng)教老師,以及不懈的努力,不僅培養(yǎng)了獨(dú)立思考、
20、 動(dòng)手制作的能力,在各種其它能力上也都有了提高。更重要的是,在課程序設(shè)計(jì)里,我們學(xué)會(huì)了很多學(xué)習(xí)的方法,知道了理論和實(shí)踐的巨大差別。而這是以后最實(shí)用的,真的是受益匪淺。要面 對(duì)社會(huì)的挑戰(zhàn),只有不斷的學(xué)習(xí)、實(shí)踐,再學(xué)習(xí)、再實(shí)踐。同時(shí)在與老師和同學(xué)的交流過(guò)程中,互動(dòng)學(xué)習(xí),將知識(shí)融會(huì)貫通。通過(guò)自己的努力,做出了一個(gè)萬(wàn)年歷,對(duì)以后的學(xué)習(xí)是一個(gè)莫大的鼓舞,激起了我的學(xué)習(xí)興趣和開(kāi)發(fā)創(chuàng)新思維。致謝從一定程度上說(shuō),通過(guò)本次的電子萬(wàn)年歷的設(shè)計(jì),讓我懂得了許多光靠書(shū)本閱讀學(xué)不來(lái)的知識(shí),并且,在整個(gè)設(shè)計(jì)的過(guò)程中,發(fā)現(xiàn)自己還有好專業(yè)的基礎(chǔ)知識(shí)還沒(méi)有掌握,這讓自己有了很深的醒悟,在接下來(lái)的學(xué)習(xí)中,應(yīng)該告誡自己多花時(shí)間放在
21、學(xué)習(xí)上,盡可能的讓自己的專業(yè)知識(shí)扎實(shí)一些,最后能夠勉強(qiáng)成功完成本次的課程設(shè)計(jì)。在這里,我要衷心的謝謝我的父母給與我上大學(xué)的機(jī)會(huì),讓我有機(jī)會(huì)接觸這方面的知識(shí),豐富自己的專業(yè)知識(shí)其次,我要感謝學(xué)校的教育方針,是學(xué)校一起組織我們大家開(kāi)展此項(xiàng)課程設(shè)計(jì)課程,并且嚴(yán)格要求我們獨(dú)立做出實(shí)物來(lái),嚴(yán)格把好了質(zhì)量這一關(guān);再者,我還要感謝單片機(jī)技術(shù)的授課老師王老師,在她的帶領(lǐng)和指導(dǎo)下,讓我們學(xué)習(xí)和了解了單片機(jī)方面的知識(shí),在此基礎(chǔ)上,我們才能完成本設(shè)計(jì)的所有任務(wù),也是她讓我知道我應(yīng)該利用自己盡可能多的時(shí)間用知識(shí)來(lái)充實(shí)自己,不要浪費(fèi)現(xiàn)在學(xué)習(xí)新知識(shí)的大好時(shí)光,由衷的謝謝王老師,您辛苦。最后,我要感謝身邊的同學(xué)在課程設(shè)計(jì)的
22、過(guò)程中給予我的很多幫助,在設(shè)計(jì)的過(guò)程中,遇到的許多問(wèn)題也都得益于身邊同學(xué)的幫助,我真誠(chéng)的感謝你們每一個(gè)人,生活在這樣的一個(gè)集體,我感覺(jué)很快樂(lè)很充實(shí),這是一個(gè)既能讓我們感覺(jué)溫暖又能學(xué)到知識(shí)的好地方。參考文獻(xiàn)1 張毅坤 陳善久, 單片微型計(jì)算機(jī)原理及應(yīng)用 西安電子科技大學(xué)出版社2 張毅剛,彭喜元,單片機(jī)原理與應(yīng)用設(shè)計(jì) 電子工業(yè)出版社3 趙建領(lǐng) 薛園園 ,零基礎(chǔ)學(xué)單片機(jī)C語(yǔ)言程序設(shè)計(jì) 機(jī)械工業(yè)出版社4 周向紅 51單片機(jī)課程設(shè)計(jì) 華中科技大學(xué)出版社, 5 趙亮 侯國(guó)銳. 單片機(jī)C語(yǔ)言編程與實(shí)例 人民郵電出版社附錄實(shí)驗(yàn)源代碼:#include <reg51.h>#include <i
23、ntrins.h>#include <string.h>#define uint unsigned int#define uchar unsigned charsbit IO= P10; /DS1302數(shù)據(jù)線sbit SCLK = P11; /DS130時(shí)鐘線sbit RST = P12; /DS1302復(fù)位線sbit RS = P20; /LCD數(shù)據(jù)/命令選擇端sbit RW = P21; /LCD讀/寫(xiě)控制sbit EN = P22; /LCD使能端sbit K1=P34;/選擇sbit K2=P35;/加sbit K3=P36;/減sbit K4=P37; /確定uch
24、ar tCount=0;uchar MonthsDays=0,31,0,31,30,31,30,31,31,30,31,30,31;uchar *WEEK="SUN","MON","TUS","WEN","THU","FRI","SAT"uchar LCD_DSY_BUFFER1="DATE 00-00-00 " /顯示格式uchar LCD_DSY_BUFFER2="TIME 00:00:00 "uchar Dat
25、eTime7; /所讀取的日期時(shí)間char Adjust_Index=-1; /當(dāng)前調(diào)節(jié)的時(shí)間對(duì)象:,分,是,日,月,(1,2,3,4,6)uchar Change_Flag= "-MHDM-Y" /(分,時(shí),日,月,年)(不調(diào)節(jié)秒與周)/*-延時(shí)程序-*/void DelayMS(uint ms) uchar i;while(ms-)for(i=0;i<120;i+);/-向DS1302寫(xiě)入一字節(jié)-/void Write_A_Byte_TO_DS1302(uchar x)uchar i;for(i=0;i<8;i+) IO=x&0x01; /每一位與1
26、與存入IO中SCLK=1;SCLK=0;/一個(gè)高脈沖將數(shù)據(jù)送入液晶控制器x>>=1; / 右移/-從DS1302讀取一字節(jié)-/uchar Get_A_Byte_FROM_DS1302()uchar i,b=0x00;for(i=0;i<8;i+) b |= _crol_(uchar)IO,i);SCLK=1;SCLK=0; /每一個(gè)高脈沖讀取一位數(shù)據(jù)return b/16*10+b%16; /返回BCD碼/-從DS1302指定位置讀數(shù)據(jù)-/uchar Read_Data(uchar addr) uchar dat;RST = 0;SCLK=0;RST=1; /RST高電平時(shí)讀
27、/寫(xiě) Write_A_Byte_TO_DS1302(addr); /先寫(xiě)入地址dat = Get_A_Byte_FROM_DS1302();SCLK=1;RST=0;return dat;/-向DS1302某地址寫(xiě)入數(shù)據(jù)-/void Write_DS1302(uchar addr,uchar dat)SCLK=0;RST=1;Write_A_Byte_TO_DS1302(addr);Write_A_Byte_TO_DS1302(dat);SCLK=0;RST=0; /高脈沖寫(xiě)入數(shù)據(jù)/-設(shè)置時(shí)間-/void SET_DS1302()uchar i;/寫(xiě)控制字,取消寫(xiě)保護(hù)Write_DS1302(
28、0x8E,0x00);/分時(shí)日月年依次寫(xiě)入for(i=1;i<7;i+) /分的起始地址10000010(0x82),后面依次是時(shí),日,月,周,年,寫(xiě)入地址每次遞增2Write_DS1302(0x80+2*i,(DateTimei/10<<4)|(DateTimei%10); Write_DS1302(0x8E,0x80); /加保護(hù)/-讀取當(dāng)前日期時(shí)間-/void GetTime()uchar i;for(i=0;i<7;i+)DateTimei=Read_Data(0X81+2*i);/-讀LCD狀態(tài)-/uchar Read_LCD_State()uchar sta
29、te;RS=0;RW=1;EN=1; /輸出:D0D7=狀態(tài)字DelayMS(1);state=P0; /從P0口讀LCD狀態(tài)EN = 0;DelayMS(1);return state; /-忙等待-/void LCD_Busy_Wait() while(Read_LCD_State()&0x80)=0x80);DelayMS(5);/-向LCD寫(xiě)數(shù)據(jù)-/void Write_LCD_Data(uchar dat) LCD_Busy_Wait();RS=1;EN=0;RW=0; /寫(xiě)數(shù)據(jù),EN為高脈沖,P0=dat;EN=1;DelayMS(1);EN=0;/-寫(xiě)LCD指令-/voi
30、d Write_LCD_Command(uchar cmd) LCD_Busy_Wait();RS=0;EN=0;RW=0; /寫(xiě)指令,EN高脈沖,輸出:D0D7=數(shù)據(jù)P0=cmd;EN=1;DelayMS(1);EN=0;/-LCD初始化-/void Init_LCD() Write_LCD_Command(0x38); /設(shè)置16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù)接口DelayMS(1);Write_LCD_Command(0x01); /顯示清零,數(shù)據(jù)指針清零DelayMS(1);Write_LCD_Command(0x06); /寫(xiě)一個(gè)字符后地址指針自動(dòng)加1DelayMS(1);Write
31、_LCD_Command(0x0c); /設(shè)置開(kāi)顯示,不顯示光標(biāo)DelayMS(1);/-/設(shè)置液晶顯示位置/-void Set_LCD_POS(uchar p)Write_LCD_Command(p|0x80);/相當(dāng)于在0x80基礎(chǔ)上加入位置量/-在LCD上顯示字符串-/void Display_LCD_String(uchar p,uchar *s)uchar i;Set_LCD_POS(p);for(i=0;i<16;i+)Write_LCD_Data(si); /在固定位置顯示時(shí)間日期DelayMS(1);/-日期與時(shí)間值轉(zhuǎn)換為數(shù)字字符-/void Format_DateTim
32、e(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開(kāi)始的任何一天是星期幾/函數(shù)沒(méi)有通過(guò),求出總天數(shù)后再求星期幾/因?yàn)榍罂偺鞌?shù)可能會(huì)超出uint的范圍void RefreshWeekDay()uint i,d,w=5; /已知1999.12.31是周五for(i=2000;i<2000+DateTime6;i+)d=isLeapYear(i)?366:365
33、;w=(w+d)%7;d=0;for(i=1;i<DateTime4;i+)d+=MonthsDaysi;d+=DateTime3;/保存星期,06表示星期日,星期一,二,.,六,為了與DS1302的期格式匹配,返回值需要加DateTime5=(w+d)%7+1;/*年月日時(shí)分+/-*/void DateTime_Adjust(char x)switch(Adjust_Index)case 6: /年00-99if(x=1&&DateTime6<99) DateTime6+;if(x=-1&&DateTime6>0) DateTime6-;/獲
34、取2月天數(shù)MonthsDays2=isLeapYear(2000+DateTime6)?29:28;/如果年份變化后當(dāng)前月份的天數(shù)大于上限則設(shè)為上限if(DateTime3>MonthsDaysDateTime4)DateTime3=MonthsDaysDateTime4;RefreshWeekDay(); /刷新星期break;case 4: /月01-12if(x=1&&DateTime4<12) DateTime4+;if(x=-1&&DateTime4>1) DateTime4-;MonthsDays2=isLeapYear(2000+
35、DateTime6)?29:28;if(DateTime3>MonthsDaysDateTime4)DateTime3=MonthsDaysDateTime4;RefreshWeekDay();break;case 3: /日00-28、29、30、31,調(diào)節(jié)之前首先根據(jù)年份得出該年中二月的天數(shù)MonthsDays2=isLeapYear(2000+DateTime6)?29:28;/根據(jù)當(dāng)前月份決定調(diào)節(jié)日期的上限 if(x=1&&DateTime3<MonthsDaysDateTime4)DateTime3+; if(x=-1&&DateTime3
36、>0) DateTime3-;RefreshWeekDay();break;case 2: /時(shí)if(x=1&&DateTime2<23) DateTime2+;if(x=-1&&DateTime2>0) DateTime2-;break;case 1:/分if(x=1&&DateTime1<59) DateTime1+;if(x=-1&&DateTime1>0) DateTime1-;break;/-定時(shí)器0每秒刷新LCD顯示-/void T0_INT() interrupt 1TH0=-50000/256;TL0=-50000%256;if(+tCount !=2)return;tCount=0;/按指定格式生成待顯示的日期時(shí)間串Format_DateTime(DateTime6,LCD_DSY_BUFFER1+5);Format_DateTime(DateTime4,LCD_DSY_
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年湖南外貿(mào)職業(yè)學(xué)院馬克思主義基本原理概論期末考試題附答案解析(奪冠)
- 2025年織金縣幼兒園教師招教考試備考題庫(kù)附答案解析
- 2025年浙江越秀外國(guó)語(yǔ)學(xué)院馬克思主義基本原理概論期末考試模擬題及答案解析(必刷)
- 2025年長(zhǎng)寧縣幼兒園教師招教考試備考題庫(kù)含答案解析(奪冠)
- 2025年西安歐亞學(xué)院?jiǎn)握新殬I(yè)傾向性考試題庫(kù)附答案解析
- 2025年漢中職業(yè)技術(shù)學(xué)院馬克思主義基本原理概論期末考試模擬題附答案解析(奪冠)
- 2025年贊皇縣招教考試備考題庫(kù)附答案解析
- 2025年清原滿族自治縣幼兒園教師招教考試備考題庫(kù)帶答案解析
- 2025年宜君縣幼兒園教師招教考試備考題庫(kù)及答案解析(奪冠)
- 2025年義烏工商職業(yè)技術(shù)學(xué)院馬克思主義基本原理概論期末考試模擬題帶答案解析
- 兒童顱咽管瘤臨床特征與術(shù)后復(fù)發(fā)風(fēng)險(xiǎn)的深度剖析-基于151例病例研究
- 防潮墻面涂裝服務(wù)合同協(xié)議
- GB/T 15237-2025術(shù)語(yǔ)工作及術(shù)語(yǔ)科學(xué)詞匯
- 外賣(mài)跑腿管理制度
- 造價(jià)咨詢保密管理制度
- 冷鏈物流配送合作協(xié)議
- 生物-江蘇省蘇州市2024-2025學(xué)年第一學(xué)期學(xué)業(yè)質(zhì)量陽(yáng)光指標(biāo)調(diào)研卷暨高二上學(xué)期期末考試試題和答案
- 2024年人教版一年級(jí)數(shù)學(xué)下冊(cè)教學(xué)計(jì)劃范文(33篇)
- 成都隨遷子女勞動(dòng)合同的要求
- 萬(wàn)象城項(xiàng)目總承包述標(biāo)匯報(bào)
- 小學(xué)英語(yǔ)完形填空訓(xùn)練100篇含答案
評(píng)論
0/150
提交評(píng)論