基于單片機的鍵盤盤可調(diào)萬年歷_第1頁
基于單片機的鍵盤盤可調(diào)萬年歷_第2頁
基于單片機的鍵盤盤可調(diào)萬年歷_第3頁
基于單片機的鍵盤盤可調(diào)萬年歷_第4頁
基于單片機的鍵盤盤可調(diào)萬年歷_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、 開放性實驗報告題 目: 基于80C51的萬年歷設(shè)計_ 院 系: 專業(yè)班級: 學(xué) 號: 姓 名: 指導(dǎo)老師:_ 時 間: 2014年9月8號 摘要電子萬年歷是一種非常廣泛日常計時工具,對現(xiàn)代社會越來越流行。它可以對年、月、日、周、時、分、秒進行計時,還具有閏年補償?shù)榷喾N功能。本系統(tǒng)選用DALLAS公司生產(chǎn)的日歷時鐘芯片DS1302來作為實時時數(shù)字萬年歷采用直觀數(shù)字顯示,可以同時顯示年、月、日、周、時、分、秒等信息,還具有鍵盤時間校準(zhǔn)等功能。該電路采用AT89C52單片機作為核心,用以5V電壓供電。本系統(tǒng)硬件部分由AT89C52單片機、DS1302時鐘芯片、LCD1602液晶顯示環(huán)境下以C51語

2、言編寫,包括時間設(shè)置、時間顯示、時間修正等功能。在仿真的時候,以Proteus與Keil uVision4軟件為基礎(chǔ),編寫了MCS-51單片機對LCD1602顯示控制的軟件,繪制其原理圖,并使用Proteus軟件與Keil uVision4軟件建立聯(lián)合仿真。本設(shè)計主要論述了原理圖各個模塊的作用,以及控制軟件的各個模塊的編程。關(guān)鍵詞:時鐘芯片DS1302;單片機AT89C52;液晶顯示1602;獨立鍵盤等目 錄第1章 緒論11.1 實時萬年歷的簡介11.2 系統(tǒng)所實現(xiàn)的功能3第2章 開發(fā)工具軟件簡介42.1 Keil uVision4軟件簡介42.2 Proteus軟件簡介42.3 Keil u

3、Vision4與Proteus軟件聯(lián)合仿真5第3章 LCD1602顯示控制技術(shù)63.1 1602字符型LCD簡介63.2 LCD1602功能73.3 LCD1602的指令說明及時序83.4 LCD1602的RAM地址映射及標(biāo)準(zhǔn)字庫表73.5 LCD1602的一般初始化(復(fù)位)過程8第4章 系統(tǒng)硬件概況134.1 系統(tǒng)概況134.2 MCS-51單片機最小系統(tǒng)模塊144.3 DS1302時鐘芯片控制與鍵盤設(shè)置時間模塊154.4 LCD1602顯示模塊16第5章 軟件控制系統(tǒng)概況185.1 程序流程概況185.2 流程圖185.3 源程序代碼19參考文獻25第1章 緒論1.1 實時萬年歷的簡介隨著

4、電子技術(shù)的發(fā)展,人類在不斷研究的過程中也在不停創(chuàng)造新的紀(jì)錄。萬年歷目前已經(jīng)不再局限于以紙張的形式出現(xiàn)。以電腦軟件或者電子產(chǎn)品形式出現(xiàn)的萬年歷被稱為電子萬年歷。與傳統(tǒng)萬年歷相比,電子萬年歷得到了越來越得到大眾的青睞,采用電子時鐘作為時間顯示早已成為一種時尚。目前市場上各式各樣的電子時鐘數(shù)不勝數(shù),但多數(shù)是只針對時間顯示,功能單一不能滿足人們多樣化的需求。   本文提出了一種基于AT89C51單片機的萬年歷設(shè)計方案,本方案以AT89C51單片機作為主控核心,與時鐘芯片DS1302、按鍵、LED1602顯示等模塊組成硬件系統(tǒng)。在硬件系統(tǒng)中設(shè)有獨立按鍵和LED顯示器,能顯示豐富的信息

