單片機課程設計實驗報告_第1頁
單片機課程設計實驗報告_第2頁
單片機課程設計實驗報告_第3頁
單片機課程設計實驗報告_第4頁
單片機課程設計實驗報告_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、基于單片機的電子鐘設計目錄 TOC o 1-5 h z 第一章電子時鐘設計21.1 設計原理簡介21.2 設計功能3 HYPERLINK l bookmark6 o Current Document 第二章主要電路元器件介紹32.1 STC89C52 單片機簡介32.1.1 單片機簡介32.1.2 主要特性32.1.3 管腳功能說明42.1.4 LCD16025 HYPERLINK l bookmark8 o Current Document 第三章 單元電路的硬件設計6硬件原理框圖6單片機 STC89C52 系統(tǒng)的設計6時鐘電路7復位電路7鍵盤接口電路8LCD 1 6 0 2顯示8 HYPE

2、RLINK l bookmark10 o Current Document 第四章設計總原理圖9第五章心得體會9第六章源程序10前言:課程設計題目電子時鐘、日歷任務下達日期2013 年 6 月 17 日設計提交期限2013年7月5日設計主要 內容使用 89C51、LCD1602 , “時分秒”和“星期”設計一個能同時顯示“年月日” 的電子作品主要技術要 求及參數基本要求:時鐘走一天的誤差小于1秒鐘時間、星期、日歷均可以通過按鍵調節(jié)設置成果提交 形式技術報告一份,制作實物一件。設計進度安 排第1周查資料,研究設計題目、內容及要求并進行初步設計。 第2周設計、安裝及調試,并撰寫設計報告。第2周周五

3、上午提交設計報告并現場答辯。摘要數字鐘已成為人們日常生活中必不可少的必需品,廣泛用于個人家庭以及辦 公室等公共場所,給人們的生活、學習、工作、娛樂帶來極大的方便。由于數字 集成電路技術的發(fā)展和采用了先進的石英技術,使數字鐘具有走時準確、性能穩(wěn) 定、攜帶方便等優(yōu)點,它還用于計時、自動報時及自動控制等各個領域。盡管目 前市場上已有現成的數字鐘集成電路芯片出售,價格便宜、使用也方便,但鑒于 單片機的定時器功能也可以完成數字鐘電路的設計,因此進行數字鐘的設計是必 要的。在這里我們將已學過的比較零散的數字電路的知識有機的、系統(tǒng)的聯(lián)系來 用于實際,來培養(yǎng)我們的綜合分析和設計電路,寫程序、調試電路的能力。單

4、片 機具有體積小、功能強可靠性高、價格低廉等一系列優(yōu)點,不僅已成為工業(yè)控領 域普遍采用的智能化控制工具,而且已滲入到人們工作和和生活的各個角落,有 力地推動了各行的技術改造和產品的更新?lián)Q代,應用前景廣闊。一、作品介紹該電子鐘使用AT89S51為核心,采用LCD1602液晶屏顯示,動態(tài)顯示技術。產用 外部接5V電源供電,內部添加了一個4.8V左右的電池以防突然斷電后還能保持 原先數據不變。該產品簡單易于操作,可以實現以下功能:1、顯示年份,格式“年、月、日”2、時間顯示為 24小時制,格式“時時”“分分”“妙妙”3、顯示星期,用英文字符表示如星期一 “MON”二、設計目的1、鞏固、加深和擴大51

5、 系列單片機應用的知識面,提高綜合及靈活運用所學知 識解決工業(yè)控制的能力;2、學會怎么使用LCM602,并且要知道它的組成與構造。3、學會查閱書籍,并且要能夠熟練編寫程序、仿真、繪畫流程圖、原理圖及 BCP 圖。4、對課題設計方案的分析、選擇、比較、熟悉用51 單片機做系統(tǒng)開發(fā)、研制的 過程,軟硬件設計的方法、內容及步驟。三、設計要求1 上電以后自動進入計時狀態(tài)。2、設計鍵盤調整時間,完成年月日、星期、時間的設計。3、采用 AT89S51 為核心控制芯片,用 LCD1602 作為顯示屏。第一章1.1設計原理簡介該設計設計一個電子時鐘,我們采用的是STC89C52單片機用軟件實現計數和顯示。 該

