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

做网站视频下载商品的销售网站总体设计

做网站视频下载,商品的销售网站总体设计,推广的网站,自动推送百度wordpress目录 一 DHT11温湿度传感器简介 1.1 传感器特点 1.2 传感器特性 1.3 传感器引脚说明 二 测量原理及方法 2.1 典型应用电路 2.2 单线制串行简介 2.2.1 串行接口 (单线双向) 2.2.2 数据示例 2.3 通信时序 三 单片机简介 3.1 STM32F103C8T6最小系统板 四 接线说明 …目录 一 DHT11温湿度传感器简介 1.1 传感器特点 1.2 传感器特性 1.3 传感器引脚说明 二 测量原理及方法 2.1 典型应用电路 2.2 单线制串行简介 2.2.1 串行接口  (单线双向) 2.2.2 数据示例 2.3 通信时序  三 单片机简介 3.1 STM32F103C8T6最小系统板 四 接线说明 4.1 DHT11.C宏定义 4.2  DHT11.H宏定义 五 程序设计 5.1 DHT11.C 5.1.1 复位DHT11 5.1.2 检查DHT11工作是否正常  5.1.3 读取一位数据 5.1.4 读取一个字节  5.1.5 读取温湿度值  5.1.6 完整DHT11.C程序  5.2 DHT11.H 5.3 添加头文件 5.4 定义变量 5.5 初始化 5.6 测量温湿度 七 测量效果 一 DHT11温湿度传感器简介 1.1 传感器特点 DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。DHT11温湿度传感器如下图所示。 每个DHT11传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式储存在OTP内存中传感器内部在检测信号的处理过程中要调用这些校准系数。单线制串行接口使系统集成变得简易快捷。超小的体积、极低的功耗信号传输距离可达20米以上使其成为各类应用甚至最为苛刻的应用场合的最佳选则。产品为 4 针单排引脚封装。 1.2 传感器特性 1.3 传感器引脚说明 引脚 名称 注释 1 VDD 供电 35.5VDC 2 DATA 串行数据单总线 3 NC 空脚请悬空 4 GND 接地电源负极 二 测量原理及方法 2.1 典型应用电路 建议连接线长度短于20米时用5K上拉电阻,大于20米时根据实际情况使用合适的上拉电阻 。 电源引脚DHT11的供电电压为 35.5V。传感器上电后要等待 1s 以越过不稳定状态在此期间无需发送任何指令。电源引脚VDDGND之间可增加一个100nF 的电容用以去耦滤波。  2.2 单线制串行简介 2.2.1 串行接口  (单线双向) DATA 用于微处理器与 DHT11之间的通讯和同步,采用单总线数据格式,一次通讯时间4ms左右,数据分小数部分和整数部分,具体格式在下面说明,当前小数部分用于以后扩展,现读出为零。操作流程:一次完整的数据传输为40bit,高位先出。 数据格式:8bit湿度整数数据8bit湿度小数数据8bi温度整数数据8bit温度小数数据8bit校验和 数据传送正确时校验和数据等于“8bit湿度整数数据8bit湿度小数数据8bi温度整数数据8bit温 度小数数据”所得结果的末8位。 2.2.2 数据示例 接收到的数据为 计算 对比接收到的校验位数据正确 2.3 通信时序  用户MCU发送一次开始信号后,DHT11从低功耗模式转换到高速模式,等待主机开始信号结束后,DHT11发送响应信号,送出40bit的数据,并触发一次信号采集,用户可选择读取部分数据.从模式下,DHT11接收到开始信号触发一次温湿度采集,如果没有接收到主机发送开始信号,DHT11不会主动进行温湿度采集.采集数据后转换到低速模式。 通讯过程如图所示 总线空闲状态为高电平,主机把总线拉低等待DHT11响应,主机把总线拉低必须大于18毫秒,保证DHT11能检测到起始信号。DHT11接收到主机的开始信号后,等待主机开始信号结束,然后发送80us低电平响应信号.主机发送开始信号结束后,延时等待20-40us后, 读取DHT11的响应信号,主机发送开始信号后,可以切换到输入模式,或者输出高电平均可, 总线由上拉电阻拉高。 总线为低电平,说明DHT11发送响应信号,DHT11发送响应信号后,再把总线拉高80us,准备发送数据,每一bit数据都以50us低电平时隙开始,高电平的长短定了数据位是0还是1.格式见下面图示.如果读取响应信号为高电平,则DHT11没有响应,请检查线路是否连接正常.当最后一bit数据传送完毕后DHT11拉低总线50us,随后总线由上拉电阻拉高进入空闲状态。 数字0信号表示方法如图所示VCC保持高电平26-28微秒 数字1信号表示方法如图所示VCC保持高电平70微秒 三 单片机简介 3.1 STM32F103C8T6最小系统板 本文使用的开发板为STM32F103C8T6最小系统板DHT11温湿度传感器使用到的引脚为PA11引脚。  四 接线说明 DHT11温湿度传感器与单片机的接线取决于DHT11.C和DHT11.H中的引脚宏定义本文传感器的DATA引脚接单片机PA11VCC接3.3V。 4.1 DHT11.C宏定义 定义DATA引脚为11: #define DT GPIO_Pin_11 4.2  DHT11.H宏定义 引脚输入输出模式配置定义GPIOA引脚CRH是引脚高8位即PA8-PA15,将8左移12位是配置成输入模式将3左移12位是配置成推挽输出模式。 #define DHT11_IO_IN() {GPIOA-CRH0XFFFF0FFF;GPIOA-CRH|812;} #define DHT11_IO_OUT() {GPIOA-CRH0XFFFF0FFF;GPIOA-CRH|312;} IO宏定义 #define DHT11_DQ_OUT PAout(11) #define DHT11_DQ_IN PAin(11) 五 程序设计 5.1 DHT11.C 5.1.1 复位DHT11 将数据线配置为输出模式先拉低数据线20ms然后将数据线拉高30微秒对应时序图如下。 void DHT11_Rst(void) { DHT11_IO_OUT(); //SET OUTPUTDHT11_DQ_OUT0; //拉低DQdelay_ms(20); //拉低至少18msDHT11_DQ_OUT1; //DQ1 delay_us(30); //主机拉高20~40us } 5.1.2 检查DHT11工作是否正常  将数据线配置为输入模式DHT11会先拉低80微秒然后再拉高80微秒如果超过80微秒仍没有回应则返回1DHT11读取失败对应时序图如下。 u8 DHT11_Check(void) { u8 retry0;DHT11_IO_IN();//SET INPUT while (DHT11_DQ_INretry100)//DHT11会拉低40~80us{retry;delay_us(1);}; if(retry100)return 1;else retry0;while (!DHT11_DQ_INretry100)//DHT11拉低后会再次拉高40~80us{retry;delay_us(1);};if(retry100)return 1; return 0; } 5.1.3 读取一位数据 该函数采用两个while循环是等待每个周期的电平变化先等待低电平到来后等待高电平到来延时40us后判断引脚电平来判断该位数据为1或0。之所以是40微秒是因为传感器数字0的信号持续时间为26-28us数字1的信号持续时间为70us选择一个中值来区分两种信号当然也可以选择其他值但最好在40us附近。 u8 DHT11_Read_Bit(void) {u8 retry0;while(DHT11_DQ_INretry100)//等待变为低电平{retry;delay_us(1);}retry0;while(!DHT11_DQ_INretry100)//等待变高电平{retry;delay_us(1);}delay_us(40);//等待40usif(DHT11_DQ_IN)return 1;else return 0; }5.1.4 读取一个字节  读取一个字节就是连续读取8次数据位并将读取到的数据不断左移1位放到高位。 u8 DHT11_Read_Byte(void) { u8 i,dat;dat0;for (i0;i8;i) {dat1; dat|DHT11_Read_Bit();} return dat; } 5.1.5 读取温湿度值  当DHT11检查无误时将读取到的40位数据存放在5个元素的数组中校验无误后将第一个字节的数据存放在temp变量的地址中即温度的整数部分将第三个字节的数据存放在humi变量的地址中即湿度的整数部分。 u8 DHT11_Read_Data(u8 *temp,u8 *humi) { u8 buf[5];u8 i;DHT11_Rst();if(DHT11_Check()0){for(i0;i5;i)//读取40位数据{buf[i]DHT11_Read_Byte();}if((buf[0]buf[1]buf[2]buf[3])buf[4]){*humibuf[0];*tempbuf[2];}}else return 1;return 0; }5.1.6 完整DHT11.C程序  /***************STM32F103C8T6*********************** 文件名 DHT11.c* 描述 DHT11传感器* 备注 : DHT11温度湿度传感器* 接口 PA11-DATA********************LIGEN*************************/#include dht11.h #include delay.h#define DT GPIO_Pin_11//复位DHT11 void DHT11_Rst(void) { DHT11_IO_OUT(); //SET OUTPUTDHT11_DQ_OUT0; //拉低DQdelay_ms(20); //拉低至少18msDHT11_DQ_OUT1; //DQ1 delay_us(30); //主机拉高20~40us }//等待DHT11的回应 //返回1:未检测到DHT11的存在 //返回0:存在 u8 DHT11_Check(void) { u8 retry0;DHT11_IO_IN();//SET INPUT while (DHT11_DQ_INretry100)//DHT11会拉低40~80us{retry;delay_us(1);}; if(retry100)return 1;else retry0;while (!DHT11_DQ_INretry100)//DHT11拉低后会再次拉高40~80us{retry;delay_us(1);};if(retry100)return 1; return 0; }//从DHT11读取一个位 //返回值1/0 u8 DHT11_Read_Bit(void) {u8 retry0;while(DHT11_DQ_INretry100)//等待变为低电平{retry;delay_us(1);}retry0;while(!DHT11_DQ_INretry100)//等待变高电平{retry;delay_us(1);}delay_us(40);//等待40usif(DHT11_DQ_IN)return 1;else return 0; }//从DHT11读取一个字节 //返回值读到的数据 u8 DHT11_Read_Byte(void) { u8 i,dat;dat0;for (i0;i8;i) {dat1; dat|DHT11_Read_Bit();} return dat; }//从DHT11读取一次数据 //temp:温度值(范围:0~50°) //humi:湿度值(范围:20%~90%) //返回值0,正常;1,读取失败 u8 DHT11_Read_Data(u8 *temp,u8 *humi) { u8 buf[5];u8 i;DHT11_Rst();if(DHT11_Check()0){for(i0;i5;i)//读取40位数据{buf[i]DHT11_Read_Byte();}if((buf[0]buf[1]buf[2]buf[3])buf[4]){*humibuf[0];*tempbuf[2];}}else return 1;return 0; }//初始化DHT11的IO口 DQ 同时检测DHT11的存在 //返回1:不存在 //返回0:存在 u8 DHT11_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //使能PG端口时钟GPIO_InitStructure.GPIO_Pin DT; //PG11端口配置GPIO_InitStructure.GPIO_Mode GPIO_Mode_Out_PP; //推挽输出GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz;GPIO_Init(GPIOA, GPIO_InitStructure); //初始化IO口GPIO_SetBits(GPIOA,DT); //PG11 输出高DHT11_Rst(); //复位DHT11return DHT11_Check();//等待DHT11的回应 } 5.2 DHT11.H #ifndef DHT11_H #define DHT11_H#include sys.h//PA11 #define DHT11_IO_IN() {GPIOA-CRH0XFFFF0FFF;GPIOA-CRH|812;} #define DHT11_IO_OUT() {GPIOA-CRH0XFFFF0FFF;GPIOA-CRH|312;} //IO操作函数 #define DHT11_DQ_OUT PAout(11) #define DHT11_DQ_IN PAin(11) u8 DHT11_Init(void);//初始化DHT11 u8 DHT11_Read_Data(u8 *temp,u8 *humi);//读取数据 u8 DHT11_Read_Byte(void);//读取一个字节 u8 DHT11_Read_Bit(void);//读取一位 u8 DHT11_Check(void);//检测DHT11 void DHT11_Rst(void);//复位DHT11 #endif5.3 添加头文件 #include dht11.h 5.4 定义变量 u8 temp; u8 humi; 5.5 初始化 如果初始化错误串口输出“DHT11 Error” while(DHT11_Init()){printf(DHT11 Error \r\n);delay_ms(1000);} 5.6 测量温湿度 串口输出温湿度。 DHT11_Read_Data(temp,humi);printf(temp: %d C\r\nhumi: %d %%RH\r\n,temp,humi); delay_ms(1000); 七 测量效果 temp表示温度humi表示湿度。
http://www.dnsts.com.cn/news/76818.html

