版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、目錄摘 要3ABSTRACT4一、系統(tǒng)基本方案選擇與論證51.1 單片機芯片的選擇方案與論證51.2時鐘芯片選擇51.3顯示模塊的選擇5二、系統(tǒng)硬件設(shè)計與實現(xiàn)62.1 系統(tǒng)總體框圖62.2 主控單元和按鍵部分設(shè)計72.3 LCD1602顯示模塊82.4 DS1302時鐘部分91. 工作原理:102. DS1302的控制字節(jié)103. 數(shù)據(jù)輸入輸出(I/O)114. DS1302的寄存器11三、系統(tǒng)軟件設(shè)計與實現(xiàn)123.1 系統(tǒng)總體軟件流程圖123.2 LCD1602部分123.3 DS1302部分133.4 按鍵處理子程序143.5 定時器部分15四、設(shè)計心得16五、參考文獻17教師評閱:設(shè)計思
2、路正確;仿真結(jié)果正確可信;設(shè)計成果符合要求;設(shè)計報告規(guī)范; 設(shè)計過程原始記錄(元件參數(shù)、原理圖、計算等)符合要求;設(shè)計分析總結(jié)全面; 評 分: 摘 要隨著經(jīng)濟的騰飛、科技的發(fā)展,信息起著越來越重要的作用。計算機、網(wǎng)絡(luò)和嵌入式等信息技術(shù)在各個領(lǐng)域的應(yīng)用也愈來愈廣泛,尤其是嵌入式技術(shù)。在如今辦、公生活領(lǐng)域,隨處可見各種嵌入式設(shè)備,如手表、微波爐、錄像機、汽車等,都使用嵌入式系統(tǒng)。21世紀(jì),是信息化的時代,是科學(xué)技術(shù)日新月異時代。隨著科技的不斷進步與更新,以及人們對智能時代的向往,嵌入式技術(shù)將迎來屬于它的春天。本文以電子萬年歷為例,采用AT89C51作為主控芯片,選擇DS1302作為時鐘芯片,利用L
3、CD1302液晶作為顯示器件為主要部件。實現(xiàn)了以時間、年份、星期的實時顯示功能,并可對其進行修改保存。關(guān)鍵詞:嵌入式;電子萬年歷;AT89C51。ABSTRACTWith the rapid economic growth, technological development, information plays an increasingly important role. Computers, networks, and embedded in various fields such as information technology applications are increasing
4、ly widespread, especially in embedded technology. In todays office, the public areas of life, you can see a variety of embedded devices, such as watches, microwaves, VCRs, cars, etc., all use embedded systems. 21st century is the era of information technology, is the era of science and technology. A
5、s technology continues to progress and updates, as well as peoples desire for smart era, embedded technology will usher in a part of its spring.In this paper, electronic calendar, for example, using AT89C51 as the master chip, select DS1302 clock chip as using LCD1302 as a display piece for the main
6、 components. Implementation of a time, year, week, real-time display function, and can be modified to save.Keywords: Embedded; Electronic calendar; AT89C51.一、 系統(tǒng)基本方案選擇與論證1.1 單片機芯片的選擇方案與論證AT89C51是一種帶4K字節(jié)FLASH存儲器(FPEROMFlash Programmable and Erasable Read Only Memory)的低電壓、高性能CMOS 8位微處理器,俗稱單片機。它是一種帶2K字
7、節(jié)閃存可編程可擦除只讀存儲器的單片機。單片機的可擦除只讀存儲器可以反復(fù)擦除1000次。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器,AT89C2051是它的一種精簡版本。AT89C51單片機為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。1.2時鐘芯片選擇方案一:選擇AT89C51單片機內(nèi)部的定時器0或定時器1來提供基準(zhǔn)的秒信號。比如選擇定時0的方式1來計數(shù)50ms,然后循環(huán)20次,便可提供1秒的基準(zhǔn)信號,從而實現(xiàn)年、月、日、時、分等。優(yōu)點
8、:采用這種方案的話,系統(tǒng)外圍的的器件比較少,且實現(xiàn)起來比較方便,成本也比較低。但是這種方案也有其不足之處,作為萬年歷的設(shè)計,不僅要求簡單實用,最重要的是要時間準(zhǔn)確,誤差極小。缺點:誤差比較大,且沒有掉電保護的功能,也就是說在掉電之后,需要手動再調(diào)準(zhǔn)時間,使用上不是很方便。方案二:選擇DS1302時鐘芯片。DS1302 是DALLAS 公司推出的涓流充電時鐘芯片內(nèi)含有一個實時,時鐘/日歷和31 字節(jié)靜態(tài)RAM,可通過簡單的串行接口與單片機進行通信??商峁?-秒、分、時、日、月、年的信息;-每月的天數(shù)和閏年的天數(shù)可自動調(diào)整;-可通過AM/PM 指示決定采用24 或12 小時格式;-保持?jǐn)?shù)據(jù)和時鐘信
9、息時功率小于1mW。芯片的工作電壓為2.0至5.0V,提供主電源和備用電源雙電源引腳??梢詫髠潆娫催M行涓細電流充電。芯片采用串行接口方式和外部單片機進行同步通信,數(shù)據(jù)可以每次以一個字節(jié)或多個字節(jié)形式傳送時鐘信號或RAM數(shù)據(jù)。綜上所述,選擇方案二。1.3顯示模塊的選擇方案一:選擇LED數(shù)碼管動態(tài)掃描。優(yōu)點:數(shù)碼管作為平時最常見的一種的顯示器件,原理與實現(xiàn)方法相對比較簡單,對于顯示數(shù)字來說是不錯的選擇。缺點:增加外圍設(shè)備的負擔(dān),顯得不是很直觀。另外,雖說原理簡單,但對于本設(shè)計來說,實現(xiàn)起來稍顯復(fù)雜。方案二:選擇LCD12864液晶顯示模塊。LCD12864液晶顯示模塊是12864點陣的漢字圖形型
10、液晶顯示模塊,可顯示漢字及圖形,內(nèi)置8192 個中文漢字(16X16點陣)、128個字符(8X16點陣)及64X256點陣顯示RAM(GDRAM)??膳cCPU直接接口,提供兩種界面來連接微處理機:8-位并行及串行兩種連接方式。具有多種功能:光標(biāo)顯示、畫面移位、睡眠模式等。LCD12864顯示的信息很大,但隨之帶來的就是比較復(fù)雜的程序。方案三:選擇LCD1602液晶顯示模塊。LCD1602是字符點陣系列液晶模塊,它是一類專門用于顯示字母、數(shù)字、符號等的點陣型液晶顯示模塊,分為四位和八位數(shù)據(jù)傳輸方式,提供5*7點陣+光標(biāo)和5*10點陣+光標(biāo)的顯示模式,提供顯示數(shù)據(jù)緩沖區(qū)DDRAM、字符發(fā)生器CGR
11、AM、CGROM,可以使用CGRAM來存儲自己定義的最多8個5*8點陣的圖形的字模數(shù)據(jù)。程序設(shè)計相對LCD12864簡單一些。由于本設(shè)計要顯示基本的時間信息,但又不需要顯示漢字,綜合考慮,選擇方案三LCD1302液晶顯示模塊。二、 系統(tǒng)硬件設(shè)計與實現(xiàn)圖 12.1 系統(tǒng)總體框圖如圖1所示,本設(shè)計從整體的框圖上來看是比較簡單的。主要包括AT89C51主控單片機芯片、鍵盤模塊、液晶顯示模塊、時鐘芯片。主控芯片AT89C51是整個系統(tǒng)的核心,接收鍵盤傳入的信息,控制顯示液晶,從DS13202中讀取和寫入數(shù)據(jù)等等一系列的操作和控制都在這里完成;鍵盤主要是為了糾正時間,對時間進行修改;液晶模塊則是顯示時間
12、,星期,年月日;時鐘芯片部分主要是進行計時。2.2 主控單元和按鍵部分設(shè)計圖 21.主控部分:對于主控方面的設(shè)計,其實就是一個單片機的最小系統(tǒng)。主控芯片使用的是AT89C51,可降至0Hz的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電工作模式。空閑方式停止CPU的工作,但允許RAM,定時/計數(shù)器,串行通信口及中斷系統(tǒng)繼續(xù)工作。掉電方式保存RAM中的內(nèi)容,但振蕩器停止工作并禁止其它所有部件工作直到下一個硬件復(fù)位。該系統(tǒng)主要包含兩部分:時鐘部分和復(fù)位電路。下面簡單介紹一下這兩部分。時鐘部分:單片機工作時,從取指令到譯碼再進行微操作,必須在時鐘信號控制下才能有序地進行,時鐘電路就是為單片機工作提供基本時鐘
13、的。單片機的時鐘信號通常有兩種產(chǎn)生方式:內(nèi)部時鐘方式和外部時鐘方式。在本設(shè)計中顯然采取的是外部時鐘的方式。選擇的是12MHz,其機器周期是1us,也就是說執(zhí)行一條單周期指令只需要1us,執(zhí)行一條雙周期指令則需要2us。復(fù)位電路部分:無論是在單片機剛開始接上電源時,還是運行過程中發(fā)生故障都需要復(fù)位。復(fù)位電路用于將單片機內(nèi)部各電路的狀態(tài)恢復(fù)到一個確定的初始值,并從這個狀態(tài)開始工作。單片機的復(fù)位條件:必須使其RST引腳上持續(xù)出現(xiàn)兩個(或以上)機器周期的高電平。2. 按鍵部分:按鍵部分的主要功能是,對時間進行修改,包含三個按鍵和三個上拉電阻。功能鍵的作用是選擇要改變的數(shù)據(jù),按下增量鍵則是對數(shù)據(jù)在原來的
14、基礎(chǔ)上加一,減量鍵則是相反的共能。2.3 LCD1602顯示模塊圖 31. 連接說明:LCD1602顯示器部分的電路原理以及連接方式如圖3所示。其中LCD1602的RS端口連接在單片機的P2.0口;使能端連接在P2.1口上;數(shù)據(jù)端口D7至D0則連接在單片機的P0口上。2. 引腳功能簡介及說明。表1:LCD1602引腳功能第1腳:VSS為地電源。第2腳:VDD接5V正電源。第3腳:VL為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地時對比度最高,對比度過高時會產(chǎn)生“鬼影”,使用時可以通過一個10K的電位器調(diào)整對比度。第4腳:RS為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。第
15、5腳:R/W為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當(dāng)RS和R/W共同為低電平時可以寫入指令或者顯示地址,當(dāng)RS為低電平R/W為高電平時可以讀忙信號,當(dāng)RS為高電平R/W為低電平時可以寫入數(shù)據(jù)。第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。第714腳:D0D7為8位雙向數(shù)據(jù)線。第15腳:背光源正極。第16腳:背光源負極。3. LCD指令:表2:指令表圖 42.4 DS1302時鐘部分上圖示出DS1302電路原理圖,其中Vcc1為后備電源,Vcc2為主電源。在主電源關(guān)閉的情況下,也能保持時鐘的連續(xù)運行。DS1302由Vcc1或Vcc2兩者中的較大者供電。當(dāng)V
16、cc2大于Vcc1+0.2V時,Vcc2給DS1302供電。當(dāng)Vcc2小于Vcc1時,DS1302由Vcc1供電。X1和X2是振蕩源,外接32.KHz晶振。RST是復(fù)位/片選線,通過把RST輸入驅(qū)動置高電平來啟動所有的數(shù)據(jù)傳送。RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當(dāng)RST為高電平時,所有的數(shù)據(jù)傳送被初始化,允許對DS1302進行操作。如果在傳送過程中RSTS置為低電平,則會終止此次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。上電動行時,在Vcc大于等于2.5V之前,RST必須保持低電平。中有在SCLK 為低電平
17、時,才能將RST置為高電平,I/O為串行數(shù)據(jù)輸入端(雙向)。SCLK始終是輸入端。1. 工作原理:DS1302時鐘芯片主要有寄存器、控制寄存器、振蕩器、實時時鐘以及RAM組成。為了對任何數(shù)據(jù)傳送進行初始化,需要將/RST置為高電平且將8位地址和命令信息裝入移位寄存器。數(shù)據(jù)在SCLK的上升沿沿串行輸入,前8位指定訪問地址,命令字裝入移位寄存器后,在之后的時鐘周期,讀操作輸出數(shù)據(jù),寫操作輸入數(shù)據(jù)。時鐘的個數(shù)在單字節(jié)方式下為8加8(8位地址加8位數(shù)據(jù)),在多字節(jié)方式下為8加最多可達248的數(shù)據(jù)。 DS1302在每次進行讀、寫程序前都必須初始化,先把SCLK端置 “0”,接著把RST端置“1”,最后才
18、給予SCLK脈沖;讀/寫時序如下圖2.3.3所示。表2-1為DS1302的控制字,此控制字的位7必須置1,若為0則不能把對DS1302進行讀寫數(shù)據(jù)。對于位6,若對程序進行讀/寫時RAM=1,對時間進行讀/寫時,=0。位1至位5指操作單元的地址。位0是讀/寫操作位,進行讀操作時,該位為1;該位為0則表示進行的是寫操作。控制字節(jié)總是從最低位開始輸入/輸出的。表2-2為DS1302的日歷、時間寄存器內(nèi)容:“CH”是時鐘暫停標(biāo)志位,當(dāng)該位為1時,時鐘振蕩器停止,DS1302處于低功耗狀態(tài);當(dāng)該位為0時,時鐘開始運行?!癢P”是寫保護位,在任何的對時鐘和RAM的寫操作之前,WP必須為0。當(dāng)“WP”為1時
19、,寫保護位防止對任一寄存器的寫操作。2. DS1302的控制字節(jié)DS1302的控制字如表2.1所示??刂谱止?jié)的高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫入DS1302中,位6如果0,則表示存取日歷時鐘數(shù)據(jù),為1表示存取RAM數(shù)據(jù);位5至位1指示操作單元的地址;最低有效位(位0)如為0表示要進行寫操作,為1表示進行讀操作,控制字節(jié)總是從最低位開始輸出。表3 DS1302的控制字格式 RAM RD1 A4 A3 A2 A1 A0 3. 數(shù)據(jù)輸入輸出(I/O)在控制指令字輸入后的下一個SCLK時鐘的上升沿時,數(shù)據(jù)被寫入DS1302,數(shù)據(jù)輸入從低位即位0開始。同樣,在緊跟8位的控制指令字
20、后的下一個SCLK脈沖的下降沿讀出DS1302的數(shù)據(jù),讀出數(shù)據(jù)時從低位0位到高位7。如下圖所示:圖 54. DS1302的寄存器DS1302有12個寄存器,其中有7個寄存器與日歷、時鐘相關(guān),存放的數(shù)據(jù)位為BCD碼形式,其日歷、時間寄存器及其控制字見表2.2。此外,DS1302 還有年份寄存器、控制寄存器、充電寄存器、時鐘突發(fā)寄存器及與RAM相關(guān)的寄存器等。時鐘突發(fā)寄存器可一次性順序讀寫除充電寄存器外的所有寄存器內(nèi)容。 DS1302與RAM相關(guān)的寄存器分為兩類:一類是單個RAM單元,共31個,每個單元組態(tài)為一個8位的字節(jié),其命令控制字為C0HFDH,其中奇數(shù)為讀操作,偶數(shù)為寫操作;另一類為突發(fā)方
21、式下的RAM寄存器,此方式下可一次性讀寫所有的RAM的31個字節(jié),命令控制字為FEH(寫)、FFH(讀)。 表4 DS1302寄存表三、 系統(tǒng)軟件設(shè)計與實現(xiàn)圖 63.1 系統(tǒng)總體軟件流程圖從系統(tǒng)的總體流程圖可以看出,在整個程序設(shè)計中,主要涉及到LCD1602初始化,DS1302初始話,定時器0的初始化以及按鍵的處理子程序;其實還有一些其他的輔助程序,例如BCD碼與十六進制之間的轉(zhuǎn)換函數(shù)等。3.2 LCD1602部分1.初始化的流程圖圖 72.涉及到的函數(shù):1)BCD碼與十六進制之間的轉(zhuǎn)換函數(shù)。因為字符信息在LCD1602中是已BCD碼的形式存儲的。所以需要將十六進制的數(shù)據(jù)轉(zhuǎn)換成BCD碼的形式,
22、在傳到液晶里去。將BCD轉(zhuǎn)十六進制的方法:原高4位數(shù)據(jù)*10+低4位即可。反過來的方法:將十六進制數(shù)除以10,所得整數(shù)部分乘以16再加上原數(shù)據(jù)的個位即可。2)延時函數(shù):延時函數(shù)相對比較簡單,直接使用兩個循環(huán)即可。3)液晶寫入指令和數(shù)據(jù)函數(shù):這兩個函數(shù)的實現(xiàn)也是很簡單的,設(shè)定相應(yīng)模式,直接使用賦值語句即可。比如說寫如數(shù)據(jù)的函數(shù):先將RS口置一,然后將數(shù)據(jù)賦值給數(shù)據(jù)端口,延時一段時間,拉高使能端,再延時一段時間,最后再拉低使能端即可完成。相應(yīng)的寫入指令函數(shù),也可類似操作。3.3 DS1302部分圖 81. 初始化的流程圖: 2.涉及到的函數(shù):1)1302字節(jié)寫函數(shù):主要實現(xiàn)往DS1302中寫入一個
23、字節(jié)的數(shù)據(jù)。實現(xiàn)方法:首先啟動讀寫操作,使用循環(huán),從最低位開始,一位一位的往里寫,每寫一位數(shù)據(jù)后,要制造一個時鐘上升沿,這樣數(shù)據(jù)采用寫入。2)字節(jié)讀函數(shù):此函數(shù)的功能與寫函數(shù)的正好相反,是從DS1302中讀出一個數(shù)據(jù)。只不過在讀出的時候,是要制造一個下降沿才有效。3)液晶地址、數(shù)據(jù)讀函數(shù)。在這個函數(shù)中,首先一樣,得啟動讀寫操作,然后調(diào)用寫函數(shù)寫入地址,再調(diào)用讀函數(shù),讀出數(shù)據(jù)即可。3.4 按鍵處理子程序圖 91.功能鍵程序流程圖:當(dāng)判斷到功能鍵按下時,使用一個延時來消去抖動。然后將標(biāo)志加1,判斷標(biāo)志是否為9,如果為9將其置為1,這位做的原因是,總共需要修改的數(shù)據(jù)只有8位,因此以8為周期。然后根據(jù)
24、不同的標(biāo)志,使用switch,case語句來判斷需要修改的到底是哪個數(shù)據(jù)。圖 102.增、減量鍵程序流程圖,以增量鍵為例:增量鍵和減量鍵只有在功能鍵按下的時候才有效,其他情況不會產(chǎn)生任何操作。當(dāng)功能鍵按下的時候,程序掃描這兩個按鍵。比如當(dāng)增量鍵按下的時候,同樣會利用以個延時來消去抖動。然后等待按鍵釋放,按鍵釋放后根據(jù)不同的標(biāo)志值,將相應(yīng)的數(shù)據(jù)加1,然后送至液晶顯示并送至DS1302芯片存貯。而相應(yīng)的減量鍵則是一樣的。3.5 定時器部分定時器部分主要使用的是AT89C51內(nèi)部的定時器中斷。在本設(shè)計中選定的定時器為定時器0,并選擇其工作方式為方式1。設(shè)定為每隔0.5ms讀取一次DS1302中的數(shù)據(jù)
25、并送至液晶顯示器顯示。在中斷處理程序中調(diào)用上面寫好的數(shù)據(jù)讀取函數(shù)即可。四、 設(shè)計心得五、 參考文獻1 徐敏,等. 單片機原理及其應(yīng)用M. 北京:機械工業(yè)出版社,2012.2 鄭鋒,等. 51單片機典型應(yīng)用開發(fā)范例大全M. 北京:中國鐵道出版社,2011.3 趙建領(lǐng),等. 精通51單片機開發(fā)技術(shù)與應(yīng)用實例M. 北京:電子工業(yè)出版社,2012.4 戴佳,等. 51單片機C語言應(yīng)用程序設(shè)計實例精講M. 北京:電子工業(yè)出版社,2006.5 郭天祥. 新概念51單片機C語言教程M. 北京:電子工業(yè)出版社,2009.附錄:主要程序代碼#include#define uint unsigned int#de
26、fine uchar unsigned char/-初始設(shè)置-uchar Second,Minute,Hour,Date,Month,Year,week=0;/定義時間等變量#define one 0x80 /第一行的初始位置#define two 0xc0 /第二行的初始位置sbit RS_1602=P20; /1602RS端sbit E_1602=P21;/1602使能端sbit IO_1302=P24;/1302I/O端sbit CLK_1302=P23;/1302時鐘端sbit RST_1302=P22;/1302復(fù)位端sbit key_mode=P10;/功能按鍵sbit key_u
27、p=P11;/增量鍵sbit key_down=P12;/減量鍵sbit ACC0=ACC0;sbit ACC7=ACC7;uchar code tab1=20 - - week ;/液晶第一行默認(rèn)顯示數(shù)據(jù)uchar code tab2= : : ;/液晶第二行默認(rèn)顯示數(shù)據(jù)/-函數(shù)聲明-void init();/定時器0初始化uchar BCD_Decimal(uchar bcd);/BCD轉(zhuǎn)16進制數(shù)uchar Dec_BCD(uchar Dec);/16進制數(shù)轉(zhuǎn)BCDvoid delay(uint xms);/延時函數(shù)write_1602com(uchar com);/液晶寫入指令函數(shù)wr
28、ite_1602dat(uchar dat);/液晶寫入數(shù)據(jù)函數(shù)void write_hms(uchar add,uchar dat);/1602寫時分秒void write_ymd(uchar add,uchar dat);/1602寫年月日void write_week(uchar week);/1602寫星期函數(shù)lcd_init();/液晶初始化函數(shù)void write_byte(uchar dat);/1302字節(jié)寫uchar read_byte();/1302字節(jié)讀void write_1302(uchar add,uchar dat); /1302地址寫uchar read_130
29、2(uchar add);/1302地址讀void ds1302_init();/1302初始化void keyscan();/按鍵處理子程序/-主函數(shù)-main()lcd_init();ds1302_init();init();while(1)keyscan();/-定時器0初始化-void init()TMOD=0x01;/定時器0,16位定時器模式TH0=0xFF;TL0=0x06;EA=1;/總中斷使能ET0=1;/定時器0中斷使能TR0=1;/定時器0啟動/-BCD轉(zhuǎn)16進制數(shù)-uchar BCD_Decimal(uchar bcd)uchar Decimal;Decimal=bcd
30、4; /高4位移到低4位return(Decimal=Decimal*10+(bcd&=0x0F);/原高4位數(shù)據(jù)*10+低4位/-16進制數(shù)轉(zhuǎn)BCD-uchar Dec_BCD(uchar Dec)uchar BCD;BCD=(Dec)/10*16+(Dec)%10;return(BCD);/-延時函數(shù)-void delay(uint xms)uint i,j;for(i=xms;i0;i-)for(j=100;j0;j-);/*液晶1602寫入*/-液晶寫入指令函數(shù)-write_1602com(uchar com)RS_1602=0;/置RS為0,寫入命令P0=com;/送入數(shù)據(jù)delay
31、(1);E_1602=1;/拉高使能端,為寫操作做準(zhǔn)備delay(1);E_1602=0;/完成高脈沖/-液晶寫入數(shù)據(jù)函數(shù)-write_1602dat(uchar dat)RS_1602=1;/置RS為1,寫入數(shù)據(jù)P0=dat;/送入數(shù)據(jù)delay(1);E_1602=1;/拉高使能端delay(1);E_1602=0;/完成高脈沖/-1602寫時,分,秒-void write_hms(uchar add,uchar dat)uchar gw,sw;gw=dat%10;/分出個位數(shù)據(jù)sw=dat/10;/分出十位數(shù)據(jù)write_1602com(two+add);/在第一行對應(yīng)位置顯示write
32、_1602dat(0x30+sw);write_1602dat(0x30+gw);/-1602寫年,月,日-void write_ymd(uchar add,uchar dat)uchar gw,sw;gw=dat%10;/分出個位數(shù)據(jù)sw=dat/10;/分出十位數(shù)據(jù)write_1602com(one+add);/在第二行對應(yīng)位置顯示write_1602dat(0x30+sw);write_1602dat(0x30+gw);/-1602寫星期函數(shù)-void write_week(uchar week)write_1602com(one+0x0f);write_1602dat(0x30+wee
33、k-1);/-液晶初始化函數(shù)-lcd_init()uchar kk;write_1602com(0x38);/設(shè)置液晶工作模式:采用8位數(shù)據(jù)顯示,兩行顯示write_1602com(0x0c);/開顯示,不顯示光標(biāo)write_1602com(0x06);/整屏不移動,指針自動加一write_1602com(0x01);write_1602com(one);/第一行字符寫入的位置for(kk=0;kk16;kk+)write_1602dat(tab1kk);write_1602com(two+4);/第二行字符寫入的位置,空4位for(kk=0;kk0;kk-)/8位數(shù)據(jù)IO_1302=ACC0
34、;/先傳送數(shù)據(jù)低位CLK_1302=0;CLK_1302=1;/上升沿輸入數(shù)據(jù)ACC=ACC1;/右移位,下次接著取低位/-1302字節(jié)讀-uchar read_byte()uchar kk;RST_1302=1;/啟動讀寫操作for(kk=8;kk0;kk-)ACC7=IO_1302;/先讀入數(shù)據(jù)低位CLK_1302=1;CLK_1302=0;/下降沿輸出數(shù)據(jù)ACC=ACC1;/右移位,下次接著取return (ACC);/-1302地址、數(shù)據(jù)寫-void write_1302(uchar add,uchar dat) RST_1302=0;CLK_1302=0;RST_1302=1;/啟動
35、讀寫操作write_byte(add);/寫地址write_byte(dat);/寫數(shù)據(jù)CLK_1302=1;RST_1302=0;/禁止讀寫操作/-1302地址、數(shù)據(jù)讀-uchar read_1302(uchar add)uchar temp;RST_1302=0;CLK_1302=0;RST_1302=1;/啟動讀寫操作write_byte(add);/寫地址temp=read_byte();/讀數(shù)據(jù)CLK_1302=1;RST_1302=0;/禁止讀寫操作return(temp);/-1302初始化-void ds1302_init()RST_1302=0;/禁止讀寫操作CLK_1302
36、=0;/時鐘為低write_1302(0x80,Second|0x00);/允許寫/-按鍵處理子程序-void keyscan() uchar key1n;/功能鍵按下次數(shù)if(key_mode=0)/key_mode為功能鍵delay(5);/延時去抖動if(key_mode=0)/功能鍵確認(rèn)按下while(!key_mode);/等待按鍵釋放key1n+;/功能鍵按下次數(shù)加一if(key1n=9)/為9時 調(diào)為1 只允許取值18key1n=1;switch(key1n)/功能鍵按鍵次數(shù)不同實現(xiàn)不同操作case 1: /時調(diào)整秒TR0=0;/關(guān)閉定時器write_1602com(two+0x
37、0b);/寫入光標(biāo)位置,即秒所在的位置write_1602com(0x0f);/設(shè)置光標(biāo)為閃爍write_1302(0x8e,0x00);/允許寫write_1302(0x80,0x80|Dec_BCD(Second);/Secondbreak;case 2: write_1602com(two+8);break;/Minute閃爍case 3: write_1602com(two+5);break;/Hour閃爍case 4: write_1602com(one+0x0f);break;/week閃爍case 5: write_1602com(one+0x09);break;/Date閃爍c
38、ase 6: write_1602com(one+0x06);break;/Month閃爍case 7: write_1602com(one+0x03);break;/Year閃爍case 8:write_1602com(0x0c);/設(shè)置光標(biāo)不閃爍write_1302(0x80,0x00|Dec_BCD(Second);/Secondwrite_1302(0x8e,0x80);/禁止寫TR0=1;/打開定時器break;if(key1n!=0)/當(dāng)key_mode按下以后。再按以下鍵才有效if(key_up=0) /上調(diào)鍵delay(5);/延時去抖動if(key_up=0)/上調(diào)鍵確認(rèn)按下
39、while(!key_up);/等待按鍵釋放switch(key1n)/功能鍵按鍵次數(shù)不同實現(xiàn)不同操作case 1:Second+;/秒加1if(Second=60)/加到60時調(diào)為0Second=0;write_hms(0x0a,Second);/顯示新的秒數(shù)write_1302(0x80,0x80|Dec_BCD(Second);/寫入新的秒數(shù)write_1602com(two+0x0b);/因指針自動加一,要寫回原位置break;case 2:Minute+;/分鐘加1if(Minute=60)/加到60時調(diào)為0Minute=0;write_hms(7,Minute);/顯示新的分鐘wr
40、ite_1302(0x82,Dec_BCD(Minute);/寫入新的分鐘write_1602com(two+8);/光標(biāo)在原位閃爍break;case 3:Hour+;/小時加1if(Hour=24)/加到24時調(diào)為0Hour=0;write_hms(4,Hour);/顯示新的小時write_1302(0x84,Dec_BCD(Hour);/寫入新的小時write_1602com(two+5);/光標(biāo)在原位閃爍break;case 4:week+;/星期加1if(week=9)/加到8時調(diào)為1week=2;write_week(week);/顯示新的星期write_1302(0x8a,wee
41、k);/寫入新的星期write_1602com(one+0x0f);/光標(biāo)在原位閃爍break;case 5:Date+;/日期加1if(Date=32)/加到32時調(diào)為1Date=1;write_ymd(8,Date);/顯示新的日期write_1302(0x86,Dec_BCD(Date);/寫入新的日期write_1602com(one+9);/光標(biāo)在原位閃爍break;case 6:Month+;/月份加1if(Month=13)/加到13時調(diào)為1Month=1;write_ymd(5,Month);/顯示新的月份write_1302(0x88,Dec_BCD(Month);/寫入新的
42、月份write_1602com(one+6);/光標(biāo)在原位閃爍break;case 7:Year+;/年加1if(Year=100)/加到100時調(diào)為0Year=0;write_ymd(2,Year);/顯示新的年份write_1302(0x8c,Dec_BCD(Year);/寫入新的年份write_1602com(one+3);/光標(biāo)在原位閃爍break;if(key_down=0) /下調(diào)鍵delay(5);/延時去抖動if(key_down=0)/下調(diào)鍵確認(rèn)按下while(!key_down);/等待按鍵釋放switch(key1n)/功能鍵按鍵次數(shù)不同實現(xiàn)不同操作case 1:Second-;/秒減1if(Second=-1)/減為-1時 調(diào)為59Second=59;write_hms(0x0a,Second);/顯示新的秒數(shù)write_1302(0x80,0x80|Dec_BCD(Second);/寫入新的秒數(shù)write_1602com(two+0x0b);/光標(biāo)在原位閃爍break;case 2:M
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- AISTEAM教學(xué)中項目式學(xué)習(xí)評價與學(xué)習(xí)成果展示課題報告教學(xué)研究課題報告
- 校企合作構(gòu)建人工智能教育質(zhì)量監(jiān)控體系研究教學(xué)研究課題報告
- 2025年高端無人機研發(fā)生產(chǎn)基地建設(shè)規(guī)劃可行性報告
- 全國一等獎統(tǒng)編版語文二年級下冊《古詩二首-詠柳》公開課精美課件
- 2026年生物科技醫(yī)療健康產(chǎn)業(yè)分析報告
- 2025-2026學(xué)年廣東深圳紅嶺中學(xué)七年級上學(xué)期期中考英語試題
- 保險代理人進級制度
- 交警節(jié)假日值班制度
- 兩都巡幸制度
- 2026年泰和縣教育體育局所屬事業(yè)單位競爭性選調(diào)工作人員的備考題庫及完整答案詳解1套
- 北京通州產(chǎn)業(yè)服務(wù)有限公司招聘參考題庫必考題
- 催收管理制度及流程規(guī)范
- 交通安全志愿者培訓(xùn)課件
- 化工防止靜電安全培訓(xùn)課件
- AI藥物研發(fā)中的倫理風(fēng)險防控
- 出鐵廠鐵溝澆注施工方案
- 2025年江蘇省泰州市保安員理論考試題庫及答案(完整)
- 公司酶制劑發(fā)酵工工藝技術(shù)規(guī)程
- 大數(shù)據(jù)分析在供熱中的應(yīng)用方案
- 污泥安全管理制度范本
- 開題報告范文基于人工智能的醫(yī)學(xué)像分析與診斷系統(tǒng)設(shè)計
評論
0/150
提交評論