版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 專業(yè)綜合課程設(shè)計(jì)報(bào)告</p><p> 題目:智能電子鐘(LCD)</p><p> 題目智能電子鐘(LCD)</p><p><b> 設(shè)計(jì)要求:</b></p><p> 制作一個(gè)LCD顯示的智能電子鐘:</p><p> (1) 計(jì)時(shí):秒、分、時(shí)、日、月、年、
2、星期。</p><p> (2) 閏年自動(dòng)判別。</p><p> (3) 時(shí)間、年、月、日、星期交替顯示。</p><p> (5) 自定任意時(shí)刻自動(dòng)開/關(guān)屏。</p><p> (6) 計(jì)時(shí)精度:誤差≤1秒/月(具有微調(diào)設(shè)置)。</p><p><b> 方案論證:</b></
3、p><p> 本實(shí)驗(yàn)可采用并行時(shí)鐘芯片(DS12C887)和串行時(shí)鐘芯片(DS1302),DS1302要用戶自己安裝后備電池和串口通訊,要32.768KHz的晶振,而DS12C887自帶后備電池,并口通訊,無需外圍元件,并且DS12C887多了一個(gè)字節(jié)來記錄世紀(jì)使用的,處在RAM的32H單元,但是其他的寄存器定義都相同。由于本實(shí)驗(yàn)用到了STC12C5A60S2直插40P封裝的單片機(jī)、nokia5110液晶屏、獨(dú)立式
4、按鍵、四路2輸入與門并且都是直插的,而且在實(shí)驗(yàn)室做PCB只能是單層板,為了節(jié)約空間和簡(jiǎn)化電路于是就選用了串行時(shí)鐘芯片DS1302。</p><p><b> 理論設(shè)計(jì):</b></p><p> 用CAD軟件繪制的硬件原理圖</p><p> 電源和程序下載端口,此部分的USB可提供電源和下載端口適用于USB下載端口,DOWN端口適用于四
5、角插針式下載、BAT為備用電源端口。</p><p> CPU主控部分,此部分采用的是高速51系列的STC12C5A60S2的單片機(jī),該芯片不僅運(yùn)行速度快穩(wěn)定驅(qū)動(dòng)能力更大,還為用戶提供了內(nèi)部集成8位/10位可調(diào)分辨率ADC模塊(在此設(shè)計(jì)中有用到),1KB可擦寫EEPROM本設(shè)計(jì)中用其設(shè)計(jì)成可調(diào)鬧鐘功能存放鬧鐘值。</p><p> 此圖為串行數(shù)據(jù)nokia5110的LCD顯示器模塊,采
6、用可控背光和可控電源有很好的節(jié)能效果。該顯示器能顯示漢字,字符,圖片、并且處理顯示數(shù)據(jù)速度快。</p><p> 此模塊為串行數(shù)據(jù)實(shí)時(shí)時(shí)鐘模塊,此模塊采用的是達(dá)拉斯公司生產(chǎn)的DS1302具有閏年補(bǔ)償。</p><p> 此圖為按鍵中斷模塊,在此模塊中每個(gè)獨(dú)立式按鍵都能申請(qǐng)外部中斷及時(shí)處理按鍵按下的值來執(zhí)行用戶的操作。</p><p> 此圖為蜂鳴器模塊此模塊用
7、于鬧鐘鈴聲設(shè)計(jì),和開機(jī)提示。</p><p><b> 此圖為PCB版圖</b></p><p> 此圖為PCB打印預(yù)覽</p><p><b> 軟件流程圖</b></p><p> yes其他鍵yes</p><p><b>
8、; 按下目錄鍵</b></p><p><b> NO</b></p><p><b> 功能1(時(shí)間)</b></p><p><b> 功能2(溫度)</b></p><p><b> 功能3(電壓)</b></p>
9、;<p><b> 功能4(鬧鐘)</b></p><p><b> 程序清單</b></p><p><b> 完整C程序源代碼</b></p><p> /************************************************************
10、**************************</p><p> * 主程序:頂層程序 * </p><p> * 顯示默認(rèn)功能:時(shí)間日期顯示; *</p><p> * 調(diào)用子程序; *&l
11、t;/p><p> * *</p><p> ***************************************************************************************/</p><p> # include <intrins.h></p>&
12、lt;p> # include "zimo.h" //字模程序;</p><p> # include "nokia5110.h"//5110驅(qū)動(dòng)程序;</p><p> # include "ds1302.h" //ds1302驅(qū)動(dòng)程序;</p><p> # include "
13、key.h" //按鍵掃描程序;</p><p> # include "printf.h" //顯示函數(shù);</p><p> # include "power.h" //電源模塊;</p><p> # include "main.h" //引腳定義;</p>
14、<p> # include "delay.h" //延時(shí)函數(shù);</p><p> # include "macroandconst.h"//數(shù)據(jù)類型宏定義;</p><p> # include "ADC.H" //ADC電壓測(cè)量</p><p> # include &q
15、uot;ds18b20.h" //溫度模塊;</p><p> void main()</p><p><b> {</b></p><p> system_inint();//系統(tǒng)初始化;</p><p> //Set_RTC();</p><p><b>
16、 while(1)</b></p><p><b> {</b></p><p> checkclock();</p><p> caidan(); //菜單顯示;</p><p> if(menue==0)</p><p><b> {</b>
17、;</p><p><b> if(ok==1)</b></p><p><b> { </b></p><p> LCD_clear(); //清屏幕</p><p> while(menue==0) //由此進(jìn)入時(shí)鐘功能</p><p><b>
18、 {</b></p><p><b> ok=0;</b></p><p><b> logo();</b></p><p> Read_RTC();//讀取時(shí)鐘;</p><p> data_change();//時(shí)鐘數(shù)據(jù)處理</p><p> t
19、iaozheng_flag();</p><p> date_time(); //顯示年月日時(shí)分秒;</p><p> week();//星期處理;</p><p> set_date_time();//設(shè)置改變時(shí)間和日期;</p><p> powervcc();</p><p> checkclock(
20、);</p><p><b> }</b></p><p> LCD_clear(); //清屏幕</p><p><b> }</b></p><p><b> }</b></p><p> else if(menue==1)//由此進(jìn)入溫
21、度檢測(cè)功能</p><p><b> {</b></p><p><b> if(ok==1)</b></p><p><b> {</b></p><p> LCD_clear(); //清屏幕</p><p> while(menue==
22、1)</p><p><b> {</b></p><p> temperatuercheck();</p><p> ok=0;</p><p><b> }</b></p><p> LCD_clear(); //清屏幕</p><
23、;p><b> }</b></p><p><b> }</b></p><p> elseif(menue==2) //由此進(jìn)入電壓測(cè)量功能</p><p><b> {</b></p><p><b> if(ok==1)</b>&
24、lt;/p><p><b> { </b></p><p> LCD_clear(); //清屏幕</p><p> while(menue==2)</p><p><b> {</b></p><p> power();//電量檢測(cè) </p><
25、p> ok=0;</p><p><b> }</b></p><p> LCD_clear(); //清屏幕</p><p><b> }</b></p><p><b> }</b></p><p> else if(me
26、nue==3)//由此進(jìn)入鬧鐘功能</p><p><b> {</b></p><p><b> if(ok==1)</b></p><p><b> { </b></p><p> LCD_clear(); //清屏幕</p><p>
27、 while(menue==3)</p><p><b> {</b></p><p><b> clock();</b></p><p><b> ok=0;</b></p><p> checkclock();</p><p>&l
28、t;b> }</b></p><p> LCD_clear(); //清屏幕</p><p><b> }</b></p><p><b> }</b></p><p> else {LCD_clear(); caidan();}</p><p>
29、;<b> }</b></p><p><b> }</b></p><p> void extern0() interrupt 0 /*外部中斷0中斷函數(shù)定義;*/</p><p><b> { </b></p><p> key(); </p&
30、gt;<p><b> }</b></p><p> /**************************************************************************************</p><p> * 子程序:底層程序 * &
31、lt;/p><p> * 功能:時(shí)間日期數(shù)據(jù)處理; *</p><p> * *</p><p> * *</p><p> ************************************
32、***************************************************/</p><p> # include <intrins.h></p><p> # include "macroandconst.h"</p><p> # include "stc12c5a60s2.h"
33、;</p><p> # include "nokia5110.h"</p><p> sbit SCK = P0^2;//DS1302時(shí)鐘;</p><p> sbit SDA = P0^1;//DS1302數(shù)據(jù);</p><p> sbit RST = P0^0;// DS1302復(fù)位;</p&g
34、t;<p> uchar l_tmpDate[]={0,0,0,1,1,1,13};//秒分時(shí)日月周年08-05-15 12:00:00</p><p> uchar l_tmpdisplay[13];</p><p> code uchar Write_rtc_address[7]={0x80,0x82,0x84,0x86,0x88,0x8a,0x8c}; //秒分時(shí)
35、日月周年 最低位讀寫位</p><p> code uchar Read_RTC_address[7]={0x81,0x83,0x85,0x87,0x89,0x8b,0x8d}; </p><p> /******************************************************************/</p><p> /*
36、 寫一個(gè)字節(jié) */</p><p> /******************************************************************/</p><p> void Write_Ds1302_Byte(unsigned char temp) &
37、lt;/p><p><b> {</b></p><p> unsigned char i;</p><p> for (i=0;i<8;i++) //循環(huán)8次 寫入數(shù)據(jù)</p><p><b> { </b></p><p><b> SCK
38、=0;</b></p><p> SDA=temp&0x01; //每次傳輸?shù)妥止?jié) </p><p> temp>>=1; //右移一位</p><p><b> SCK=1;</b></p><p><b> }</b></p>
39、<p><b> } </b></p><p> /******************************************************************/</p><p> /* 寫入DS1302 */</p
40、><p> /******************************************************************/</p><p> void Write_Ds1302( unsigned char address,unsigned char dat ) </p><p><b> {</b><
41、/p><p><b> RST=0;</b></p><p><b> _nop_();</b></p><p><b> SCK=0;</b></p><p><b> _nop_();</b></p><p><b&g
42、t; RST=1;</b></p><p> _nop_(); //啟動(dòng)</p><p> Write_Ds1302_Byte(address);//發(fā)送地址</p><p> Write_Ds1302_Byte(dat);//發(fā)送數(shù)據(jù)</p><p> RST=0;
43、 //恢復(fù)</p><p><b> }</b></p><p> /******************************************************************/</p><p> /* 讀出DS1302數(shù)據(jù)
44、 */</p><p> /******************************************************************/</p><p> unsigned char Read_Ds1302 ( uchar address )</p><p><b> {</b><
45、;/p><p> unsigned char i,temp=0x00;</p><p><b> RST=0;</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b
46、> SCK=0;</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> RST=1;</b></p><p><b> _nop_();</b>
47、</p><p><b> _nop_();</b></p><p> Write_Ds1302_Byte(address);</p><p> for (i=0;i<8;i++) //循環(huán)8次 讀取數(shù)據(jù)</p><p><b> {</b></p><p&
48、gt;<b> if(SDA)</b></p><p><b> {</b></p><p> temp|=0x80;</p><p> }//每次傳輸?shù)妥止?jié)</p><p> temp>>=1;//右移一位</p><p><b>
49、; SCK=1;</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> SCK=0;</b></p><p><b> } </b></p>
50、;<p><b> RST=0;</b></p><p> _nop_(); //以下為DS1302復(fù)位的穩(wěn)定時(shí)間</p><p><b> _nop_();</b></p><p><b> RST=0;</b></p><p>&
51、lt;b> SCK=0;</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> _nop_();<
52、/b></p><p><b> SCK=1;</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> SDA=0;</b></p><p&
53、gt;<b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> SDA=1;</b></p><p><b> _nop_();</b></p><p><b> _nop_();
54、</b></p><p> return (temp);//返回</p><p><b> }</b></p><p> /******************************************************************/</p><p> /*
55、 讀時(shí)鐘數(shù)據(jù) */</p><p> /******************************************************************/</p><p> void Read_RTC(void) //讀取 日歷</p><p
56、><b> {</b></p><p> unsigned char i,*p;</p><p> p=Read_RTC_address; //地址傳遞</p><p> for(i=0;i<7;i++) //分7次讀取 秒分時(shí)日月周年</p><p><b> {&l
57、t;/b></p><p> l_tmpDate[i]=Read_Ds1302(*p);</p><p><b> p++;</b></p><p><b> }</b></p><p><b> }</b></p><p> /****
58、**************************************************************/</p><p> /* 設(shè)定時(shí)鐘數(shù)據(jù) */</p><p> /************************************************
59、******************/</p><p> void Set_RTC(void) //設(shè)定 日歷</p><p><b> {</b></p><p> uchar i,*p,tmp;</p><p> for(i=0;i<7;i++)</p><p> {
60、 //BCD處理</p><p> tmp=l_tmpDate[i]/10;</p><p> l_tmpDate[i]=l_tmpDate[i]%10;</p><p> l_tmpDate[i]=l_tmpDate[i]+tmp*16;</p><p><b> } </b></
61、p><p> Write_Ds1302(0x8E,0X00); //關(guān)閉寫保護(hù);</p><p> p=Write_rtc_address;//傳地址</p><p> for(i=0;i<7;i++)//7次寫入 秒分時(shí)日月周年</p><p><b> {</b></p><p&
62、gt; Write_Ds1302(*p,l_tmpDate[i]);</p><p><b> p++; </b></p><p><b> }</b></p><p> Write_Ds1302(0x8E,0x80); //打開寫保護(hù); </p><p><b> }<
63、/b></p><p> /**************************************************************************************</p><p> * 子程序:底層程序 * </p><p> *
64、 功能:按鍵處理,鍵值顯示; *</p><p> * *</p><p> * *</p><p> ************************************************************
65、***************************/</p><p> # include "main.h"</p><p> # include "ds1302.h"</p><p> # include "nokia5110.h"</p><p> # include
66、 "delay.h"</p><p> # include "printf.h"</p><p> # include "eeprom.h"</p><p> uchar set=0;//按鍵選擇標(biāo)志位;</p><p> char key_flag=0;//按鍵加減標(biāo)志位
67、;</p><p> uchar menue=0;//菜單選擇標(biāo)志位;</p><p> uchar ok=0;//確認(rèn)標(biāo)志位;</p><p> char miao,fen,shi,ri,yue,zhou,nian;/*時(shí)間日期數(shù)值標(biāo)志位;*/</p><p> uchar clocktable[5]; //分,時(shí),星期;&
68、lt;/p><p> char hour=7;</p><p> char minute=30;</p><p> char week2=1;</p><p> void Delay10ms()//@11.0592MHz</p><p><b> {</b></p><
69、;p> unsigned char i, j;</p><p><b> i = 108;</b></p><p><b> j = 145;</b></p><p><b> do</b></p><p><b> {</b></p
70、><p> while (--j);</p><p> } while (--i);</p><p><b> }</b></p><p> void key()</p><p><b> {</b></p><p><b> EA=
71、0;</b></p><p> /*判斷選擇按鍵是否按下;如果按下了當(dāng)松開的時(shí)候讓背光打開;set++;*/</p><p> if(keyswitch==0)</p><p><b> {</b></p><p> Delay10ms();</p><p> if(key
72、switch==0) </p><p><b> { </b></p><p> Delay10ms();</p><p> while(keyswitch==0);</p><p> LCD_BLA=1;</p><p> if(set>8)set=0;</p
73、><p><b> set++;</b></p><p><b> }</b></p><p><b> }</b></p><p> /*up和down按鍵的檢測(cè);加減標(biāo)志位*/</p><p> if(keyup==0)</p>
74、<p> {Delay10ms();</p><p> if(keyup==0)</p><p><b> { </b></p><p> LCD_BLA=1;</p><p> Delay10ms();</p><p> while(keyup==0);
75、</p><p> key_flag++;</p><p><b> }</b></p><p><b> }</b></p><p> if(keydown==0)</p><p> {Delay10ms();</p><p> if(
76、keydown==0)</p><p><b> { </b></p><p> LCD_BLA=1;</p><p> Delay10ms();</p><p> while(keydown==0);</p><p> key_flag--;</p><p&g
77、t;<b> }</b></p><p><b> }</b></p><p> if(keymenue==0)</p><p><b> {</b></p><p> Delay10ms();</p><p> if(keymenue==0
78、) //菜單選擇標(biāo)志位;</p><p> { </p><p> Delay10ms();</p><p> while(keymenue==0);</p><p> LCD_BLA=1;</p><p><b> menue++;</b></p&g
79、t;<p> if(menue>3)menue=0;</p><p><b> }</b></p><p> } if(keyok==0)</p><p><b> {</b></p><p> Delay10ms();</p><p> if
80、(keyok==0) //確認(rèn)標(biāo)志位;</p><p> {Delay10ms(); </p><p> while(keyok==0);</p><p><b> ok++;</b></p><p> if(ok>1)ok=0;</p><p> set=0;L
81、CD_BLA=0;TR0 = 0;</p><p><b> }</b></p><p><b> }</b></p><p> if(set>=2)TR0 = 0;</p><p><b> EA=1;</b></p><p><b
82、> }</b></p><p> void set_date_time()</p><p><b> {</b></p><p> if(set==2)</p><p><b> {</b></p><p> //while(keyup==0
83、|keydown==0);</p><p><b> {</b></p><p> miao=l_tmpdisplay[10]*10+l_tmpdisplay[11];</p><p> miao=miao+key_flag;</p><p> if((key_flag<0)&(miao==0))
84、miao=59;</p><p> if(miao>59)miao=0;</p><p> miao=miao%10+(miao/10)*16;</p><p> Write_Ds1302(0x8E,0x00);</p><p> Write_Ds1302(0x80,miao);</p><p> W
85、rite_Ds1302(0x8E,0x80);</p><p><b> }</b></p><p><b> }</b></p><p> if(set==3)</p><p><b> { </b></p><p> // whil
86、e(keyup==0||keydown==0);</p><p><b> {</b></p><p> fen=l_tmpdisplay[8]*10+l_tmpdisplay[9];</p><p> fen=fen+key_flag;</p><p> if(fen>59)</p><
87、;p><b> {</b></p><p><b> fen=0;</b></p><p><b> }</b></p><p> if((key_flag<0)&&(fen<0))</p><p><b> {</b
88、></p><p><b> fen=59;</b></p><p><b> }</b></p><p> fen=fen%10+(fen/10)*16;</p><p> Write_Ds1302(0x8E,0x00);</p><p> Write_Ds
89、1302(0x82,fen);</p><p> Write_Ds1302(0x8E,0x80);</p><p><b> }</b></p><p><b> }</b></p><p> if(set==4)</p><p><b> {</
90、b></p><p> // while(keyup==0||keydown==0);</p><p><b> {</b></p><p> shi=l_tmpdisplay[6]*10+l_tmpdisplay[7];</p><p> shi=shi+key_flag;</p><
91、p> if(shi>23)shi=0;</p><p> if((key_flag<0)&&(shi<0))shi=23;</p><p> shi=shi%10+(shi/10)*16;</p><p> Write_Ds1302(0x8E,0x00);</p><p> Write_Ds1
92、302(0x84,shi);</p><p> Write_Ds1302(0x8E,0x80);</p><p><b> }</b></p><p><b> }</b></p><p> if(set==5)</p><p><b> { <
93、;/b></p><p> // while(keyup==0||keydown==0);</p><p><b> {</b></p><p> ri=l_tmpdisplay[4]*10+l_tmpdisplay[5];</p><p> ri=ri+key_flag;</p><
94、;p> if(ri>31)ri=1;</p><p> if((key_flag<0)&&(ri<1))ri=31;</p><p> ri=ri%10+(ri/10)*16;</p><p> Write_Ds1302(0x8E,0x00);</p><p> Write_Ds1302(0x
95、86,ri);</p><p> Write_Ds1302(0x8E,0x80);</p><p><b> }</b></p><p><b> }</b></p><p> if(set==6)</p><p><b> {</b>&l
96、t;/p><p> //while(keyup==0||keydown==0);</p><p><b> {</b></p><p> yue=l_tmpdisplay[2]*10+l_tmpdisplay[3];</p><p> yue=yue+key_flag;</p><p> i
97、f(yue>12)yue=1;</p><p> if((key_flag<0)&&(yue<1))yue=12;</p><p> yue=yue%10+(yue/10)*16;</p><p> Write_Ds1302(0x8E,0x00);</p><p> Write_Ds1302(0x88
98、,yue);</p><p> Write_Ds1302(0x8E,0x80);</p><p><b> }</b></p><p><b> }</b></p><p> if(set==7)</p><p><b> {</b><
99、;/p><p> //while(keyup==0||keydown==0);</p><p><b> {</b></p><p> zhou=l_tmpdisplay[12];</p><p> zhou=zhou+key_flag;</p><p> if(zhou>7)zhou
100、=1;</p><p> if((key_flag<0)&&(zhou<1))zhou=7;</p><p> zhou=zhou%10+(zhou/10)*16;</p><p> Write_Ds1302(0x8E,0x00);</p><p> Write_Ds1302(0x8A,zhou);<
101、/p><p> Write_Ds1302(0x8E,0x80);</p><p><b> }</b></p><p><b> }</b></p><p> if(set==8)</p><p><b> {</b></p>&
102、lt;p> //while(keyup==0||keydown==0);</p><p><b> {</b></p><p> nian=l_tmpdisplay[0]*10+l_tmpdisplay[1]+key_flag;;</p><p> if(nian>79)nian=0;</p><p&g
103、t; if((key_flag<0)&&(nian<0))nian=79;</p><p> nian=nian%10+(nian/10)*16;</p><p> Write_Ds1302(0x8E,0x00);</p><p> Write_Ds1302(0x8C,nian);</p><p> Wr
104、ite_Ds1302(0x8E,0x80);</p><p><b> }</b></p><p><b> }</b></p><p> key_flag=0;</p><p><b> }</b></p><p> void caidan
105、()</p><p><b> {</b></p><p> uchar counter;</p><p> uchar function;</p><p> /*光標(biāo)顯示位置控制*/</p><p> if(menue==0)</p><p><b>
106、 {</b></p><p> LCD_write_hanzi(0,4,10);Delay1ms(120);LCD_write_hanzi(0,0,3);Delay1ms(120);LCD_write_hanzi(0,2,10);LCD_write_hanzi(4,0,10);</p><p><b> }</b></p><p&
107、gt; else if(menue==1)</p><p><b> {</b></p><p> LCD_write_hanzi(0,0,10);Delay1ms(120);LCD_write_hanzi(0,2,3);Delay1ms(120);LCD_write_hanzi(0,4,10);LCD_write_hanzi(4,0,10);</p>
108、;<p><b> }</b></p><p> else if(menue==2)</p><p><b> {</b></p><p> LCD_write_hanzi(0,2,10);Delay1ms(120);LCD_write_hanzi(0,4,3);Delay1ms(120);LCD_w
109、rite_hanzi(0,0,10);LCD_write_hanzi(4,0,10);</p><p><b> }</b></p><p> else if(menue==3) </p><p> {LCD_write_hanzi(0,4,10);Delay1ms(120);LCD_write_hanzi(0,0,10);Delay1m
110、s(120);LCD_write_hanzi(0,2,10);LCD_write_hanzi(4,0,28);}</p><p><b> else</b></p><p><b> {</b></p><p> LCD_write_hanzi(0,4,10);Delay1ms(120);LCD_write_hanz
111、i(0,0,3);Delay1ms(120);LCD_write_hanzi(0,2,10);LCD_write_hanzi(4,0,10);</p><p><b> }</b></p><p> for(function=0;function<2;function++)</p><p><b> {</b>
112、</p><p> LCD_write_hanzi(function+1,0,function+4);</p><p> LCD_write_hanzi(function+1,2,function+6);</p><p> LCD_write_hanzi(function+1,4,function+8);</p><p><b&g
113、t; }</b></p><p><b> if(set<2)</b></p><p><b> { </b></p><p><b> TR0 = 1;</b></p><p> if(TF0==1)</p><p>&l
114、t;b> {</b></p><p> counter++;</p><p><b> TF0=0;</b></p><p><b> }</b></p><p> if(counter==100)</p><p><b> {<
115、/b></p><p> counter=0;LCD_BLA=0;TR0 = 0;</p><p> if(menue==0)ok=1;</p><p><b> } </b></p><p><b> } </b></p><p><b> }&l
116、t;/b></p><p><b> /*鬧鐘程序*/</b></p><p> void clock()</p><p><b> {</b></p><p> Read_RTC();//讀取時(shí)鐘;</p><p> data_change();//時(shí)鐘數(shù)
117、據(jù)處理</p><p> if(set==2)</p><p><b> {</b></p><p> //while(keyup==0||keydown==0);</p><p><b> {</b></p><p> minute+=key_flag;&
118、lt;/p><p> if((key_flag<0)&(minute==0))minute=59;</p><p> if(minute>59)minute=0;</p><p> EA=0;//使用iap功能時(shí)關(guān)閉中斷;</p><p> hour=R_EROM(1,2);//讀鬧鐘小時(shí)數(shù)據(jù);</p>
119、<p> week2=R_EROM(1,3);//讀鬧鐘分?jǐn)?shù)據(jù);</p><p> C_EROM(1);</p><p> W_EROM(1,1,minute);//寫鬧鐘分?jǐn)?shù)據(jù);</p><p> W_EROM(1,2,hour); //寫鬧鐘小時(shí)數(shù)據(jù);</p><p> W_EROM(1,3,week2);//寫鬧鐘
120、星期數(shù)據(jù);</p><p> EA=1;//不使用iap功能時(shí)打開中斷;</p><p><b> }</b></p><p> key_flag=0;</p><p><b> }</b></p><p> if(set==3)</p><p&
121、gt;<b> { </b></p><p> // while(keyup==0||keydown==0);</p><p><b> {</b></p><p> hour=hour+key_flag;</p><p> if(hour>23)hour=0;</p
122、><p> if((key_flag<0)&&(hour<0))hour=23;</p><p><b> }</b></p><p> EA=0;//使用iap功能時(shí)關(guān)閉中斷 </p><p> minute=R_EROM(1,1);</p><p> week
123、2=R_EROM(1,3);</p><p> C_EROM(1);</p><p> W_EROM(1,1,minute);</p><p> W_EROM(1,2,hour);</p><p> W_EROM(1,3,week2);</p><p> EA=1;//不使用iap功能時(shí)打開中斷;</p
124、><p> key_flag=0;</p><p><b> }</b></p><p> if(set==4)</p><p><b> {</b></p><p> // while(keyup==0||keydown==0);</p><p
125、><b> {</b></p><p> week2=week2+key_flag;</p><p> if(week2>7)week2=1;</p><p> if((key_flag<0)&&(week2<1))week2=7;</p><p><b> }
126、</b></p><p> EA=0;//使用iap功能時(shí)關(guān)閉中斷</p><p> minute=R_EROM(1,1);</p><p> hour=R_EROM(1,2);</p><p> C_EROM(1);</p><p> W_EROM(1,1,minute);</p>
127、<p> W_EROM(1,2,hour);</p><p> W_EROM(1,3,week2);</p><p> EA=1;//不使用iap功能時(shí)打開中斷;</p><p> key_flag=0;</p><p><b> }</b></p><p> EA=0
128、;//使用iap功能時(shí)關(guān)閉中斷</p><p> minute=R_EROM(1,1);</p><p> hour=R_EROM(1,2);</p><p> week2=R_EROM(1,3);</p><p> EA=1;//不使用iap功能時(shí)打開中斷;</p><p> clocktable[0]=m
129、inute/10;//分十位;</p><p> clocktable[1]=minute%10;//分個(gè)位</p><p> clocktable[2]=hour/10; //時(shí)十位</p><p> clocktable[3]=hour%10; //時(shí)個(gè)位</p><p> clocktable[4]=week2; //星
130、期;</p><p> LCD_write_hanzi(2,0,28);</p><p> LCD_write_shu(1,2,clocktable[2]);</p><p> LCD_write_shu(2,2,clocktable[3]);//時(shí)</p><p> LCD_write_shu(3,2,64);</p>
131、<p> LCD_write_shu(4,2,clocktable[0]);</p><p> LCD_write_shu(5,2,clocktable[1]);//分;</p><p> if(clocktable[4]==1)</p><p><b> {</b></p><p> LCD_wr
132、ite_6x8shu(10,3,23);</p><p> LCD_write_6x8shu(11,3,25);</p><p> LCD_write_6x8shu(12,3,24);</p><p><b> }</b></p><p> if(clocktable[4]==2)</p><
133、;p><b> {</b></p><p> LCD_write_6x8shu(10,3,30);</p><p> LCD_write_6x8shu(11,3,31);</p><p> LCD_write_6x8shu(12,3,15);</p><p><b> }</b>&
134、lt;/p><p> if(clocktable[4]==3)</p><p><b> {</b></p><p> LCD_write_6x8shu(10,3,33);</p><p> LCD_write_6x8shu(11,3,15);</p><p> LCD_write_6x8s
135、hu(12,3,14);</p><p><b> }</b></p><p> if(clocktable[4]==4)</p><p><b> {</b></p><p> LCD_write_6x8shu(10,3,30);</p><p> LCD_wr
136、ite_6x8shu(11,3,18);</p><p> LCD_write_6x8shu(12,3,31);</p><p><b> }</b></p><p> if(clocktable[4]==5)</p><p><b> {</b></p><p>
137、 LCD_write_6x8shu(10,3,16);</p><p> LCD_write_6x8shu(11,3,28);</p><p> LCD_write_6x8shu(12,3,19);</p><p><b> }</b></p><p> if(clocktable[4]==6)</p
138、><p><b> {</b></p><p> LCD_write_6x8shu(10,3,29);</p><p> LCD_write_6x8shu(11,3,11);</p><p> LCD_write_6x8shu(12,3,30);</p><p><b> }<
139、;/b></p><p> if(week2==7)</p><p><b> {</b></p><p> LCD_write_6x8shu(10,3,29);</p><p> LCD_write_6x8shu(11,3,31);</p><p> LCD_write_6x8s
140、hu(12,3,24);</p><p><b> }</b></p><p> switch(set)</p><p><b> {</b></p><p> case 0: LCD_write_6x8shu(10,4,96);LCD_write_6x8shu(11,4,96);LCD_
141、write_6x8shu(12,4,96);LCD_write_6x8shu(13,4,96);break;</p><p> case 1: LCD_write_6x8shu(10,4,96);LCD_write_6x8shu(11,4,96);LCD_write_6x8shu(12,4,96);LCD_write_6x8shu(13,4,96);break;</p><p> ca
溫馨提示
- 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. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 微機(jī)原理課程設(shè)計(jì)--智能電子鐘
- 電子鐘課程設(shè)計(jì)----數(shù)字電子鐘的設(shè)計(jì)
- eda電子鐘課程設(shè)計(jì)----電子鐘的設(shè)計(jì)
- 電子鐘課程設(shè)計(jì)
- 電子鐘課程設(shè)計(jì)--多功能電子鐘
- 電子鐘課程設(shè)計(jì)
- 電子鐘課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---智能電子鐘
- 智能時(shí)鐘課程設(shè)計(jì)--智能電子鐘(lcd顯示)
- 單片機(jī)課程設(shè)計(jì)-智能電子鐘
- eda課程設(shè)計(jì)-電子鐘
- 自動(dòng)電子鐘課程設(shè)計(jì)
- 數(shù)字電子鐘課程設(shè)計(jì)
- 數(shù)字電子鐘課程設(shè)計(jì)
- lcd電子鐘課程設(shè)計(jì)
- 單片機(jī)電子鐘課程設(shè)計(jì)---數(shù)字電子鐘
- 電子鐘課程設(shè)計(jì)3
- 電子鐘課程設(shè)計(jì)6
- 課程設(shè)計(jì)---數(shù)字電子鐘
- 數(shù)字電子鐘課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論