基于單片機(jī)數(shù)字式時(shí)鐘的設(shè)計(jì)單片機(jī)課程設(shè)計(jì)報(bào)告_第1頁
基于單片機(jī)數(shù)字式時(shí)鐘的設(shè)計(jì)單片機(jī)課程設(shè)計(jì)報(bào)告_第2頁
基于單片機(jī)數(shù)字式時(shí)鐘的設(shè)計(jì)單片機(jī)課程設(shè)計(jì)報(bào)告_第3頁
基于單片機(jī)數(shù)字式時(shí)鐘的設(shè)計(jì)單片機(jī)課程設(shè)計(jì)報(bào)告_第4頁
基于單片機(jī)數(shù)字式時(shí)鐘的設(shè)計(jì)單片機(jī)課程設(shè)計(jì)報(bào)告_第5頁
已閱讀5頁,還剩55頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、目錄目錄1系統(tǒng)的總體設(shè)計(jì)11.1仿真電路設(shè)計(jì)11.1.1仿真電路中各模塊的分析11.1.1.1ds1302實(shí)時(shí)時(shí)鐘芯片11.1.1.2lcd1602工業(yè)字符型液晶21.1.1.3at89c52cmos 8位單片機(jī)21.1.1.474hc573八進(jìn)制3態(tài)非反轉(zhuǎn)透明鎖存器31.1.1.574hc00四與非門41.1.1.6蜂鳴器41.1.1.7led燈51.1.1.8按鍵51.2系統(tǒng)流程圖分析62系統(tǒng)的軟件設(shè)計(jì)82.1軟件各模塊分析82.1.1時(shí)鐘設(shè)置模塊82.1.2鬧鈴模塊82.1.3顯示模塊92.2調(diào)試結(jié)果分析102.3體會(huì)與心得112.4附錄112.4.1附錄1 參考文獻(xiàn)112.4.2附錄2

2、 源代碼11qxyinyongxian1110411231單片機(jī)課程設(shè)計(jì)1 系統(tǒng)的總體設(shè)計(jì)1.1 仿真電路設(shè)計(jì)以at89c52單片機(jī)為核心,ds1302實(shí)時(shí)時(shí)鐘芯片,設(shè)計(jì)數(shù)字式電子鐘。人機(jī)接口包括按鍵、顯示器、鬧鐘指示燈和蜂鳴器等,顯示器顯示時(shí)間,按鍵可以調(diào)節(jié)時(shí)間,并可控制電子鐘的啟停、鬧鐘設(shè)置。蜂鳴器作半點(diǎn)和整點(diǎn)報(bào)時(shí)鬧鈴,半點(diǎn)和整點(diǎn)報(bào)時(shí)鬧鈴,時(shí)間延時(shí)10秒,自定義鬧鈴,時(shí)間延時(shí)30秒。顯示器用lcd。圖 1.1-1仿真電路1.1.1 仿真電路中各模塊的分析1.1.1.1 ds1302實(shí)時(shí)時(shí)鐘芯片ds1302是由美國dallas公司推出的具有涓細(xì)電流充電能力的低功耗實(shí)時(shí)時(shí)鐘芯片。ds1302的

3、在實(shí)時(shí)顯示時(shí)間中的應(yīng)用。它可以對(duì)年、月、日、周、時(shí)、分、秒進(jìn)行計(jì)時(shí),且具有閏年補(bǔ)償?shù)榷喾N功能。圖 1.1.1.1-1 ds1302仿真電路1.1.1.2 lcd1602工業(yè)字符型液晶工業(yè)字符型液晶,能夠同時(shí)顯示16x02即32個(gè)字符。(16列2行。它是一種專門用來顯示字母、數(shù)字、符號(hào)等的點(diǎn)陣型液晶模塊。它由若干個(gè)5x7或者5x11等點(diǎn)陣字符位組成,每個(gè)點(diǎn)陣字符位都可以顯示一個(gè)字符,每位之間有一個(gè)點(diǎn)距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用,正因?yàn)槿绱怂运荒芎芎玫仫@示圖形(用自定義cgram,顯示效果也不好)。圖 1.1.1.2-1lcd1602仿真電路1.1.1.3 at89

