999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

溫濕度采集存儲(chǔ)系統(tǒng)設(shè)計(jì)的系統(tǒng)軟件研究

2016-11-10 10:39:27吳云沛胡永金張西平
電子測(cè)試 2016年19期
關(guān)鍵詞:單片機(jī)設(shè)計(jì)

吳云沛,胡永金,張西平

(湖北汽車(chē)工業(yè)學(xué)院,湖北十堰,442002)

Wu Yunpei,Hu Yongjin,Zhang Xiping

(Hubei University Of Automotive Technology,Shiyan Hubei,442002)

溫濕度采集存儲(chǔ)系統(tǒng)設(shè)計(jì)的系統(tǒng)軟件研究

吳云沛,胡永金,張西平

(湖北汽車(chē)工業(yè)學(xué)院,湖北十堰,442002)

本文介紹了溫濕度傳感器的檢測(cè)流程、存儲(chǔ)軟件的SD卡寫(xiě)入流程和主控軟件的設(shè)計(jì)、程序開(kāi)發(fā)和測(cè)試結(jié)果。

溫濕度傳感器; 單片機(jī)

Wu Yunpei,Hu Yongjin,Zhang Xiping

(Hubei University Of Automotive Technology,Shiyan Hubei,442002)

1 溫濕度檢測(cè)軟件設(shè)計(jì)

1.1關(guān)于溫濕度傳感器檢測(cè)流程的設(shè)計(jì)

DHT11數(shù)字溫濕度傳感器采集一次數(shù)據(jù)的流程如圖1所示。其具體操作為:首先,對(duì)單片機(jī)進(jìn)行初始化,實(shí)現(xiàn)I/O管腳的配置,然后單片機(jī)給DHT11發(fā)送開(kāi)始信號(hào),接下來(lái)看DHT11是否有信號(hào)響應(yīng),如果沒(méi)有的話(huà),單片機(jī)就會(huì)再次發(fā)送開(kāi)始信號(hào);如果獲得響應(yīng)信號(hào),則單片機(jī)實(shí)現(xiàn)數(shù)據(jù)采集,將采集的40位數(shù)據(jù)發(fā)送給單片機(jī),校驗(yàn)和,如果不正確,則丟棄;如果正確的話(huà),會(huì)把數(shù)據(jù)進(jìn)行轉(zhuǎn)化,也就是把二進(jìn)制轉(zhuǎn)成十進(jìn)制,完成。

圖1 傳感器單次數(shù)據(jù)采集流程示意圖

1.2關(guān)于溫濕度傳感器的測(cè)試程序開(kāi)發(fā)

此程序的開(kāi)發(fā)來(lái)源于傳感器采集數(shù)據(jù)流程圖。首先定義DHT11的管腳,根據(jù)接口電路設(shè)計(jì)的連接方式,定義A0號(hào)引腳為信號(hào)的輸入腳,對(duì)應(yīng)傳感器的輸出信號(hào)引腳,以字節(jié)的方式讀取數(shù)據(jù)。接下來(lái)就是對(duì)單片機(jī)進(jìn)行初始化。要實(shí)現(xiàn)這個(gè)過(guò)程部分編譯為:

DDRC |= _BV(DHT11_PIN);//初始化單片機(jī)

PORTC |= _BV(DHT11_PIN);

單片機(jī)初始化后,首先單片機(jī)將A0口變?yōu)榈碗娖剑_保DHT11能檢測(cè)到起始信號(hào),至少等待18ms,等到其開(kāi)始信號(hào)完成后,還需要等待40us,然后就是對(duì)DHT11有沒(méi)有響應(yīng)做判斷,如果沒(méi)有響應(yīng),就會(huì)返回;如果有響應(yīng),此時(shí)低電平狀態(tài)延時(shí)等待80us,然后會(huì)把DHT11的低電平改為高電平,延時(shí)等待80us。部分編譯如下:

byte read_dht11_dat()//以字節(jié)讀取數(shù)據(jù)

