网站首页 / 育儿 / 正文

stm32f103zet6引脚图及功能(stlinkv2烧录stm32教程)

时间:2022-04-14 18:45:48 浏览:2069次 作者:用户投稿 【我要投诉/侵权/举报 删除信息】

多条告白如次剧本只需引入一次

对于DHT11

DHT11是一款数字温湿度传感器,DHT11是一款含有已校准数字旗号输入的温湿度复合传感器。它运用专用的数字模块搜集本领和温湿度传感本领,保证产物具备真实的宁静性,相应快,抗干预本领强。传感器囊括一个高分子电阻式感湿元件和一个NTC测量温度元件,并与一个高本能8位单片机相贯穿,经过单总线与微处置器通信,只须要一根线。

关系参数

1、DHT11数据构造DHT11数字湿温度传感器沿用单总线数据方法。即,单个数据引脚端口实行输出输入双向传输。其数据包由5Byte(40Bit)构成。数据分少量局部和平头局部,简直方法在底下证明。一次完备的数据传输为40bit,上位先出。数据方法:8bit湿度平头数据+8bit湿度少量数据+8bit温度平头数据+8bit温度少量数据+8bit校验和校验和数据为前四个字节相加。传感器数据输入的是未源代码的二进制数据。数据(湿度、温度、平头、少量)之间该当划分处置。即使,某次从传感器中读取如次5Byte数据:

由之上数据方法不妨获得温湿度计划本领humi (湿度)= byte4 . byte3=45.0 (%RH)temp (温度)= byte2 . byte1=28.0 ( ℃)jiaoyan(校验)= byte4+ byte3+ byte2+ byte1=73(=humi+temp)(校验精确)2、DHT11传输数据时序长机发送发端旗号后,延时等候 20us-40us 后读取 DH11T 的回应旗号,读取总线为低电平,证明 DHT11 发送相应旗号,DHT11 发送相应旗号后,再把总线拉高,筹备发送数据,每一 bit 数据都以低电平发端。

3、DHT11的数字“0”和数字“1”表白本领DHT11的数字0和数字1表白办法和罕见的各别,普遍的数据表白0的是低电平,表白1的是高电平,DHT11各别,发端传输数据之后他数字0的表白办法是高电平26-28us,数字1的表白办法是高电平116-118us。

代码篇

此次试验设置的IO口是PB11,传输的数据是串口一1、长机发送发端旗号到DHT11即单片机拉低18ms之后再拉高20-40us

static void DHT11_Rst(void){ GPIO_SETOUT();//摆设成输入形式 GPIO_ResetBits(DHT11_IO,DHT11_PIN); //拉低数据线 Delay_ms(20); //拉低起码18ms GPIO_SetBits(DHT11_IO,DHT11_PIN); //拉高数据线 Delay_us(30); //长机拉高20~40usGPIO_ResetBits(DHT11_IO,DHT11_PIN);}2、DHT11发送相应旗号到长机(32单片机),DHT11的数据线会拉低40-50us的,在拉高40-50us,让单片机的IO口检验和测定旗号。

因变量名:static u8 DHT11_Check(void)参数证明:无归来值:检验和测定到回应-->归来1,要不0因变量效率:检验和测定DHT11的相应旗号***********************************************/static u8 DHT11_Check(void) { u8 retry=0;GPIO_SETIN();//树立为输出形式 while (!GPIO_ReadInputDataBit(DHT11_IO,DHT11_PIN) && retry<100)//DHT11会拉低40~50us{retry++;Delay_us(1);}if(retry >= 100)//超时未相应/未收到发端旗号,退出检验和测定return 0;else retry = 0; while (GPIO_ReadInputDataBit(DHT11_IO,DHT11_PIN) && retry<100)//DHT11拉低后会再次拉高40~50us{retry++;Delay_us(1);}if(retry>=100)//超时,DHT11处事堕落,退出检验和测定return 0;return 1;//摆设平常相应,不妨平常处事}3、DHT11发端传输数据给单片机,这有两个传输数据的因变量,一个是传输字节的,在由传输字节的因变量来写传输一个8位字符串的因变量。

因变量名:static u8 DHT11_Read_Bit(void)参数证明:无归来值:归来从DHT11上读取的一个Bit数据因变量效率:从DHT11上读取一个Bit数据***********************************************/static u8 DHT11_Read_Bit(void){ u8 retry = 0;//DHT11的Bit发端旗号为12-14us低电平while(GPIO_ReadInputDataBit(DHT11_IO,DHT11_PIN) && retry<100)//等候变为低电平(等候Bit发端旗号){retry++;Delay_us(1);}retry = 0;while(!GPIO_ReadInputDataBit(DHT11_IO,DHT11_PIN) && retry<100)//等候变高电平(代办数据发端传输){retry++;Delay_us(1);}Delay_us(30);//等候30us//0旗号为26-28us,1旗号则为116-118us,以是说胜过30us去读取引脚状况就不妨领会传输的值了if(GPIO_ReadInputDataBit(DHT11_IO,DHT11_PIN)) return 1;else return 0; }/***********************************************************************因变量名:static u8 DHT11_Read_Byte(void)参数证明:无归来值:归来从DHT11上读取的一个byte数据因变量效率:从DHT11上读取一个byte数据************************************************************************/static u8 DHT11_Read_Byte(void) { u8 i,dat; dat=0;for (i=0;i<8;i++) { dat<<=1; dat|=DHT11_Read_Bit(); } return dat;}4、DHT11数据搜集结束之后经过主因变量在串口表露出来

因变量名:int main(void)参数证明:无归来值:无因变量效率:主因变量***************************************************************************/ int main(void) { clock_init(); uart_init(115200);//初始化串口 printf("wecome to DHT11"); //初始化DHT11(有BUG,第一次上电老是波折,按一下复位按钮又能进了) if(!DHT11_Init()){ printf("rn EEROR! THE DHT11 HAS NO RESPOND..."); //while(1); } printf("rn THE DHT11 HAS RESPOND"); Delay_ms(10);//这边延时10ms主假如由于,方才接受到相应消息,要等DHT11发送完消息 while(1) { if(DHT11_Read_Data(&temp,&humi))printf("rn temp:%d,humi:%d",temp,humi); else //printf("rn EEROR! THE DHT11 HAS NO RESPOND...");//因为是库因变量编制程序,不许精确控制因变量的实行功夫,//以是会常常展示这条劝告消息 Delay_ms(100); } } 接报和试验截止

归纳

DHT11是性价比比拟高的一个温湿度模块,用串口来表露温湿度来说是比拟直觉的,长久颁布该类作品,爱好的点个关心吧。

版权声明:
本文内容由互联网用户自发贡献,该文观点仅代表作者本人,因此内容不代表本站观点、本站不对文章中的任何观点负责,内容版权归原作者所有、内容只用于提供信息阅读,无任何商业用途。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站(文章、内容、图片、音频、视频)有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至353049283@qq.com举报,一经查实,本站将立刻删除、维护您的正当权益。