成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

溫濕度傳感器

mushang / 2643人閱讀

摘要:由于溫濕度傳感器對(duì)時(shí)間要求比較高,所以延時(shí)函數(shù),我這邊采用的是大佬正點(diǎn)原子編寫的。根據(jù)時(shí)序圖可知應(yīng)答信號(hào)為低電平,高電平。后續(xù)會(huì)逐步分塊更新,并會(huì)在最后一篇文章上傳源代碼。若是該文章對(duì)你有作用或是覺得文章寫得還行,幫忙點(diǎn)點(diǎn)贊,三連

溫濕度傳感器

硬件使用

  • STM32F103 RCT6
  • DHT11 (溫濕度傳感器)

軟件使用

  • keil5 MDK環(huán)境
  • 串口調(diào)試助手

實(shí)現(xiàn)說(shuō)明

? 根據(jù) DHT11 溫濕度傳感器手冊(cè)

1. 初始化 DHT11

 復(fù)位 DHT11 ,根據(jù)時(shí)序圖寫出設(shè)置 ``` void dht_Rst(void) { 	dht_output();             //設(shè)置 dht11 為普通推挽輸出 	dht_low_input();		  //設(shè)置 dht11 為低電平 	delay_ms(20);			  //延時(shí)20ms  時(shí)間根據(jù)時(shí)序圖應(yīng)該定義為18ms到30ms之間 	dht_high_input();		  //設(shè)置 dht11 為高電平 	delay_us(30);			  //延時(shí)30us,少量延時(shí),不易出錯(cuò)	 } ``` **==注意:==** 部分代碼為博主自己編寫的函數(shù),都很==簡(jiǎn)單!== 例如設(shè)置引腳模式,設(shè)置引腳高低電平等。由于溫濕度傳感器 DHT11 對(duì)時(shí)間要求比較高,**所以延時(shí)函數(shù),我這邊采用的是==大佬正點(diǎn)原子編寫的==** 。

根據(jù)時(shí)序圖可知

應(yīng)答信號(hào)為:低電平 83 us,高電平 87 us。

所以代碼編寫為:

 ``` u8 dht_Check(void) { 	u8 k = 0;							//設(shè)置 參數(shù) k,防止程序卡死 	dht_input();						//定義 dht11 為輸入 	while(dht_read_input && k < 100)  	//判斷是否有低電平輸入(dht11回應(yīng)信號(hào)),或是 超出 83 us 	{ 		k++;							//延時(shí)等待 		delay_us(1); 	} 	if(k >= 100 )return 1;				//超時(shí)退出 	else k = 0; 	while(!dht_read_input && k<100 )		//同理,87us 高電平退出while循環(huán) 	{ 		k++; 		delay_us(100);					//延時(shí)等待 	} 	if(k>=100)return 1;					//超時(shí)退出 	return 0;							//成功監(jiān)測(cè)應(yīng)答信號(hào),返回0 } ```

所以 DHT11 初始化代碼為:

 u8 dht_Init(void) { 	dht_output();				 	dht_Rst(); 	return dht_Check(); }

2. DHT11 讀取數(shù)據(jù)信息

由 DHT11手冊(cè) 可以得到,DHT11 會(huì)輸出40位數(shù)據(jù)

每位數(shù)據(jù) 格式如下圖所示:

