好久不见,kaikai又来问问题了
本帖最后由 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;
u8 i;
DHT11_Rst();
if(DHT11_Check()==0)
{
for(i=0;i<5;i++)//读取40位数据
{
buf=DHT11_Read_Byte();
}
if((buf+buf+buf+buf)==buf)
{
*humi=buf;
*temp=buf;
}
}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】分别是他两的二进制小数,应该怎么处理能将小数也转化出来和整数合并,先解决第一个就好{:5_106:}
@人造人 @康小泡
贴上数据手册
LCD_ShowNum(30+40,150,atoi(a) ,2,16);
改成
LCD_ShowNum(30+40,150,a ,2,16); 人造人 发表于 2017-3-19 10:13
LCD_ShowNum(30+40,150,atoi(a) ,2,16);
改成
LCD_ShowNum(30+40,150,a ,2,16);
造人大大 问题不在这啊 问题在注释上{:5_104:} kai759630 发表于 2017-3-19 13:10
造人大大 问题不在这啊 问题在注释上
if(atoi(a)>25||atoi(b)>20)
a和b是什么类型?
人造人 发表于 2017-3-19 13:39
if(atoi(a)>25||atoi(b)>20)
a和b是什么类型?
字符型指针 kai759630 发表于 2017-3-19 15:11
字符型指针
调试程序
在第12行停下了,看看a,b两个指针指向哪里
人造人 发表于 2017-3-19 17:36
调试程序
在第12行停下了,看看a,b两个指针指向哪里
解决了,他这个u8能直接和整形比{:10_266:} kai759630 发表于 2017-3-20 23:00
解决了,他这个u8能直接和整形比
哦
页:
[1]