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

江阴响应式网站建设网站开发设计的地域分析

江阴响应式网站建设,网站开发设计的地域分析,深圳网站建设 找猴王网络,jsp网站设计教学做一体化教程目录 前言 1. DHT11简介 2. DHT11数据结构 3. DHT11的传输时序 3.1 DHT11开始发送数据流程 3.2 主机复位信号和DHT11响应信号 3.3 数字 “0” 信号表示方法 3.4 数字 “1” 信号表示方法 4. 硬件分析 5. 实验程序详解 5.1 main.c 5.2 DHT11.c 5.3 DHT11.h 前言 DH…目录 前言 1. DHT11简介 2. DHT11数据结构 3. DHT11的传输时序 3.1 DHT11开始发送数据流程 3.2 主机复位信号和DHT11响应信号 3.3 数字 “0” 信号表示方法 3.4 数字 “1” 信号表示方法 4. 硬件分析 5. 实验程序详解 5.1 main.c 5.2 DHT11.c 5.3 DHT11.h 前言 DHT11数字温湿度传感器不但能测温度还能测湿度。本节我们将利用STM32F4来读取DHT11的温湿度传感器获取环境的温度和湿度值。 1. DHT11简介 DHT11是广州奥松有限公司生产的一款温湿度一体化的数字传感器。该传感器包括一个电阻式测湿元件和一个NTC测温元件并与一个高性能8位单片机相连。通过单片机等微处理器简单的电路连接就能实时的采集本地的温度和湿度。DHT11 与单片机之间能采用简单的单总线进行通信仅仅需要一个I/O 口。 性能指标和特性 工作电压范围3.5V~5.5V        工作电流0.5mA        湿度测量范围20-90%RH        温度测量范围0-50℃        湿度分辨率1%RH  8位        温度分辨率1℃  8位        采样周期1S        单总线结构        与TTL兼容5V 2. DHT11数据结构 DHT11数字温湿度传感器采用单总线数据格式。通过单个数据的引脚端口就可以完成输入输出双向传输。其数据包由5Byte5*840Bit组成。数据分小数部分和整数部分。 一次完整的数据传输为40bit高位先行。 数据格式8bit湿度整数数据8bit湿度小数数据8bit温度整数数据8bit温度小数数据8bit校验和 其中校验和数据为前四个字节相加。 DHT11和DS18B20相同传感器输出的都是未编码的二进制数字。数据湿度、温度、整数、小数之间应该分开进行处理。 比方说 DHT11温湿度传感器一次完整的数据传输位如上图所示 那么humidity湿度byte4 . byte345.0%RH temperature温度byte2 . byte128.0℃ 校验位byte0byte4byte3byte2byte173humiditytemperature 因此温湿度的读取方式就是整数部分的二进制转换成十进制放在整数部分小数部分的二进制转换成十进制放在小数部分。 注意DHT11和MCU的一次通讯时间最大3ms主机连续向DHT11采样的间隔建议不小于100ms。 3. DHT11的传输时序 3.1 DHT11开始发送数据流程 主机发送开始信号后延时等待20us~40us后读取DHT11的应答信号正常的话DHT11 会拉低数据线保持40~50us时间读取总线为低电平说明DHT11发送响应信号DHT11发送响应信号后再把总线拉高保持40-50us准备发送数据每一位 bit 数据都以低电平开始。 如果读取响应为高电平则DHT11没有响应检查线路是否连接正常。 3.2 主机复位信号和DHT11响应信号 主机发送复位信号后主机拉低总线延时至少18ms然后将主机拉高延迟20-40us等待DHT11的应答信号。读取总线电平如果为低电平则表示从机DHT11发送应答信号成功。然后从机把总线拉高准备发送数据。之所以拉高是因为每发送一位数据都是以低电平开始的为发送数据做准备。 3.3 数字 “0” 信号表示方法 因为DHT11也是遵循单总线协议的。所以也是通过高低电平延时不同时间进行组合来发送逻辑1或者逻辑0. 从机DHT11拉低总线延时12-14us然后从机释放总线延时26-28us。表示发送数字 “0”  3.4 数字 “1” 信号表示方法 从机DHT11拉低总线延时12-14us然后从机释放总线延时116-118us。表示发送数字 “1”  4. 硬件分析 VCC正电源支持3.5V~5.5VDout输出引脚NC空脚GND地 DHT11数字温湿度传感器的第一脚接电源正极第四脚接电源地端。数据端为第二脚。第二端数据引脚可以直接接在主机(单片机)的IO口。同时为了提高稳定性一般在数据端和电源正极之间接一只4.7K的上拉电阻。第三脚NC为空脚此管脚悬空不用。 5. 实验程序详解 实验现象开机的时候先检测是否有DHT11存在如果没有则提示错误。只有在检测到DHT11之后才会开始读取温湿度值。如果发现了DHT11则程序每隔100ms左右读取一次数据。 5.1 main.c #include stm32f4xx.h #include delay.h #include usart.h #include LED.h #include lcd.h #include Key.h #include usmart.h #include MyI2C.h #include AT24C02.h #include DS18B20.h #include DHT11.h//LCD状态设置函数 void led_set(u8 sta)//只要工程目录下有usmart调试函数主函数就必须调用这两个函数 {LED1sta; } //函数参数调用测试函数 void test_fun(void(*ledset)(u8),u8 sta) {led_set(sta); } int main(void) {u8 t0;u8 temperature;u8 humidity;delay_init(168);uart_init(115200);LED_Init();LCD_Init();POINT_COLORRED;LCD_ShowString(30,50,200,16,16,Explorer STM32F4);LCD_ShowString(30,70,200,16,16,DHT11 Text);LCD_ShowString(30,90,200,16,16,ATOMALIENTER);LCD_ShowString(30,110,200,16,16,2023/20/23);while(DHT11_Init())//返回1表示没有检测到DHT11的存在报错{LCD_ShowString(30,130,200,16,16,DHT11 Rrror);delay_ms(200);LCD_Fill(30,130,239,13016,WHITE); //清除这块区域 x 30~239 y 130~13016delay_ms(200);}LCD_ShowString(30,130,200,16,16,DHT11 OK);POINT_COLORBLUE;LCD_ShowString(30,150,200,16,16,Temperature: C);LCD_ShowString(30,170,200,16,16,Humidity: %);while(1){if(t%100) //每100ms读取一次{DHT11_Read_Data(temperature,humidity); //读取温湿度的值LCD_ShowNum(3012*8,150,temperature,2,16); //显示温度LCD_ShowNum(309*8,170,humidity,2,16); //显示湿度}delay_ms(10);t;if(t20){t0;LED0!LED0;}} } 5.2 DHT11.c #include stm32f4xx.h #include DHT11.h #include delay.h//复位DHT11 void DHT11_Reset(void) {//复位DHT11的时序主机拉低总线延时至少18ms然后主机拉高总线延时20-40us等待从机应答DHT11_IO_OUT(); //复位时序是主机来完成的所以首先设置主机IO引脚输出模式DHT11_DQ_OUT0; //主机拉低总线delay_ms(20); //延时至少18msDHT11_DQ_OUT1; //主机拉高总线delay_us(30); //延时20-40us } //等待DHT11的应答信号 //返回1未检测到DHT11的存在 //返回0存在 u8 DHT11_CheckExist(void) {//应答信号的时序是主机发送应答信号后从机DHT11会拉低信号线保持40-50us。此时若读取主机总线为低电平这说明DHT11发送了应答信号//DHT11发送应答信号之后再把总线拉高保持40-50us准备发送数据每一位bit数据都是以低电平开始的。u8 Existence0;DHT11_IO_IN(); //主机IO引脚设置为输入模式等待从机的应答信号输入while(DHT11_DQ_INExistence100) //从机DHT11会拉低信号线保持40-80us等待应答 按位操作必须两个条件都为真才是真{//DHT11_DQ_IN为真就一直在这里循环表示始终没有接收到从机DHT11的应答信号因为总线拉低读取高电平是始终没有响应的//DHT11_DQ_IN是从机DHT11发送主机MCU的信号应答信号时从机会拉低信号线因此如果主机收到的是高电平那么意味着没有发送应答信号//Existence100表示设置一个缓冲时间去等待从机发送应答这里设置的就是100usExistence;delay_us(1);}if(Existence100){return 1; //主机给从机的缓冲时间是100us主机等了从机100us还是没有接收到应答信号那么返回信息未检测到DHT11的存在}else //在给定的100us内接收到了应答信号将缓冲计时变量Existence清0为后续总线拉高后延迟做准备Existence0;while(!DHT11_DQ_INExistence100) //拉低后再次拉高准备发送数据延迟40-80us{//!DHT11_DQ_IN表示主机接收到了应答信号也就是主机接收到了低电平延迟100usExistence;delay_us(1);}if(Existence100){return 1;}return 0; } //从DHT11读取一个位 //返回值1/0 u8 DHT11_Read_Bit(void) {//DHT11读取一位的时序不管读的那一位是高电平1还是低电平0首先从机DHT11都需要拉低总线//数据0从机拉低总线延时12-14us然后从机释放总线延时26-28us//数据1从机拉低总线延时12-14us然后从机释放总线延时116-118usu8 data0;while(DHT11_DQ_INdata100)//等待变为低电平//主机从DHT11读取一位从机要拉低总线在没有拉低之前主机收到的DHT11_DQ_IN一定是高电平1,而通过观察低电平的时序可以发现不管是逻辑1还是0低电平延时12-14us//所以设置的100us是远远大于低电平延时时间的所以data100这个条件在此while循环中一定为真跳出循环的条件一定是DHT11_DQ_IN0也就是等待变为低电平{data;delay_us(1);}data0; //离开while循环时主机一定收到了低电平此时DHT11_DQ_IN0设置data0是为后续等待高电平做准备while(!DHT11_DQ_INdata100) //等待变为高电平{//从上面的循环出来时DHT11_DQ_IN0取反就为真//条件data100低电平0的整个发送时序延时时间(包括低电平延时12-14us高电平延时26-28us)也远远小于100us所以data100在该循环中也是始终为真的// 高电平1的整个发送时间是大于100us的(低电平延时12-14us高电平延时116-118us)//经分析离开循环的条件是DHT11_DQ_IN变为高电平1取反等于0为假。在低电平0的12-14us过去以后高电平信号就会来临data;delay_us(1);}//delay_us(40) 没有这个延迟40us是无法判断是数据1还是数据0的delay_us(40);//从上一个while循环出来以后时序停留在刚刚变为高电平的瞬间这个时候延时40us数据0会跳过高电平数据1会停留在高电平if(DHT11_DQ_IN) //这个时候根据主机读到的是1还是0设置返回值return 1;elsereturn 0; } //从DHT11读取一个字节 //返回值读到的数据 u8 DHT11_Read_Byte(void) {u8 i,data;data0;for(i0;i8;i){datadata1; //DHT11读取的字节是高位先行的所以每循环一次都要将上次读取的那一位左移右侧最低位补0每次都将新读取的那一位数据和0进行|或运算。datadata|DHT11_Read_Bit();}return data; } //从DHT11读取一位数据 //temperature温度值(范围0~50℃) //humidity湿度值(范围20%~90%) //返回值0 正常1 读取失败 u8 DHT11_Read_Data(u8 *temperature,u8 *humidity) {//DHT11的数据格式是5个字节40位数据前两位是湿度的整数和小数部分第三、第四位是温度的整数和小数部分最后一位是校验位u8 Buf[5]; //定义一个数组来存放收到的5个字节的数组u8 i;DHT11_Reset();if(DHT11_CheckExist()0) //应答信号返回值为0表示检测到了DHT11应答信号{for(i0;i5;i) //调用读字节函数将读取到的5个字节存放到Buf数组中{Buf[i]DHT11_Read_Byte();}if((Buf[0]Buf[1]Buf[2]Buf[3])Buf[4]) //检验成功{*humidityBuf[0]; //这里只显示了温湿度的整数部分*temperatureBuf[2];}}elsereturn 1; //DHT11_CheckExist()1 表示没有检测到DHT11的应答信号报错return 0; //返回正常情况 } //初始化DHT11的IO口 DQ 同时检测DHT11的存在 //返回1不存在 //返回0存在 u8 DHT11_Init(void) {RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOG,ENABLE); //使能GPIOG时钟GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_ModeGPIO_Mode_OUT; //默认设置为输出模式GPIO_InitStructure.GPIO_OTypeGPIO_OType_PP;GPIO_InitStructure.GPIO_PinGPIO_Pin_9;GPIO_InitStructure.GPIO_PuPdGPIO_PuPd_UP;GPIO_InitStructure.GPIO_SpeedGPIO_Speed_50MHz;GPIO_Init(GPIOG,GPIO_InitStructure);DHT11_Reset();return DHT11_CheckExist(); //初始化返回检测DHT11是否成功0成功 1收不到应答信号报错 } 5.3 DHT11.h #ifndef _DHT11__H_ #define _DHT11__H_ #include sys.h//IO方向设置 //IO方向是通过位段设置的调用GPIO模式寄存器以下代码已经多次使用如有不理解可回头温习DS18B20的实验代码 #define DHT11_IO_IN() {GPIOG-MODER~(3(9*2));GPIOG-MODER|09*2;} //PG9输入模式 #define DHT11_IO_OUT() {GPIOG-MODER~(3(9*2));GPIOG-MODER|19*2;} //PG9输出模式 //IO引脚设置 #define DHT11_DQ_OUT PGout(9) //PG9输出 #define DHT11_DQ_IN PGin(9) //PG9输入void DHT11_Reset(void); u8 DHT11_CheckExist(void); u8 DHT11_Read_Bit(void); u8 DHT11_Read_Byte(void); u8 DHT11_Read_Data(u8 *temperature,u8 *humidity); u8 DHT11_Init(void);#endif 本节程序每一步都进行了详细的注释有哪里解释的不对的欢迎指正
文章转载自:
http://www.morning.rfxyk.cn.gov.cn.rfxyk.cn
http://www.morning.mxftp.com.gov.cn.mxftp.com
http://www.morning.ffydh.cn.gov.cn.ffydh.cn
http://www.morning.ftsmg.com.gov.cn.ftsmg.com
http://www.morning.ssfq.cn.gov.cn.ssfq.cn
http://www.morning.wljzr.cn.gov.cn.wljzr.cn
http://www.morning.bpmnj.cn.gov.cn.bpmnj.cn
http://www.morning.wckrl.cn.gov.cn.wckrl.cn
http://www.morning.rtryr.cn.gov.cn.rtryr.cn
http://www.morning.pqrhb.cn.gov.cn.pqrhb.cn
http://www.morning.bfcrp.cn.gov.cn.bfcrp.cn
http://www.morning.mypxm.com.gov.cn.mypxm.com
http://www.morning.ndxrm.cn.gov.cn.ndxrm.cn
http://www.morning.rwmq.cn.gov.cn.rwmq.cn
http://www.morning.jjhrj.cn.gov.cn.jjhrj.cn
http://www.morning.rjrz.cn.gov.cn.rjrz.cn
http://www.morning.ckctj.cn.gov.cn.ckctj.cn
http://www.morning.lzqnj.cn.gov.cn.lzqnj.cn
http://www.morning.plqsc.cn.gov.cn.plqsc.cn
http://www.morning.hsxkq.cn.gov.cn.hsxkq.cn
http://www.morning.bmtyn.cn.gov.cn.bmtyn.cn
http://www.morning.xqxlb.cn.gov.cn.xqxlb.cn
http://www.morning.rsnn.cn.gov.cn.rsnn.cn
http://www.morning.tkrdg.cn.gov.cn.tkrdg.cn
http://www.morning.bxrqf.cn.gov.cn.bxrqf.cn
http://www.morning.ghryk.cn.gov.cn.ghryk.cn
http://www.morning.dtnyl.cn.gov.cn.dtnyl.cn
http://www.morning.nggbf.cn.gov.cn.nggbf.cn
http://www.morning.ljqd.cn.gov.cn.ljqd.cn
http://www.morning.nldsd.cn.gov.cn.nldsd.cn
http://www.morning.qcfgd.cn.gov.cn.qcfgd.cn
http://www.morning.rckdq.cn.gov.cn.rckdq.cn
http://www.morning.pwwjs.cn.gov.cn.pwwjs.cn
http://www.morning.gpsrk.cn.gov.cn.gpsrk.cn
http://www.morning.jjzjn.cn.gov.cn.jjzjn.cn
http://www.morning.zljqb.cn.gov.cn.zljqb.cn
http://www.morning.rdnjc.cn.gov.cn.rdnjc.cn
http://www.morning.c7627.cn.gov.cn.c7627.cn
http://www.morning.bdqpl.cn.gov.cn.bdqpl.cn
http://www.morning.ghccq.cn.gov.cn.ghccq.cn
http://www.morning.tcpnp.cn.gov.cn.tcpnp.cn
http://www.morning.bpmfg.cn.gov.cn.bpmfg.cn
http://www.morning.mcwgn.cn.gov.cn.mcwgn.cn
http://www.morning.qkwxp.cn.gov.cn.qkwxp.cn
http://www.morning.qsfys.cn.gov.cn.qsfys.cn
http://www.morning.tytly.cn.gov.cn.tytly.cn
http://www.morning.rxkq.cn.gov.cn.rxkq.cn
http://www.morning.pclgj.cn.gov.cn.pclgj.cn
http://www.morning.bpmz.cn.gov.cn.bpmz.cn
http://www.morning.gccdr.cn.gov.cn.gccdr.cn
http://www.morning.rwfp.cn.gov.cn.rwfp.cn
http://www.morning.mhpkz.cn.gov.cn.mhpkz.cn
http://www.morning.kqzrt.cn.gov.cn.kqzrt.cn
http://www.morning.gmwqd.cn.gov.cn.gmwqd.cn
http://www.morning.thjqk.cn.gov.cn.thjqk.cn
http://www.morning.hmtft.cn.gov.cn.hmtft.cn
http://www.morning.wnnlr.cn.gov.cn.wnnlr.cn
http://www.morning.qblcm.cn.gov.cn.qblcm.cn
http://www.morning.drbd.cn.gov.cn.drbd.cn
http://www.morning.jhkzl.cn.gov.cn.jhkzl.cn
http://www.morning.gwhjy.cn.gov.cn.gwhjy.cn
http://www.morning.swwpl.cn.gov.cn.swwpl.cn
http://www.morning.sgpny.cn.gov.cn.sgpny.cn
http://www.morning.nkjpl.cn.gov.cn.nkjpl.cn
http://www.morning.nmkbl.cn.gov.cn.nmkbl.cn
http://www.morning.mjjty.cn.gov.cn.mjjty.cn
http://www.morning.kwfnt.cn.gov.cn.kwfnt.cn
http://www.morning.sqqds.cn.gov.cn.sqqds.cn
http://www.morning.mwrxz.cn.gov.cn.mwrxz.cn
http://www.morning.twhgn.cn.gov.cn.twhgn.cn
http://www.morning.jqkrt.cn.gov.cn.jqkrt.cn
http://www.morning.xzrbd.cn.gov.cn.xzrbd.cn
http://www.morning.yfmwg.cn.gov.cn.yfmwg.cn
http://www.morning.qymqh.cn.gov.cn.qymqh.cn
http://www.morning.xppj.cn.gov.cn.xppj.cn
http://www.morning.wdrxh.cn.gov.cn.wdrxh.cn
http://www.morning.hdrsr.cn.gov.cn.hdrsr.cn
http://www.morning.lkjzz.cn.gov.cn.lkjzz.cn
http://www.morning.mjgxl.cn.gov.cn.mjgxl.cn
http://www.morning.tqsgt.cn.gov.cn.tqsgt.cn
http://www.tj-hxxt.cn/news/261227.html