4、c52cmos 8位單片機(jī)at89c52是一個(gè)低電壓,高性能cmos 8位單片機(jī),片內(nèi)含8k bytes的可反復(fù)擦寫的flash只讀程序存儲(chǔ)器和256 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(ram),器件采用atmel公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)mcs-51指令系統(tǒng),片內(nèi)置通用8位中央處理器和flash存儲(chǔ)單元,at89c52單片機(jī)在電子行業(yè)中有著廣泛的應(yīng)用。圖 1.1.1.3-1 at89c52引腳圖1.1.1.4 74hc573八進(jìn)制3態(tài)非反轉(zhuǎn)透明鎖存器74hc573包含八進(jìn)制3態(tài)非反轉(zhuǎn)透明鎖存器。圖 1.1.1.4-1 74hc573引腳圖1.1.1.5 74hc00四與非門7

5、4hc00是一款高速cmos器件,74hc00引腳兼容低功耗肖特基ttl(lsttl)系列。74hc00遵循jedec標(biāo)準(zhǔn)no.7a。74hc00實(shí)現(xiàn)了2輸入與非門功能。圖 1.1.1.5-1 74hc00引腳圖圖 1.1.1.5-2 74hc00實(shí)驗(yàn)電路圖1.1.1.6 蜂鳴器輸出脈沖到蜂鳴器,蜂鳴器就會(huì)響。實(shí)驗(yàn)中p3.0口接蜂鳴器,給予特定脈沖可演奏兩只老虎的音樂。圖 1.1.1.6-2 蜂鳴器1.1.1.7 led燈輸出1到led燈,led燈就會(huì)亮。實(shí)驗(yàn)中p3.1口接led燈,交替輸出1/0到led燈,實(shí)現(xiàn)led燈的閃爍。圖 1.1.1.7-2 led燈1.1.1.8 按鍵共有8個(gè)按鍵,

6、功能如下: :選定下一個(gè)數(shù)值+:光標(biāo)所在值增加- : 光標(biāo)所在值減少延時(shí):5分鐘后蜂鳴器響定時(shí):按下后開始設(shè)定定時(shí)時(shí)間設(shè)置:按下后開始設(shè)定時(shí)間暫停:時(shí)鐘停止確定:定時(shí)/設(shè)置的確定圖 1.1.1.8-1 鍵盤1.2 系統(tǒng)流程圖分析 系統(tǒng)流程圖分析整點(diǎn)/半點(diǎn)報(bào)時(shí)定時(shí)報(bào)時(shí)暫停時(shí)鐘設(shè)置時(shí)間設(shè)置定時(shí)時(shí)間延時(shí)報(bào)時(shí)開始初始化顯示器讀取當(dāng)前時(shí)間/或自定義時(shí)間顯示2秒提示語后清屏顯示時(shí)間整點(diǎn)/半點(diǎn)定時(shí)到按暫停鍵按設(shè)置鍵按定時(shí)鍵結(jié)束關(guān)閉程序ynnnnnyyyyy按延時(shí)鍵n圖 1.2-1 系統(tǒng)流程圖2 系統(tǒng)的軟件設(shè)計(jì)2.1 軟件各模塊分析2.1.1 時(shí)鐘設(shè)置模塊時(shí)鐘設(shè)置分析按設(shè)置鍵獲取當(dāng)前時(shí)間選擇設(shè)置位設(shè)置具體時(shí)間

7、寫入ds1302函數(shù)返回按確定鍵ny2.1.2 鬧鈴模塊時(shí)鐘設(shè)置分析按定時(shí)鍵獲取當(dāng)前時(shí)間選擇設(shè)置位設(shè)置具體定時(shí)時(shí)間保存定時(shí)時(shí)間函數(shù)返回按確定鍵ny2.1.3 顯示模塊顯示分析轉(zhuǎn)化時(shí)間程序被調(diào)用讀取當(dāng)前時(shí)間顯示時(shí)間程序返回2.2 調(diào)試結(jié)果分析在電子時(shí)鐘設(shè)計(jì)中程序比較長(zhǎng),遇到了各種各樣的問題。因此修改程序的時(shí)間很長(zhǎng),有語法錯(cuò)誤,也有仿真時(shí)功能無法實(shí)現(xiàn)的問題,在此不能一一說明,只能對(duì)個(gè)別問題加以闡述。比如開始時(shí)無法對(duì)ds1302,寫入的值是錯(cuò)誤的。將寫入的字符值改為數(shù)字后,問題解決了。雖然現(xiàn)在回過頭來發(fā)現(xiàn)這個(gè)問題很簡(jiǎn)單,但當(dāng)時(shí)是百思不得其解。我從中學(xué)到:任何事情都會(huì)有出錯(cuò)的可能,有些時(shí)候人的思路中的

