版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、#include #include #define uint unsigned int #define uchar unsigned char#include dht11.h#include ds1302.h#include tlc2543.h#include lcd_1602.hsbit key_swi=p34;sbit key_set=p35;sbit key_add=p36;sbit key_min=p37;sbit beer =p21;sbit led_red=p30;sbit led_gre=p31;bit flag_display=0; /自動切換標志位=1顯示時間和溫濕度 =0時
2、多界面有按鍵決定bit flag_display1=0;bit display_flag=0;/*動態(tài)顯示控制位uchar sw1_2=0; /鍵二,設(shè)置時間uchar sw2_2=0; /鍵二,設(shè)置溫濕度報警值uchar sw3_2=0;/建二,設(shè)置酒精濃度報警值uchar sw4_2=0;/建二,設(shè)置煙霧濃度報警值uchar num1=0;/功能切換uchar speed=0; /數(shù)據(jù)說新速度uint t0=0;delayms(uint z)uint m,n;for(m=z;m0;m-)for(n=124;n0;n-);void beer()beer=0;delayms(30);beer=
3、1;t0=0; /自動切換清零/*功能鍵11111111111111*/void kkey_switch() /功能鍵一if(!key_swi)beer();if(!key_swi & (sw1_2=0) & (sw2_2=0) & (sw3_2=0) & (sw4_2=0) /=1時,表示正在設(shè)置狀態(tài),不能卻換到其他的狀態(tài) flag_display=0;/自動切換標志位num1+;if(num1=4)num1=0;while(!key_swi);switch(num1)case 0:init_xian(0x80,str5_1);init_xian(0xc0,str5_2);break; /c
4、ase 1:init_xian(0x80,str6_1);init_xian(0xc0,str6_2);break; /case 2:init_xian(0x80,str7_1);init_xian(0xc0,str7_2);break; /case 3:init_xian(0x80,str8_1);init_xian(0xc0,str8_2);break; /*功能鍵2222222222222*/void kkey_set() /功能鍵二if(key_set=0) /設(shè)置beer();if(key_set=0 & flag_display=0)switch(num1)case 0:sw1_2
5、+;if(sw1_2=7)sw1_2=0;switch(sw1_2) /溫濕度設(shè)置case 0: /確定 光標消失display_flag=0;wr_com(0x0c);init_ds1302();break; /case 1: /光標 移動到display_flag=1;wr_com(0x88);wr_com(0x0d);break; / case 2:display_flag=1;wr_com(0x8b);wr_com(0x0d);break; /case 3:display_flag=1;wr_com(0x8e);wr_com(0x0d);break; /case 4:display_f
6、lag=1;wr_com(0xc7);wr_com(0x0d);break; /case 5:display_flag=1;wr_com(0xca);wr_com(0x0d);break; /case 6:display_flag=1;wr_com(0xcd);wr_com(0x0d);break; /break;case 1:sw2_2+;if(sw2_22)sw2_2=0;switch(sw2_2) /溫濕度設(shè)置case 0: /確定 光標消失display_flag=0;wr_com(0x0c);break; /case 1: /光標 移動到display_flag=1;wr_com(0
7、xc5);wr_com(0x0d);break; / case 2:display_flag=1;wr_com(0xce);break; /break; /case 2: /酒精濃度設(shè)置sw3_2+;if(sw3_2=5)sw3_2=0;switch(sw3_2) case 0: /確定 光標消失display_flag=0;wr_com(0x0c);break; /case 1: /光標 移動到display_flag=1;wr_com(0xc8);wr_com(0x0d);break; / case 2: /光標 移動到display_flag=1;wr_com(0xc7);wr_com(
8、0x0d);break; / case 3: /光標 移動到display_flag=1;wr_com(0xc6);wr_com(0x0d);break; / case 4: /光標 移動到display_flag=1;wr_com(0xc5);wr_com(0x0d);break; / break; /case 3:sw4_2+;if(sw4_2=5)sw4_2=0;switch(sw4_2) case 0: /確定 光標消失display_flag=0;wr_com(0x0c);break; /case 1: /光標 移動到display_flag=1;wr_com(0xc9);wr_co
9、m(0x0d);break; / case 2: /光標 移動到display_flag=1;wr_com(0xc8);wr_com(0x0d);break; / case 3: /光標 移動到display_flag=1;wr_com(0xc7);wr_com(0x0d);break; / case 4: /光標 移動到display_flag=1;wr_com(0xc6);wr_com(0x0d);break; / break; /while(key_set=0);void kkey_add()if(key_add=0)beer();if(key_add=0)switch(num1)cas
10、e 0:switch(sw1_2)/ /設(shè)置年月日及其時間case 0:break; case 1:year+;if(year99)year=0;lcd_display_ds1302();wr_com(0x88);break;case 2:month+;if(month12)month=1;lcd_display_ds1302();wr_com(0x8b);break; case 3:day+;if(day31)day=1;lcd_display_ds1302();wr_com(0x8e);break; /case 4:hour+;if(hour23)hour=0;lcd_display_ds
11、1302();wr_com(0xc7);break; /case 5:minute+;if(minute59)minute=0;lcd_display_ds1302();wr_com(0xca);break; / case 6: second+;if(second59)second=0;lcd_display_ds1302();wr_com(0xcd);break; / break; /case 1:switch(sw2_2) /設(shè)置溫濕度報警值case 0:break; case 1: /設(shè)置溫度t_num+;if(t_num=99)t_num=99;display_t_num();brea
12、k; case 2: /設(shè)置濕度h_num+;if(h_num=99)h_num=99;display_h_num();break; break; case 2:switch(sw3_2)/酒精濃度case 0:break; case 1: alc_num+=1;if(alc_num=4999)alc_num=4999;display_alc_num();wr_com(0xc8);break; / case 2: alc_num+=10;if(alc_num=4999)alc_num=4999;display_alc_num();wr_com(0xc7);break; / case 3: al
13、c_num+=100;if(alc_num=4999)alc_num=4999;display_alc_num();wr_com(0xc6);break; / case 4: alc_num+=1000;if(alc_num=4999)alc_num=4999;display_alc_num();wr_com(0xc5);break; / break; /case 3:switch(sw4_2) /煙霧濃度case 0:break; case 1:smog_num+=1;if(smog_num=4999)smog_num=4999;display_smog_num();wr_com(0xc9)
14、;break;case 2:smog_num+=10;if(smog_num=4999)smog_num=4999;display_smog_num();wr_com(0xc8);break;case 3:smog_num+=100;if(smog_num=4999)smog_num=4999;display_smog_num();wr_com(0xc7);break;case 4:smog_num+=1000;if(smog_num=4999)smog_num=4999;display_smog_num();wr_com(0xc6);break; break; while(key_add=0
15、);void kkey_min() if(key_min=0)beer();if(key_min=0) switch(num1)case 0:switch(sw1_2) /設(shè)置年月日及其時間case 0:break; /case 1: /溫度報警值增加year-;if(year=0)year=99;lcd_display_ds1302();wr_com(0x88);break; / case 2:month-;if(month=0)month=12;lcd_display_ds1302();wr_com(0x8b);break; /case 3:/濕度報警值增加day-;if(day=0)da
16、y=31;lcd_display_ds1302();wr_com(0x8e);break; /case 4:hour-;if(hour0)hour=23;lcd_display_ds1302();wr_com(0xc7);break; /case 5: /溫度報警值增加minute-;if(minute0)minute=59;lcd_display_ds1302();wr_com(0xca);break; / case 6: /溫度報警值增加second-;if(second0)second=59;lcd_display_ds1302();wr_com(0xcd);break; / break
17、; /case 1:switch(sw2_2) /case 0:break; /case 1: /溫度報警值減小t_num-;if(t_num=0)t_num=0;display_t_num();break; / case 2:h_num-;if(h_num=0)h_num=0;display_h_num();break; / break; / case 2:switch(sw3_2) /case 0:break; case 1: alc_num-=1;if(alc_num=1000)alc_num=1000;display_alc_num();wr_com(0xc8);break; / ca
18、se 2: alc_num-=10;if(alc_num=1000)alc_num=1000;display_alc_num();wr_com(0xc7);break; / case 3: alc_num-=100;if(alc_num=1000)alc_num=1000;display_alc_num();wr_com(0xc6);break; / case 4: alc_num-=1000;if(alc_num=1000)alc_num=1000;display_alc_num();wr_com(0xc5);break; / break; /case 3:switch(sw4_2) /ca
19、se 0:break; case 1:smog_num-=1;if(smog_num=1000)smog_num=1000;display_smog_num();wr_com(0xc9);break;case 2:smog_num-=10;if(smog_num=1000)smog_num=1000;display_smog_num();wr_com(0xc8);break;case 3:smog_num-=100;if(smog_num=1000)smog_num=1000;display_smog_num();wr_com(0xc7);break;case 4:smog_num-=1000
20、;if(smog_num=1000)speed=0; /間隔采集數(shù)據(jù)switch(num1)case 0:receive_time(); lcd_display_ds1302();break; /case 1:if(speed=10)lcd_display_wenshidu();break; /case 2:if(speed=1)lcd_display_jiujing();break; /case 3:if(speed=10)lcd_display_yanwu();break; /case 4:beer=0;break; / if(flag_display=1)if(flag_display1
21、=1)init_xian(0x80,str5_2);init_xian(0xc0,str6_1);flag_display1=0;lcd_display_time_wenshi();void warning()/報警程序if(th_data=t_num)&(num1=1) | (rh_data=h_num)&(num1=1) | (alc_0=alc_num)&(num1=2) | (smog_0=smog_num)&(num1=3)beer=0;else beer=1;if(th_data=t_num)led_red=0;else led_red=1;if(rh_data=h_num)led
22、_gre=0;else led_gre=1;void init()tmod=0x01;th0=0x3c;tl0=0xb0;et0=1;/定時器0中斷允許位 tr0=1;/定時器0運行控制位ea=1;void main() uint temp=0;init_display(); /液晶初始化init_xinxi(); /顯示個人信息init_ds1302(); /時鐘初始化init(); /中斷初始化while(1)key(); switch_display(); /功能切換warning(); /報警程序void time_0(void) interrupt 1th0=0x3c;tl0=0xb
23、0;if(flag_display=0) /=1時,顯示自動切換界面if(sw1_2=0) & (sw2_2=0) & (sw3_2=0) & (sw4_2=0)/如果在設(shè)置狀態(tài)時不會自動切換t0+;if(t0600) /時間, 20秒未操作顯示溫濕度 時間界面flag_display=1;flag_display1=1;/#ifndef _lcd_1602_h_#define _lcd_1602_h_#include#define uchar unsigned char#define uint unsigned intsbit rs=p27;sbit rw=p26;sbit en=p25;u
24、char aa12;uchar ab20;char t_num=40; /溫度報警值char h_num=45; /濕度報警值int alc_num=918; /酒精報警值int smog_num=919; /煙霧報警值uint alc_0=0; /酒精濃度值uint smog_0=0; /煙霧濃度值unsigned char code str1_1=multi-functional;/多功能傳感器unsigned char code str1_2= sensor design ;/unsigned char code str2_1=producer: ;unsigned char code
25、str2_2= chenshuai ;unsigned char code str3_1=student number: ;unsigned char code str3_2= 200880864120 ;unsigned char code str4_1=production date:;unsigned char code str4_2= 2011/12/04 ;unsigned char code str5_1=date:2011-12-04 ;unsigned char code str5_2=time: 00:00:00 ;unsigned char code str6_1=t:00
26、c h:00%rh ;unsigned char code str6_2=t_h:00 h_h:00 ;unsigned char code str7_1=alcohol=0000ppm ;unsigned char code str7_2=hial=0000ppm ;unsigned char code str8_1= smog=0000ppm ;unsigned char code str8_2= hial=0000ppm ;void delay1ms(unsigned int ms)/延時1毫秒unsigned int i,j;for(i=0;ims;i+)for(j=0;j100;j+
27、);void wr_com(unsigned char com)/寫指令 rs=0;rw=0;en=0;p0=com;delay1ms(1);en=1;delay1ms(1);en=0;void wr_dat(unsigned char dat)/寫數(shù)據(jù) rs=1;rw=0;en=0;p0=dat;delay1ms(1);en=1;delay1ms(1);en=0;void display(unsigned char *p)/顯示while(*p!=0)wr_dat(*p);p+;_nop_();_nop_(); void lcd_init()/初始化設(shè)置wr_com(0x38);_nop_(
28、);wr_com(0x08);/關(guān)顯示, 光標不顯示_nop_();wr_com(0x01);/數(shù)據(jù)指針清零 所有清零_nop_();wr_com(0x06); /地址指針自動加一,整平顯示不移動_nop_();wr_com(0x0c);/開顯示_nop_();void move_left() /整屏左移uchar num;for(num=0;num16;num+)wr_com(0x1c);delay1ms(50);void move_right() /整屏右移uchar num;for(num=0;num16;num+)wr_com(0x18);delay1ms(50);void init_
29、xian(uint addres,uchar *p1)wr_com(addres); display(p1);void init_display()/初始化顯示 lcd_init();init_xian(0x80,str1_1);init_xian(0xc0,str1_2);void display_t_num()/顯示溫度報警值ab0=t_num/10+0x30;ab1=t_num%10+0x30;wr_com(0xc4);wr_dat(ab0);wr_dat(ab1);wr_com(0xc5);void display_h_num() /顯示濕度報警值ab3=h_num/10+0x30;a
30、b4=h_num%10+0x30;wr_com(0xcd);wr_dat(ab3);wr_dat(ab4);wr_com(0xce);void display_alc_num() /顯示酒精濃度報警值ab5=alc_num/1000+0x30;ab6=alc_num/100%10+0x30;ab7=alc_num/10%10+0x30;ab8=alc_num%10+0x30;wr_com(0xc5);wr_dat(ab5);wr_dat(ab6);wr_dat(ab7);wr_dat(ab8);wr_com(0xc7);void display_smog_num() /顯示煙霧濃度報警值ab9
31、=smog_num/1000+0x30;ab10=smog_num/100%10+0x30;ab11=smog_num/10%10+0x30;ab12=smog_num%10+0x30;wr_com(0xc6);wr_dat(ab9);wr_dat(ab10);wr_dat(ab11);wr_dat(ab12);wr_com(0xc8);void lcd_display_ds1302() aa0=second/10+0x30;aa1=second%10+0x30;aa2=minute/10+0x30;aa3=minute%10+0x30;aa4=hour/10+0x30;aa5=hour%10
32、+0x30;aa6=day/10+0x30;aa7=day%10+0x30;aa8=month/10+0x30;aa9=month%10+0x30;aa10=year/10+0x30;aa11=year%10+0x30;wr_com(0xc6);wr_dat(aa4);wr_dat(aa5);wr_dat(58);wr_dat(aa2);wr_dat(aa3);wr_dat(58);wr_dat(aa0);wr_dat(aa1);wr_com(0x87);wr_dat(aa10);wr_dat(aa11);wr_dat(45);wr_dat(aa8);wr_dat(aa9);wr_dat(45
33、);wr_dat(aa6);wr_dat(aa7);void lcd_display_wenshidu()read_trh();aa0=rh_data/10+0x30;aa1=rh_data%10+0x30;aa4=th_data/10+0x30;aa5=th_data%10+0x30;wr_com(0x8a);wr_dat(aa0);wr_dat(aa1);wr_com(0x82);wr_dat(aa4);wr_dat(aa5);display_t_num(); /顯示溫度報警值display_h_num(); /顯示濕度報警值void lcd_display_jiujing()alc_0=ad_conver(0);aa0=alc_0/1000+0x30;aa1=alc_0/100%10+0x30;aa2=alc_0/10%10+0x30;aa3=alc_0%10+0x30;wr_com(0x88);wr_dat(aa0);wr_dat(aa1);wr_dat(aa2);wr_dat(aa3);display_alc_num();void lcd_display_yanw
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年甘肅會展中心有限責(zé)任公司招聘筆試參考題庫含答案解析
- 2025版智慧城市運營項目融資協(xié)議合同范本3篇
- 2025年度個人小戶型房產(chǎn)買賣及裝修改造合同4篇
- 2025年個人森林撫育與更新承包合同4篇
- 2025年全球及中國醫(yī)用協(xié)作機器人行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球鄰氯苯腈(氯化法)行業(yè)調(diào)研及趨勢分析報告
- 2025-2030全球觸控?zé)粜袠I(yè)調(diào)研及趨勢分析報告
- 2025版拖拉機銷售與保險服務(wù)合同范本6篇
- 2025年度房產(chǎn)租賃合同(含租金調(diào)整及違約責(zé)任)3篇
- 2025年度個人設(shè)備租賃貸款合同范本7篇
- 2024年全國職業(yè)院校技能大賽高職組(研學(xué)旅行賽項)考試題庫(含答案)
- 2025年溫州市城發(fā)集團招聘筆試參考題庫含答案解析
- 2025年中小學(xué)春節(jié)安全教育主題班會課件
- 2025版高考物理復(fù)習(xí)知識清單
- 計量經(jīng)濟學(xué)練習(xí)題
- 除數(shù)是兩位數(shù)的除法練習(xí)題(84道)
- 2025年度安全檢查計劃
- 2024年度工作總結(jié)與計劃標準版本(2篇)
- 全球半導(dǎo)體測試探針行業(yè)市場研究報告2024
- 反走私課件完整版本
- 2024年注冊計量師-一級注冊計量師考試近5年真題附答案
評論
0/150
提交評論