PORTC &= ~_BV(DHT11_PIN);

delay(18);//將單片機(jī)的A0口拉為低電平至少18ms

PORTC |= _BV(DHT11_PIN);

delayMicroseconds(40);

DDRC &= ~_BV(DHT11_PIN);

delayMicroseconds(40);

dht11_in = PINC & _BV(DHT11_PIN);//單片機(jī)將開(kāi)始信號(hào)發(fā)送給DHT11

if(dht11_in){//判斷DHT11是否響應(yīng)

return;

delayMicroseconds(80);//延時(shí)等待80us

dht11_in = PINC & _BV(DHT11_PIN);

if(!dht11_in)

return;

delayMicroseconds(80);//延時(shí)等待80us

DHT11開(kāi)始傳送數(shù)據(jù),單片機(jī)接收到DHT11發(fā)送的40位數(shù)據(jù),然后校驗(yàn)和,判斷校驗(yàn)和是否正確。部分編譯如下:

for (i=0; i<5; i++)

dht11_dat[i] = read_dht11_dat();

DDRC |= _BV(DHT11_PIN);

PORTC |= _BV(DHT11_PIN);

byte dht11_check_sum = dht11_dat[0]+dht11_ dat[1]+dht11_dat[2]+dht11_dat[3]; //校驗(yàn)和

if(dht11_dat[4]!= dht11_check_sum)

{;

根據(jù)以上部分編譯,然后具體編譯,在setup()函數(shù)中完成單片機(jī)的初始化,在loop()函數(shù)中完成溫濕度數(shù)據(jù)的采集,再加入delay()函數(shù),每間隔一定時(shí)間重復(fù)一次loop()中的程序。為了便于測(cè)試,則運(yùn)用Arduino IDE中的軟件串口,這樣就可以實(shí)時(shí)的通過(guò)軟件串口來(lái)顯示溫濕度傳感器的數(shù)據(jù)。在setup()中,配置軟件串口的速率為19200bps,具體為:Serial.begin(19200)。

1.3關(guān)于溫濕度傳感器測(cè)試結(jié)果的表述

將編譯好的程序代碼通過(guò)USB下載至Arduino UNO開(kāi)發(fā)板上,然后打開(kāi)串口監(jiān)視器,結(jié)果如果是如圖2所示的。Read是串口輸出準(zhǔn)備,Current humdity=56.0%是當(dāng)時(shí)的濕度數(shù)據(jù),temperature=27℃是當(dāng)時(shí)的溫度數(shù)據(jù),這種結(jié)果表明傳感器已經(jīng)響應(yīng),數(shù)據(jù)的采集正在進(jìn)行中。進(jìn)一步說(shuō)明,DHT11數(shù)字溫濕度傳感器可以正常采集數(shù)據(jù),如果還沒(méi)有連接到傳感器或讀取數(shù)據(jù)錯(cuò)誤,則可能會(huì)看到其他錯(cuò)誤的提示。

圖2 DHT11傳感器測(cè)試結(jié)果

2 存儲(chǔ)軟件設(shè)計(jì)

2.1SD卡寫(xiě)入流程設(shè)計(jì)

圖3為SD卡寫(xiě)入流程設(shè)計(jì)的過(guò)程。對(duì)于SD卡存儲(chǔ)數(shù)據(jù),首先對(duì)單片機(jī)進(jìn)行初始化,主要是初始化單片機(jī)的SPI串口,然后初始化SD卡,下來(lái)就會(huì)將文件打開(kāi),再接下來(lái)就是對(duì)文件的打開(kāi)是否正確進(jìn)行判斷,如果文件的打開(kāi)是正確的,那么接下來(lái)就開(kāi)始寫(xiě)文件,完成后就會(huì)把文件關(guān)閉;如果打開(kāi)不正確,就會(huì)重新打開(kāi)。

圖3 SD卡一次寫(xiě)入的流程示意圖

2.2SD卡測(cè)試程序開(kāi)發(fā)

由圖3可知,我們先要建一個(gè)文件夾,然后給其命名。然后定義SD卡的CS引腳,根據(jù)SD卡接口電路的設(shè)計(jì),將SD卡的CS連接到單片機(jī)的10號(hào)引腳,初始化單片機(jī)的SPI串口,初始化SD卡,然后打開(kāi)文件,實(shí)例如下編譯:

pinMode(10, OUTPUT);//設(shè)置10引腳為輸出模式

myFile = SD.open("test.txt", FILE_WRITE);//打開(kāi)文件

把文件打開(kāi)以后,同時(shí)判斷有沒(méi)有正常打開(kāi),如果是正常打開(kāi)的,就會(huì)開(kāi)始寫(xiě)文件,完畢后關(guān)閉文件,終止。部分程序編譯如下:

myFile.close();//關(guān)閉文件

文件關(guān)閉之后再打開(kāi)已經(jīng)寫(xiě)入內(nèi)容的文件,然后再編寫(xiě)程序:

m y F i l e = S D.o p e n("t e s t.t x t");//重新打開(kāi)文件

這個(gè)程序的setup()函數(shù)主要是完成對(duì)SD卡的初始化與打開(kāi)文件,然后對(duì)文件是不是正常的作出判斷,并讀取第二次打開(kāi)文件中的內(nèi)容,完成后將文件關(guān)閉。在loop()中沒(méi)有這個(gè)操作,那是由于這個(gè)程序只運(yùn)行一次 。為了便于測(cè)試,則運(yùn)用Arduino IDE中的軟件串口,這樣就可以實(shí)時(shí)的通過(guò)軟件串口來(lái)顯示SD卡中寫(xiě)的內(nèi)容。在setup()中,配置軟件串口的速率為9600bps,具體為:Serial.begin(9600)。

2.3SD卡讀寫(xiě)測(cè)試結(jié)果

將編譯好的程序代碼通過(guò)USB下載至Arduino UNO開(kāi)發(fā)板上,然后打開(kāi)串口監(jiān)視器,結(jié)果若是如圖4所示,testing 1,2,3.,是寫(xiě)入SD卡的內(nèi)容。然后通過(guò)計(jì)算機(jī)打開(kāi)SD卡,可以看到文件名為T(mén)EST.TXT,如圖5所示,寫(xiě)入的信息為testing 1,2,3,說(shuō)明SD卡寫(xiě)入的數(shù)據(jù)正確,進(jìn)一步說(shuō)明SD卡可寫(xiě)。

圖4 串口測(cè)試結(jié)果

圖5 SD卡的內(nèi)容

3 主控軟件設(shè)計(jì)

3.1主控流程設(shè)計(jì)

圖6是數(shù)據(jù)采集存儲(chǔ)的流程設(shè)計(jì)。具體體操作為:首先對(duì)系統(tǒng)進(jìn)行初始化,實(shí)現(xiàn)I/O和SPI串口的初始化,然后單片機(jī)給DHT11發(fā)送開(kāi)始信號(hào),并判斷DHT11是否響應(yīng),若響應(yīng),則開(kāi)始數(shù)據(jù)的采集,再打開(kāi)文件將采集的數(shù)據(jù)寫(xiě)入文件,寫(xiě)完之后關(guān)閉該文件結(jié)束;若未響應(yīng),則返回。

圖6 一次數(shù)據(jù)采集存儲(chǔ)流程示意圖

3.2主控程序設(shè)計(jì)

對(duì)于主控程序的設(shè)計(jì),主要是溫濕度傳感器進(jìn)行數(shù)據(jù)的正確采集,然后打開(kāi)文件,將采集的數(shù)據(jù)正確寫(xiě)入SD卡,以實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)的功能。具體步驟如下表述,第一步,先將系統(tǒng)初始化,這里的初始化主要指A0口和單片機(jī)的SPI的初始化,我們分別定義A0號(hào)引腳為信號(hào)的輸入,單片機(jī)10、11、12、13號(hào)引腳,把10號(hào)引腳設(shè)置成輸出模式,11號(hào)引腳設(shè)置成數(shù)據(jù)輸出模式,12號(hào)引腳設(shè)置成數(shù)據(jù)輸入模式,13號(hào)引腳設(shè)置成時(shí)鐘輸出模式。具體編譯如下:

int chipSelect = 10;//定義管腳

int dataOut =11;

int dataIn = 12;

int clockPin = 13;

pinMode(chipSelect,OUTPUT);//初始化單片機(jī)的SPI引腳和I/O引腳

pinMode(dataIn,INPUT);

pinMode(dataOut,OUTPUT);

pinMode(clockPin,OUTPUT);

pinMode(A0,OUTPUT);

以字節(jié)的方式讀取數(shù)據(jù),部分編譯如下:

byte read_dht11_dat()

byte i = 0;//定義變量

byte result=0;

for(i=0; i< 8; i++)

while(!(PINC & _BV(DHT11_PIN)));//當(dāng)開(kāi)始發(fā)送數(shù)據(jù)時(shí),等待50秒

delayMicroseconds(30);//延時(shí)等待30微妙

if(PINC & _BV(DHT11_PIN))//判斷第一個(gè)位數(shù)據(jù)是否發(fā)送完

result |=(1<<(7-i));

while((PINC & _BV(DHT11_PIN)));//當(dāng)?shù)谝粋€(gè)位數(shù)據(jù)發(fā)送完后,返回進(jìn)行下一個(gè)

return result;

然后在void setup()函數(shù)中,對(duì)單片機(jī)進(jìn)行初始化。在void loop()函數(shù)中進(jìn)行數(shù)據(jù)的采集,其程序與5.1.2節(jié)中的部分程序一樣,數(shù)據(jù)采集之后,然后打開(kāi)文件,將采集的數(shù)據(jù)寫(xiě)入SD卡,由于單片機(jī)內(nèi)部有A/D轉(zhuǎn)換功能,因此寫(xiě)入的程序是十進(jìn)制數(shù)據(jù),寫(xiě)完之后關(guān)閉文件,每間隔一定時(shí)間重復(fù)一次loop()中的內(nèi)容。

部分編譯如下:

byte dht11_dat[5];//用于緩存DHT11溫濕度數(shù)據(jù)

byte dht11_in;

byte i;

3.3采集存儲(chǔ)測(cè)試結(jié)果

圖7 采集存儲(chǔ)測(cè)試結(jié)果

由于采集的數(shù)據(jù)存儲(chǔ)在SD卡,所以通過(guò)計(jì)算機(jī)打開(kāi)SD卡,可以看到數(shù)據(jù)的文件是M.TXT文件,其大小是10.7 KB (11,052字節(jié))。打開(kāi)M.TXT文件,見(jiàn)下圖7,圖中H是濕度,某一時(shí)刻的濕度值是49.0%;T代表溫度,27.0是某一時(shí)刻的溫度值。

以上所述就是溫濕度采集存儲(chǔ)系統(tǒng)設(shè)計(jì)的系統(tǒng)軟件研究的整個(gè)過(guò)程。那么利用這個(gè)設(shè)計(jì),我們給定設(shè)計(jì)環(huán)境后,可以在圖7的溫濕度數(shù)據(jù)提取,利用作圖軟件可以作出溫濕度的變化曲線(xiàn)。

[1] 王剛.溫室溫濕度控制系統(tǒng)設(shè)計(jì)[J].中國(guó)新技術(shù)新產(chǎn)品.2011(09).

[2] 陳呂洲.Arduino程序設(shè)計(jì)基礎(chǔ)[M].北京:北京航空航天大學(xué)出版社,2014.1.

Research on the system software of temperature and humidity acquisition and storage system

This paper introduces the testing process of temperature and humidity sensor,the SD card writing process of storage software and the design,program development and test results of the main control software.

temperature and humidity sensor;MCU

猜你喜歡
單片機(jī)設(shè)計(jì)
何為設(shè)計(jì)的守護(hù)之道?
《豐收的喜悅展示設(shè)計(jì)》
流行色(2020年1期)2020-04-28 11:16:38
基于單片機(jī)的SPWM控制逆變器的設(shè)計(jì)與實(shí)現(xiàn)
電子制作(2019年13期)2020-01-14 03:15:28
基于單片機(jī)的層次漸變暖燈的研究
電子制作(2019年15期)2019-08-27 01:12:10
基于單片機(jī)的便捷式LCF測(cè)量?jī)x
電子制作(2019年9期)2019-05-30 09:42:02
瞞天過(guò)海——仿生設(shè)計(jì)萌到家
小議PLC與單片機(jī)之間的串行通信及應(yīng)用
電子制作(2018年12期)2018-08-01 00:48:04
設(shè)計(jì)秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設(shè)計(jì)叫而專(zhuān)
Coco薇(2017年5期)2017-06-05 08:53:16
基于單片機(jī)的平衡控制系統(tǒng)設(shè)計(jì)
電子制作(2017年19期)2017-02-02 07:08:27
主站蜘蛛池模板: 成人va亚洲va欧美天堂| 精品一区二区三区自慰喷水| 999精品色在线观看| 老司国产精品视频| 国产全黄a一级毛片| 第九色区aⅴ天堂久久香| 欧美三级视频在线播放| 99re这里只有国产中文精品国产精品 | 中国一级特黄视频| 国产精品美女网站| 精品视频在线观看你懂的一区| 无码'专区第一页| 青青草一区| 秋霞一区二区三区| 中文一级毛片| 亚洲欧美日韩中文字幕在线| www.av男人.com| 一级黄色欧美| 国产高潮流白浆视频| 中文字幕亚洲精品2页| 亚洲国产成人精品青青草原| 亚洲狼网站狼狼鲁亚洲下载| 久久99热这里只有精品免费看| 无码免费视频| 网友自拍视频精品区| 四虎综合网| 99精品在线视频观看| 一区二区三区国产精品视频| 亚洲成年人网| 国产91视频观看| 婷婷激情亚洲| 色哟哟国产精品一区二区| www.91在线播放| 亚洲天堂日韩av电影| 日本一区二区三区精品国产| 中文字幕在线看| 在线观看国产精品第一区免费| 国模在线视频一区二区三区| 色视频久久| 女同国产精品一区二区| 福利小视频在线播放| 国产成人精品一区二区秒拍1o| 看看一级毛片| 久久久久无码国产精品不卡| 99re免费视频| 99九九成人免费视频精品| 久久香蕉国产线看观看精品蕉| 成年看免费观看视频拍拍| 免费aa毛片| 97se亚洲| 99热6这里只有精品| 国产美女丝袜高潮| 午夜小视频在线| 亚洲免费播放| 91欧美亚洲国产五月天| 国产精品午夜福利麻豆| 欧美精品成人一区二区视频一| 亚洲婷婷丁香| 日韩精品成人在线| 成年av福利永久免费观看| 美女视频黄又黄又免费高清| 国产熟睡乱子伦视频网站| 久久婷婷国产综合尤物精品| 国产成人精品第一区二区| 国产精品自在拍首页视频8| 亚洲国产清纯| 四虎成人免费毛片| 日本爱爱精品一区二区| 狠狠色丁香婷婷综合| 毛片久久网站小视频| 在线欧美国产| 91极品美女高潮叫床在线观看| 欧美第一页在线| 亚洲成a人片7777| 在线观看国产精品一区| 亚洲男人天堂久久| 无码专区国产精品第一页| 国产精品亚洲一区二区三区z | 欧美日本在线| 青青久久91| 青青网在线国产| 亚洲国产日韩一区|