8、一些錯(cuò)誤是自己難以發(fā)現(xiàn)的,在工作和生活中要多對(duì)自己的想法提出質(zhì)疑。不光是這種明顯的問題很多,有些細(xì)微的問題也一樣出現(xiàn)了,但解決起來并不容易。在最后的硬件實(shí)現(xiàn)階段發(fā)現(xiàn)蜂鳴器不響。雖然蜂鳴器接地,但是給蜂鳴器高電平也無法驅(qū)動(dòng)蜂鳴器。最后老師說要給蜂鳴器脈沖才能驅(qū)動(dòng)蜂鳴器。問題得以解決。程序已基本實(shí)現(xiàn)要求的如下功能:基本任務(wù):以at89c52單片機(jī)為核心,設(shè)計(jì)數(shù)字式電子鐘。人機(jī)接口包括按鍵、顯示器、鬧鐘指示燈和蜂鳴器等,顯示器顯示時(shí)間,按鍵可以調(diào)節(jié)時(shí)間,并可控制電子鐘的啟停、鬧鐘設(shè)置。蜂鳴器作半點(diǎn)和整點(diǎn)報(bào)時(shí)鬧鈴,鬧鈴時(shí)間延時(shí)30秒。顯示器可以用數(shù)碼管或lcd。擴(kuò)展任務(wù)增加:對(duì)日期的預(yù)設(shè)功能,通過按鍵

9、,切換日期顯示或時(shí)間顯示。其他任務(wù):增加鬧鐘種類:每日指定時(shí)刻鬧鈴、延時(shí)鬧鈴,可以按任意鍵,停止鬧鈴。2.3 體會(huì)與心得通過本次課程設(shè)計(jì),我對(duì)基于單片機(jī)數(shù)字式時(shí)鐘的設(shè)計(jì)有了深入的研究。首先,我對(duì)課題進(jìn)行了分析,分析了任務(wù)要求并理出了簡(jiǎn)單的設(shè)計(jì)思路。電子鐘最關(guān)鍵的就是對(duì)89c52芯片、ds1302。接著,我就接著我的設(shè)計(jì)思路,開始編寫程序,調(diào)試程序。想法永遠(yuǎn)是很美好的,到自己開始寫程序時(shí),我又開始迷茫了,因?yàn)閱纹瑱C(jī)課程是上學(xué)期學(xué)習(xí)的,很多知識(shí)點(diǎn)已經(jīng)忘記了,我又進(jìn)行了重新的學(xué)習(xí)。后來我找到了一段相似的程序,然后進(jìn)行了改編。最后我的程序順利的調(diào)試出來了。通過這次的單片機(jī)大實(shí)驗(yàn),使我加深了對(duì)單片機(jī)的認(rèn)

10、識(shí),并且熟悉了單片機(jī)系統(tǒng)的設(shè)計(jì)流程,收獲豐碩。功能上基本達(dá)標(biāo):時(shí)鐘的顯示,調(diào)時(shí)功能。時(shí)鐘顯示功能,精確度完全可以滿足日常生活顯示時(shí)間的需要;調(diào)時(shí)功能,方便快捷,定時(shí),整點(diǎn)報(bào)時(shí),任意鍵停止鬧鈴,暫停時(shí)鐘等。隨著現(xiàn)在互聯(lián)網(wǎng)的越來越發(fā)達(dá)。網(wǎng)絡(luò)在本次設(shè)計(jì)中起到了很大作用,很多芯片資料,傳統(tǒng)的紙質(zhì)圖書里是沒有的。如何在浩如煙海的網(wǎng)絡(luò)中提取我們需要的知識(shí)也是我必須要提高的,網(wǎng)絡(luò)作為一個(gè)平臺(tái),由于大家的無私奉獻(xiàn),才使得它豐富多彩,包羅萬象。但從這么多的資料中找到我想要的卻不是那么容易,以后得著重加強(qiáng)這方面的能力。從這次的設(shè)計(jì)中,我真正的體會(huì)到,什么叫書到用時(shí)方恨少,還有就是理論聯(lián)系實(shí)踐的重要性,如何把我們所

