《電子技術應用》
您所在的位置:首頁 > 模擬設計 > 設計應用 > 使用無字庫12864液晶模塊制作溫濕度計
使用無字庫12864液晶模塊制作溫濕度計
摘要: 現(xiàn)在應用電子技術我們就可以做一個可以同時顯示溫度、濕度、時間的小儀器,放在家里以便隨時監(jiān)測我們的小環(huán)境。
Abstract:
Key words :

 

 使用無字庫12864<a class=液晶模塊" title="液晶模塊">液晶模塊制作溫濕度計" title="溫濕度計">溫濕度計Digital Thermometer" height="375" src="http://files.chinaaet.com/images/20111026/6194c4c9-4595-4678-8376-36637a404e98.jpg" width="521" />
圖1

在上次介紹的日歷鐘的基礎上擴展一下:讓它具備檢測大氣溫度和濕度的功能,一天24小時不間斷運行并定時檢測,于是,日歷鐘就搖身一變成為一個小小溫濕度計啦。雖然氣象要素很多,不過我們最常用的就是氣溫和濕度。一個是冷熱程度,一個是環(huán)境空氣中含水蒸氣的多少。一般家用溫度計很常見,濕度計就比較少,以前有一種干濕球溫度計,但是用起來比較麻煩,準確度也不高。現(xiàn)在應用電子技術我們就可以做一個可以同時顯示溫度、濕度、時間的小儀器" title="儀器">儀器,放在家里以便隨時監(jiān)測我們的小環(huán)境。它的特點如下:

1.在單片機ATMega8L-8PU(以下簡稱M8)和日歷鐘電路DS1302的基礎上,使用一個在工廠經(jīng)過精密校準的數(shù)字式溫度、濕度傳感器AM2301作為探頭;

2.當24小時連續(xù)工作時,縱然工作電流僅為幾毫安,也不宜使用紐扣電池供電。這次選用可充電的3.6V聚合物鋰電池,使它的放置地點可以不受電源限制,可以在室內(nèi),也可以在不受陽光直射和雨水接觸的室外;

3.具有文字和圖形界面,可以顯示溫度和濕度數(shù)值,以及12小時內(nèi)的濕度變化記錄曲線,為什么是濕度曲線呢?因為氣溫的變化規(guī)律一般比較穩(wěn)定,濕度就不一樣了,我們可以從濕度變化趨勢估計一下未來的晴雨可能,這比看燕子飛高飛低要靠譜些吧?兩個界面用按鍵切換;

4.具備鋰電池線性充電電路,通過USB接口從外部取得5V電源,一邊供給充電,一邊維持電路繼續(xù)工作;
全部元器件安裝在一塊70mm×90mm的小萬用板上,正面、背面外形見圖1、圖2。正面左邊那個黑色小烏龜殼就是溫濕度探頭。

使用無字庫12864液晶模塊制作溫濕度計Digital Thermometer
圖2 電路板背面元器件分布和連線 

電路原理

電路見圖3。圖形點陣液晶、單片機M8、時鐘電路DS1302和上次小小日歷鐘基本相同,不再重復。有兩點稍稍不同:
1.液晶的控制雖然還是通過M8的PD口,但具體接線有所改變,不再占用兩根串口線PD0和PD1,目的是為今后可能和外部通信預留接口。這好辦,編程時重新定義即可;

2.因為常用電源是帶保護板的3.6V充電鋰電池(圖3中GB2),它放完電會自動切斷,為了使DS1302繼續(xù)工作,必須另外使用一片3V紐扣鋰電池CR1225(圖3中GB1)作為時鐘芯片的后備電池。也可用法拉電容,但較貴。

使用無字庫12864液晶模塊制作溫濕度計電路圖Digital Thermometer
圖3  電路原理圖

使用無字庫12864液晶模塊制作溫濕度計---時序圖Digital Thermometer
圖4 AM2301的讀寫時序脈沖示意圖 