5、,根據(jù)使用者的需要可以隨時對時間進行校準(zhǔn)、選擇時間等,綜上所述此萬年歷具有讀取方便、顯示直觀、功能多樣、電路簡潔、成本低廉等諸多優(yōu)點。1.2 系統(tǒng)所實現(xiàn)的功能現(xiàn)在所使用的萬年歷,實際上就是記錄一定時間范圍內(nèi)(比如100年或更多)的具體陽歷或陰歷日期的年歷,方便有需要的人查詢使用,與原始歷法并無直接聯(lián)系。而隨著微電子技術(shù)的高速發(fā)展,人們發(fā)明了更加準(zhǔn)確更加便捷的電子萬年歷。因為這種萬年歷在日常生活中運用得越來越廣泛,在現(xiàn)代社會也越來越流行。它可以對年、月、日、周、時、分、秒進行計時,還具有閏年補償?shù)榷喾N功能,而且其使用壽命更長,誤差更小,有的電子萬年歷還具有時間以及星期的校準(zhǔn)功能。本文主要包括以下

6、內(nèi)容:1單片機為核心,建立以LCD1602為顯示控制系統(tǒng),編制各控制子程序模塊,為操作人員提供靈活、準(zhǔn)確的控制信息,實現(xiàn)對LCD1602液晶顯示當(dāng)前時間。2繪制整個控制系統(tǒng)原理圖。 3配合控制程序軟件,完成對整個硬件系統(tǒng)的控制。4使用Keil uVision4進行C語言代碼的編寫。5使用Proteus進行仿真。第2章 開發(fā)工具軟件簡介2.1 Keil uVision4軟件簡介Keil是美國Keil Software公司出品的51系列兼容單片機C語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在功能上、結(jié)構(gòu)性、可讀性、可維護性上有明顯的優(yōu)勢,因而易學(xué)易用。用過匯編語言后再使用C來開發(fā),體會更加深刻。在開發(fā)大

7、型軟件時更能體現(xiàn)高級語言的優(yōu)勢。Keil 軟件提供豐富的庫函數(shù)和功能強大的集成開發(fā)調(diào)試工具,全Windows界面。Keil生成的目標(biāo)代碼效率非常之高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。其次,該軟件不但可以進行軟件仿真,而且還可以通過其內(nèi)嵌模塊Keil-Monitor-51,實現(xiàn)在不需要連接硬件仿真器的條件下,通過下載線連接硬件系統(tǒng)對項目進行實時仿真。另外,可以與Proteus單片機仿真軟件聯(lián)合實現(xiàn)虛擬硬件仿真。2.2 Proteus軟件簡介目前電子設(shè)計手段日新月異,由手工設(shè)計階段到EDA階段,再到虛擬設(shè)計階段,人們不斷提高設(shè)計水平與效率。Proteus軟件是英國Labcenter ele

8、ctronics公司出版的EDA工具軟件。Proteus嵌入式系統(tǒng)仿真與開發(fā)平臺是一款可以實現(xiàn)數(shù)字電路、模擬電路、微控制器系統(tǒng)仿真及PCB設(shè)計等功能的EDA軟件。從元件的選取到連線,直至電路的調(diào)試、分析和軟件的編譯,都是在計算機中完成,所有的工作先在虛擬環(huán)境下進行。基于這一設(shè)計思想開發(fā)的Proteus軟件,可在原理圖設(shè)計階段對所設(shè)計的電路進行評估、驗證,看是否達到設(shè)計要求的技術(shù)指標(biāo),并可以通過改變元件的參數(shù)使整個電路性能達到最優(yōu)化。這樣就避免了傳統(tǒng)電子電路設(shè)計中方案更換帶來的多次重復(fù)購買元器件及制板,在節(jié)省設(shè)計時間與經(jīng)費的同時,提高了設(shè)計效率與質(zhì)量。Proteus軟件不僅具有其它EDA工具軟件

