[畢業(yè)設(shè)計(jì)精品] DHT11程序TLC2543程序LCD1602程序DS1302程序報(bào)警程序_第1頁(yè)
[畢業(yè)設(shè)計(jì)精品] DHT11程序TLC2543程序LCD1602程序DS1302程序報(bào)警程序_第2頁(yè)
[畢業(yè)設(shè)計(jì)精品] DHT11程序TLC2543程序LCD1602程序DS1302程序報(bào)警程序_第3頁(yè)
[畢業(yè)設(shè)計(jì)精品] DHT11程序TLC2543程序LCD1602程序DS1302程序報(bào)警程序_第4頁(yè)
[畢業(yè)設(shè)計(jì)精品] DHT11程序TLC2543程序LCD1602程序DS1302程序報(bào)警程序_第5頁(yè)
已閱讀5頁(yè),還剩26頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

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; /自動(dòng)切換標(biāo)志位=1顯示時(shí)間和溫濕度 =0時(shí)

2、多界面有按鍵決定bit flag_display1=0;bit display_flag=0;/*動(dòng)態(tài)顯示控制位uchar sw1_2=0; /鍵二,設(shè)置時(shí)間uchar sw2_2=0; /鍵二,設(shè)置溫濕度報(bào)警值uchar sw3_2=0;/建二,設(shè)置酒精濃度報(bào)警值uchar sw4_2=0;/建二,設(shè)置煙霧濃度報(bào)警值uchar num1=0;/功能切換uchar speed=0; /數(shù)據(jù)說(shuō)新速度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; /自動(dòng)切換清零/*功能鍵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í),表示正在設(shè)置狀態(tài),不能卻換到其他的狀態(tài) flag_display=0;/自動(dòng)切換標(biāo)志位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: /確定 光標(biāo)消失display_flag=0;wr_com(0x0c);init_ds1302();break; /case 1: /光標(biāo) 移動(dòng)到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: /確定 光標(biāo)消失display_flag=0;wr_com(0x0c);break; /case 1: /光標(biāo) 移動(dòng)到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: /確定 光標(biāo)消失display_flag=0;wr_com(0x0c);break; /case 1: /光標(biāo) 移動(dòng)到display_flag=1;wr_com(0xc8);wr_com(0x0d);break; / case 2: /光標(biāo) 移動(dòng)到display_flag=1;wr_com(0xc7);wr_com(

8、0x0d);break; / case 3: /光標(biāo) 移動(dòng)到display_flag=1;wr_com(0xc6);wr_com(0x0d);break; / case 4: /光標(biāo) 移動(dòng)到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: /確定 光標(biāo)消失display_flag=0;wr_com(0x0c);break; /case 1: /光標(biāo) 移動(dòng)到display_flag=1;wr_com(0xc9);wr_co

9、m(0x0d);break; / case 2: /光標(biāo) 移動(dòng)到display_flag=1;wr_com(0xc8);wr_com(0x0d);break; / case 3: /光標(biāo) 移動(dòng)到display_flag=1;wr_com(0xc7);wr_com(0x0d);break; / case 4: /光標(biāo) 移動(dòng)到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è)置年月日及其時(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è)置溫濕度報(bào)警值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è)置年月日及其時(shí)間case 0:break; /case 1: /溫度報(bào)警值增加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:/濕度報(bào)警值增加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: /溫度報(bào)警值增加minute-;if(minute0)minute=59;lcd_display_ds1302();wr_com(0xca);break; / case 6: /溫度報(bào)警值增加second-;if(second0)second=59;lcd_display_ds1302();wr_com(0xcd);break; / break

17、; /case 1:switch(sw2_2) /case 0:break; /case 1: /溫度報(bào)警值減小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()/報(bào)警程序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;/定時(shí)器0中斷允許位 tr0=1;/定時(shí)器0運(yùn)行控制位ea=1;void main() uint temp=0;init_display(); /液晶初始化init_xinxi(); /顯示個(gè)人信息init_ds1302(); /時(shí)鐘初始化init(); /中斷初始化while(1)key(); switch_display(); /功能切換warning(); /報(bào)警程序void time_0(void) interrupt 1th0=0x3c;tl0=0xb

23、0;if(flag_display=0) /=1時(shí),顯示自動(dòng)切換界面if(sw1_2=0) & (sw2_2=0) & (sw3_2=0) & (sw4_2=0)/如果在設(shè)置狀態(tài)時(shí)不會(huì)自動(dòng)切換t0+;if(t0600) /時(shí)間, 20秒未操作顯示溫濕度 時(shí)間界面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; /溫度報(bào)警值char h_num=45; /濕度報(bào)警值int alc_num=918; /酒精報(bào)警值int smog_num=919; /煙霧報(bào)警值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)/延時(shí)1毫秒unsigned int i,j;for(i=0;ims;i+)for(j=0;j100;j+

27、);void wr_com(unsigned char com)/寫(xiě)指令 rs=0;rw=0;en=0;p0=com;delay1ms(1);en=1;delay1ms(1);en=0;void wr_dat(unsigned char dat)/寫(xiě)數(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)顯示, 光標(biāo)不顯示_nop_();wr_com(0x01);/數(shù)據(jù)指針清零 所有清零_nop_();wr_com(0x06); /地址指針自動(dòng)加一,整平顯示不移動(dòng)_nop_();wr_com(0x0c);/開(kāi)顯示_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()/顯示溫度報(bào)警值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() /顯示濕度報(bào)警值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() /顯示酒精濃度報(bào)警值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() /顯示煙霧濃度報(bào)警值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(); /顯示溫度報(bào)警值display_h_num(); /顯示濕度報(bào)警值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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論