![畢業(yè)設計(論文)基于單片機的智能數(shù)字鬧鐘程序代碼_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-4/8/b50669b8-3682-4fc4-beda-739634a8ba04/b50669b8-3682-4fc4-beda-739634a8ba041.gif)
![畢業(yè)設計(論文)基于單片機的智能數(shù)字鬧鐘程序代碼_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-4/8/b50669b8-3682-4fc4-beda-739634a8ba04/b50669b8-3682-4fc4-beda-739634a8ba042.gif)
![畢業(yè)設計(論文)基于單片機的智能數(shù)字鬧鐘程序代碼_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-4/8/b50669b8-3682-4fc4-beda-739634a8ba04/b50669b8-3682-4fc4-beda-739634a8ba043.gif)
![畢業(yè)設計(論文)基于單片機的智能數(shù)字鬧鐘程序代碼_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-4/8/b50669b8-3682-4fc4-beda-739634a8ba04/b50669b8-3682-4fc4-beda-739634a8ba044.gif)
![畢業(yè)設計(論文)基于單片機的智能數(shù)字鬧鐘程序代碼_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-4/8/b50669b8-3682-4fc4-beda-739634a8ba04/b50669b8-3682-4fc4-beda-739634a8ba045.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、姚輝虎的畢業(yè)設計-基于單片機的智能數(shù)字鬧鐘程序代碼程序代碼main.c#include #include #include unsigned char clock_data4;sbit speaker = p24;/ 蜂鳴器sbit bell = p22; /鈴響bit bell_on=0;bit key_ok=0;unsigned char bell_time=0x20;uchar week_clock_set;#define first_addr 0/定義全局變量unsigned char yy,mo,dd,xq,hh,mm,ss;/ 定義時間映射全局變量(專用寄存器)uchar j;/*
2、/函數(shù)聲明extern unsigned char read_clock(unsigned char ord);extern void lcdwc(unsigned char cmdcode);extern void hzkdis(unsigned char code *s);extern void hzkdis2(unsigned char *s);extern char read_one_byte(unsigned char addr);extern void write_one_byte(unsigned char addr,unsigned char thedata);void lcm
3、_w_ss(void);extern void lcdreset(void);extern void init_ds18b20(void);extern char gotkey();extern void init_1302(void);extern unsigned int readtemperature(void);extern void write_clock(unsigned char ord, unsigned char dd);extern void disp_hz(uchar x,uchar *c_str,uchar w);extern void delay(unsigned i
4、nt t);void new_time(void);void read_clockss(x);/void lcm_w_temp(void) ;void read_clocks(void)ss = read_clock(0x81);/讀取秒數(shù)據(jù)mm = read_clock(0x83);/讀取分鐘數(shù)據(jù)hh = read_clock(0x85);/小時dd = read_clock(0x87);/日mo = read_clock(0x89);/月xq = read_clock(0x8b);/星期yy = read_clock(0x8d);/年/*void set_time(unsigned cha
5、r sel) /根據(jù)選擇調(diào)整的相應項目加1并寫入ds1302 signed char address,item; signed char max,mini; if(sel=7) address=0x80; max=0;mini=0; /秒 if(sel=6) address=0x82; max=59;mini=0; /分鐘 if(sel=5) address=0x84; max=23;mini=0; /小時 if(sel=3) address=0x86; max=31;mini=1; /日 if(sel=2) address=0x88; max=12;mini=1; /月 if(sel=1)
6、address=0x8c; max=99; mini=0; /年 if(sel=4) address=0x8a; max=7;mini=1; /星期 /讀取1302某地址上的數(shù)值轉換成10進制賦給item item=(read_clock(address+1)/16)*10 + (read_clock(address+1)%16; if(key_y = 0) item+;/數(shù)加 1 if(key_n= 0) item-;/數(shù)減 1 if(itemmax) item=mini;/查看數(shù)值有效范圍 if(itemmini) item=max; write_clock(0x8e,0x00);/允許寫
7、操作 write_clock(address,(item/10)*16+item%10);/轉換成16進制寫入1302 write_clock(0x8e,0x80);/寫保護,禁止寫操作/ updata ();/刷新數(shù)據(jù)/ lcm_w_mm();/刷新 分 */void delaym(unsigned int a)/延時函數(shù) 1ms/次unsigned char i;while( -a != 0)for(i = 0; i 0x07 & hh 0x22 /*& w = 0*/)/beep = 0; led_r = 0;delaym(100);/beep = 1; led_r = 1;lcdwc(
8、0x88+first_addr);str0=hh/16+0x30;str1=hh%16+0x30;hzkdis2(str);/*/向lcm中填寫 分鐘 數(shù)據(jù)void lcm_w_mm(void) unsigned char str2;str2=0;if(read_clock(0x83) != mm)mm = read_clock(0x83);/*if( w = 0)days(); /節(jié)日顯示updata ();/刷新數(shù)據(jù)*/*lcm_w_test(0,0x89);lcm_w_test(1,0x3a); /:lcm_w_test(1,(mm/16)+0x30);lcm_w_test(1,mm%1
9、6+0x30);lcm_w_test(1,0x2e); /.*/lcdwc(0x89+first_addr);hzkdis(:);str0=(mm/16)+0x30;str1=mm%16+0x30;hzkdis2(str);hzkdis(:);/*/向lcm中填寫 秒 數(shù)據(jù)void lcm_w_ss(void)unsigned char str2 ;str2=0;/if(read_clock(0x81) != ss)/判斷是否需要更新/*ss = read_clock(0x81);/更新數(shù)據(jù)lcm_w_test(0,0x8b);/秒值在lcm上的寫入位置lcm_w_test(1,(ss/16)
10、+0x30);/寫十位lcm_w_test(1,ss%16+0x30);/寫個位led_b = led_b;/背光閃爍lcm_w_mm();/刷新 分 */ /lcm_w_mm(); ss=read_clock(0x81);lcdwc(0x8b+first_addr);str0=ss/16+0x30;str1=ss%16+0x30;hzkdis2(str);lcm_w_temp(void) /unsigned char str14; uchar str2; unsigned int i=0; unsigned char a=0,b=0,c=0; uchar temp=28;i=readtemp
11、erature();/讀溫度并送顯/*a=i/100;str13=a+0x30;str12=0x2e;str11=(i/10-a*10)+0x30;str10=(i-a*100-b*10)+0x30;/lcm_w_test(1,c+0x30); /小位1位/lcm_w_word();/度c/str10=(i/100)%10+0x30;/str11=(i%100)/10)+0x30;/str12=(i%10)+0x30;*/ str0=temp/10+0x30; str1=temp%10+0x30; lcdwc(0x8e+first_addr);hzkdis2(str);lcdwc(0x8f+f
12、irst_addr); hzkdis();/*/刷新數(shù)據(jù)void updata (void)lcm_w_hh();/刷新 小時lcm_w_dd();/刷新 日lcm_w_xq();/更新星期值lcm_w_mo();/刷新 月lcm_w_yy();/刷新 年 lcm_w_mm();lcm_w_ss();lcm_w_temp();/初始化界面void restlib() lcdwc(0x80+first_addr); hzkdis(校園打鈴系統(tǒng)); lcdwc(0x90+first_addr); hzkdis(初始化.); lcdwc(0x88+first_addr); hzkdis(姚輝虎);
13、lcdwc(0x98+first_addr); hzkdis();/*void rj1lib()unsigned char str2;lcdwc(0x80+first_addr); str0=yy/10+0x30;str1=yy%10+0x30;hzkdis(20);hzkdis2(str);hzkdis(年); lcdwc(0x90+first_addr) ;if(mo/16 != 0)str0=mo/16+0x30;/十位消隱elsestr0=0x20 ;/同上str1=mo%16+0x30;hzkdis2(str);lcdwc(0x91+first_addr);hzkdis(月); lc
14、dwc(0x92+first_addr);if(dd/16 != 0)str0=(dd/16)+0x30;/十位消隱elsestr0=0x20;/同上str1=dd%16+0x30;hzkdis2(str);lcdwc(0x93+first_addr);hzkdis(日);lcdwc(0x88+first_addr); str0=hh/16+0x30;str1=hh%16+0x30;hzkdis2(str);lcdwc(0x89+first_addr);hzkdis(:);str0=(mm/16)+0x30;str1=mm%16+0x30;hzkdis2(str); lcdwc(0x81+fi
15、rst_addr);/*-*/*/不同按鍵實現(xiàn)不同功能void gongneng(int gotkeys) int gn,gn10,gn0 ; gn=gotkeys; switch(gn) case 0: delaym(2000);gn0=gotkey();if(gn0=0)lcdreset();restlib();init_ds18b20();init_1302();delaym(3000); cxjmlib();break;/長按系統(tǒng)初始化; case 10: lcdreset();lcdwc(0x80+first_addr); hzkdis(1.設置時間); lcdwc(0x90+fir
16、st_addr); hzkdis(2.設置鬧時);lcdwc(0x88+first_addr); hzkdis(3.系統(tǒng)初始化);lcdwc(0x79+first_addr); hzkdis();tt:gn10=gotkey(); /if (gn10!=16) goto tt;tt1:gn10=gotkey(); /if (gn10=16) goto tt;switch(gn10)case 1:lcdreset(); read_clocks();rj1lib();tt2:gn10=gotkey();if (gn10!=16) goto tt2; tt3:gn10=gotkey();if (gn
17、10=16) goto tt2;switch(gn10)case 0: break;case 1: break;case 2: break;case 3: break;case 4: break;case 5: break;case 6: break;case 7: break;case 8: break;case 9: break;default:goto tt3;break; case 2: lcdreset();read_clocks();naozhonglib();tt4:gn10=gotkey();if (gn10!=16) goto tt4 ;gn10=gotkey();if (g
18、n10=16) goto tt4; break;case 3: lcdreset();rj3lib();tt6:gn10=gotkey();if (gn10!=16) goto tt6;gn10=gotkey();if (gn10=16) goto tt6;if(gn10=10) /鍵值為10就初始化系統(tǒng) lcdreset();restlib();init_ds18b20();init_1302();delaym(3000); cxjmlib(); if(gn10=11) / 鍵值為11取消初始化,返回程序主界面; lcdreset();cxjmlib(); break;tt8:gn10=go
19、tkey();if (gn10!=16) goto tt8 ;gn10=gotkey();if (gn10=16) goto tt8; break; default: goto tt1; */void read_clockss(x)hh=read_one_byte(x*4+0x20);mm=read_one_byte(x*4+0x21);ss=read_one_byte(x*4+0x22);week_clock_set=read_one_byte(x*4+0x23);void write_clockss(x)write_one_byte(x*4+0x20,hh);write_one_byte(
20、x*4+0x21,mm);write_one_byte(x*4+0x22,ss);write_one_byte(x*4+0x23,week_clock_set);/* bit cmp_clock() /每分鐘檢測一次unsigned char a1;for (a1=0;a132;a1+)read_clockss(a1);/acc0 = a1*4+0x20 .acc1 .acc2 .acc3if (hh=clock_data0) & (mm=clock_data1) return 1; return 0;*/unsigned char yy,mo,dd,xq,hh,mm,ss;/ 定義時間映射全
21、局變量(專用寄存器)void clr_xs()lcdwc(0x80+first_addr); hzkdis(); lcdwc(0x90+first_addr); hzkdis();lcdwc(0x88+first_addr); hzkdis();lcdwc(0x98+first_addr); hzkdis();void disp_set_clock() unsigned char sel;uchar str2;str2=0;lcdwc(0x91+first_addr);str0=yy/16+0x30;str1=yy%16+0x30;hzkdis2(str);hzkdis2(年);str0=mo
22、/16+0x30;str1=mo%16+0x30;hzkdis2(str);hzkdis2(月);str0=dd/16+0x30;str1=dd%16+0x30;hzkdis2(str);hzkdis2(日);lcdwc(0x89+first_addr);str0=hh/16+0x30;str1=hh%16+0x30;hzkdis2(str);hzkdis2(時);str0=mm/16+0x30;str1=mm%16+0x30;hzkdis2(str);hzkdis2(分);str0=ss/16+0x30;str1=ss%16+0x30;hzkdis2(str);hzkdis2(秒);/lcd
23、wc(0x98+first_addr); sel = (read_clock(0x8b)%16; /字節(jié)低4位的bcd碼放入sel lcdwc(0x9c+first_addr);/寫入指定區(qū)域(97h 第二行第8個字) if(sel=7) hzkdis(07); / if(sel=6) hzkdis(06); / if(sel=5) hzkdis(05); / if(sel=4) hzkdis(04); / if(sel=3) hzkdis(03); / if(sel=2) hzkdis(02); / if(sel=1) hzkdis(01); /星期一 lcdwc(0x9a+first_ad
24、dr); hzkdis(星期) ;void disp_clock_set()uchar str2;str2=0;lcdwc(0x89+first_addr);str0=hh/16+0x30;str1=hh%16+0x30;hzkdis2(str);hzkdis2(時);str0=mm/16+0x30;str1=mm%16+0x30;hzkdis2(str);hzkdis2(分);/*str0=ss/16+0x30;str1=ss%16+0x30;hzkdis2(str);hzkdis2(秒); */week_clock_set/lcdwc(0x98+first_addr);/hzkdis2(
25、);/*bit set_xs_1_flicker(uchar x,bit y) /修改數(shù)據(jù)標志uchar a,str2;str1=0x1e;bit flicker=0;key_ok=1;while (gotkey()!=16) xs_fl0:while(1)for (a=0;a20;a+) /delay(500);if (gotkey()!=16) goto xs_fl1;key_ok=0;xs_fl1:lcdwc(x+first_addr);if (flicker) hzkdis2(_); else str0=0x31;str1=0x1e;hzkdis2(str);flicker = fli
26、cker;a=gotkey();if ( (a10) & (key_ok=0)key_ok=1; y=a*16+(y%16); goto xs_lf2;if (a=0x0b) return(y);if(a=10)return(y);if(a=13) lcdwc(x+first_addr);str0=y/16+0x30;str1=y%16+0x30;hzkdis2(str); return(y);if(a=14) goto xs_lf2; */uchar set_xs_flicker(uchar x,y) /修改數(shù)據(jù)標志uchar a,str2;bit flicker=0;key_ok=1;wh
27、ile (gotkey()!=16) xs_fl0:while(1)for (a=0;a20;a+)delay(500);if (gotkey()!=16) goto xs_fl1;key_ok=0;xs_fl1:lcdwc(x+first_addr);if (flicker) hzkdis2(_); else str0=y/16+0x30;str1=y%16+0x30;hzkdis2(str);flicker = flicker;a=gotkey();if ( (a10) & (key_ok=0)key_ok=1; y=a*16+(y%16); goto xs_lf2;if (a=0x0b)
28、 return(y);if(a=10)return(y);if(a=13) lcdwc(x+first_addr);str0=y/16+0x30;str1=y%16+0x30;hzkdis2(str); return(y);if(a=14) goto xs_lf2;xs_lf2: while(1)for (a=0;a20;a+)delay(500);if (gotkey()!=16) goto xs_fl3;key_ok=0;xs_fl3:lcdwc(x+first_addr);if (flicker)str0=y/16+0x30;str1=0x5f;hzkdis2(str);else str
29、0=y/16+0x30;str1=y%16+0x30;hzkdis2(str);flicker = flicker;a=gotkey();if ( (a32) x=1; while(1)lcdreset();read_clockss(x);/改為要修改的鬧鐘clr_xs();lcdwc(0x82+first_addr); hzkdis(鬧鐘設置);lcdwc(0x87+first_addr);str0=x/10+0x30;str1=x%10+0x30;hzkdis2(str);disp_clock_set();delay(100);hh=set_xs_flicker(0x89,hh);if(g
30、otkey()=11)read_clocks();return;if(gotkey()=10)write_clockss(x);xs_pls();return;if(gotkey()=13) write_clockss(x);x=x-1; goto clkset1;if(gotkey()=14) write_clockss(x);x=x+1; goto clkset1;mm=set_xs_flicker(0x8b,mm);set1:if(gotkey()=11)read_clocks();return;if(gotkey()=10)write_clockss(x);xs_pls();retur
31、n;if(gotkey()=13)write_clockss(x); x=x-1;goto clkset1;if(gotkey()=14) write_clockss(x);x=x+1; goto clkset1;goto set1;/*ss=set_xs_flicker(0x8d,ss);set2:if(gotkey()=11)read_clocks();return;if(gotkey()=10)write_clockss(x);xs_pls();return;if(gotkey()=13) write_clockss(x); x=x-1;goto clkset1;if(gotkey()=
32、14)write_clockss(x); x=x+1;goto clkset1;goto set2;*/*-*/*/*/main()uchar i; lcdreset(); init_ds18b20();read_clocks(); while(1) updata(); /主屏幕時間刷新if (ss=0)/鬧鐘打鈴判斷for (i=1;iss)if(bell_on=1)bell=0;speaker=speaker;delay(5000);elsebell=1;speaker=1;bell_on=0;delay(500);i=gotkey();if (i=key_set)set_0:lcdres
33、et();key_ok=0;delay(10);lcdwc(0x80+first_addr); hzkdis(1.設置時間); lcdwc(0x90+first_addr); hzkdis(2.設置鬧時);lcdwc(0x88+first_addr); hzkdis(3.系統(tǒng)初始化);lcdwc(0x98+first_addr); hzkdis(4.返回);set_1:if(gotkey()=16)goto set_1;switch(gotkey()case 1: set_clock();break;case 2: clock_set(1);break;case 3:delaym(2000);if(gotkey()=3) lcdreset();restlib();delaym(4000); lcdreset();init_1302();init_
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- LY/T 3417-2024油茶果脫殼機性能要求和試驗方法
- 人教版地理八年級下冊6.2《白山黑水-東北三省》聽課評課記錄1
- 蘇科版九年級數(shù)學聽評課記錄:第50講 二次函數(shù)y
- 七年級下聽評課記錄數(shù)學
- 新版湘教版秋八年級數(shù)學上冊第四章一元一次不等式組課題一元一次不等式的應用聽評課記錄
- 申請在家自學的協(xié)議書(2篇)
- 電價變更合同范本(2篇)
- 蘇科版數(shù)學七年級下冊聽評課記錄8.1同底數(shù)冪的乘法
- 湘教版數(shù)學九年級下冊2.5《直線與圓的位置關系》聽評課記錄3
- 一年級上冊數(shù)學聽評課記錄《3.8 小雞吃食 》 北師大版
- 小學數(shù)學三年級下冊第八單元《數(shù)學廣角-搭配(二)》大單元集體備課整體設計
- (高清版)TDT 1031.6-2011 土地復墾方案編制規(guī)程 第6部分:建設項目
- 2024年江蘇省高中學業(yè)水平測試生物試卷
- 露天采場危險有害因素辨識
- 蘇教版一年級上、下冊勞動與技術教案
- 七上-動點、動角問題12道好題-解析
- 山東曲阜的孔廟之旅
- 一到六年級語文詞語表人教版
- 中煤集團綜合管理信息系統(tǒng)運維服務解決方案-V3.0
- 直播營銷與運營(第2版)全套教學課件
- 高二英語閱讀理解30篇
評論
0/150
提交評論