|
芯片用到了STC12,顯示屏是16- #include<STC12C5A60S2.h>
- #include <intrins.h>
- #include <Lcd_1602.h>
- #include <Time_Delay.h>
- #include"DHT11.h"
- sbit wd_key1=P3^4;
- sbit wd_key2=P3^5;
- sbit sd_key1=P3^6;
- sbit sd_key2=P3^7;
- sbit jr_jdq=P2^0;
- sbit js_jdq=P2^1;
- sbit fs_jdq=P2^2;
- void key_sm(void);
- extern float F16T,F16RH; //全局變量聲明
- unsigned wd_num=20,sd_num=50,t;
- void main ()
- {
- Init_Lcd();
- LCD_write_str(0,1,"4561def135"); //液晶預顯示測試
- LCD_value(0,0,34.345);
- Delay_ms(200);
- Init_Lcd();
- TMOD=0X01; //設置定時器0為模式一,即16位計算模式
- TH0=(65536-50000)/256; //給計數寄存器賦值,
- TL0=(65536-50000)%256;
- EA=1; //開啟總中斷
- ET0=1; //開啟定時器0中斷
- TR0=1; //啟動定時器0
- while(1)
- {
-
- getDHT11();
- key_sm();
- LCD_write_str(0,0,"T=");
- LCD_value(3,0,F16T); LCD_write_str(7,0,"\"C"); //字符" 應用轉義格式
- LCD_write_str(10,0," ");LCD_value(11,0,wd_num);
- LCD_write_str(0,1,"RH=");
- LCD_value(4,1,F16RH); LCD_write_str(8,1,"%");
- LCD_write_str(10,1," ");LCD_value(11,1,sd_num);
- Delay_ms(100);
- if(t>20)
- {
- if(F16T<wd_num)
- {jr_jdq=0;}else jr_jdq=1;
- if(F16RH<sd_num)
- {js_jdq=0;}else js_jdq=1;
- if((F16T>wd_num)&(F16RH>sd_num))
- {fs_jdq=0;} else fs_jdq=1;
- t=0;
- // Delay_ms(100);
- }
- }
- }
-
- void key_sm(void)
- {
-
- if(wd_key1==0)
- {
- while(!wd_key1);
- wd_num=wd_num+1;}
- if(wd_key2==0)
- {
- while(!wd_key2);
- wd_num=wd_num-1;}
- if(sd_key1==0)
- {
- while(!sd_key1);
- sd_num=sd_num+1;}
- if(sd_key2==0)
- {
- while(!sd_key2);
- sd_num=sd_num-1;}
- }
- //中斷函數,關鍵字"interrupt" , 這是C語言的中斷函數表示法,1表時定地器0
- void timer() interrupt 1
- {
- TH0=(65536-50000)/256; //給計數寄存器賦值
- TL0=(65536-50000)%256;
- t++;
- //key_sm();
-
- }
復制代碼
02,溫濕度傳感器DHT11
|
|