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

資訊專欄INFORMATION COLUMN

七、【中級篇】傳感器DHT11、DHT22、DS18B20

Developer / 2553人閱讀

摘要:傳感器傳感器簡介串口與并口單工與半雙工上拉電阻是用來供應(yīng)電流的下拉電阻是用來分擔(dān)電流的傳感器串行接口收發(fā)數(shù)據(jù)分析的讀寫時序傳感器簡介智能終端是在感知層如果想要感知采集數(shù)據(jù)必定需要使用傳感器市面上的傳感器有很多檢測氣體的

1.傳感器簡介

智能終端是在感知層,如果想要感知采集數(shù)據(jù)必定需要使用傳感器

市面上的傳感器有很多:
檢測氣體的 溫度 濕度 稀有氣體含量(CO CO2 O2 甲醛 乙醇 甲烷 …)
檢測液體的 溫度 PH值 渾濁 液位
檢測固體的 濕度 元素含量
檢測人體 溫度 血壓 心率 血糖…

傳感器的接口也有很多:
GPIO接口 串口接口(USART/UART IIC IIS SPI …) 并口接口

數(shù)字型傳感器 和 模擬型傳感器

傳感器可以從采集種類、接口種類、采集到的數(shù)據(jù)種類分為很多種

串口與并口

串口:串行的接口或者串行的通信接口|串行的通訊接口,是指數(shù)據(jù)按照串行的方式進(jìn)行傳輸(是指數(shù)據(jù)一位一位進(jìn)行傳輸)
并口:并行的接口或者并行的通信接口|并行的通訊接口,是指數(shù)據(jù)按照并行的方式進(jìn)行傳輸(是指數(shù)據(jù)多位多位進(jìn)行傳輸)
注意:并不是說并口可以一次發(fā)送多位數(shù)據(jù)就說明并口比串口通信快,實(shí)際上正好相反,串口通信速度要比并口快
并口有很多的限制,(數(shù)據(jù)線與數(shù)據(jù)線之間會有電平干擾、需要同時發(fā)送同時接收)

單工與半雙工

單工模式 A–>---->–B
半雙工模式 A–>----<–B
全雙工模式 ---->-----

略…

上拉電阻:是用來供應(yīng)電流的

下拉電阻:是用來分擔(dān)電流的

2.DHT11傳感器

從手冊中了解DHT11傳感器:

  • 是用來采集溫度和濕度的傳感器
  • 采集到的是數(shù)字量
  • 4管腳的封裝形式
  • 采集的范圍:濕度 : 20% - 90%(誤差:±5%),溫度 : 0℃ - 50℃(誤差:±2℃),
  • 分辨力 : 1(指的是采集的精度<只能采集整數(shù)部分>)
  • 連接方式:一個管腳用來接電源,一個管腳用來接地,一個管腳用來接MCU,一個管腳懸空(NC<沒有連接>)
  • 串行接口:是指數(shù)據(jù)按照串行的方式進(jìn)行傳輸
  • 單線雙向(半雙工的工作模式):指的是串行接口的工作模式
    單工模式,半雙工模式,全雙工模式
  • 一次完整的數(shù)據(jù)傳輸為40bit<5個字節(jié)>,高位先出
    8bit濕度整數(shù)數(shù)據(jù)+8bit濕度小數(shù)數(shù)據(jù)
    +8bit溫度整數(shù)數(shù)據(jù)+8bit溫度小數(shù)數(shù)據(jù)
    +8bit校驗(yàn)和
    數(shù)據(jù)傳送正確時校驗(yàn)和數(shù)據(jù)等于“8bit濕度整數(shù)數(shù)據(jù)+8bit濕度小數(shù)數(shù)據(jù) +8bi溫度整數(shù)數(shù)據(jù)+8bit溫度小數(shù)數(shù)據(jù)”所得結(jié)果的末8位。
  • 軟件有軟件的協(xié)議,硬件也有硬件的協(xié)議:硬件的協(xié)議就是讀寫時序,讀寫時序都是官方定義出來的
    例子:DHT11在出產(chǎn)的時候,官方就已經(jīng)定義好了一套讀寫時序,MCU想要和DHT11交互數(shù)據(jù),就需要讓MCU遵守DHT11的讀寫時序
  • 分析DHT11的讀寫時序