6、單片機是一個微型計算機,包括中央處理器CPU, RAM, ROM、I/O接口電路、定時計 數器、串行通訊等,是時鐘計數設計的核心。該時鐘原理框圖如圖1.1,總體原理為:利用 STC89C52單片機構造電子時鐘,可顯示年、月、日、星期、時、分、秒,通過C語言對 單片機的編程即可產生相應的計時功能,并可以通過鍵盤進行時間的調整的控制。STC89C52STC89C52單片機圖2.1 信號發(fā)生器原理框圖本方案其主要模塊包括復位電路、時鐘信號、鍵盤控制、LCD1602顯示。其各個模塊 的作原理如下:(1)復位電路是為單片機復位使用,使單片機接口初始化;89C52等CMOS51系列 單片機的復位引腳RET

7、是施密特觸發(fā)輸入腳,內部有一個上拉低電阻,當振蕩器起振以后, 在RST引腳上輸出2個機械周期以上的高電平,器件變進入復位狀態(tài)開始,此時ALE、 PSEN、PO、P1、P2、P3輸出高電平,RST上輸入返回低電平以后,變退出復位狀態(tài)開始 工作。該方案采用的是人工開關復位,在系統(tǒng)運行時,按一下開關,就在RST斷出現一段 高電平,使器件復位。(2)時鐘信號是產生單片機工作的時鐘信號,控制著計算機的工作節(jié)奏,可以通過提 高時鐘頻率來提高CPU的速度。89C52內部有一個可控的反相放大器,引腳XTAL1、 XTAL2為反相放大器輸入端和輸出端,在XTAL1、XTAL2上外接12MHZ晶振和30pF 電容

8、便組成振蕩器。時鐘信號常用于CPU定時和計數。(3)鍵盤模塊是是用于控制信號輸入的類型,當按鍵按下時,可以通過單片機編STC89C52 單片機數接口電路鍵盤輸入程讀取閉合的鍵號,實現相應的時間調整。其步驟主要是a、斷 是否有鍵按下;b、去抖動,延時20ms左右;c、識別被按下的鍵號;d、處理,實現功能。(4) LCD1602顯示,通過單片機控制把數據送到LCD1602上顯示。1.2設計功能本設計利用3位(P3.0、P3.1、P3.2)控制時間的調整,其中當P3.0=0對要調 整的年、月、日、星期、時、分、秒的切換;當P3.1=0進行加1設置;當P3.2=0進行減1 設置。本設計利用LCD160

9、2液晶顯示進行時間的顯示,由單片機的P0端口進行數據的 傳輸;LCD 的 4 (RS )接 P2.5, 5 (RW)接 P2.6, 6 (E)接 P2.7。第二章主要電路元器件介紹2.1 STC89C52單片機簡介電2.1.1單片機簡介AT89C51是一種帶4K字節(jié)2.1 STC89C52單片機簡介電2.1.1單片機簡介AT89C51是一種帶4K字節(jié)FLASH存儲器的低電壓、高性能CMOS 8 位微處理器,俗稱單片機。該芯片具 有優(yōu)異的性價比,集成度高,體積小, 可靠性強,控制功能強等優(yōu)點。其外 形及引腳排列如圖2.1所示。(TO) PBO 匚 (T1) PB1 匚 (AINO) PB2 匚

10、(AIN1) PB3 匚 (SS) FB4 匚 (MOSI) P曰5 匚 (MISO) PB6 C (SCK) PB7 匚 RESET 匚 (RXD)PDC 匚 (TXD) PD1 匚 (INTO) PD2 匚 (INT1) FD3 匚 PD4匚 (OC1A) PD5 匚 (WR) PD5 匚 (RD) FD7 匸 XTAL2 匚 XTAL1 匚GND 匚0 3 6 7 6 5 44 3 3 3 3 30 12 3B S 1 1 1 J4 占6了 8 O 1111 112VCCPM (ADO)PAI (AD1)PA2 (AD2)PA3 (AD 3)PA4 (AD4)PA5 (AD 5)PA6

11、(AD 6)PAT (AD 7)ICPALEOC1BPC7 (A15)PCS (A14)PCS (A1 a)PC4 (A1Z)PC3 (A11)PC2 (A10)PC1 (A9)PCO (A6)圖2.12.1.2圖2.1兼容性能強4K字節(jié)可編程FLASH存儲器全靜態(tài)工作:0Hz-24MHz128X8 位內部 RAM(5)32 可編程 I/O 線(6)兩個 16 位定時器/計數器(7)5 個中斷源(8)可編程串行通道(9)低功耗的閑置和掉電模式(10)片內振蕩器和時鐘電路2.1.3管腳功能說明VCC:供電電壓。GND:接地。P0口: P0口為一個8位漏級開路雙向1/0 口,每腳可吸收8個TTL門

