当前位置: 首页 > news >正文

重庆网站制作机构怎么建立自己企业网站

重庆网站制作机构,怎么建立自己企业网站,没有充值入口的传奇手游,网站维护费怎么做分录目录 一、代码流程 二、模块.c代码 三、模块.h代码 四、主函数代码 一、代码流程 1.模块复位:主机发送开始通信时序,从机做出响应(需检测是否有响应) 2.MCU读取1Bit数据 3.MCU读取1Byte数据 4.MCU读取8Byte数据组成完整Dat…

目录

一、代码流程

二、模块.c代码

三、模块.h代码

四、主函数代码


一、代码流程

1.模块复位:主机发送开始通信时序,从机做出响应(需检测是否有响应)

2.MCU读取1Bit数据

3.MCU读取1Byte数据

4.MCU读取8Byte数据组成完整Data,每读一次Data前都要开始通信流程

二、模块.c代码

#include "dht11.h"/********************等待从机响应:返回0表示初始化成功*************************/
uint8_t DHT11_Reset(void)
{RCC_APB2PeriphClockCmd(DHT11_CLK, ENABLE);GPIO_InitTypeDef GPIO_InitStruct;                    //主机控制引脚GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStruct.GPIO_Pin = DHT11_PIN;GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(DHT11_PORT, &GPIO_InitStruct);GPIO_ResetBits(DHT11_PORT, DHT11_PIN);               //主机发出开始通信的信号Delay_ms(20);GPIO_SetBits(DHT11_PORT, DHT11_PIN);Delay_us(13);GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;   //主机释放引脚控制权,转为输入模式监听引脚电平GPIO_InitStruct.GPIO_Pin = DHT11_PIN;GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(DHT11_PORT, &GPIO_InitStruct);  uint8_t time = 0;while( (GPIO_ReadInputDataBit(DHT11_PORT, DHT11_PIN) == 0) && time < 100 )    //检测响应低电平是否正常{Delay_us(1);time++;}if(time >= 100){return 1; }else{time = 0;  }while( (GPIO_ReadInputDataBit(DHT11_PORT, DHT11_PIN) == 1) && time < 100)    //检测响应高电平是否正常{Delay_us(1);time++;}if(time >= 100){return 1;}else{time = 0;  } return 0;
}/**************************读1Bit*************************************/
uint8_t MCU_Read_Bit(void)
{ while( GPIO_ReadInputDataBit(DHT11_PORT, DHT11_PIN) == 1 );    //检测低电平到来while( GPIO_ReadInputDataBit(DHT11_PORT, DHT11_PIN) == 0 );    //检测高电平到来Delay_us(35);if( GPIO_ReadInputDataBit(DHT11_PORT, DHT11_PIN) == 1 )        //直接读取35us后的数据{return 1;}else{return  0;  }
}/**************************读1Byte****************************************/
uint8_t MCU_Read_Byte(void)
{uint8_t tool = 0x80;uint8_t Byte = 0;for(tool = 0x80; tool != 0; tool >>=1 )                      //DHT11数据高位先行,故从高位到低位读取数据{if( MCU_Read_Bit() == 1 )Byte |= tool;elseByte &= ~tool;}return Byte;
}/*****************读数据:返回0表示读取数据正确***********************/
uint8_t MCU_Read_Data(uint8_t* humidity, uint8_t* temperature)
{uint8_t Data[5] = {0};uint8_t i = 0;if( DHT11_Reset() == 0 )                                         //每次读数据前都要重新开始通信时序,不然只会有一次数据显示{for( i = 0; i < 5; i++){Data[i] = MCU_Read_Byte();                                   //将数据存入数组}if( (Data[0] + Data[1] + Data[2] + Data[3]) == Data[4] )       //如果校验位正确{*humidity = Data[0];                                         //读出数据*temperature = Data[2];return 0;                                                    //返回0表示读数据正确}      }return 1;                                                        //返回1表示读数据存在错误
}

三、模块.h代码

#ifndef __DHT11_H
#define __DHT11_H#include "stm32f10x.h"                  // Device header
#include "delay.h"
#include "serial.h"#define DHT11_CLK      RCC_APB2Periph_GPIOB
#define DHT11_PORT     GPIOB
#define DHT11_PIN      GPIO_Pin_14uint8_t DHT11_Reset(void);
uint8_t MCU_Read_Bit(void);
uint8_t MCU_Read_Byte(void);
uint8_t MCU_Read_Data(uint8_t* humidity, uint8_t* temperature);#endif

四、主函数代码

#include "stm32f10x.h"                  // Device header
#include "Delay.h"
#include "OLED.h"
#include "DHT11.h"int main(void)
{OLED_Init();	uint8_t test = 1;      //接收DHT11初始化是否成功的返回值uint8_t humidity = 0, temperature = 0; while (1){test = MCU_Read_Data(&humidity, &temperature);if(test == 0){OLED_ShowNum(1, 1, humidity, 2);OLED_ShowNum(2, 1, temperature, 2);  Delay_ms(500);      }OLED_ShowHexNum(3, 1, test, 1);}
}

http://www.dtcms.com/a/507649.html

相关文章:

  • 律师网站 扁平化扁平化网站 源代码
  • 解耦的艺术:深入理解设计模式之命令模式
  • C# 设计模式——工厂模式
  • 配置电话交换机 3CX 对接微软 Teams 直接路由
  • 亚马逊云渠道商:如何配置 AWS 自动化快照?
  • [优选算法专题四.前缀和——NO.29 和为 K 的子数组]
  • Python Web框架深度对比:Django vs Flask vs FastAPI(含优缺点与选型策略)
  • 盲盒抽谷机小程序:打造个性化消费的梦幻舞台
  • 性能优化揭秘:将淘宝商品 API 响应时间从 500ms 优化到 50ms 的技术实践
  • 龙岩互联网抖音seo招商
  • C++ 智能指针 std::unique_ptr、std::shared_ptr、std::weak_ptr
  • 猿辅导Java面试真实经历与深度总结(三)
  • Doris 数据导入
  • 网站建设+泰安saas建站平台有哪些
  • 动态规划之两个字符组/两个数组的dp问题
  • 【AI论文】UniVideo:面向视频的统一理解、生成与编辑
  • 获取resources目录下静态资源的两种方式
  • 一个域名可以做几个网站吗最好加盟网站建设
  • Android 自定义 View 如何设置默认尺寸
  • C#技术栈
  • 广东建设监理网站如何查企业的工商信息
  • INT301 Bio-computation 生物计算(神经网络)Pt.2 监督学习模型:感知器(Perceptron)
  • 机器学习(4)多特征与向量化
  • stripe/paypal
  • 机器学习(5)特征缩放与梯度下降收敛
  • 英飞凌推出首款100V aec合格GaN晶体管
  • 李宏毅机器学习笔记27
  • 机器学习作业七
  • openEuler安装jdk,nginx,redis
  • ffmpeg 交叉编译