相关文章:

  • 网站开发模板下载网站搜索引擎友好性分析
  • 学校期末评语网站开发电子商务系统建设网站策划书
  • 做网站较好的框架深圳公司注册资金最低多少
  • 网站制作培训班dede 手机站 怎么获取跳转网站
  • 机构网站建设需要交费吗扑克直播软件app开发
  • 企业做网站的方案现在视频做网站晚了吗
  • 网站做rss+wordpress网站程序上传完
  • 怎么做视频解析网站吗wordpress 安全防护
  • 昆明seo公司网站做天猫网站设计难吗
  • 网站设计公司建设wordpress软件最低要求
  • 镇平县两学一做专题网站音乐网站建设需求分析
  • 网站开发php有哪些百度是门户网站吗
  • 自己做网站现实么做网站好比做房子
  • 江苏建设教育协会网站商机网创业好项目
  • 公司网站策划宣传河北省建设机械协会网站首页
  • 河南省教育类网站前置审批台州建设工程信息网站
  • 网站如何做404商城网站开发用什么框架
  • 牧星网站建立手机 网站开发aspx
  • 营销网站结构图wordpress修复缩略图
  • 安阳哪里做网站成都公司网站建设
  • 南京专业网站制作公司百度网盘pc网页版入口
  • 婚恋网站 没法做食品包装设计案例分析
  • 做网站买那种服务器自做业务网站
  • 产品摄影网站重庆做网站及优化报价
  • 做app网站有哪些个人网站可以做地方
  • 长春老火车站编程网站ide做的比较好的
  • 常宁网站开发聊城做网站的公司流程
  • 深圳制作网站开发费用10元微投资正规平台
  • 关于网站开发的会议纪要建设项目竣工验收公告网站
  • asp.net 音乐网站开发厦门免费建立企业网站