11、學(xué)的理論知識(shí)運(yùn)用到實(shí)際生活當(dāng)中,這是最難的,也是我最缺的。實(shí)踐出真知,光有書本上的知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,我明白了,作為一個(gè)理工科學(xué)生,我必須多動(dòng)手多實(shí)踐。2.4 附錄2.4.1附錄1 參考文獻(xiàn)1 單片機(jī)原理與應(yīng)用系統(tǒng)設(shè)計(jì)-基于c51的proteus仿真實(shí)驗(yàn)指導(dǎo)書2 教科書3 lcd工作原理及其應(yīng)用方面的資料4 5 潘永雄.新編單片機(jī)原理與應(yīng)用. 第2版6 何宏森.多功能智能電子鐘的設(shè)計(jì).兵工自動(dòng)化,20052.4.2附錄2 源代碼/ main.c/*基于單片機(jī)數(shù)字式時(shí)鐘的設(shè)計(jì)*尹永賢*2014年11月17日-2014年11月28日*yinyongxian*/*引用庫函數(shù)*/#include /*

12、special function register declarations */#include /* prototype declarations for i/o functions */#include #include #include #include /*/*定義數(shù)據(jù)類型的簡(jiǎn)寫形式*/#define byte unsigned char#define uchar unsigned char#define word unsigned int#define uint unsigned int#define ulong unsigned long#define byte unsigned

13、 char#define word unsigned int#define true 1#define false 0/*/void time(unsigned int ucms);/延時(shí)單位:ms/*ds1302.c文件中函數(shù)與變量的聲明*/extern void ds1302_initial();extern void ds1302readall();extern void ds1302dataconver();extern void ds1302writeall();extern char ds1302reg; /ds1302內(nèi)部日期寄存器 (00-06)extern char date

14、; /時(shí)鐘數(shù)據(jù)轉(zhuǎn)換為字符存儲(chǔ)extern char datetime;/*/uchar xdata lcd1602cmdport _at_ 0x8000;/e=1 rs=0 rw=0uchar xdata lcd1602statusport _at_ 0x8001;/e=1-0 rs=0 rw=1uchar xdata lcd1602wdataport _at_ 0x8002;/e=1 rs=1 rw=0uchar xdata lcd1602rdataport _at_ 0x8003;/e=1-0 rs=1 rw=1/*設(shè)定鬧鐘保存所設(shè)定的時(shí)間*/char year2=0,month2=0,d

15、ay2=0,hour2=0,minute2=0,second2=0,week=1;/*設(shè)定時(shí)間保存所設(shè)定的時(shí)間*/char yeart2=0,montht2=0,dayt2=0,hourt2=0,minutet2=0,secondt2=0,weekt=1;/*根據(jù)settime的值設(shè)定相應(yīng)參數(shù)*/*0:設(shè)置年 1:設(shè)置月 2:設(shè)置日 3:設(shè)置時(shí) 4:設(shè)置分 5:設(shè)置秒 6:設(shè)置星期*/char settime=0;char delayup=-1; /為5時(shí)變?yōu)檠訒r(shí)到char startdelay=0; /延時(shí)開始#define busy0x80/ 忙判別位code uchar exampl=-

16、ds1302/lcd1602 -calendar clock;/首先顯示sbit buzzer = p30; /蜂鳴器的接口sbit led = p31; /led燈的接口/lcd1602驅(qū)動(dòng)函數(shù)void lcdwritedata( char dataw );void lcdwritecommand(uchar cmd,uchar attribc );void lcdreset( void );void display( uchar dd );void disponechar(uchar x,uchar y,uchar wdata);void putstr(uchar x,uchar y, u

17、char code *ptr);void locatexy(char posx,char posy);/顯示光標(biāo)定位 void displayttv(void);/顯示時(shí)間 void clock(void);/鬧鐘void yanzou(uchar i,uint pai);/演奏定時(shí)音樂void pause(void); /暫停void setled(void); /設(shè)置ledchar anykeydown(void); /任意鍵按下返回真void setnowtime(void); /設(shè)置時(shí)間void setclock(void); /設(shè)置鬧鐘void integralpoint(void)

18、; /整點(diǎn)或半點(diǎn)報(bào)時(shí)void delay5min(void);/延時(shí)5分鐘 /*主程序*/void main(void)lcdreset(); /初始化ds1302dataconver();putstr(0,0,exampl);/顯示一個(gè)預(yù)定字符串exampltime(2000);/保持2秒顯示內(nèi)容putstr(0,0, );/清屏led=0; /滅燈/初始化后燈處于滅的狀態(tài)ds1302_initial(); /設(shè)定2014年1月1日0時(shí)0分0秒 星期三while(1)/程序初始化后開始循環(huán)運(yùn)行time(300); /防止出現(xiàn)光標(biāo)移動(dòng)displayttv();/顯示時(shí)間integralpoin

