[其他] HC32L136 demo板 之五、LCD+AM2302

[复制链接]
 楼主| lisingch 发表于 2019-8-19 16:35 | 显示全部楼层 |阅读模式
       本次实验就是在上次HC32L136 demo板LCD的实验基础上增加了AM2302温、湿度检测模块,也算是对LCD模块及其它已学习知识进行的一次巩固学习。
一、实验资源
1、HC32L136 demo板;
2、keil 5.28.0.0;
3、HC32L136 SDK支持包;
4、AM2302温、湿度检测模块;
更多资讯请访问https://www.hdsc.com.cn/mcu.htm

二、相关资源简介
1、LCD模块。关于该模块的学习见:HC32L136 demo板 之四、LCD https://bbs.21ic.com/icview-2843444-1-1.html
2、AM2302温、湿度传感器。AM2302较之前大家广泛使用的DHT11温、湿度传感器而言无论是在精度及准确度上要好很多,当然价格也贵了一些。模块是自制的,比较简陋。

三、本次实验
1、硬件连接
       AM2302模块接在了HC32L136 demo板的PB08引脚上,离VCC、GND较近,方便连线;
Image 002.png


2、程序实现。实验中LCD程序是在上次实验基础上进行了修改,主要是对显示内容进行了调整,AM2302驱动程序来源于网络,我这只是进行了简单的移植。
主要代码如下:
  1. /*************************************************************************
  2. 函数功能: 一次完整的数据传输为40bit,高位先出
  3. 输入参数: AM2302
  4. 返 回 值: 0:读取出错;1:读取成功           
  5. 说    明:8bit湿度整数 + 8bit湿度小数 + 8bit温度整数 + 8bit温度小数 + 8bit校验和                                         
  6. **************************************************************************/
  7. uint8_t ReadAM2302(AM2302_TypeDef *AM2302)
  8. {  
  9.   uint8_t temp;
  10.   uint16_t hum_temp,tem_temp;
  11.          
  12.         AM2302_OUT();                        //将AM2302端口设置为输出模式       
  13.         AM2302_Port_L();        //将AM2302端口拉低       
  14.         delay1ms(18);                        //延时18ms       
  15.         AM2302_Port_H();         //将AM2302端口拉高,主机延时30us   
  16.         delay10us(0);                        //延时30us
  17.         delay10us(0);       
  18.        
  19.         AM2302_IPU();                                                                                                                //将AM2302端口设置为输入,判断AM2302响应信号*/           
  20.         if(AM2302_Read_Pin == FALSE)                                                 //判断AM2302是否有低电平响应信号,如不响应则跳出,响应则向下运行*/   
  21.         {   
  22.     while(AM2302_Read_Pin == FALSE);                        //等待AM2302发出的80us低电平响应信号结束*/      
  23.     while(AM2302_Read_Pin == TRUE);                                //等待AM2302发出的80us高电平标置信号结束*/
  24.       
  25.     AM2302->humH8bit = AM2302_ReadByte();        //接收AM2302返回的数据
  26.     AM2302->humL8bit = AM2302_ReadByte();
  27.     AM2302->temH8bit = AM2302_ReadByte();
  28.     AM2302->temL8bit = AM2302_ReadByte();
  29.     AM2302->check    = AM2302_ReadByte();
  30.    
  31.     AM2302_OUT();                                //读取AM2302返回的数据后将AM2302端口改为输出模式   
  32.     AM2302_Port_H();                //将AM2302端口置高
  33.       
  34.     hum_temp = AM2302->humH8bit * 256 + AM2302->humL8bit;//处理湿度数据
  35.     AM2302->hum = (float)hum_temp * 10; //数据扩大10倍,方便显示
  36.                
  37.     tem_temp = AM2302->temH8bit * 256 + AM2302->temL8bit;//处理温度数据
  38.     AM2302->tem = (float)tem_temp * 10; //数据扩大10倍,方便显示   
  39.       
  40.     temp = AM2302->humH8bit + AM2302->humL8bit +
  41.            AM2302->temH8bit + AM2302->temL8bit;//校验读取的数据
  42.                                          
  43.     if(AM2302->check == temp)
  44.     {
  45.       return TRUE;
  46.     }
  47.     else
  48.       return FALSE;
  49.         }       
  50.         else
  51.                 return FALSE;
  52. }
  1. int32_t main(void)
  2. {
  3.         LCD_Config();
  4.         AM2302_Init();

  5.         //LCD_Display(3579);
  6.         //LCD_FullDisp();                                                //全屏显示

  7.         while(1)
  8.         {
  9.                 if(ReadAM2302(&AM2302_DATA) == TRUE)
  10.     {
  11.                         DispHumi(AM2302_DATA.hum);//湿度
  12.                         delay1ms(2000);
  13.                         DispTemp(AM2302_DATA.tem);//温度
  14.                         delay1ms(2000);
  15.                 }
  16.                 else
  17.                         DispError();//错误
  18.         }
  19. }

四、实验结果
1、温度
IMG_20190810_205126.jpg

2、湿度
IMG_20190810_205128.jpg

3、传感器错误
IMG_20190810_205342.jpg

五、总结
       通过这次实验对LCD模块有了更进一步的认识,接下来继续。

smartpower 发表于 2019-8-19 21:46 | 显示全部楼层
wiba 发表于 2019-9-9 16:24 | 显示全部楼层
非常感谢楼主分享
zljiu 发表于 2019-9-9 16:32 | 显示全部楼层
非常感谢楼主分享
 楼主| lisingch 发表于 2019-9-9 16:42 | 显示全部楼层
 楼主| lisingch 发表于 2019-9-9 16:42 | 显示全部楼层
wiba 发表于 2019-9-9 16:24
非常感谢楼主分享

互相学习!
 楼主| lisingch 发表于 2019-9-9 16:43 | 显示全部楼层
zljiu 发表于 2019-9-9 16:32
非常感谢楼主分享

互相学习!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

99

主题

15005

帖子

19

粉丝
快速回复 返回顶部 返回列表