9、的模擬電子和數(shù)字電子的仿真功能,而且還具有其他EDA軟件所沒有的單片機系統(tǒng)硬件仿真功能。它可以仿真MCS-51系列單片機、AVR單片機、PIC單片機和ARM7微處理器,可以直接在電路原理圖上實現(xiàn)硬件的虛擬仿真,實現(xiàn)程序的調(diào)試,并提供進行測試與分析的虛擬示波器、邏輯分析儀等虛擬儀器及仿真圖表。它是目前最好的仿真單片機及外圍器件的工具。Proteus軟件主要由實現(xiàn)原理圖編輯及仿真的ISIS模塊和實現(xiàn)PCB板設(shè)計及自動布線的ARES模塊組成。Proteus軟件提供了三十多個元器件庫,數(shù)千元器件。元件涉及電阻、電容、二極管、MOS管、變壓器、繼電器、各種放大器、各種激勵源、300多種微處理器、各種門電

10、路和各種終端等。提供的儀表有交直流電壓表、電流表、邏輯分析儀、定時/計數(shù)器和信號發(fā)生器等虛擬儀器,Proteus作為可視化仿真軟件,提供數(shù)碼管、液晶屏、LED、按鈕、鍵盤等外設(shè)。2.3 Keil uVision4與Proteus軟件聯(lián)合仿真Proteus軟件與Keil uVision4軟件之間的聯(lián)合虛擬仿真,指Keil uVision4軟件將Proteus軟件打開的單片機系統(tǒng)看成一個虛擬的硬件電路,使用Keil uVision4軟件對程序進行編譯、調(diào)試時自動連接Proteus軟件中的虛擬單片機系統(tǒng),虛擬單片機系統(tǒng)的狀態(tài)隨Keil uVision4軟件對程序調(diào)試實時變化。這樣,可實現(xiàn)用Prote

11、us軟件與Keil uVision4軟件聯(lián)合虛擬硬件仿真。 第3章LCD1602液晶顯示屏3.1 1602字符型LCD簡介字符型液晶顯示模塊是一種專門用于顯示字母、數(shù)字、符號等點陣式LCD,本設(shè)計采用16列*2行的字符型LCD1602帶背光的液晶顯示屏。1602LCD主要技術(shù)參數(shù):顯示容量:16×2個字符芯片工作電壓:4.55.5V工作電流:2.0mA(5.0V)模塊最佳工作電壓:5.0V字符尺寸:2.95×4.35(W×H)mm3.2 1602引腳功能編號符號引腳說明編號符號引腳說明1VSS電源地9D2數(shù)據(jù)2VDD電源正極10D3數(shù)據(jù)3VL液晶顯示偏壓11D4數(shù)

12、據(jù)4RS數(shù)據(jù)/命令選擇12D5數(shù)據(jù)5R/W讀/寫選擇13D6數(shù)據(jù)6E使能信號14D7數(shù)據(jù)7D0數(shù)據(jù)15BLA背光源正極8D1數(shù)據(jù)16BLK背光源負極第1腳:VSS為地電源。第2腳:VDD接5V正電源。第3腳:VL為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地時對比度最高,對比度過高時會產(chǎn)生“鬼影”,使用時可以通過一個10K的電位第4腳:RS為寄存器選擇,高電平時選數(shù)據(jù)寄存器、低電平時選擇指令寄存器。第5腳:R/W為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當(dāng)RS和R/W共同為低電平時可以寫入指令或者顯示地址,當(dāng)RS為低電平R/W為高電平時可以讀忙信號,當(dāng)RS為高電平R/W為低電

