马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 kai759630 于 2017-3-20 23:00 编辑 u8 DHT11_Read_Byte(void) //读取八位数据
{
u8 i,dat;
dat=0;
for (i=0;i<8;i++)
{
dat<<=1;
dat|=DHT11_Read_Bit();
}
return dat;
}
//读取一次数据
//返回值:0,正常;1,读取失败
u8 DHT11_Read_Data(u8 *temp,u8 *humi)
{
u8 buf[5];
u8 i;
DHT11_Rst();
if(DHT11_Check()==0)
{
for(i=0;i<5;i++)//读取40位数据
{
buf[i]=DHT11_Read_Byte();
}
if((buf[0]+buf[1]+buf[2]+buf[3])==buf[4])
{
*humi=buf[0];
*temp=buf[2];
}
}else return 1;
return 0;
}
while(1)
{
if(t%10==0) //每100ms读取一次
{
DHT11_Read_Data(&temperature,&humidity); //读取温湿度值
a=&temperature;
b=&humidity ;
LCD_ShowNum(30+40,150,temperature ,2,16); //显示温度
LCD_ShowNum(30+40,170,humidity,2,16); //显示湿度
}
if(atoi(a)>25||atoi(b)>20) //问题在这
{
GPIO_SetBits(GPIOC,GPIO_Pin_4);//接蜂鸣器,超过门限则报警
LED1=!LED1;
}
我再用LCD_ShowNum(30+40,150,atoi(a) ,2,16);
LCD_ShowNum(30+40,170,atoi(b),2,16);
1,我这里用atoi函数处理这个八位二进制字符串为什么显示为0啊,应该怎样将它转化为整形显示出来?
2,buf【1】和buf【3】分别是他两的二进制小数,应该怎么处理能将小数也转化出来和整数合并,先解决第一个就好
@人造人 @康小泡
贴上数据手册
|