12、電流。當P0口的管 腳第一次寫“1”時,被定義為高阻輸入。P0能夠用于外部程序數據存儲器,它可以被定義 為數據/地址的第八位。在FIASH編程時,P0 口作為原碼輸入口,當FIASH進行校驗時,P0 輸出原碼,此時P0外部必須被拉高。P1口: P1口是一個內部提供上拉電阻的8位雙向I/O 口,P1口緩沖器能接收輸出4個TTL 門電流。P1口管腳寫入“1”后,被內部上拉為高,可用作輸入,P1口被外部下拉為低電平 時,將輸出電流,這是由于內部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址 接收。P2口: P2口為一個內部上拉電阻的8位雙向I/O 口,P2口緩沖器可接收,輸出4個TTL

13、門電流,當P2口被寫“1”時,其管腳被內部上拉電阻拉高,且作為輸入。并因此作為輸入 時,P2口的管腳被外部拉低,將輸出電流。這是由于內部上拉的緣故。2口當用于外部程序 存儲器或16位地址外部數據存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1” 時,它利用內部上拉優(yōu)勢,當對外部八位地址數據存儲器進行讀寫時,P2口輸出其特殊功能 寄存器的內容。P2 口在FLASH編程和校驗時接收高八位地址信號和控制信號。P3口: P3口管腳是8個帶內部上拉電阻的雙向I/O 口,可接收輸出4個TTL門電流。當 P3口寫入“1”后,它們被內部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低 電平,P3口

14、將輸出電流(ILL)這是由于上拉的緣故。P3口作為AT89C51的一些特殊功能口, 管腳備選功能P3.0 RXD (串行輸入口)P3.1 TXD (串行輸出口)P3.2 /INT0 (外部中斷0)P3.3 /INTI (外部中斷1)P3.4 T0 (計時器0外部輸入)P3.5 T1 (計時器1外部輸入)P3.6 /WR (外部數據存儲器寫選通)P3.7 /RD (外部數據存儲器讀選通)RST:復位輸入。當振蕩器復位器件時,要保持RST腳兩個機器周期的高電平時間。ALE/PROG:當訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平

15、時,ALE端以不變的頻率周期輸出 正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。 然而要注意的是:每當用作外部數據存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出 可在SFR8EH地址上置0。此時,ALE只有在執(zhí)行MOVX, M0VC指令是ALE才起用。另外,該 引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。/PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩 /PSEN有效。但在訪問外部數據存儲器時,這兩次有效的/PSEN信號將不出現。/EA / VPP: 當/EA保持低電平時,則在此期間外部程序存儲器(

16、0000H-FFFFH),不管是否有內部程序存 儲器。注意加密方式1時,/EA將內部鎖定為RESET;當/EA端保持高電平時,此間內部程序 存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。XTAL1:反向振蕩放大器的輸入及內部時鐘工作電路的輸入。XTAL2:來自反向振蕩器的輸出。2.1.4 LCD1602這里介紹的字符型液晶模塊是一種用5x7點陣圖形來顯示字符的液晶顯示器,根據顯 示的容量可以分為1行16個字、2行16個字、2行20個字等等,這里以常用的2行16 個字的1602液晶模塊來介紹它的編程方法。1602采用標準的16腳接口,其中: 第1腳:VSS為地電源第2腳

17、:VDD接5V正電源第3腳:V0為液晶顯示器對比度調整端,接正電源時對比度最弱,接地電源時對比度最高, 對比度過高時會產生“鬼影”使用時可以通過一個10K的電位器調整對比度第4腳:RS為寄存器選擇,高電平時選擇數據寄存器、低電平時選擇指令寄存器。第5腳:RW為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當RS和RW共 同為低電平時可以寫入指令或者顯示地址,當RS為低電平RW為高電平時可以讀忙信號, 當RS為高電平RW為低電平時可以寫入數據。第6腳:E端為使能端,當E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。第714腳:DOD7為8位雙向數據線。第15腳:背光電源正極第16腳:背光電源