串行接口收發(fā)數(shù)據(jù)

需要把形參c保存的8bit二進(jìn)制數(shù)據(jù),通過高位先出的方式進(jìn)行傳輸
假設(shè):MCU連接了PC9管腳,可以使用位帶發(fā)數(shù)據(jù)PCOut(9) 收數(shù)據(jù)PCIn(9)
數(shù)據(jù)線低電平代表數(shù)據(jù)0,數(shù)據(jù)線高電平代表數(shù)據(jù)1

/*發(fā)送數(shù)據(jù)*/void func(u8 c)//10111110{	u8 i = 0;//循環(huán)變量				for(i = 0; i < 8; i++)	{		if(c & 0x80)			PCOut(9) = 1;		else			PCOut(9) = 0;		c <<= 1;//01111100	}}

需要接收8bit二進(jìn)制數(shù)據(jù),傳感器通過高位先出的方式發(fā)送數(shù)據(jù)
假設(shè):MCU連接了PC9管腳,可以使用位帶發(fā)數(shù)據(jù)PCOut(9) 收數(shù)據(jù)PCIn(9)
數(shù)據(jù)線低電平代表數(shù)據(jù)0,數(shù)據(jù)線高電平代表數(shù)據(jù)1

u8 func(void){	u8 c = 0;//用來接收數(shù)據(jù)的變量	u8 i = 0;//循環(huán)變量	for(i = 0; i < 8; i++)	{		c <<= 1;//c >>= 1;		if(PCIn(9) == 1)			c |= 1;//c |= 0x80;	}}

分析DHT11的讀寫時序



傳輸數(shù)據(jù)之前需要先檢測DHT11存不存在|DHT11有沒有損壞

void set_dht_output(void)//內(nèi)部函數(shù),把PC10管腳配置為輸出模式{	GPIO_InitTypeDef Gpio_Value;//定義了GPIO初始化結(jié)構(gòu)體類型的變量		Gpio_Value.GPIO_Mode = GPIO_Mode_Out_PP;//選擇了推挽的輸出模式	Gpio_Value.GPIO_Pin = GPIO_Pin_10;//選擇了10號管腳	Gpio_Value.GPIO_Speed = GPIO_Speed_50MHz;//選擇了50MHz的輸出速率	GPIO_Init(GPIOC, &Gpio_Value);//按照上述配置初始化GPIOC組的管腳}void set_dht_input(void)//內(nèi)部函數(shù),把PC10管腳配置為輸入模式{	GPIO_InitTypeDef Gpio_Value;//定義了GPIO初始化結(jié)構(gòu)體類型的變量		Gpio_Value.GPIO_Mode = GPIO_Mode_IN_FLOATING;//選擇了浮空的輸入模式	Gpio_Value.GPIO_Pin = GPIO_Pin_10;//選擇了10號管腳	GPIO_Init(GPIOC, &Gpio_Value);//按照上述配置初始化GPIOC組的管腳}void dht_output_status(int n){	set_dht_output();//先把PC10管腳初始化為輸出模式	if(n == 0)		PCOut(10) = 0;	else		PCOut(10) = 1;}int dht_input_status(void){	set_dht_input();//先把PC10管腳初始化為輸入模式	return PCIn(10);}void dht_init(void)//DHT11初始化{	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);	//通過APB2總線使能GPIOC組的時鐘}void get_dht_value(char buf[5])//獲取DHT11傳感器采集的數(shù)據(jù){	u8 flag = 0;//該變量是用來獲取PC10管腳的電平高低	u8 time = 0;//該變量是用來計數(shù)		dht_output_status(1);//把PC10管腳拉高	dht_output_status(0);//把PC10管腳拉低	delay_ms(20);//延時20ms	dht_output_status(1);//把PC10管腳拉高	//while(dht_input_status());//以死等的方式等待PC10管腳被拉低	do	{		flag = dht_input_status();//獲取PC10管腳的電平高低		delay_us(2);//延時2us		time++;//計數(shù)自增	}while(flag == 1 && time <= 20);//以超時處理的方式等待PC10管腳被拉低	if(time > 20)//判斷是否超時		return ;//提前結(jié)束程序	while(!dht_input_status());//以死等的方式等待PC10管腳被拉高	/*開始接收40bit的數(shù)據(jù)*/	//...............}

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

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

相關(guān)文章

  • MSP430單片機(jī),OLED,獨(dú)立按鍵,DS18B20溫度感器,繼電器,抽風(fēng)機(jī),LED燈構(gòu)成的電子

    摘要:當(dāng)溫度感應(yīng)器感應(yīng)到設(shè)備主體內(nèi)部的溫度高于設(shè)定值時,此時溫度設(shè)定器會控制風(fēng)機(jī)進(jìn)行啟動,對內(nèi)部進(jìn)行散熱處理,低于設(shè)定值時停止。設(shè)定的時間間隔溫度閾值,當(dāng)前溫度由顯示,表示工作狀態(tài)。為繼電器,,,供電。必須手動清除,否則將持續(xù)引發(fā)中斷。 目錄 一、 設(shè)計要求 二、 總體設(shè)計和系統(tǒng)框圖 三、設(shè)計...

    BingqiChen 評論0 收藏0
  • ESP8266+Blinker 的萬物互聯(lián)(智能家居

    摘要:下面是演示視頻物聯(lián)網(wǎng)文章目錄前言一準(zhǔn)備二操作步驟配置配置三效果展示總結(jié)前言實(shí)現(xiàn)萬物互聯(lián)第一步,千里點(diǎn)燈,然后添加你想要的模塊就可以了,接下來我們進(jìn)入正文。 前面學(xué)習(xí)...

    CntChen 評論0 收藏0
  • 基于藍(lán)牙的超聲波無線測距系統(tǒng)

    摘要:設(shè)計簡介本設(shè)計是基于藍(lán)牙的超聲波無線測距的設(shè)計,主要實(shí)現(xiàn)以下功能實(shí)現(xiàn)通過測量當(dāng)前溫度值實(shí)現(xiàn)通過溫差補(bǔ)償法公式修改超聲波在當(dāng)前空氣中的傳播速度實(shí)現(xiàn)通過超聲波傳感器測量距離值。 設(shè)計簡介: 本設(shè)計是基于藍(lán)牙的超聲波無線測距的設(shè)計,主要實(shí)現(xiàn)以下功能: ① 實(shí)現(xiàn)通過DS18B20測量當(dāng)前溫度值 ② ...

    zxhaaa 評論0 收藏0
  • 51單片機(jī)學(xué)習(xí)筆記001-----51單片機(jī)基礎(chǔ)構(gòu)造淺介紹

    摘要:單片機(jī)在一片集成電路芯片上集成微處理器存儲器接口電路,從而構(gòu)成了單芯片微型計算機(jī),即單片機(jī)。沒搞懂專欄咋弄的,慢慢摸索吧,本人純新手,讀書人的事沒啥要臉不要臉的,有問題隨便指出,隨便噴,歡迎來指點(diǎn) 2021-9-25 自己手繪的一張圖,算是簡單的介紹吧? 對照實(shí)圖看一下 ? ? ? ?...

    int64 評論0 收藏0
  • 樹莓派利用DHT11上傳數(shù)據(jù)到電腦MySQL上

    摘要:工具樹莓派溫濕度傳感器在開始實(shí)驗(yàn)之前,要在電腦上安裝,并且建立好一個數(shù)據(jù)庫連接。到這里對電腦配置就結(jié)束了,對了,還有如果你們到時運(yùn)行樹莓派代碼出現(xiàn)遠(yuǎn)程連接失敗錯誤碼,像下圖這是因?yàn)?,你的防火墻開了,把防火墻關(guān)掉就不會報這個錯誤了。 ...

    不知名網(wǎng)友 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<