19、t(); /整點(diǎn)或半點(diǎn)報(bào)時(shí)delay5min(); /延時(shí)5分鐘clock(); /定時(shí)時(shí)間到程序pause(); /按下暫停鍵,停止時(shí)鐘setnowtime();/按下設(shè)置鍵,設(shè)置時(shí)鐘setclock(); /按下定時(shí)鍵,設(shè)置鬧鐘/*設(shè)置時(shí)間*/void setnowtime(void) /-設(shè)置時(shí)間開始.-if(p1=0xdf)/按下設(shè)置鍵while(p1=0xdf); putstr(0,0, );/清屏/獲得當(dāng)前時(shí)間值yeart1=date12;yeart0=date11;montht1=date6;montht0=date7;dayt1=date8;dayt0=date9;hourt1

20、=date0;hourt0=date1;minutet1=date2;minutet0=date3;secondt1=date4;secondt0=date5;weekt=ds1302reg5;while(p1!=0x7f)/按確定鍵設(shè)定完成time(200); /顯示格式為:*:*:* (表示時(shí)分秒)if(p1=0xfe) /按右移while(p1=0xfe); if(settime=6) settime=0; else settime=settime+1; disponechar(0,0,2); /顯示設(shè)定的年份disponechar(1,0,0);disponechar(2,0,year

21、t1);disponechar(3,0,yeart0);disponechar(4,0,-);disponechar(5,0,montht1); /顯示設(shè)定的月份disponechar(6,0,montht0);disponechar(7,0,-);disponechar(8,0,dayt1); /顯示設(shè)定的日期disponechar(9,0,dayt0);putstr(11,0,time.); /顯示一個(gè)預(yù)定字符串exampldisponechar(0,1,hourt1); /顯示設(shè)定的時(shí)disponechar(1,1,hourt0);disponechar(2,1,:);disponech

22、ar(3,1,minutet1); /顯示設(shè)定的分disponechar(4,1,minutet0);disponechar(5,1,:);disponechar(6,1,secondt1); /顯示設(shè)定的秒disponechar(7,1,secondt0);/switch(ds1302reg5)switch(weekt)case 1:putstr(9,1,sun);/周日break;case 2:putstr(9,1,mon);/周一break;case 3:putstr(9,1,tue);/周二break;case 4:putstr(9,1,wed);/周三break;case 5:put

23、str(9,1,thu);/周四break;case 6:putstr(9,1,fri);/周五break;case 7:putstr(9,1,sat);/周六break;default:putstr(9,1,err);/錯(cuò)誤break;/根據(jù)settime的值修改相應(yīng)的值:settime=0 0:設(shè)置年 1:設(shè)置月 2:設(shè)置日 3:設(shè)置時(shí) 4:設(shè)置分 5:設(shè)置秒 6:設(shè)置星期 switch(settime) case 0:locatexy(0,0);/ 定位顯示地址if(p1=0xfd) /年+while(p1=0xfd); if(yeart0=9)yeart0=0;if(yeart1=9)

24、 yeart1=0;else yeart1=yeart1+1;else yeart0=yeart0+1;else if(p1=0xfb) /年- while(p1=0xfb); if(yeart0=0)if(yeart1=0)yeart1=0;yeart0=0;elseyeart1=yeart1-1; yeart0=9;else yeart0=yeart0-1;break;case 1:locatexy(5,0);/ 定位顯示地址if(p1=0xfd) /月+while(p1=0xfd); if(montht0=2)if(montht1=1) montht1=0; montht0=1;else

25、 montht0=montht0+1;else if(montht0=9) montht1=1;montht0=0;elsemontht0=montht0+1; else if(p1=0xfb) /月- while(p1=0xfb); if(montht0=1)if(montht1=1) montht0=0;else montht1=1;montht0=2;else if(montht0=0) montht1=0;montht0=9;elsemontht0=montht0-1; break;case 2:locatexy(8,0);/ 定位顯示地址if(p1=0xfd) /日+while(p1

26、=0xfd); if(dayt0=1)if(dayt1=3) dayt1=0; dayt0=1;else dayt0=dayt0+1;else if(dayt0=9) dayt1=dayt1+1;dayt0=0;elsedayt0=dayt0+1; else if(p1=0xfb) /日- while(p1=0xfb); if(dayt0=0) dayt1=dayt1-1; dayt0=9;else if(dayt0=1) if(dayt1=0) dayt1=3;dayt0=1;else dayt0=dayt0-1;elsedayt0=dayt0-1; break;case 3:locatex