TRH是數(shù)字式溫濕度傳感器 AM2301。它內(nèi)部有經(jīng)過校準的電容式濕度傳感器和負溫度系數(shù)熱敏電阻(NTC),以及8位單片機。可測量溫度范圍是-40~+80℃,精度最大±1℃,濕度范圍是0%~100%,常溫時精度±3%,分辨率都是0.1。溫度信號、濕度信號最后都轉(zhuǎn)換為一個40位的二進數(shù)串行輸出。其中的高16位是濕度,中16位是溫度,低8位是校驗和,當高16位加中16位等于低8位時,說明測量結果正確,可以采信。它使用單線總線結構,接線很簡單,一共就3根線:圖3中的R表示紅線,接電源(3.3~5.5VΩ),Y表示黃線,是信號線,按照要求需要外接5kΩ上拉電阻R2,接M8的PC5引腳。B表示黑線,接地。

輕觸按鈕S1~S5還是作校時用,沒有變化。

為了給400mAh的鋰電池充電,通過USB插頭把外部的5V電壓加到智能線性充電模塊TP4054。另外一個2×2微型自鎖開關S6可以選擇電池供電,或者電池充電。充電時5V外部電壓經(jīng)穩(wěn)壓器WY1降低為3.3V為VCC供電。

用上蓄電池了,液晶背光也可以“奢侈點”,偶爾用它一下。為此,增加了限流電阻R3和輕觸按鈕S5。

硬件組裝

這個溫濕度計電路簡單,所需元件不多。除了溫濕度傳感器和充電模塊比較特殊以外,其他都是普通元件。幾個電阻和退耦電容都是用的貼片元件,尺寸是 0805,和洞洞板可以很好地配合。當然也可用普通的引線電阻、電容。集成電路使用雙列直插插座反裝,這樣就有效利用了正面液晶屏占用的面積。具體做法和小小日歷鐘一樣。

溫濕度傳感器和充電模塊我都是從淘寶網(wǎng)上買的,搜一下“DHT21”和“TP4054”就可以找到大把,價格不高。溫濕度探頭的敏感元件都是裝在通風透氣的烏龜殼內(nèi),膠死了打不開,也就不要試圖暴力拆解了,以免污染了敏感元件影響性能。

反面焊裝IC插座的辦法是先把引腳向外折平(這樣子它更像小蜈蚣了),然后把引腳尖端稍向下彎,在洞洞板反面定位后,用尖頭鑷子把引腳尖端逐一捅進焊盤洞洞里,外接引線也插入相應洞洞里,一并焊接。

要注意兩個鋰電池最后安裝,安裝前必須先檢查已經(jīng)裝好其他元器件和接線的電路板,確認VCC和地端沒有短路故障。在焊接前電池先不開封,避免不小心正負極短路,以至于“出師未捷身先死”。帶引腳的紐扣電池焊好即固定了,充電電池則用較厚的雙面膠粘接在電路板反面固定。完工后四角一定要裝上墊柱,避免電路板直接與平面接觸。

其他就沒有什么訣竅了,也就不再搞看圖識物。7cm×9cm的洞洞板安裝全部元件很寬松,實際上要想使這個小玩意工作起來,還要靠“軟功夫”。下面一一分解。

編程之一:AM2301的讀寫時序

前面說過,溫濕度探子輸出的是40位的二進數(shù)。在探頭進行測量并輸出數(shù)據(jù)前,主控單片機M8和探頭有個握手過程,步驟是:

M8的PC5空閑時一直為高,數(shù)據(jù)線處于釋放狀態(tài)。要啟動測量,M8就在PC5輸出低,使數(shù)據(jù)線拉低1ms以上(程序中用的10ms),把PC5轉(zhuǎn)為輸入狀態(tài),外部上拉電阻R2立即使數(shù)據(jù)線升高。在40μs以內(nèi)探頭發(fā)出響應:把數(shù)據(jù)線拉低80μs。M8讀到這個低電平,知道探頭回話了,接著探頭也釋放數(shù)據(jù)線80μs,M8就明白隨后就是數(shù)據(jù)了。數(shù)據(jù)總是以50μs低電平先導,隨后并不是以電平高低表示1、0,而是以高電平脈沖寬度表示1、0:70μs表示 1,26~28μs表示0。為了識別1和0,M8可在讀先導低電平完成后,延時35μs再次讀數(shù)據(jù)線,如果為高,就是1,如果為低,就是0。探頭連續(xù)送出 40個低-高脈沖后,再次拉低數(shù)據(jù)線50μs,結束數(shù)據(jù)送出。脈沖示意圖如圖4。