13、平時可以寫入數(shù)據(jù)。第714腳:D0D7為8位雙向數(shù)據(jù)線。第15腳:背光源正極。第16腳:背光源負極。3.3 1602LCD的指令說明及時序芯片時序表如下:讀狀態(tài)輸入RS=L,R/W=H,E=H輸出D0D7=狀態(tài)字寫指令輸入RS=L,R/W=L,D0D7=指令碼,E=高脈沖輸出無讀數(shù)據(jù)輸入RS=H,R/W=H,E=H輸出D0D7=數(shù)據(jù)寫數(shù)據(jù)輸入RS=H,R/W=L,D0D7=數(shù)據(jù),E=高脈沖輸出無基本操作時序表讀寫操作時序如圖2-7和2-8所示:圖2-7讀操作時序圖2-8 寫操作時序3.4 1602LCD的RAM地址映射及標(biāo)準(zhǔn)字庫表液晶顯示模塊是一個慢顯示器件,所以在執(zhí)行每條指令之前一定要確認入

14、顯示字符地址,也就是告訴模塊在哪里顯示字符,圖2-9是1602的內(nèi)部顯示地址。圖2-9液晶內(nèi)部顯示地址例如第二行第一個字符的地址是40H,那么是否直接寫入40H就可以將光標(biāo)定位在第二行第一個字符的位置呢?這樣不行,因為寫入顯示地址時要求最高位D7恒定為高電平1所以實際寫入的數(shù)據(jù)應(yīng)該是01000000B(40H)+10000000B(80H)=11000000B(C0H)。是自動右移的,無需人工干預(yù)。每次輸入指令前都要判斷液晶模塊是否處于忙的狀態(tài)。1602液晶模塊內(nèi)部的字符發(fā)生存儲器(CGROM)已經(jīng)存儲了160個不同的點陣常用的符號、和日文假名等,每一個字符都有一個固定的代碼,比如大寫的英文字

15、母“A”的代碼是01000001B(41H),顯示時模塊把地址41H中的點陣字符圖形顯示出來,我們就能看到字母“A”。3.5 1602LCD的一般初始化(復(fù)位)過程延時15mS寫指令38H(不檢測忙信號)延時5mS寫指令38H(不檢測忙信號)延時5mS寫指令38H(不檢測忙信號)以后每次寫指令、讀/寫數(shù)據(jù)操作均要檢測忙信號寫指令38H:顯示模式設(shè)置寫指令08H:顯示關(guān)閉寫指令01H:顯示清屏寫指令06H:顯示光標(biāo)移動設(shè)置寫指令0CH:顯示開及光標(biāo)設(shè)置第4章 系統(tǒng)硬件概況4.1 系統(tǒng)概況單片機控制模塊是整個設(shè)計方案的核心。AT59C51芯片作為該系統(tǒng)的控制部件,它通過DS1302將時間實時通過硬

16、件電路轉(zhuǎn)送入單片機內(nèi)部,單片機內(nèi)部將時間轉(zhuǎn)換成字符串然后送入LCD1602模塊顯示。鍵盤通過AT59C51還控制LCD1602模塊對萬年歷的顯示與調(diào)節(jié)。其系統(tǒng)原理圖如下:4.2 MCS-51單片機最小系統(tǒng)模塊(1)晶振電路:在XTALI與XTAL2外接石英晶體和微調(diào)電容等構(gòu)成時鐘電路。其中,晶體的選擇至少必須考慮:諧振頻點,負載電容,激勵功率,溫度特性,長期穩(wěn)定性。選擇電容C1,C2:在許可范圍內(nèi),C1,C2值越低越好。C值偏大雖有利于振蕩器的穩(wěn)定,但將會增加起振時間。應(yīng)使C2值大于C1值,這樣可使上電時,加快晶振起振。4.3 DS1302時鐘芯片控制模塊 (1) 時鐘芯片DS1302的工作原

17、理: DS1302在每次進行讀、寫程序前都必須初始化,先把SCLK端置 “0”,接著把RST端置“1”,最后才給予SCLK脈沖;讀/寫時序如下圖所示。為DS1302的控制字,此控制字的位7必須置1,若為0則不能把對DS1302進行讀寫數(shù)據(jù)。對于位6,若對程序進行讀/寫時RAM=1,對時間進行讀/寫時,CK=0。位1至位5指操作單元的地址。位0是讀/寫操作位,進行讀操作時,該位為1;該位為0則表示進行的是寫操作。控制字節(jié)總是從最低位開始輸入/輸出的。表6為DS1302的日歷、時間寄存器內(nèi)容:“CH”是時鐘暫停標(biāo)志位,當(dāng)該位為1時,時鐘振蕩器停止,DS1302處于低功耗狀態(tài);當(dāng)該位為0時,時鐘開始