相关文章:

  • 怀化老年网站快速建站哪个平台好
  • 官方网站平台有哪些山东省住房城乡建设厅查询网站首页
  • 保险网站定制六安今天新闻最新消息
  • 珠海专业网站制作公重庆住建厅网站官网
  • 网站描文本吴博 wordpress
  • 用软件做模板下载网站商丘网上房地产查询系统
  • 小轲网站建设制作游戏
  • asp做的网站怎么运行企业管理公司
  • 建立自己的个人网站seo网站关键词优化快速官网
  • 网站ui设计报价单手套网站模板
  • 雅安市政建设公司网站管理培训公司
  • 网站设计相似侵权吗山东网络科技有限公司
  • 网站设置受信任肇庆制作企业网站
  • xyz域名的网站有哪些软件生命周期6个阶段
  • 免费访问国外网站的应用一个小外贸公司怎么开
  • 网站开发应如何入账每天自动更新的网站
  • 滁州网站建设公司制作网站的程序语言
  • 蔡甸做网站wordpress粒子插件
  • cms网站管理系统源码wordpress更新php版本号
  • 定制开发软件图片唐山网站建设方案优化
  • 家具设计师培训班什么叫网站优化
  • 网站设计说明书800字简单网站html模板下载地址
  • 宁波建设银行网站分部上海网站备案网站
  • 社团网站设计网页单页网站对攻击的好处
  • 网站的建设宗旨基本网站怎么做
  • 做网站需要什么设备网站建设微信营销公司
  • 连锁酒店网站方案张家港
  • 北京永安市政建设投资有限公司网站专业的营销网站建设公司排名
  • 怎么下载需要会员的网站视频微信怎么建立公众号小程序
  • 做网站做app什么专业ccd设计公司很厉害吗