實際使用時還要注意,測量應進行兩次:第一次測量后,過2s再測一次,這次M8讀出的數(shù)據(jù)是兩秒前的測試數(shù)據(jù)。如果連續(xù)測量,間隔2s最好,無論如何不得小于1s。實際上氣溫和濕度一般也不會變化那么快。現(xiàn)在做的是每分鐘測兩次:在0s和2s各測一次,2s讀出0s的數(shù)據(jù),0s讀的是上一分鐘的數(shù)據(jù),就丟棄了。

編程之二:AM2301的數(shù)據(jù)格式

如果數(shù)據(jù)正確(通過檢查和校驗),就需要把高16位濕度數(shù)據(jù)換算成十進位的3位數(shù):000到999。在個位和十位間加上小數(shù)點,就是濕度的百分值。例如 M8讀出的高16位是0B0000001100001101=512+256+8+4+1=781。濕度就是78.1%。溫度類似,但是如果溫度最高位為 1,意味著零下溫度。

編程之三:怎樣畫出記錄曲線

要畫出一段時間的記錄曲線,也就是在液晶上面按照這也就是在液晶上面按照這段時間順序記錄的數(shù)值畫出對應的點。
在這塊圖形液晶畫點的基本方法前次已經(jīng)介紹過,就是先設置列坐標x和頁坐標y,再寫數(shù)據(jù),用LCDSetxy(unsigned x,unsigned y)和LCDWriData(unsigned data)兩個函數(shù)就可以在x列y頁點亮任意8個點。但是如果直接用頁坐標來畫出通常用垂直坐標(行坐標)表示的點則非常不便。

使用無字庫12864液晶模塊制作溫濕度計Digital Thermometer
圖5 12小時內(nèi)的溫度變化記錄曲線 

要按照列坐標x和行坐標h(h從0到63共計64行)來畫一個點,而這正是畫記錄曲線的基礎,我們可以變換一下,先用h/8算出h所在的頁,例如h為45,那么它就在45/8即5頁。而余數(shù)h%8就是h在該頁的第幾位(現(xiàn)在是第5位),讓一個數(shù)unsigned char tmp=0x01;那把它左移5位得到的數(shù)值0x20就是用列坐標和頁坐標畫點時需要給液晶輸入的數(shù)值。這些數(shù)值對于每次僅僅1個點,從低位到高位只能對應于0x01、0x02、0x04、0x08、0x10、0x20、0x40、0x80這8個數(shù)中的一個。這樣我們可以捏造一個函數(shù) LCDPutDot(unsigned char x,unsigned h);來在x列,h行畫出一個點了,具體代碼見后文。形式上用行列坐標參數(shù),實質(zhì)上還是頁列坐標參數(shù),但卻方便多了。現(xiàn)在再回到怎樣畫濕度記錄曲線。由于液晶像素的限制,水平只能取128點以下。那么如果每6分鐘記錄一次,12小時就記錄120次,把這120次的濕度數(shù)值和液晶的垂直方向點位置(與行坐標成比例)對應起來畫一系列點,不就是記錄曲線嗎?當然垂直方向只有64點,那么我們就取51點,0到50表示0到100。還要提醒的是,液晶的垂直方向,0點在最上面,這和通常的習慣相反。那也沒關系,就把(100-h)/2作為垂直坐標就對了,為簡單計,可略去小數(shù)。

至此幾個編程的關鍵都說完了。按此在程序中加入了新增的函數(shù):
unsigned char DHT21_ReadByte(void);//讀探頭串行數(shù)據(jù)
void DHT21_RHT(void);//發(fā)起檢測,讀數(shù)
void Show_RHT(void);//顯示檢測值
void LcdPutDot(unsignedcharx,unsignedcharh);//畫點

函數(shù)具體內(nèi)容見附件程序。

為了描繪12小時的記錄曲線,還要設立一個120單元的濕度記錄數(shù)組unsigned charRH_record[120],好在M8的數(shù)據(jù)區(qū)有512字節(jié),還很富裕。
每6分鐘往里面順序填入一個記錄,記滿后又從0單元開始。
整個程序流程和日歷鐘基本相同,但有改變:

啟動→M8初始化→LCD初始化→檢查1302是否已經(jīng)運行中,如否則要初始化并啟動它→讀取1302數(shù)據(jù)→打開顯示界面(標題、正文和最下面的顯示行)→檢測溫濕度→延時2秒→給記錄數(shù)組賦以初值→再次檢測溫濕度→顯示溫濕度→進入程序循環(huán)。