18、運行?!癢P”是寫保護位,在任何的對時鐘和RAM的寫操作之前,WP必須為0。當(dāng)“WP”為1時,寫保護位防止對任一寄存器的寫操作。(2) DS1302的控制字節(jié)DS1302的控制字如表-1所示??刂谱止?jié)的高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫入DS1302中,位6如果0,則表示存取日歷時鐘數(shù)據(jù),為1表示存取RAM數(shù)據(jù);位5至位1指示操作單元的地址;最低有效位(位0)如為0表示要進行寫操作,為1表示進行讀操作,控制字節(jié)總是從最低位開始輸出表-1 DS1302的控制字格式 RAM RD 1 A4 A3 A2 A1 A0 / CK /WR (3) 數(shù)據(jù)輸入輸出(I/O) 在控制指令字

19、輸入后的下一個SCLK時鐘的上升沿時,數(shù)據(jù)被寫入DS1302,數(shù)據(jù)輸入從低位即位0開始。同樣,在緊跟8位的控制指令字后的下一個SCLK脈沖的下降沿讀出DS1302的數(shù)據(jù),讀出數(shù)據(jù)時從低位0位到高位7。如下圖1所示 圖1 DS1302讀/寫時序圖(4) DS1302的寄存器DS1302有12個寄存器,其中有7個寄存器與日歷、時鐘相關(guān),存放的數(shù)據(jù)位為BCD碼形式,其日歷、時間寄存器及其控制字見表-2。表-2 DS1302的日歷、時間寄存器 寫寄存器讀寄存器Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit080H81HCH10秒秒82H83H10分分84H85H12/010時時/PM8

20、6H87H0010日日88H89H00010月月8AH8BH00000星期8CH8DH10 年年8EH8FHWP0000000此外,DS1302 還有年份寄存器、控制寄存器、充電寄存器、時鐘突發(fā)寄存器及與RAM相關(guān)的寄存器等。時鐘突發(fā)寄存器可一次性順序讀寫除充電寄存器外的所有寄存器內(nèi)容。 DS1302與RAM相關(guān)的寄存器分為兩類:一類是單個RAM單元,共31個,每個單元組態(tài)為一個8位的字節(jié),其命令控制字為C0HFDH,其中奇數(shù)為讀操作,偶數(shù)為寫操作;另一類為突發(fā)方式下的RAM寄存器,此方式下可一次性讀寫所有的RAM的31個字節(jié),命令控制字為FEH(寫)、FFH(讀)。 本設(shè)計總的用了三個按扭開

21、關(guān)作為調(diào)整設(shè)置按鍵,三個中的其中兩個是調(diào)整時間增加、減少的鍵,第三個是切換年、月、日及時、分、秒的顯示狀態(tài)并在所切換的顯示狀態(tài)下配合加減兩個鍵調(diào)整時間。4.4 LCM1602顯示模塊單片機P0.0P0.7分別于lcd模塊的D0D7數(shù)據(jù)線連接,P2.0P2.2接到lcd模塊控制信號引腳RS、RW和E,lcd模塊的VDD引腳接電源+5v,VSS和VEE引腳接地。結(jié)合LCM1602控制指令,通過AT89C51單片機來控制LCM1602顯示相應(yīng)的時間。第5章 軟件控制系統(tǒng)概況5.1 程序流程概況該控制系統(tǒng)主要包括單片機對LCM1602液晶溫度顯示與萬年歷顯示控制兩部分。軟件控制程序主要有主控程序、電子

