|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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】分别是他两的二进制小数,应该怎么处理能将小数也转化出来和整数合并,先解决第一个就好
@人造人 @康小泡
贴上数据手册
|
|