程序循環(huán)是設置一個用于軟件計數(shù)的靜態(tài)變量:const unsigned int delta=0;在主循環(huán)while(1){}中當delta未達到設定值例如3800前它每次遞增,達到設定值后再查鍵→健處理→如果秒數(shù)值改變就刷新日歷鐘的顯示。

有所改變的是如果計時達到1分鐘,就開始一次檢測溫濕度→2秒后再檢測并更新溫濕度顯示→如果是6的整數(shù)倍分鐘,則還要在濕度記錄數(shù)組中填入新的濕度記錄。

在S4的按鍵功能觸發(fā)時就按照濕度記錄數(shù)組的數(shù)值逐一繪點,形成曲線。其中還包括水平和垂直標尺的繪制和當前記錄位置指針的繪制。

調(diào)試

調(diào)試過程和小小日歷鐘類似,就不重復了。只要元件正常,接線正確,加電后把程序注入M8立刻就可以運行。繪制曲線則要等到1小時以后才畫出一小段。經(jīng)過 12小時曲線完成,你就可以知道過去12小時的濕度變化趨勢了。按照我這里來看(番禺郊區(qū)),濕度波動還是蠻大的,晴熱時可以低到40%,一下暴雨會升高到80%以上。

如果發(fā)現(xiàn)溫度、濕度顯示都為0,那么檢查探頭接線是否有斷開。如果突然不顯示了,那么恭喜你!鋰電池保護板發(fā)揮了作用,沒電了!趕快切換S6充電吧!在這個基礎上還能進一步改進:找出24小時內(nèi)的最高溫濕度和最低溫濕度;設定報警點,實現(xiàn)超限報警以及把信號發(fā)送出去等,就靠你啦!

使用

