找回密码
 注册

QQ登录

只需一步,快速开始

搜索

STM32F103VET6 温湿度采集DHT11通过串口发给pc上位机

[复制链接]
路漫漫 发表于 2020-5-25 00:14:36 | 显示全部楼层 |阅读模式
程序功能    DHT11采集温度 --》 stm32 PE6端口  - -》stm32校验DHT11输入的数据  --》 stm32 USART1上报PC。
串口软件设置:
波特率: 9600;
校验位: 无;
数据位: 8;
停止位: 1;
输出方式 :ASII;
采集频率:1s/次;
STM32_DHT11源码.7z (177.37 KB, 售价: 1 E币)
部分代码
  1. uint16_t DHT11_Buffer[5];

  2. /**************************************
  3. * 函  数 : 初始化DHT11
  4. * 参  数 :无
  5. * 返回值 :无
  6. ***************************************/
  7. void DHT11_InitConfing(void)
  8. {
  9.                 RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOE,ENABLE );
  10.                 DHT11_O();
  11.                 DHT11_H;

  12. }

  13. /**************************************
  14. * 函  数 : DHT11配置为输出
  15. * 参  数 :无
  16. * 返回值 :无
  17. ***************************************/
  18. void DHT11_O(void){
  19.         GPIO_InitTypeDef  GPIO_InitStruct;
  20.         
  21.         GPIO_InitStruct.GPIO_Mode  = GPIO_Mode_Out_PP;
  22.         GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
  23.         GPIO_InitStruct.GPIO_Pin   = GPIO_Pin_6;
  24.         
  25.         GPIO_Init( GPIOE ,&GPIO_InitStruct);
  26.         
  27. }
  28. /**************************************
  29. * 函  数 : DHT11配置为输入
  30. * 参  数 :无
  31. * 返回值 :无
  32. ***************************************/
  33. void DHT11_I(void){
  34.         GPIO_InitTypeDef  GPIO_InitStruct;
  35.         
  36.         GPIO_InitStruct.GPIO_Mode  = GPIO_Mode_IN_FLOATING;
  37.         GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
  38.         GPIO_InitStruct.GPIO_Pin   = GPIO_Pin_6;
  39.         
  40.         GPIO_Init( GPIOE ,&GPIO_InitStruct);
  41.         
  42. }
  43. /**************************************
  44. * 函  数 : DHT11读取电平
  45. * 参  数 :无
  46. * 返回值 :高电平 1、 低电平 0
  47. ***************************************/
  48. uint8_t DHT11_R(void){
  49.         
  50.         return GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_6);
  51. }
  52. /**************************************
  53. * 函  数 : DHT11读取数据
  54. * 参  数 :无
  55. * 返回值 :高电平 1、 低电平 0
  56. ***************************************/
  57. uint8_t DHT11_ReadBit(void){
  58.         
  59.          while( DHT11_R() == RESET);
  60.          Delay_us(40);
  61.                 if( DHT11_R() == SET )
  62.                 {
  63.                         while( DHT11_R() == SET);
  64.                                 return 1;
  65.                 }else
  66.                                 return 0;
  67. }
  68. /**************************************
  69. * 函  数 : DHT11读取字节
  70. * 参  数 :无
  71. * 返回值 :字节
  72. ***************************************/
  73. uint8_t DHT11_ReadByte(void){
  74.         uint8_t i,data = 0;
  75.         for( i = 0 ; i < 8 ; i++  ){
  76.                         data <<= 1;
  77.                         data |= DHT11_ReadBit();
  78.         }
  79.         return data;
  80. }
  81. /**************************************
  82. * 函  数 : DHT11读取温湿度
  83. * 参  数 :无
  84. * 返回值 :SUCESS 1  ,FAIL = 0
  85. ***************************************/
  86. uint16_t DHT11_ReadData(void)
  87. {
  88.         uint8_t  i;
  89.         DHT11_O();
  90.         DHT11_L;
  91.         Delay_us(19000);
  92.         DHT11_H;
  93.         Delay_us(30);
  94.         DHT11_I();
  95.         //DHT11_R;
  96.         if( DHT11_R() == RESET){        
  97.                
  98.                 while( DHT11_R() == RESET);
  99.                 while( DHT11_R() == SET );
  100.                
  101.                 for( i = 0; i < 5 ;i++ )
  102.                         DHT11_Buffer[i] = DHT11_ReadByte();
  103.                
  104.                 DHT11_O();
  105.                 DHT11_H;
  106.                 if( (DHT11_Buffer[0] + DHT11_Buffer[1] + DHT11_Buffer[2] + DHT11_Buffer[3])  == DHT11_Buffer[4] )
  107.                    return 1;
  108.                 else
  109.                         return 0;
  110.                         
  111.         }else
  112.                 return 0;

  113. }
复制代码


您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|ELEOK |网站地图

GMT+8, 2024-11-21 23:58

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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