22、時鐘的時間控制程序和溫度顯示程序組成。主控程序負責(zé)對整個程序進行調(diào)用與控制,進行了初始化程序還有鍵盤功能程序;顯示程序和時間控制程序是電子時鐘中比較重要的部分,時間控制程序體現(xiàn)了年、月、日、時、分、秒的計算方法。軟件的設(shè)計采用模塊化設(shè)計與混合編程的設(shè)計思想實現(xiàn),編程軟件為Keil uVision4軟件。5.2 流程圖開始初始化讀日期、時間寫日期、時間顯示子程序 時間修改子程序日期修改子程序顯示結(jié)果返回開關(guān)控制子程序時間控制程序主要是定時器0計時中斷程序每隔10ms中斷一次當(dāng)作一個計數(shù),每中斷一次則計數(shù)加1,當(dāng)計數(shù)100次時,則表示1秒到了,秒變量加1,同理再判斷是否1分鐘到了,再判斷是否1小時

23、到了,再判斷是否1天到了,再判斷是否1月到了,再判斷是否1年到了,若計數(shù)到了則相關(guān)變量清除0。先給出一般年份的每月天數(shù)。如果是閏年,第二個月天數(shù)不為28天,而是29天。閏年的判斷規(guī)則為,如果該年份是4或100的整數(shù)倍或者是400的整數(shù)倍,則為閏年;否則為非閏年。在我們的這個設(shè)計中由于只涉及100年范圍內(nèi),所以判斷是否閏年就只需要用該年份除4來判斷就行了。溫度的顯示主要是靠DS18B20采集現(xiàn)在的溫度數(shù)據(jù),CPU讀取數(shù)據(jù)進行顯示,當(dāng)各自的條件得不到滿足時,對應(yīng)的顯示器狀態(tài)就不發(fā)生改變,只是在滿足條件的情況下,顯示器的狀態(tài)才變化。程序流程圖如圖所示:5.3 源程序代碼#include<reg

24、52.h>#define uchar unsigned char#define uint unsigned intsbit sclk=P36;sbit io=P34;sbit ce=P35;sbit lcdrs=P26;sbit lcdrw=P25;sbit lcden=P27;sbit K0=P30;sbit K1=P31;sbit K2=P32;sbit K3=P33;uchar flag;uchar nyr="2014-01-01"uchar sfm="23:59:50 Mon"uchar week1="Mon"uchar

25、 week2="Tue"uchar week3="Wed"uchar week4="Thur"uchar week5="Fri"uchar week6="Sat"uchar week7="Sun"void write_week();void delay1(uchar m)uchar x,y;for(x=m;x>0;x-)for(y=110;y>0;y-);/以下為DS1302驅(qū)動程序uchar time_data7=0x14,0x01,0x01,0x01,0x23

26、,0x59,0x50;/年,周,月,日,時,分,秒uchar year,week,month,day,hour,minute,second;uchar write_add7=0x8c,0x8a,0x88,0x86,0x84,0x82,0x80;/寫地址uchar read_add7=0x8d,0x8b,0x89,0x87,0x85,0x83,0x81;/讀地址void delay();void write_1302_byte(uchar add)uchar i;for(i=0;i<8;i+)sclk=0;io=add&0x01;add=add>>1;sclk=1;vo

27、id write_1302(uchar add1,uchar dat1) ce=0;delay();sclk=0;delay();delay();ce=1;write_1302_byte(add1);write_1302_byte(dat1);delay();delay();ce=0; uchar read_1302(uchar addr)uchar j,temp=0x00;ce=0;delay();sclk=0;delay();delay();ce=1;write_1302_byte(addr);for(j=0;j<8;j+)if(io)temp=temp|0x80;sclk=0;te

28、mp=temp>>1;delay();sclk=1;return (temp);void set_rtc()uchar i;write_1302(0x8E,0x00);for(i=0;i<7;i+)write_1302(write_addi,time_datai);write_1302(0x8E,0x80);void read_rtc()uchar i;for(i=0;i<7;i+)time_datai=read_1302(read_addi);/以上為DS1302的驅(qū)動程序/以下為1602液晶顯示驅(qū)動void write_1602com(uchar com)lcdrs