把它充好電,按一下S6,切到電池供電位置就可以了,把它放在桌上、掛在墻上都可以,只要不陽光直射,陰涼通風就可以。充一次電大約需要90分鐘,充好后可以用三天以上。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
中文一区在线| 欧美96在线丨欧| 亚洲福利免费| 亚洲欧美一区二区视频| 一本久道综合久久精品| 亚洲精选成人| 亚洲久久视频| 亚洲精品国久久99热| 在线日韩中文字幕| 在线观看免费视频综合| 极品尤物av久久免费看| 国产一区二区三区的电影 | 亚洲精品男同| 亚洲精品国产精品国自产在线 | 日韩亚洲一区二区| 亚洲三级免费电影| 99精品视频免费| 宅男精品导航| 亚洲免费视频在线观看| 亚洲欧美日韩在线不卡| 午夜视频在线观看一区二区| 亚洲欧美网站| 久久久激情视频| 另类av导航| 狂野欧美激情性xxxx欧美| 欧美va天堂| 欧美日韩ab| 欧美性视频网站| 国产精品自拍一区| 国产自产v一区二区三区c| 影音先锋欧美精品| 亚洲人永久免费| 中文在线资源观看网站视频免费不卡| 亚洲视频在线观看视频| 亚洲在线中文字幕| 欧美在线免费视频| 亚洲激情啪啪| 一区二区欧美视频| 欧美亚洲自偷自偷| 久久久久久穴| 欧美国产日韩一二三区| 欧美无乱码久久久免费午夜一区 | 亚洲免费电影在线| 亚洲一区二区三区在线播放| 午夜日韩av| 另类成人小视频在线| 欧美另类女人| 国产欧美日韩精品a在线观看| 狠狠色噜噜狠狠色综合久| 亚洲国产日韩一区二区| 日韩一级片网址| 午夜视频在线观看一区二区| 亚洲电影免费| 亚洲一区999| 久久久亚洲精品一区二区三区 | 欧美日韩精品在线视频| 国产欧美精品久久| 亚洲第一黄色| 亚洲尤物视频网| 亚洲人成在线影院| 午夜精品理论片| 久久综合九色欧美综合狠狠| 欧美日韩免费区域视频在线观看| 国产日韩欧美不卡在线| 亚洲国产精品久久久久婷婷老年| 在线亚洲欧美| 久久精品一区中文字幕| 亚洲天堂视频在线观看| 久久亚洲私人国产精品va媚药| 欧美日韩久久不卡| 韩国女主播一区二区三区| 亚洲作爱视频| 91久久极品少妇xxxxⅹ软件| 午夜精品理论片| 欧美精品日韩三级| 黄色成人片子| 亚洲一区二区成人在线观看| 亚洲精品一区二区三区福利| 欧美一级黄色网| 欧美日韩高清免费| 尤物九九久久国产精品的特点| 亚洲香蕉伊综合在人在线视看| 亚洲精品黄网在线观看| 久久国产精品久久久| 国产精品播放| 亚洲人成毛片在线播放| 久久er精品视频| 亚洲欧美精品| 欧美日一区二区三区在线观看国产免| 精品成人国产在线观看男人呻吟| 亚洲一区二区三区免费观看| 亚洲伦伦在线| 美女免费视频一区| 国产亚洲综合在线| 亚洲摸下面视频| 亚洲天堂av图片| 欧美精品二区三区四区免费看视频| 国产一区二区三区成人欧美日韩在线观看 | 久久久91精品国产| 国产精品免费在线| 99热精品在线| 夜夜夜久久久| 欧美精品色综合| 黄色精品一区| 久久黄色级2电影| 久久av一区二区三区漫画| 欧美丝袜第一区| 亚洲裸体俱乐部裸体舞表演av| 亚洲欧洲一区二区三区在线观看 | 影音先锋日韩资源| 久久精品亚洲国产奇米99| 欧美在线视频一区二区三区| 国产精品视频导航| 亚洲视频在线观看网站| 亚洲在线成人| 国产精品久久二区二区| 这里只有视频精品| 亚洲欧美国产精品va在线观看| 欧美日韩一区二区三区视频| 亚洲人成亚洲人成在线观看| 亚洲精品一级| 欧美日本亚洲视频| 99精品热视频| 亚洲欧美一区二区三区极速播放| 国产精品久久久久久久久久直播 | 欧美高清视频| 亚洲国产欧美一区二区三区久久| 亚洲精品社区| 欧美理论在线播放| 一区二区免费在线播放| 亚洲永久免费观看| 国产美女诱惑一区二区| 亚洲免费在线视频一区 二区| 欧美在线视屏 | 亚洲第一精品福利| 日韩视频中文| 欧美日韩免费网站| 亚洲无线视频| 欧美在线亚洲在线| 精品成人在线观看| 亚洲精品中文字幕有码专区| 欧美日韩国产片| 亚洲视频大全| 久久久久网站| 亚洲黄色成人网| 亚洲天堂成人| 国产欧美视频在线观看| 久久精品欧美| 欧美精品一区二区视频| 在线视频亚洲一区| 久久精品国产99国产精品澳门 | 一区二区三区精品| 亚洲欧美影院| 韩国欧美国产1区| 日韩视频第一页| 国产精品国产三级国产| 午夜精品网站| 免费成人高清视频| 日韩网站免费观看| 亚洲欧美在线aaa| 一区二区亚洲精品国产| 亚洲蜜桃精久久久久久久| 国产精品国产三级国产专播品爱网 | 久久国产精品免费一区| 欧美高清视频一区二区三区在线观看 | 亚洲欧洲午夜| 国产精品色一区二区三区| 久久精品视频在线看| 欧美日韩免费| 欧美一区二区三区在线看| 欧美日韩成人在线视频| 午夜精品免费| 欧美日韩成人激情| 欧美一区二区三区另类| 欧美激情综合色| 欧美一区免费视频| 欧美日韩一区二区高清| 欧美专区第一页| 欧美视频在线观看免费网址| 欧美制服丝袜| 欧美午夜不卡影院在线观看完整版免费| 久久不射中文字幕| 欧美午夜视频一区二区| 亚洲国产欧美精品| 国产精品日韩一区| 一区二区三区av| 精品91在线| 欧美在线free| 日韩午夜在线电影| 欧美1区2区3区| 午夜在线一区| 欧美视频官网| 亚洲全部视频| 国产在线视频不卡二| 亚洲欧美久久久| 亚洲日本电影在线| 蜜桃久久av一区| 欧美一级视频免费在线观看| 欧美日韩视频专区在线播放 | 亚洲国产精品高清久久久|