第一次显示时基本没做什么改变
但是改变数据之后并没有反应
但是关闭重开又改变了
这是与温湿显示相关代码(还有其他的乱七八糟的代码太多太杂了,所以就单独把DHT11的拿了出来)
void LCD_DIer()//第二行固定符号
{
LCD_Cursor(1);
LCD_Charactor("T:");
}
void LCD_WEN()//温度示数显示
{
LCD_Data(shuzi[T_H]);
LCD_Data(shuzi[T_L]);
LCD_Data(0xdf);
LCD_Data(0x43);
LCD_Charactor(" H:");
// LCD_Data(0x53);//固定S显示
// LCD_Data(0x3a);
// LCD_Data(0xa0);
}
void LED()//湿度警示灯
{
if((S_L+S_H)>45&&(S_L+S_H)<60)
GREEN=1;
if((S_L+S_H)>60)
YELLOW=1;
if((S_L+S_H)<45)
RED=1;
}
void LCD_SHI()//湿度示数显示
{
LCD_Data(shuzi[S_H]);
LCD_Data(shuzi[S_L]);
LCD_Data(0x25);
}
void LCD_WENSHI()//温湿数据报警及警示灯
{
if((S_L+T_H)>=50)//高温报警
{
GREEN=0;
YELLOW=0;
RED=1;
delayms(200);
RED=0;
yy=1;
}
if((T_L+T_H)<50)
yy=0;
if(yy==0)
LED();
}
void DHT11_start()//温湿传输信号判定(数据位移有问题)
{
u8 i,Temp;//后续可能要加延时
for(i=0;i<16;i++)
{
while(!LCD_T);
delayus(30);
Temp=0;
if(LCD_T==1)
Temp=1;
//while(LCD_T);
sum<<=1;
sum|=Temp;
}
}
void LCD_Tem()//温湿开始电信号
{
u8 i=0;
LCD_T=1;
LCD_T=0;
Delay(200);
LCD_T=1;
delayus(80);
while(LCD_T);
while(!LCD_T);
while(LCD_T);
while(!LCD_T);
DHT11_start();
S=sum;
DHT11_start();
T=sum;
DHT11_start();
res=sum;
}
LCD_T就是DHT11与单片机连接的端口命名
这个是放在中断函数里的将个十位分开的代码
if(T_H+T_L+S_H+S_L==res)
{
T_H=(T/10)%10;
T_L=T%10;
S_H=(S/10)%10;
S_L=S%10;
}
|