29、=0;lcdrw=0;P0=com;delay1(5);lcden=1;delay1(5);lcden=0;void write_1602dat(uchar dat)lcdrs=1;lcdrw=0;P0=dat;delay1(5);lcden=1;delay1(5);lcden=0;void init_1602()uchar i;lcden=0;write_1602com(0x38);write_1602com(0x0c);write_1602com(0x06);write_1602com(0x01);write_1602com(0x80+3);for(i=0;i<10;i+)write

30、_1602dat(nyri);delay1(5);write_1602com(0x80+0x40+1);for(i=0;i<13;i+)write_1602dat(sfmi);delay1(5);void write_sfm(uchar add,uchar dat)uchar shi,ge;shi=dat/16;ge=dat%16;write_1602com(0x80+0x40+add);write_1602dat(0x30+shi);write_1602dat(0x30+ge);void write_nyr(uchar add,uchar dat)uchar shi,ge;shi=da

31、t/16;ge=dat%16;write_1602com(0x80+add);write_1602dat(0x30+shi);write_1602dat(0x30+ge);void deal()year=time_data0;write_nyr(5,year);month=time_data2;write_nyr(8,month);day=time_data3;write_nyr(0x0b,day);hour=time_data4;write_sfm(1,hour);minute=time_data5;write_sfm(4,minute);second=time_data6;write_sf

32、m(7,second);void write_week()uchar i;week=time_data1%16;write_1602com(0x80+0x40+11);for(i=0;i<3;i+)switch(week)case 1: write_1602dat(week1i);break;case 2: write_1602dat(week2i);break;case 3: write_1602dat(week3i);break;case 4: write_1602dat(week4i);break;case 5: write_1602dat(week5i);break;case 6

33、: write_1602dat(week6i);break;case 7: write_1602dat(week7i);break;void keyscan()uchar add;if(K0=0)delay1(5);if(K0=0) add+;while(!K0);if(add=1) flag=1;write_1602com(0x80+0x40+7);write_1602com(0x0f);if(add=2)write_1602com(0x80+0x40+4);if(add=3) write_1602com(0x80+0x40+1);if(add=4)write_1602com(0x80+0x

34、40+0x0b);/星期if(add=5)write_1602com(0x80+0x0b);if(add=6)write_1602com(0x80+8);if(add=7)write_1602com(0x80+5);if(add=8)add=0;write_1602com(0x0c);flag=0; set_rtc(); if(add!=0)if(K1=0)delay1(5);if(K1=0)while(!K1);if(add=1) time_data6+;if(time_data6&0x0f)>9)time_data6=time_data6+6;if(time_data6=0x

35、60)time_data6=0;write_sfm(7,time_data6);write_1602com(0x80+0x40+7);if(add=2)time_data5+;if(time_data5&0x0f)>9)time_data5=time_data5+6;if(time_data5=0x60)time_data5=0;write_sfm(4,time_data5);write_1602com(0x80+0x40+4);if(add=3)time_data4+;if(time_data4&0x0f)>9)time_data4=time_data4+6;if

36、(time_data4=0x24)time_data4=0;write_sfm(1,time_data4);write_1602com(0x80+0x40+1);if(add=4) /星期time_data1+;if(time_data1=8)time_data1=1;write_sfm(0x0b,time_data1);write_week();write_1602com(0x80+0x40+0x0b);if(add=5)time_data3+;if(time_data3&0x0f)>9)time_data3=time_data3+6;if(time_data3=0x32)ti

37、me_data3=1;write_nyr(0x0b,time_data3);write_1602com(0x80+0x0b);if(add=6)time_data2+;if(time_data2&0x0f)>9)time_data2=time_data2+6;if(time_data2=0x13)time_data2=1;write_nyr(8,time_data2);write_1602com(0x80+8);if(add=7)time_data0+;if(time_data0&0x0f)>9)time_data0=time_data0+6;if(time_data0=0x99)time_data0=0;write_nyr(5,time_data0);write_1602com(0x80+5);if(K2=0)delay1(5);

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論