所以每位數(shù)據(jù)獲取代碼為:

 u8 dht_ReadBit(void) { 	u8 k = 0;							//定義 參數(shù)k ,防止超時(shí) 	while(dht_read_input && k<100)		//一檢測(cè)出低電平跳出循環(huán) 或 超時(shí)跳出 	{ 		k++; 		delay_us(1);					//延時(shí)等待 	} 	k = 0; 	while(!dht_read_input && k<100)		//一檢測(cè)出高電平跳出循環(huán) 或 超時(shí)跳出 	{ 		k++;	 		delay_us(1);					//延時(shí)等待 	} 	delay_us(40);						//這時(shí)候?yàn)閯倷z測(cè)出高電平,由于數(shù)據(jù)格式 數(shù)據(jù)為 和數(shù)據(jù)位 只在高電平的時(shí)間不同,所以延時(shí) 40us ,如果還為高電平,則為 數(shù)據(jù)位 1 	if(dht_read_input) return 1; 	else return 0; }

由于手冊(cè)下關(guān)于數(shù)據(jù)位描述為下圖:

可知:應(yīng)該把代碼分為8位一組,并且先測(cè)出的為 高位
代碼為:

u8 dht_ReadByte(void){	u8 i,dat;	dat = 0;					for(i=0;i<8;i++)				{		dat<<=1;					//數(shù)據(jù)左移 不夠補(bǔ)0		dat|=dht_ReadBit();			// | 字符	與0相或,結(jié)果為 后面的那個(gè),即只取決于dht_ReadBit() 得到的數(shù)據(jù)	}	return dat;						//返回?cái)?shù)據(jù)}

3. DHT11 具體讀取數(shù)據(jù)代碼

u8 dht_ReadData(u8 *t,u8 *h){	u8 temp[5];								//存放40位數(shù)據(jù),每8位一組,總共5組	u8 i;	dht_Rst();								//復(fù)位 DHT11,防止傳感器處在其他狀態(tài)	if(dht_Check() == 0)					//判斷是否應(yīng)答成功	{		for(i=0;i<5;i++)		{			temp[i] = dht_ReadByte();		//取出數(shù)值		}		if(temp[0]+temp[1]+temp[2]+temp[3] == temp[4])		//判斷檢驗(yàn)和		{			*h = temp[0];									//傳出參數(shù),只傳整數(shù)值,0和2為整數(shù)值,1和3位小數(shù)值			*t = temp[2];		}	}else return 1;	return 0;}

4.通過(guò)串口發(fā)送到串口調(diào)試助手

? ?(1)初始化串口

GPIO_InitTypeDef GPIO_InitStrue;	USART_InitTypeDef USART_InitStrue;	NVIC_InitTypeDef NVIC_InitStrue;		RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);	RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE); //使能 USART1		GPIO_InitStrue.GPIO_Mode = GPIO_Mode_AF_PP;	//復(fù)用推挽輸出								//USART1_Tx  USB Rx  STM32中為 Tx,需要接到 USB轉(zhuǎn)TTL串口中的 Rx	GPIO_InitStrue.GPIO_Pin = GPIO_Pin_9;	GPIO_InitStrue.GPIO_Speed = GPIO_Speed_10MHz;		GPIO_Init(GPIOA,&GPIO_InitStrue);		//USART1_Rx  USB Tx	GPIO_InitStrue.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空輸入						GPIO_InitStrue.GPIO_Pin = GPIO_Pin_10;	GPIO_InitStrue.GPIO_Speed = GPIO_Speed_10MHz;		GPIO_Init(GPIOA,&GPIO_InitStrue);		USART_InitStrue.USART_BaudRate = 115200;	USART_InitStrue.USART_HardwareFlowControl = USART_HardwareFlowControl_None;	USART_InitStrue.USART_Mode = USART_Mode_Tx|USART_Mode_Rx;			USART_InitStrue.USART_Parity = USART_Parity_No; 	USART_InitStrue.USART_StopBits = USART_StopBits_1; 	USART_InitStrue.USART_WordLength = USART_WordLength_8b;		USART_Init(USART1,&USART_InitStrue);		USART_Cmd(USART1,ENABLE);															USART_ITConfig(USART1,USART_IT_RXNE,ENABLE); 		NVIC_InitStrue.NVIC_IRQChannel = USART1_IRQn;//設(shè)置中斷	NVIC_InitStrue.NVIC_IRQChannelCmd = ENABLE;	   	NVIC_InitStrue.NVIC_IRQChannelPreemptionPriority = 1; //搶占優(yōu)先級(jí)1	NVIC_InitStrue.NVIC_IRQChannelSubPriority = 1;			//子優(yōu)先級(jí)1		NVIC_Init(&NVIC_InitStrue);

?(2)中斷發(fā)送數(shù)據(jù)

void USART1_IRQHandler(void)                {			  u8 s;	  while(*s!="/0")	{ 		while(USART_GetFlagStatus(USART1,USART_FLAG_TC )==RESET);			USART_SendData(USART1,*s);		s++;	}} 

最后

?第一次嘗試編寫博客,若是有什么建議,歡迎批評(píng)指出。

?后續(xù)會(huì)逐步分塊更新,并會(huì)在最后一篇文章上傳源代碼。

?若是該文章對(duì)你有作用或是覺得文章寫得還行,幫忙點(diǎn)點(diǎn)贊,三連!

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/121370.html

相關(guān)文章

  • 4G DTU+MODBUS溫濕傳感+MQTT連接電信云

    摘要:溫濕度傳感器的對(duì)應(yīng)轉(zhuǎn)的將溫濕度傳感器接入中,根據(jù)下圖提示,完成和溫濕度傳感器的連接。 4G DTU+MODBUS溫濕度傳感器+MQTT連接電信云 一、材料準(zhǔn)備 二、...

    jsyzchen 評(píng)論0 收藏0
  • [ Ruff 開發(fā)套件 ] Lesson 4 - LCD 溫濕計(jì)

    摘要:向項(xiàng)目中添加名為的溫濕度傳感器模塊,選擇,驅(qū)動(dòng)版本選擇最新版。使用溫濕度傳感器模塊的函數(shù)獲取當(dāng)前濕度溫濕度模塊的函數(shù)用法如下設(shè)置光標(biāo)到第二行第二個(gè)字符處打印和當(dāng)前濕度使用函數(shù)每秒鐘重新檢測(cè)和顯示當(dāng)前濕度。 showImg(https://segmentfault.com/img/bVC3uE?w=2552&h=1418); 誰(shuí)將登場(chǎng) LCD 模塊 溫濕度傳感器 你將學(xué)會(huì) ...

    since1986 評(píng)論0 收藏0
  • 02_基于西門子CM1241的ModbusRTU串口通訊實(shí)現(xiàn)

    摘要:但是我對(duì)此協(xié)議并不熟悉,本文便以測(cè)試為目的基于西門子模塊主站,采用通訊協(xié)議與溫濕度傳感器從站通訊獲取數(shù)據(jù)。 文章目錄 前言 一、前期準(zhǔn)備 二、編寫通訊程序 1.通訊測(cè)試工具和軟件 2.編寫TIA Portal程序 三、基于OPC UA的通訊傳輸 總結(jié) 前言 最近作者在...

    不知名網(wǎng)友 評(píng)論0 收藏0
  • (超簡(jiǎn)單)ESP8266深度睡眠模式下遠(yuǎn)程采集溫濕信息

    摘要:超簡(jiǎn)單深度睡眠模式下遠(yuǎn)程采集溫濕度信息項(xiàng)目背景相關(guān)技術(shù)深度睡眠模式溫濕度采集數(shù)據(jù)收發(fā)前后端實(shí)現(xiàn)后端前端項(xiàng)目背景自己用收納箱做了一個(gè)用于存放打印耗材的干燥箱,想用閑置的開發(fā)板和溫濕度傳感器做一個(gè)遠(yuǎn)程溫濕度監(jiān)測(cè)的小項(xiàng)目。 ...

    pkhope 評(píng)論0 收藏0
  • 基于STM32的OLED屏顯示AHT20采集的溫濕數(shù)據(jù)

    摘要:三小結(jié)本次實(shí)驗(yàn)在實(shí)現(xiàn)了溫濕度數(shù)據(jù)采集并通過(guò)串口顯示和利用屏數(shù)據(jù)顯示代碼的基礎(chǔ)上,完成屏顯示采集的溫濕度數(shù)據(jù)也并不復(fù)雜,其中,溫濕度數(shù)據(jù)采集的過(guò)程使用的是模擬,屏的數(shù)據(jù)顯示采用的是。 ...

    vincent_xyb 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<