27、y(0,1);/ 定位顯示地址if(p1=0xfd) /時(shí)+while(p1=0xfd); if(hourt0=3)if(hourt1=2) hourt1=0; hourt0=0;else hourt0=hourt0+1;else if(hourt0=9)hourt0=0; hourt1=hourt1+1;elsehourt0=hourt0+1; else if(p1=0xfb) /時(shí)- while(p1=0xfb); if(hourt0=0)if(hourt1=2 | hourt1=1) hourt1=hourt1-1; hourt0=9;else hourt1=2; hourt0=3;el

28、sehourt0=hourt0-1; break;case 4:locatexy(3,1);/ 定位顯示地址if(p1=0xfd) /分+while(p1=0xfd); if(minutet0=9)if(minutet1=5) minutet1=0; minutet0=0;else minutet1=minutet1+1; minutet0=0;elseminutet0=minutet0+1; else if(p1=0xfb) /分- while(p1=0xfb); if(minutet0=0)if(minutet1=5 | minutet1=4 | minutet1=3 |minutet1=

29、2 | minutet1=1) minutet1=minutet1-1; minutet0=9;else minutet1=5; minutet0=9;elseminutet0=minutet0-1; break;case 5:locatexy(6,1);/ 定位顯示地址if(p1=0xfd) /秒+while(p1=0xfd); if(secondt0=9)if(secondt1=5) secondt1=0; secondt0=0;else secondt1= secondt 1+1; secondt0=0;elsesecondt0=secondt0+1; else if(p1=0xfb)

30、/秒- while(p1=0xfb); if(secondt0=0)if(secondt1=5 | secondt1=4 | secondt1=3 | secondt1=2 | secondt1=1) secondt1=secondt1-1; secondt0=9;else secondt1=5; secondt0=9;elsesecondt0=secondt0-1; break;case 6:locatexy(9,1);/ 定位顯示地址if(p1=0xfd) /星期+while(p1=0xfd); if(weekt=7)weekt=1;elseweekt=weekt+1; else if(p

31、1=0xfb) /星期- while(p1=0xfb); if(weekt=1)weekt=7;elseweekt=weekt-1; break;default: break; /-結(jié)束-根據(jù)settime的值修改相應(yīng)的值:settime=0 0:設(shè)置年 1:設(shè)置月 2:設(shè)置日 3:設(shè)置時(shí) 4:設(shè)置分 5:設(shè)置秒 6:設(shè)置星期/字符轉(zhuǎn)化為數(shù)字weekt= weekt;yeart1= yeart1-0;yeart0= yeart0-0;montht1= montht1-0;montht0= montht0-0;dayt1= dayt1-0;dayt0= dayt0-0;hourt1= hourt

32、1-0;hourt0= hourt0-0;minutet1= minutet1-0;minutet0= minutet0-0;secondt1= secondt1-0;secondt0= secondt0-0;/存入設(shè)定的值datetime0=weekt;datetime1=(yeart14)|yeart0;datetime2=(montht14)|montht0;datetime3=(dayt14)|dayt0;datetime4=(hourt14)|hourt0;datetime5=(minutet14)|minutet0;datetime6=(secondt14)|secondt0;ds

33、1302writeall(); /保存設(shè)定值settime=0;putstr(0,0, );/清屏 /-設(shè)置時(shí)間結(jié)束.-/*設(shè)置定時(shí)*/void setclock(void) /-設(shè)定定時(shí)時(shí)間開始.-if(p1=0xef)/按下定時(shí)鍵while(p1=0xef); putstr(0,0, );/清屏/獲得當(dāng)前時(shí)間值year1=date12;year0=date11;month1=date6;month0=date7;day1=date8;day0=date9;hour1=date0;hour0=date1;minute1=date2;minute0=date3;second1=date4;se

34、cond0=date5;week=ds1302reg5; while(p1!=0x7f)/按確定鍵設(shè)定完成time(200);/顯示格式為:*:*:* (表示時(shí)分秒)if(p1=0xfe) /按右移while(p1=0xfe); if(settime=6) settime=0; else settime=settime+1; disponechar(0,0,2); /顯示設(shè)定的年份disponechar(1,0,0);disponechar(2,0,year1);disponechar(3,0,year0);disponechar(4,0,-);disponechar(5,0,month1); /顯示設(shè)定的月份disponechar(6,0,month0);disponechar(7,0,-);disponechar(8,0,day1); /顯示設(shè)定的日期dis

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論