18、負極第三章 單元電路的硬件設計硬件原理硬件電路的設計決定一個系統(tǒng)的的功能,是設計的基礎所在,而一般設計的標: 可靠,簡潔,高效,優(yōu)化,好的硬件電路可以給程序的編寫帶來極大的優(yōu)勢,同時使可以很 好的提高該信號設計的精度和靈敏度,使整個系統(tǒng)工作協(xié)調有序。3.1硬件原理框圖對于該電子時鐘的設計,我們采用了以STC89C52單片機芯片作為核心處理器,編程實 現時間的計時,最后通過LCD1602的顯示。結 構簡單,思路僅僅有條,而根據設計的基本要 求,我們又把其細分為不同的功能模塊,各個 功能模塊相互聯(lián)系,相互協(xié)調,通過單片機程 序構成一個統(tǒng)一的整體,其整體電路原理框 如圖3對于該電子時鐘的設計,我們采

19、用了以STC89C52單片機芯片作為核心處理器,編程實 現時間的計時,最后通過LCD1602的顯示。結 構簡單,思路僅僅有條,而根據設計的基本要 求,我們又把其細分為不同的功能模塊,各個 功能模塊相互聯(lián)系,相互協(xié)調,通過單片機程 序構成一個統(tǒng)一的整體,其整體電路原理框 如圖3.1所示:STCS9C52單片機LCD1602顯亦圖3.13.2單片機STC89C52系統(tǒng)的設計89C52單片機是該信號發(fā)生器的核心,具有2個定時器,32個并行I/O 口,1個串 行I/O 口,5個中斷源。由于本設計功能簡單,數據處理容易,數據存儲空間也足夠,因 為我們采用了片選法選擇芯片,進行芯片的選擇和地址的譯碼。單片

20、機引腳分配如下:XTAL1, XTAL2:外接晶振,產生時鐘信號;RES:復位電路;P0 口:接LCD1602的第714腳進行數據的傳輸;P2 口: LCD 的 4 (RS)接 P2.5, 5(RW)接 P2.6, 6 (E)接 P2.7;P3 口:接按鍵開關,對時間進行設置。3.3時鐘電路單片機的時鐘信號通常用兩種電路形式得到:內部振蕩和外部振蕩方式。在引腳XTAL1 和XTAL2外接晶體振蕩器,構成了內部振蕩方式。由于單片機內部有一個高增益的反相放 器,當外接晶振后,就構成了自激振蕩,并產生振動時鐘脈沖。晶振通常選用6MHZ、12MHZ、 24MHZ。本設計中時鐘電路圖如圖3.2,我們選擇

21、了 12MHZ和晶振分別接引腳XTAL1和采樣一次,然后才能得到內部復位操作所需要的信號。復位電路通常采用上 電自動復位和按鈕復位兩種方式。本設計選擇了按鍵復位如圖4.3,在系統(tǒng)運 行時,按一下開關,就在RST斷出現一段高電平,使器件復位。此時ALE、 PSEN、PO、P1、P2、P4輸出高電平,RST上輸入返回低電平以后,變退出 復位狀態(tài)開始工作。3.5鍵盤接口電路P3.0、P3.1、P3.2控制時間的調整,其中當P3.0=0對要調整的年、月、 日、星期、時、分、秒的切換;當P3.1=0進行加1設置;當P3.2=0進行減1設置。圖3.43.6 LCD1602 顯示對于1602與單片機的連接方

22、法如圖3.5所示:I UK3032313圖3.5第四章設計總原理圖1丄二+5V*=1 CffrSTAL1DUFR110k -4EW31 LXTA_1XTA2ro.3XHP3Ki4rtiJC4ro.SfliMro.awMrstFO.ZWTPZJUCMP2伽F2JJA1DALEF2.4IA12F2.5JA13F2.WA14F2.7M15門鄧Rkomo門 YT2EXP3.i門.2P32rtHRP1.3R5rtHT1R+TOP1.5pas/nP1.BP3J0 懈 RP1.7ATSflCSi 打B訶13:19:32SU1 . mMi S5iX: UI2J2B13-06-2? THUO-NniflDCiK

23、. 匚二口 口 a aaJ=MM 4五、實驗心得體會該電子時鐘在調試時,總是出現許多的錯誤,軟件上出了許多的問題,之后糾正,和組 員慢慢調試修改了好多次。可是在仿真時依然存在很多的問題,開始的時候是仿真沒有時間 顯示,之后改了改電路的P0數據傳輸線后時間就顯示出來了。在時間的調整上問題更多, 剛開始時按鍵沒有反應,然后加上了消抖延時后才有反應,但是設的延時時間太長就出現按 鍵不靈,再改后就正常了。在開發(fā)板上調試時,背光是亮著,但是沒有數字出現,經過查看1602的資料才發(fā)現仿真 不需要調節(jié)3腳的變位器,而在電路板上時就需要調節(jié)變位器才能使它正常顯示。第六章 源程序#include #define

