




已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
#include /頭文件#include#define uchar unsigned char /宏定義#define uint unsigned int/位定義sbit rs=P25; /液晶位定義 sbit lcden=P27;sbit s1=P20; /時間功能切換按鍵sbit s2=P21; /按鍵加sbit s3=P23; /按鍵減sbit s4=P24; /鬧鐘功能切換鍵sbit rst=P15; /ds1302引腳定義sbit io=P16;sbit sclk=P17;sbit beep=P30; /蜂鳴器uchar num,count,shi,fen,miao,s1num,s2num,year,month,day,week,flag,flag1,year1,month1,day1,week1,shi1,fen1,miao1,year2,month2,day2,week2,shi2,fen2,miao2,year5,month5,day5,week5,shi5,fen5,miao5,wk,ashi,afen; /參數(shù)定義uchar code table=20 - - ; /液晶固定顯示uchar code table1= : : 00:00;/*uchar time_dat7=12,1,6,6,12,59,59; /年周月日時分秒uchar write_add7=0x8c,0x8a,0x88,0x86,0x84,0x82,0x80;uchar read_add7=0x8d,0x8b,0x89,0x87,0x85,0x83,0x81;*/void write_com(uchar com); /液晶寫指令函數(shù)void write_data(uchar date); /液晶寫數(shù)據(jù)函數(shù)void write_ds1302(uchar add,uchar dat); /ds1302芯片寫指令函數(shù)void set_rtc(); /ds1302時間設(shè)置函數(shù)void time_pros(); /ds1302進(jìn)制轉(zhuǎn)換函數(shù)void read_rtc(); /ds1302讀時間函數(shù)void alarm(); /鬧鐘函數(shù)void delay(uint z) /延時函數(shù) uint x,y; for(x=z;x0;x-) for(y=110;y0;y-);void init() /初始化 lcden=0; flag=0; flag1=0; write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x01); write_com(0x80); /液晶固定顯示,第一行 for(num=0;num14;num+) write_data(tablenum); delay(5); write_com(0x80+0x40); /液晶顯示第二行 for(num=0;num20;num+) write_data(table1num); delay(5); void write_com(uchar com)/1602液晶寫指令 rs=0; P0=com; delay(5); lcden=1; delay(5); lcden=0;void write_data(uchar date)/1602液晶寫寫數(shù)據(jù) rs=1; P0=date; delay(5); lcden=1; delay(5); lcden=0;void write_sfm(uchar add,uchar date)/時分秒 uchar shi3,ge; shi3=date/10; ge=date%10; write_com(0x80+0x40+add); write_data(0x30+shi3); write_data(0x30+ge);void write_nyr(uchar ad,uchar date)/年月日 uchar shi4,ge2; shi4=date/10; ge2=date%10; write_com(0x80+ad); write_data(0x30+shi4); write_data(0x30+ge2);void write_week(uchar wk) /星期按西方星期設(shè)置 星期天為第一天 write_com(0x80+11); switch(wk) case 1: write_data(S); delay(5); write_data(U); delay(5); write_data(N); break; case 2: write_data(M); delay(5); write_data(O); delay(5); write_data(N); break; case 3: write_data(T); delay(5); write_data(U); delay(5); write_data(E); break; case 4: write_data(W); delay(5); write_data(E); delay(5); write_data(D); break; case 5: write_data(T); delay(5); write_data(H); delay(5); write_data(U); break; case 6: write_data(F); delay(5); write_data(R); delay(5); write_data(T); break; case 7: write_data(S); delay(5); write_data(A); delay(5); write_data(T); break; void keyscan() /按鍵函數(shù) if(s1=0) delay(5); if(s1=0) write_com(0x0f); s1num+; /記錄按鍵次數(shù) flag=1; flag1=1; while(!s1); switch(s1num)/光標(biāo)閃爍點定位 case 1:write_com(0x80+0x40+6); /秒 break; case 2:write_com(0x80+0x40+3); /分 break; case 3:write_com(0x80+0x40+0); /時 break; case 4:write_com(0x80+11); /星期 break; case 5:write_com(0x80+8); /日 break; case 6:write_com(0x80+5); /月 break; case 7:write_com(0x80+2); /年 break; case 8:s1num=0; write_com(0x0c);/設(shè)置開顯示光標(biāo)不顯示 關(guān)閉時間設(shè)置 set_rtc(); flag=0; break; if(s1num!=0) /按鍵加減 if(s2=0) /加按鍵函數(shù) delay(10); if(s2=0) while(!s2); switch(s1num) /根據(jù)功能鍵相應(yīng)次數(shù)做出調(diào)節(jié) case 1: miao+; /秒加 if(miao=60) miao=0; write_sfm(6,miao); write_com(0x80+0x40+6); break; case 2: fen+; /分加 if(fen=60) fen=0; write_sfm(3,fen); write_com(0x80+0x40+3); break; case 3: shi+; /時加 if(shi=24) shi=0; write_sfm(0,shi); write_com(0x80+0x40+0); break; case 4: week+; /星期加 if(week=8) week=1; write_week(week); write_com(0x80+11); break; case 5: day+; /日加 if(day=32) day=1; write_nyr(8,day); write_com(0x80+8); break; case 6: month+; /月加 if(month=13) month=1; write_nyr(5,month); write_com(0x80+5); break; case 7: year+; /年加 if(year=100) year=0; write_nyr(2,year); write_com(0x80+2); break; if(s3=0) /減按鍵函數(shù)同上 delay(10); if(s3=0) while(!s3); switch(s1num) /根據(jù)功能鍵相應(yīng)次數(shù)做出調(diào)節(jié) case 1: miao-; if(miao=-1) miao=59; write_sfm(6,miao); write_com(0x80+0x40+6); break; case 2: fen-; if(fen=-1) fen=59; write_sfm(3,fen); write_com(0x80+0x40+3); break; case 3: shi-; if(shi=-1) shi=23; write_sfm(0,shi); write_com(0x80+0x40+0); break; case 4: week-; if(week=-1) week=7; write_week(week); write_com(0x80+11); break; case 5: day-; if(day=-1) day=31; write_nyr(8,day); write_com(0x80+8); break; case 6: month-; if(month=-1) month=12; write_nyr(5,month); write_com(0x80+5); break; case 7: year-; if(year=-1) year=99; write_nyr(2,year); write_com(0x80+2); break; if(s4=0) /鬧鐘按鍵 delay(5); if(s4=0) write_com(0x0f); /光標(biāo)閃爍 s2num+; /記錄按鍵次數(shù) flag=1; while(!s4); switch(s2num)/光標(biāo)閃爍點定位 case 1:write_com(0x80+0x40+13); /分 break; case 2:write_com(0x80+0x40+10); /時 break; case 3:write_com(0x0c); /關(guān)閉鬧鐘設(shè)置 flag=0; s2num=0; break; if(s2num!=0) /鬧鐘設(shè)置 if(s2=0) /鬧鐘加 delay(10); if(s2=0) while(!s2); switch(s2num) /根據(jù)功能鍵相應(yīng)次數(shù)做出調(diào)節(jié) case 1: afen+; if(afen=60) afen=0; write_sfm(13,afen); write_com(0x80+0x40+13); break; case 2: ashi+; if(ashi=24) ashi=0; write_sfm(10,ashi); write_com(0x80+0x40+10); break; if(s3=0) /鬧鐘減 delay(10); if(s3=0) while(!s3); switch(s2num) /根據(jù)功能鍵相應(yīng)次數(shù)做出調(diào)節(jié) case 1: afen-; if(afen=-1) afen=59; write_sfm(13,afen); write_com(0x80+0x40+13); break; case 2: ashi-; if(ashi=-1) ashi=23; write_sfm(10,ashi); write_com(0x80+0x40+10); break; void wirte_ds1302_byte(uchar dat) /ds1302字節(jié)寫 uchar i; for(i=0;i1; sclk=1; void write_ds1302(uchar add,uchar dat) /ds1302寫函數(shù) rst=0; _nop_();/ 空操作 sclk=0; _nop_(); rst=1; _nop_(); wirte_ds1302_byte(add); wirte_ds1302_byte(dat); rst=0; io=1; sclk=1;uchar read_ds1302(uchar add) /ds1302讀函數(shù) uchar i,value; rst=0; _nop_();/ 空操作 sclk=0; _nop_(); rst=1; _nop_(); wirte_ds1302_byte(add); for(i=0;i1; sclk=0; if(io) value=value|0x80; sclk=1; rst=0; _nop_();/ 空操作 sclk=0; _nop_(); sclk=1; io=1; return value;void set_rtc() /ds1302時間設(shè)置 write_ds1302(0x8e,0x00); /關(guān)寫保護 year1=year/10; /轉(zhuǎn)換為十六進(jìn)制 year=year%10; year=year+year1*16; write_ds1302(0x8c,year); week1=week/10; week=week%10; week=week+week1*16; write_ds1302(0x8a,week); month1=month/10; month=month%10; month=month+month1*16; write_ds1302(0x88,month); day1=day/10; day=day%10; day=day+day1*16; write_ds1302(0x86,day); shi1=shi/10; shi=shi%10; shi=shi+shi1*16; write_ds1302(0x84,shi); fen1=fen/10; fen=fen%10; fen=fen+fen1*16; write_ds1302(0x82,fen); miao1=miao/10; miao=miao%10; miao=miao+miao1*16; write_ds1302(0x80,miao); write_ds1302(0x8e,0x80); /開寫保護 flag1=0; void read_rtc() /從ds1302中讀時間 year2=read_ds1302(0x8d); week2=read_ds1302(0x8b); month2=read_ds1302(0x89); day2=read_ds1302(0x87); shi2=read_ds1302(0x85); fen2=read_ds1302(0x83); miao2=read_ds1302(0x81);void time_pros() /從ds1302中讀出的時間轉(zhuǎn)換為十進(jìn)制 year5=year2/16; year2=year2%16; year2=year2+year5*10; month5=month2/16; month2=month2%16; month2=m
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公寓代理銷售合同范本
- 冰淇淋套餐合同范本
- 出售文明公寓合同范本
- 中藥加工合同范本
- 公寓閣樓買賣合同范本
- cps推廣合同范本
- 農(nóng)戶斗雞養(yǎng)殖合同范本
- 事業(yè)物業(yè)合同范本
- 住家阿姨用工合同范本
- 與單位停車合同范例
- 華大新高考聯(lián)盟2025屆高三11月教學(xué)質(zhì)量測評生物含答案
- 心水病的中醫(yī)護理方案
- 新錄用公務(wù)員任職定級審批表
- 成品油運輸 投標(biāo)方案(技術(shù)方案)
- 體育賽事直播服務(wù)投標(biāo)管理辦法
- 高三沖刺畢業(yè)家長會課件2024-2025學(xué)年
- 【申報書】高職院校高水平專業(yè)群建設(shè)項目申報書
- 《美特斯邦威公司財務(wù)現(xiàn)狀及其盈利能力問題探析(10000字論文)》
- 餐飲服務(wù)電子教案 學(xué)習(xí)任務(wù)4 擺臺技能(4)-西餐宴會餐臺擺臺
- 河南省公安基礎(chǔ)知識真題匯編1
- 2024年江蘇常州市教育基本建設(shè)與裝備管理中心招聘3人歷年高頻難、易錯點500題模擬試題附帶答案詳解
評論
0/150
提交評論