![DS1302+1602+鍵盤調(diào)整+鬧鐘_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/7/c1bb67d6-5bbf-413f-b56b-112cc2c5aaae/c1bb67d6-5bbf-413f-b56b-112cc2c5aaae1.gif)
![DS1302+1602+鍵盤調(diào)整+鬧鐘_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/7/c1bb67d6-5bbf-413f-b56b-112cc2c5aaae/c1bb67d6-5bbf-413f-b56b-112cc2c5aaae2.gif)
![DS1302+1602+鍵盤調(diào)整+鬧鐘_第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/7/c1bb67d6-5bbf-413f-b56b-112cc2c5aaae/c1bb67d6-5bbf-413f-b56b-112cc2c5aaae3.gif)
![DS1302+1602+鍵盤調(diào)整+鬧鐘_第4頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/7/c1bb67d6-5bbf-413f-b56b-112cc2c5aaae/c1bb67d6-5bbf-413f-b56b-112cc2c5aaae4.gif)
![DS1302+1602+鍵盤調(diào)整+鬧鐘_第5頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/7/c1bb67d6-5bbf-413f-b56b-112cc2c5aaae/c1bb67d6-5bbf-413f-b56b-112cc2c5aaae5.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 #include<reg52.h> #include<intrins.h>#define uchar unsigned char#define uint unsigned int /定義的的4個(gè)鍵盤sbit s1=P30; /時(shí)鐘功能鍵sbit s2=P31; /加鍵sbit s3=P32; /減鍵sbit s4=P36; /確認(rèn)鍵sbit s5=P33; /鬧鐘功能鍵sbit dula=P26; /數(shù)碼管操作sbit wela=P27;sbit lcden=P25; /液晶操作sbit lcdrs=P10;sbit lcdrw=P11;sbit rd=P37; /為
2、了分離出3個(gè)獨(dú)立鍵盤sbit FM=P23; /蜂鳴器口sbit ACC0=ACC0; /累加器喂ACC 這是位定義sbit ACC7=ACC7; sbit sclk=P21; /DS1302操作sbit data1=P20;sbit rst=P24;uchar s1num,flag1,flag2,s5num;int miao,shi,fen,nian,yue,ri,week,afen,ashi;int x1,x2;uchar code table1="SUN"/星期字表uchar code table2="MON"uchar code table3=&
3、quot;TUE"uchar code table4="WED"uchar code table5="THU" uchar code table6="FRI"uchar code table7="SAT"void delayms(uint xms) /延時(shí)函數(shù)uint x,y;for(x=xms;x>0;x-)for(y=110;y>0;y-);void di() /蜂鳴器函數(shù)FM=0;delayms(100);FM=1;void cmg88() /關(guān)數(shù)碼管函數(shù)dula=1;P0=0x00;d
4、ula=0;void write_com(uchar com)/液晶寫命令函數(shù)lcdrs=0;lcden=0;P0=com;delayms(5);lcden=1;delayms(5);lcden=0;void write_date(uchar date) /液晶寫數(shù)據(jù)函數(shù)lcdrs=1;lcden=0;P0=date;delayms(5);lcden=1;delayms(5);lcden=0;void Write1302(uchar dat) /向1302寫一個(gè)字節(jié)數(shù)據(jù) uchar i;ACC=dat;for(i=8;i>0;i-) data1=ACC0; sclk=1; sclk=0;
5、 ACC=ACC>>1; void WriteSet1302(uchar Cmd,uchar dat) /根據(jù)命令,向1302寫一個(gè)字節(jié)數(shù)據(jù) rst=0;_nop_(); sclk=0;_nop_(); rst=1; delayms(2); Write1302(Cmd); Write1302(dat);sclk=1; rst=0; uchar Read1302()/向1302讀一個(gè)字節(jié)數(shù)據(jù) uchar i; for(i=8;i>0;i-) ACC=ACC>>1;ACC7=data1;sclk=1; sclk=0;return(ACC); uchar ReadSet
6、1302(uchar Cmd) /根據(jù)命令,向1302讀一個(gè)字節(jié)數(shù)據(jù) uchar dat; rst=0; sclk=0; rst=1; Write1302(Cmd); dat=Read1302(); sclk=1; rst=0; return(dat); void inital_1302() /初始化DS1302函數(shù) WriteSet1302(0x8e,0x00); /禁止寫保護(hù)WriteSet1302(0x90,0xaa);/定義充電WriteSet1302(0x80,0x45); /秒WriteSet1302(0x84,0x18); / 時(shí)WriteSet1302(0x82,0x47);
7、/ 分WriteSet1302(0x8c,0x16);/年WriteSet1302(0x88,0x05); /月WriteSet1302(0x86,0x23);/日WriteSet1302(0x8a,0x01); /星期WriteSet1302(0xc0,0x07); /鬧鐘小時(shí)初始化WriteSet1302(0xfc,0x30); /鬧鐘分鐘初始化WriteSet1302(0x8e,0x80);/開寫保護(hù)void write_sfm(uchar add,uchar dat) /時(shí)分秒函數(shù)uchar gw,sw;gw=dat%16;sw=dat/16;write_com(0x80+0x40+a
8、dd);write_date(sw+0x30);write_date(gw+0x30);void write_nyr(uchar add,uchar dat) /年月日函數(shù)uchar gw,sw;gw=dat%16;sw=dat/16;write_com(0x80+add);write_date(sw+0x30);write_date(gw+0x30);void write_week(uchar xq) /寫星期函數(shù)uchar x;write_com(0x80+12);switch(xq)case 1:for(x=0;x<3;x+)write_date(table1x);break;ca
9、se 2:for(x=0;x<3;x+)write_date(table2x);break;case 3:for(x=0;x<3;x+)write_date(table3x);break;case 4:for(x=0;x<3;x+)write_date(table4x);break;case 5:for(x=0;x<3;x+)write_date(table5x);break;case 6:for(x=0;x<3;x+)write_date(table6x);break;case 7:for(x=0;x<3;x+)write_date(table7x);br
10、eak;write_com(0x80+12);void init()/初始化操作flag1=0;flag2=0;rd=0;dula=0;wela=0;lcdrw=0;lcden=0;fen=0;miao=0;shi=0;week=0;nian=0;yue=0;ri=0;s1num=0;s5num=0;write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);write_com(0x80+1); /在液晶上寫一些固定的數(shù)write_date('2');write_date('0');delaym
11、s(5); write_com(0x80+5); /在液晶上寫一些固定的數(shù)write_date('-');delayms(5);write_com(0x80+8);write_date('-');delayms(5);write_com(0x80+0x40+3); /時(shí)間部分的兩個(gè)冒號(hào)write_date(':');delayms(5);write_com(0x80+0x40+6);write_date(':');delayms(5);write_com(0x80+0x40+12);write_date(':');
12、delayms(5);void keyscan() /鍵盤掃描操作if(s1=0&&s5num=0) /時(shí)鐘功能鍵 并且鬧鐘不處于調(diào)整狀態(tài)delayms(5);if(s1=0&&s5num=0)s1num+;flag1=1;while(!s1);di();switch(s1num)case 1:write_com(0x80+0x40+8);write_com(0x0f); /光標(biāo)閃爍break;case 2:write_com(0x80+0x40+5); break;case 3:write_com(0x80+0x40+2);break;case 4:write
13、_com(0x80+14);break;case 5:write_com(0x80+10);break;case 6:write_com(0x80+7);break;case 7:write_com(0x80+4);break;case 8:flag1=0;s1num=0;write_com(0x0c);WriteSet1302(0x8e,0x00); /第八次按時(shí)鐘功能鍵后,把調(diào)整了的所有數(shù)據(jù)當(dāng)前狀態(tài)存入到DS1302中WriteSet1302(0x80,miao); WriteSet1302(0x84,shi);WriteSet1302(0x82,fen); WriteSet1302(0x
14、8a,week); WriteSet1302(0x8c,nian); WriteSet1302(0x88,yue);WriteSet1302(0x86,ri); WriteSet1302(0x8e,0x80); break;if(s1num!=0&&s5num=0) /時(shí)鐘加鍵if(s2=0)delayms(5);if(s2=0)while(!s2);di();switch(s1num)case 1: x1=miao%16;x2=miao/16; x1+;if(x1=10) x1=0;x2+; if(x2>=6)x2=0;miao=x1+x2*16; write_sfm(
15、7,miao);write_com(0x80+0x40+8);break;case 2:x1=fen%16;x2=fen/16; x1+;if(x1=10) x1=0;x2+; if(x2>=6)x2=0;fen=x1+x2*16; write_sfm(4,fen);write_com(0x80+0x40+5);break;case 3:x1=shi%16;x2=shi/16; x1+;if(x1=10) x1=0;x2+;if(x2>=2&&x1>=4)x1=0;x2=0;shi=x1+x2*16; write_sfm(1,shi);write_com(0x
16、80+0x40+2);break;case 4:x1=(week)%10;x2=(week)/10;x1+;if(x1=8)x1=1;week=x2*16+x1;write_week(week); write_com(0x80+14);break;case 5:x1=ri%16;x2=ri/16; x1+;if(x1=10) x1=0;x2+; if(x2=3&&x1=2)x1=0;x2=0;ri=x1+x2*16; write_nyr(9,ri);write_com(0x80+10);break;case 6:x1=yue%16;x2=yue/16; x1+;if(x2=1&
17、amp;&x1=3) x1=1;x2=0; if(x1=10)x1=0;x2+;yue=x1+x2*16; write_nyr(6,yue);write_com(0x80+7);break;case 7:x1=nian%16;x2=nian/16; x1+;if(x2=9)&&(x1=10) x1=0;x2=0;if(x1=10)x2+;x1=0;nian=x1+x2*16; write_nyr(3,nian);write_com(0x80+4);break;if(s3=0)/時(shí)鐘減鍵delayms(5);if(s3=0)while(!s3);di();switch(s
18、1num)case 1:x1=miao%16;x2=miao/16; x1-;if(x1=-1) x1=9;x2-; if(x2=-1)x2=5;miao=x1+x2*16; write_sfm(7,miao);write_com(0x80+0x40+8);break;case 2:x1=fen%16;x2=fen/16; x1-;if(x1=-1) x1=9;x2-; if(x2=-1)x2=5;fen=x1+x2*16; write_sfm(4,fen);write_com(0x80+0x40+5);break;case 3:x1=shi%16;x2=shi/16; x1-;if(x1=-
19、1) x1=9;x2-;if(x2=-1)x1=3;x2=2;shi=x1+x2*16; write_sfm(1,shi);write_com(0x80+0x40+2);break;case 4:x1=(week)%10;x2=(week)/10;x1-;if(x1=0)x1=7;week=x2*16+x1;write_week(week); write_com(0x80+14);break;case 5:x1=ri%16;x2=ri/16; x1-;if(x1=-1) x1=9;x2-; if(x2=-1)x1=1;x2=3;ri=x1+x2*16; write_nyr(9,ri);writ
20、e_com(0x80+10);break;case 6:x1=yue%16;x2=yue/16; x1-;if(x2=1)&&(x1=-1) x1=9;x2-; if(x2=0)&&(x1=0)x1=2;x2=1;yue=x1+x2*16; write_nyr(6,yue);write_com(0x80+7);break;case 7:x1=nian%16;x2=nian/16; x1-;if(x1=-1) x1=9;x2-; if(x2=-1)x1=9;x2=9;nian=x1+x2*16; write_nyr(3,nian);write_com(0x80+4
21、);break;if(s1num!=0|s5num!=0) /表示時(shí)鐘或者鬧鐘處于調(diào)整狀態(tài)if(s4=0)/確定狀態(tài)的按鍵delayms(5);if(s4=0)if(s1num!=0) /表示時(shí)鐘處于調(diào)整狀態(tài)while(!s4); /確定鍵被按下di();WriteSet1302(0x8e,0x00); /按了確認(rèn)鍵后,把調(diào)整了的所有數(shù)據(jù)當(dāng)前狀態(tài)存入到DS1302中WriteSet1302(0x80,miao); WriteSet1302(0x84,shi);WriteSet1302(0x82,fen); WriteSet1302(0x8a,week); WriteSet1302(0x8c,n
22、ian); WriteSet1302(0x88,yue);WriteSet1302(0x86,ri); WriteSet1302(0x8e,0x80); flag1=0;write_com(0x0c);s1num=0;if(s5num!=0) /表示鬧鐘處于調(diào)整狀態(tài)while(!s4);di();WriteSet1302(0x8e,0x00); /調(diào)整鬧鐘,不能讓時(shí)鐘暫停,故沒把時(shí)鐘數(shù)據(jù)寫入DS1302中WriteSet1302(0xc0,ashi); /把鬧鐘數(shù)據(jù)寫入DS1302中WriteSet1302(0xfc,afen); WriteSet1302(0x8e,0x80);flag2=0
23、;s5num=0;write_com(0x0c); if(s5=0&&s1num=0) /鬧鐘功能鍵 并且時(shí)鐘不處于調(diào)整狀態(tài)delayms(5);if(s5=0&&s1num=0)s5num+;flag2=1;while(!s5);di();if(s5num=1)write_com(0x80+0x40+14);write_com(0x0f);if(s5num=2)write_com(0x80+0x40+11); if(s5num=3)s5num=0;flag2=0;WriteSet1302(0x8e,0x00);WriteSet1302(0xfc,afen);W
24、riteSet1302(0xc0,ashi);WriteSet1302(0x8e,0x80);write_com(0x0c);if(s5num!=0&&s1num=0) /只有鬧鐘處于調(diào)整狀態(tài)if(s2=0) /鬧鐘加鍵delayms(5);if(s2=0)while(!s2);di();if(s5num=1)x1=afen%16;x2=afen/16;x1+;if(x1=10)x1=0;x2+;if(x2>=6)x2=0;afen=x1+x2*16;write_sfm(13,afen);write_com(0x80+0x40+14);if(s5num=2)x1=ashi%16;x2=ashi/16;x1+;if(x2>=2&&x1>=4)x1=0;x2=0;if(x1=10)x1=0;x2+;ashi=x1+x2*16;write_sfm(10,ashi);write_com(0x80+0x40+11);if(s3=0) /鬧鐘減鍵delayms(5);if(s3=0)while(!s3);di();if(s5num=1)x1=afen%16;x2=afen/16; x1-;if(x1=-1) x1=9;x2-; if(x2=-1)x2=5;afen=x1+x2*16; write_sfm(13
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2031年中國(guó)合成硅線石行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025年上海股權(quán)投資策劃雙方合同范本
- 2025年會(huì)議室場(chǎng)地租賃合同書
- 2025年供貨合同樣本
- 2025年合同修改程序完整版
- 2025年度教育機(jī)構(gòu)廣告合作與招生合同
- 2025年度國(guó)際道路橋梁養(yǎng)護(hù)合同范本(定期檢查與維護(hù)服務(wù))
- 2025年度森林資源經(jīng)營(yíng)權(quán)承包合同協(xié)議
- 2025年度住宅小區(qū)物業(yè)合同財(cái)務(wù)報(bào)表編制規(guī)范
- 2025年度汽車4S店維修配件供應(yīng)鏈合同
- 醫(yī)院廉潔自律承諾書
- 胚胎移植術(shù)前術(shù)后護(hù)理
- 企業(yè)招聘技巧培訓(xùn)
- 學(xué)校校本課程《英文電影鑒賞》文本
- 中考語(yǔ)文句子排序練習(xí)題(文本版)
- 華為HCSA-Presales-IT售前認(rèn)證備考試題及答案
- 預(yù)算績(jī)效評(píng)價(jià)管理機(jī)構(gòu)入圍投標(biāo)文件(技術(shù)方案)
- 小腸梗阻的護(hù)理
- 非物質(zhì)文化遺產(chǎn)拓印 課件
- 環(huán)境檢測(cè)實(shí)驗(yàn)室分析人員績(jī)效考核方案
- 全過(guò)程工程咨詢管理服務(wù)方案
評(píng)論
0/150
提交評(píng)論