24、 uchar unsigned char#define uint unsigned intuchar ds1302_readbyte();void ds1302_writebyte(uchar dat);uchar ds1302_readdata(uchar addr);void ds1302_writedata(uchar addr,uchar dat); void ds1302_settime(uchar *p);void ds1302_gettime(uchar *p);void ds1302_initial();sbit dssclk=PM6;sbit dsIO=P1A7;sbit d

25、srs=PlA5;sbit lcd_rs=P2A5;sbit lcd_write=P2A6;sbit lcd_en=P2A7;sbit keyl=P3A0;/設置sbit key2=P3Al;/加sbit key3=P3A2;/減uchar table_r= 20l3-0l-0l MON ;uchar table_s= 00:00:00;uchar table_week3=M,O,N,T,U,E, W,E,D, T,H,U,T,S,U,N;uchar i,t,keynuml;char sec,min,hour,week,day=l,mon=l;uint year=20l3;uchar Conv

26、ert(uchar In_Date)uchar i, Out_Date = 0, temp = 0;for(i=0; i i) & 0 x0l;Out_Date |= (temp (7 - i);return Out_Date;void delay(uchar z)/延時程序uchar x,y;for(x=0;x148;x+) for(y=0;yz;y+);void write_com(uchar com)/ 往液晶中寫指令lcd_rs=0; lcd_en=0;P0=Convert(com); delay(2);lcd_en=1;delay(2);lcd_en=0;void write_dat

27、a(uchar date)/往液晶中寫數據 lcd_rs=1; lcd_en=0;P0=Convert(date); delay(2);lcd_en=1;delay(2);lcd_en=0;void data_refresh_O(uchar add,uchar date)/第 一行二位數調整uchar shi,ge; shi=date/10;ge=date%10; write_com(0 x80+add);write_data(0 x30+shi); write_data(0 x30+ge);void data_refresh_l(uchar add,uchar date)/第 二行二位數調整

28、uchar shi,ge; shi=date/l0; ge=date%l0;write_com(0 x80+0 x40+add);write_data(0 x30+shi);write_data(0 x30+ge);void data_refresh_2(uchar add,uchar date)/星期調整switch(date)case 0:write_com(0 x80+add);write_data(table_week00);write_data(table_week01);write_data(table_week02); break;case 1:write_com(0 x80+a

29、dd);write_data(table_week10);write_data(table_week11);write_data(table_week12); break;case 2:write_com(0 x80+add);write_data(table_week20);write_data(table_week21);write_data(table_week22); break;case 3:write_com(0 x80+add);write_data(table_week30);write_data(table_week31);write_data(table_week32);

30、break;case 4:write_com(0 x80+add);write_data(table_week40);write_data(table_week41);write_data(table_week42); break;case 5:write_com(0 x80+add);write_data(table_week50);write_data(table_week51);write_data(table_week52); break;case 6:write_com(0 x80+add);write_data(table_week60);write_data(table_week

31、61);write_data(table_week62);break;void data_refresh_4(uchar add,uint date)/四位數調整uchar qian,bai,shi,ge; qian=date/1000;bai=date%1000/100; shi=date%1000%100/10; ge=date%1000%100%10;write_com(0 x80+add); write_data(0 x30+qian);write_data(0 x30+bai);write_data(0 x30+shi); write_data(0 x30+ge);void lcd_

32、init()/液晶顯示初始化 lcd_write=0; lcd_rs=0; lcd_en=0; write_com(0 x38); write_com(0 x0c); write_com(0 x06); write_com(0 x01); write_com(0 x80); for(i=0;i15;i+) write_data(table_ri); delay(10); write_com(0 x80+0 x40); for(i=0;i11;i+) write_data(table_si); delay(10); timer0_init()/定時器 0 初始化TMOD=1;TH0=(65536

33、-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;void keyscan()/按鍵掃描if(key1=0)delay(5);if(key1=0)TR0=0;keynum1+;delay(10);while(!key1);write_com(0 x80+0 x40+10); write_com(0 x0f);if(keynuml=2)分 write_com(0 x80+0 x40+7);if(keynum1=3) 時 write_com(0 x80+0 x40+4);if(keynum1=4)年 write_com(0 x80+4);if(k

34、eynum1=5) 月 write_com(0 x80+7);if(keynum1=6) 日 write_com(0 x80+10);if(keynum1=7)星期 write_com(0 x80+14);if(keynum1=8)keynum1=0;TR0=1;write_com(0 x0c);if(keynum1!=0)if(keynum1=1)if(key2=0)delay(5);if(key2=0)sec+; if(sec=60) sec=0; delay(10); while(!key2); data_refresh_1(9,sec); write_com(0 x80+0 x40+1

35、0);if(key3=0)delay(5);if(key3=0) sec-; if(sec=-1) sec=59; delay(10); while(!key3); data_refresh_1(9,sec); write_com(0 x80+0 x40+10);if(keynum1=2)if(key2=0)delay(5);if(key2=0)min+; if(min=60) min=0; delay(10);while(!key2); data_refresh_1(6,min); write_com(0 x80+0 x40+7);if(key3=0)delay(5);if(key3=0)m

36、in-;if(min=-1) min=59; delay(10);while(!key3); data_refresh_1(6,min); write_com(0 x80+0 x40+7);if(keynum1=3)if(key2=0)delay(5);if(key2=0) hour+; if(hour=24) hour=0; delay(10); while(!key2); data_refresh_1(3,hour); write_com(0 x80+0 x40+4);if(key3=0)delay(5);if(key3=0) hour-; if(hour=-1) hour=23; del

37、ay(10); while(!key3); data_refresh_1(3,hour); write_com(0 x80+0 x40+4);if(keynum1=7)if(key2=0)delay(5);if(key2=0) week+; if(week=7) week=0; delay(10); while(!key2); data_refresh_2(12,week); write_com(0 x80+14);if(key3=0)delay(5);if(key3=0) week-; if(week=-1) week=7; delay(10); while(!key3); data_ref

38、resh_2(12,week); write_com(0 x80+14);if(keynum1=6)if(key2=0)delay(5);if(key2=0)day+;if(mon=1|mon=3|mon=5|mon=7|mon=8|mon=10|mon=12)if(day=32) day=1;if(mon=2) if(year%400=0|(year%100!=0&year%4=0) if(day=30) day=1;elseif(day=29) day=1; if(mon=4|mon=6|mon=9|mon=11)if(day=31) day=1;delay(10);while(!key2

39、);data_refresh_0(9,day);write_com(0 x80+10);if(key3=0)delay(5);if(key3=0)day-;if(mon=1|mon=3|mon=5|mon=7|mon=8|mon=10|mon=12)if(day=0) day=31;if(mon=2) if(year%400=0|(year%100!=0&year%4=0) if(day=0) day=29;elseif(day=0) day=28; if(mon=4|mon=6|mon=9|mon=11)if(day=0) day=30;delay(10);while(!key3);data

40、_refresh_0(9,day);write_com(0 x80+10);if(keynum1=5)if(key2=0)delay(5);if(key2=0)mon+;if(mon=13) mon=1;delay(10);while(!key2); data_refresh_0(6,mon); write_com(0 x80+7);if(key3=0)delay(5);if(key3=0) mon-; if(mon=0) mon=12; delay(10); while(!key3); data_refresh_0(6,mon); write_com(0 x80+7);if(keynum1=

41、4)if(key2=0)delay(5);if(key2=0) year+; if(year=2100) year=2010; delay(10);while(!key2); data_refresh_4(1,year); write_com(0 x80+4);if(key3=0)delay(5);if(key3=0) year-; if(year=2009) year=2099; delay(10);while(!key3); data_refresh_4(1,year);write_com(0 x80+4); void main()/主函數lcd_init();timer0_init();

42、 ds1302_initial(); ds1302_gettime();while(1)delay(5);keyscan();/按鍵掃描void timer0() interrupt 1TH0=(65536-50000)/256;TL0=(65536-50000)%256;t+;if(t=20)t=0;sec+;if(sec=60)sec=0;min+;if(min=60)min=0;hour+;if(hour=24)hour=0;day+;week+; if(week=7) week=0;if(mon=1|mon=3|mon=5|mon=7|mon=8|mon=10|mon=12)if(day=32)day=1;mon+;if(mon=13)mon=1;year+;if(year=2100) year=2010;data_refresh_4(1,year);data_refresh_0(6,mon);if(mon=2)if(year%400=0|(year%100!=0&year%4=0) if(day=30)day=1;mon+; if(mon=13) mon=1; year+;if(year=2100) year=2010;data_refresh_4(1,year); data_refresh_0(6,mon);elseif(day=2

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論