![基于51單片機(jī)溫濕度檢測與數(shù)字時鐘的設(shè)計與制作_第1頁](http://file4.renrendoc.com/view9/M03/1B/18/wKhkGWdWOeqAYmgGAAG813s7edU573.jpg)
![基于51單片機(jī)溫濕度檢測與數(shù)字時鐘的設(shè)計與制作_第2頁](http://file4.renrendoc.com/view9/M03/1B/18/wKhkGWdWOeqAYmgGAAG813s7edU5732.jpg)
![基于51單片機(jī)溫濕度檢測與數(shù)字時鐘的設(shè)計與制作_第3頁](http://file4.renrendoc.com/view9/M03/1B/18/wKhkGWdWOeqAYmgGAAG813s7edU5733.jpg)
![基于51單片機(jī)溫濕度檢測與數(shù)字時鐘的設(shè)計與制作_第4頁](http://file4.renrendoc.com/view9/M03/1B/18/wKhkGWdWOeqAYmgGAAG813s7edU5734.jpg)
![基于51單片機(jī)溫濕度檢測與數(shù)字時鐘的設(shè)計與制作_第5頁](http://file4.renrendoc.com/view9/M03/1B/18/wKhkGWdWOeqAYmgGAAG813s7edU5735.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
目錄
1產(chǎn)品功能分析.........................................................................................................1
2產(chǎn)品硬件設(shè)計.........................................................................................................1
2.1單片機(jī)的選擇..............................................................................................1
2.2傳感器的選擇..............................................................................................2
2.3系統(tǒng)框圖設(shè)計..............................................................................................2
3產(chǎn)品硬件設(shè)計.........................................................................................................3
3.1STC89C52RC單片機(jī)核心電路設(shè)計.............................................................3
3.2按鍵電路設(shè)計..............................................................................................4
3.3LCD1602液晶顯示模塊電路.......................................................................5
4產(chǎn)品軟件設(shè)計.........................................................................................................6
4.1主程序流程圖..............................................................................................6
4.2LCD1602液晶顯示程序設(shè)計......................................................................7
4.3傳感器模塊程序設(shè)計.................................................................................8
4.4產(chǎn)品程序清單.............................................................................................9
5產(chǎn)品使用說明.......................................................................................................10
5.1產(chǎn)品裝配圖................................................................................................10
5.2產(chǎn)品調(diào)試....................................................................................................11
5.3產(chǎn)品使用說明............................................................................................12
6產(chǎn)品設(shè)計技術(shù)標(biāo)準(zhǔn)...............................................................................................13
附錄1元器件清單...................................................................................................14
附錄2電路原理圖...................................................................................................15
附錄3PCB設(shè)計圖....................................................................................................16
附錄4產(chǎn)品實物圖...................................................................................................17
附錄5主程序代碼...................................................................................................18
參考資料.....................................................................................................................33
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
基于51單片機(jī)溫濕度檢測與數(shù)字時鐘的設(shè)計與制作
1產(chǎn)品功能分析
(1)掌握51單片機(jī)的集成開發(fā)環(huán)境,并且利用C語言編程來進(jìn)行編寫程
序文件。通過溫濕度傳感器DHT11采集溫度與濕度,即時傳輸給單片機(jī)處理。
(2)通過LCD1602液晶第一行顯示屏顯示溫度,第二行顯示濕度。
(3)閾值可以通過按鍵進(jìn)行設(shè)置安全閾值。
(4)若是超過安全閾值,蜂鳴器鳴叫報警。
(5)通過時鐘芯片液晶第一行顯示屏顯示時間和星期,第二行顯示日期。
2產(chǎn)品硬件設(shè)計
電路總體上分為顯示模塊、中央處理器、溫濕度采集、報警模塊四部分部
分。以STC89C52單片機(jī)最小系統(tǒng)作為核心控制電路,控制DHT11傳感器采集的
溫濕度的轉(zhuǎn)換,控制1602液晶屏的顯示,以及蜂鳴器的報警。具體顯示內(nèi)容及
方式由軟件來完成。采集溫濕度方面由DHT11傳感器來完成,它是一個數(shù)字溫
濕度傳感器、內(nèi)置模數(shù)轉(zhuǎn)換,可以直接與單片機(jī)相連接。而1602液晶屏是插針
式,也可以直接與單片機(jī)相連接。因此不需要手動焊接等復(fù)雜的過程。具體步
驟是:按照原理圖將傳感器、1602液晶顯示屏分別接入單片機(jī)。通過DHT11傳
感器采集當(dāng)前的溫濕度值、再經(jīng)單片機(jī),將處理后的數(shù)據(jù)傳送到液晶屏上顯示
出來,并且接入蜂鳴器,設(shè)置溫度的上下限值,從而實現(xiàn)越限報警。
2.1單片機(jī)的選擇
STC89C51系列單片機(jī)的指令系統(tǒng)和AT89C51系列的完全兼容,但實際操作
起來卻存在很多問題:
(1)AT89C51不帶ISP下載,要用下載器才可以運行,STC89C52可以使用
USB轉(zhuǎn)串口下載,下載軟件可以到STC廠家網(wǎng)上下載。
(2)STC單片機(jī)執(zhí)行指令的速度很快,大約是AT的三至三十倍,雖然執(zhí)行
速度加快,但這樣的話,在AT上可以正常運行的程序在STC上不一定可以運行,
最典型的例子就是那些對時序有嚴(yán)格要求的模塊,用STC時注意得加長延時,
大約是AT的十至三十倍。
1
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
(3)STC單片機(jī)對工作環(huán)境的要求相對較低,電壓低于5伏時仍然正常工
作,甚至3伏到4伏之間都還可以工作,然而這樣的環(huán)境下AT就無法正常工作
了,所以當(dāng)一個系統(tǒng)用STC單片機(jī)好用,但用AT的單片機(jī)不工作時,直接檢查
最小系統(tǒng),看單片機(jī)的供電是否正常。
由于在學(xué)校期間學(xué)過數(shù)字電路、單片機(jī)原理、C語言程序設(shè)計,綜合考慮單
片機(jī)的各部分資源和作為學(xué)生能夠獲得的資源,經(jīng)過對比此次設(shè)計要求,我選
擇用STC系列芯片完成。而且學(xué)校也提供了相應(yīng)的硬件操作平臺,實際操作起
來比較方便,故STC為更合理的選擇。
2.2傳感器的選擇
選用DHT11作為設(shè)計的溫濕度檢測模塊。DHT11是一款集成型的數(shù)字溫濕度
一體傳感器。它應(yīng)用專用的數(shù)字模塊采集技術(shù)和溫濕度傳感技術(shù),可以確保產(chǎn)
品具有極高的可靠性以及卓越的長期穩(wěn)定性。傳感器包括一個電阻式感濕元件
和一個NTC測溫元件,并與一個高性能8位單片機(jī)相連接。因此該產(chǎn)品具有品
質(zhì)卓越、超快響應(yīng)、抗干擾能力強(qiáng)、性價比極高的優(yōu)點。測量范圍是
20%~90%RH,0℃~50℃。測溫精度為-\+2℃,測濕精度為-\+5%RH。完全符合本
次畢業(yè)設(shè)計的要求。
經(jīng)上述分析,此方案簡便易行、可靠穩(wěn)定,具有超高的性價比。
2.3系統(tǒng)框圖設(shè)計
本產(chǎn)品系統(tǒng)框圖設(shè)計如圖2-1所示:
圖2-1系統(tǒng)框圖
2
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
3產(chǎn)品硬件設(shè)計
由STC89C52RC單片機(jī)組成的此系統(tǒng),溫濕度傳感器,LCD1602液晶顯示器,
蜂鳴器模塊,按鍵模塊,時鐘模塊,以及電源組成。
通過數(shù)字溫濕度傳感器DHT11采集溫濕度數(shù)據(jù),即時傳輸給單片機(jī);單片
機(jī)將收到的信號進(jìn)行分析和處理,將采集到時溫濕度實時數(shù)據(jù)送給1602液晶顯
示屏;通過1602LCD液晶屏完成溫濕度的數(shù)據(jù)顯示;給定溫度濕度上下限數(shù)值,
設(shè)置不同的溫濕度,接入蜂鳴器,實現(xiàn)越限報警。
電路板上有五個按鍵,一個是電源的開關(guān)按鍵,一個是復(fù)位按鍵,其余三
個是設(shè)置鍵,設(shè)置+、設(shè)置-、設(shè)置跳轉(zhuǎn),設(shè)置+、設(shè)置-、只能在設(shè)置模式中操
作。
3.1STC89C52RC單片機(jī)核心電路設(shè)計
STC89C52RC是一種低功耗、高性能CMOS8位微控制器,具有8K在系統(tǒng)
可編程Flash存儲器。在單芯片上,擁有靈巧的8位CPU和在系統(tǒng)可編程
Flash,使得STC89C52RC為眾多嵌入式控制應(yīng)用系統(tǒng)提供更加靈活、有效的解
決方案。
具有以下標(biāo)準(zhǔn)功能:8k字節(jié)Flash,512字節(jié)RAM,32位I/O口線,看門狗定
時器,內(nèi)置4KBEEPROM,MAX810復(fù)位電路,三個16位定時器/計數(shù)器,一
個6向量2級中斷結(jié)構(gòu),全雙工串行口。
STC89C52RC單片機(jī)原理圖(a)如圖3-1所示:
3
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
圖3-1STC89C52RC單片機(jī)原理圖(a)
STC89C52RC單片機(jī)實物圖如圖3-2所示
圖3-2STC89C52RC單片機(jī)實物圖(b)
3.2按鍵電路設(shè)計
有一種電子開關(guān)—按鍵,僅需要按下按鍵就可以實現(xiàn)開關(guān)接通,松開按鍵
就可以斷開連接,清楚按鍵內(nèi)部的金屬彈片,受力后彈動觸發(fā)來實現(xiàn)接通、斷
開功能。在這個設(shè)計中,按鍵是一個系統(tǒng)輸入,是實現(xiàn)人機(jī)交互的樞紐,要實
現(xiàn)對系統(tǒng)進(jìn)行輸入,按鍵單片機(jī)控制引腳默認(rèn)為高電平,按鍵按下,單片機(jī)對
應(yīng)引腳成為低電平。按鍵電路原理圖如圖3-3所示。
4
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
圖3-3按鍵電路原理圖
3.3LCD1602液晶顯示模塊電路
LCD1602是一種工業(yè)字符型液晶,能夠同時顯示16x02即32個字符。(16
列2行)。在日常生活中,我們對液晶顯示器并不陌生。液晶顯示模塊已作為很
多電子產(chǎn)品的通過器件,如在計算器、萬用表、電子表及很多家用電子產(chǎn)品中
都可以看到,顯示的主要是數(shù)字、專用符號和圖形。在單片機(jī)的人機(jī)交流界面
中,一般的輸出方式有以下幾種:發(fā)光管、LED數(shù)碼管、液晶顯示器。發(fā)光管
和LED數(shù)碼管比較常用,軟硬件都比較簡單。
在單片機(jī)系統(tǒng)中應(yīng)用晶液顯示器作為輸出器件有以下幾個優(yōu)點:
由于液晶顯示器的每一個點在收到信號后就一直保持色彩和亮度,恒定發(fā)
光,而不像陰極射線管顯示器(CRT)那樣需要不斷刷新亮點。因此,液晶顯示
器的畫質(zhì)更高且不會閃爍。
液晶顯示器都是數(shù)字式的,和單片機(jī)系統(tǒng)的接口更加簡單可靠,操作更加
方便。
液晶顯示器通過顯示屏上的電極控制液晶分子狀態(tài)來達(dá)到顯示的目的,在
重量上比顯示面積相同的傳統(tǒng)顯示器要輕得多。
相對而言,液晶顯示器的功耗主要消耗在其內(nèi)部的電極和驅(qū)動IC上,因而
耗電量比其它顯示器要少得多。
字符型液晶顯示模塊是一種專門用于顯示字母、數(shù)字、符號等點陣式LCD,
目前常用16*1,16*2,20*2和40*2行等的模塊。
LCD1602管腳功能如表3-1所示。
液晶顯示器電路原理圖如圖3-4所示。
5
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
表3-1LCD1602管腳功能表
引腳符號功能描述
1VSS接地
2VDD接電源
3V0對比度調(diào)整端
4RS寄存器選擇
5R/W讀寫信號線
6E使能端
7-14D0-D78位雙向數(shù)據(jù)線
15B背光源正極
16B背光源負(fù)極
圖3-4液晶顯示器電路原理圖
4產(chǎn)品軟件設(shè)計
本產(chǎn)品采用了C語言,KELL編程環(huán)境,使用的是簡單的模塊化設(shè)計,需要
先使用流程圖建立程序框架,劃分整個設(shè)計的各個模塊,然后逐個模塊實現(xiàn)其
功能,最終把各個子模塊合理的連接起來,從而構(gòu)成總的程序。
4.1主程序流程圖
主程序首先要對整個系統(tǒng)進(jìn)行初始化,然后將采集到的溫濕度指令傳給系
統(tǒng)的主程序流程圖,主程序流程圖如圖4-1所示。
6
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
圖4-1主程序流程圖
4.2LCD1602液晶顯示程序設(shè)計
液晶顯示模塊是一個慢顯示器件,要先確認(rèn)模塊的忙標(biāo)志再執(zhí)行每條指令,
如果忙標(biāo)志為低電平,表示不忙,則此指令失效,要顯示字符時要先輸入顯示
字符地址,告訴模塊在哪里現(xiàn)實了字符。1602液晶顯示模塊可與STC89C52直
接接口,軟件流程圖如圖4-2所示。
7
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
圖4-2LCD流程圖
4.3傳感器模塊程序設(shè)計
隨著科技的不斷發(fā)展使用溫濕度模塊DH11數(shù)字溫濕傳感器加濕器溫濕度
傳感器制成的,汽車、空調(diào)、除濕器、烘干機(jī)等種類繁多的電器都已進(jìn)入人們
的日常生活,這些電器設(shè)備大部分都離不開對溫度、濕度等環(huán)境因素的要求。
因此,溫度、濕度傳感器用途越來越廣泛。新一代的數(shù)字傳感器不再需要外置
的AD轉(zhuǎn)換模塊,并具有標(biāo)準(zhǔn)接口,使用方便,得到了越來越多的應(yīng)用。DHT11
作為一種新型的單總線溫濕度數(shù)字傳感器,具有更多的優(yōu)點,它使系統(tǒng)設(shè)計更
加簡單,控制方便,易于實現(xiàn)。1單總線通信簡介目前常用的微機(jī)與外設(shè)之間
進(jìn)行數(shù)據(jù)傳輸?shù)拇锌偩€主要有I2C總線、SPI總線和SCI總線。其中I2C總線
以同步串行兩線方式進(jìn)行通信(1條時鐘線,1條數(shù)據(jù)線),SPI總線則以同步串行
三線方式進(jìn)行通信(1條時鐘線,1條數(shù)據(jù)輸入線,1條數(shù)據(jù)輸出線),而SCI總線
是以異步方式進(jìn)行通信的(1條數(shù)據(jù)輸入線,1條數(shù)據(jù)輸出線)。這些總線至少需
要兩條或兩條以上的信號線。
DHT11傳感器模塊的軟件流程圖如圖4-3所示。
8
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
圖4-3DHT11流程圖
4.4產(chǎn)品程序清單
在整個LCD顯示系統(tǒng)工作中,當(dāng)LCD1602進(jìn)行初始化之后,系統(tǒng)進(jìn)行延
時,再者芯片收到溫濕度傳感器傳達(dá)的數(shù)據(jù)后,由芯片進(jìn)行處理分析,再把數(shù)
據(jù)傳輸進(jìn)LCD1602顯示屏中。程序清單如圖4-4所示。
9
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
圖4-4程序清單
5產(chǎn)品使用說明
5.1產(chǎn)品裝配圖
產(chǎn)品由LCD1602液晶顯示模塊、DHT11溫濕度傳感器模塊、報警模塊、時
鐘模塊、電源和按鍵模塊組成。
裝配圖如圖5-1所示:
10
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
圖5-1裝配圖
5.2產(chǎn)品調(diào)試
對計算機(jī)的程序編寫完成后,就需要通過軟件對編寫的程序進(jìn)行測試及編
譯,若是不能通過編譯,則需要再進(jìn)行修改。
檢查單片機(jī)所有的器件都手工焊接到了萬能板上,對每一個焊點都進(jìn)行仔
細(xì)地檢查,確保沒有虛焊、漏焊以及是否有毛刺的現(xiàn)象。
使用萬用表進(jìn)行測試,檢查各焊接點連接狀況是否合格,各電源線與地線是否
有短路。
對產(chǎn)品進(jìn)行上電檢查,將編寫好的程序燒錄到單片機(jī)中。
程序編譯、燒錄成功界面如圖5-2,5-3所示:
11
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
圖5-2程序編譯圖
圖5-3程序燒錄圖
5.3產(chǎn)品使用說明
(1)接上電源上電,再按下開關(guān),溫濕度傳感器自動采集溫度與濕度。
(2)通過LCD1602液晶第一行顯示屏顯示溫度,第二行顯示濕度。
(3)若溫度或濕度超出閾值范圍,蜂鳴器開始報警,LED燈閃爍。
(4)切換界面后液晶第一行顯示屏顯示時間和星期,第二行顯示日期。
(5)溫度與濕度的閾值范圍以及時間的調(diào)整都可以通過萬能板上的按鍵完
成。
12
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
6產(chǎn)品設(shè)計技術(shù)標(biāo)準(zhǔn)
[1]J-STD-001E電氣與電子組件的焊接要求
[2]IPC-A-610D(中文版),IPC-A-610E電子組件的可接受性要求
[3]IPC-7711/21電子組件和電路板的返工&返修
[4]GB/T11457-2006信息技術(shù)軟件工程術(shù)語;
[5]GB/T8566-2007信息技術(shù)軟件生存周期過程標(biāo)準(zhǔn);
[6]GB/T8567-2006計算機(jī)軟件文檔編制規(guī)范。
13
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
附錄1元器件清單
14
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
附錄2電路原理圖
15
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
附錄3PCB設(shè)計圖
16
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
附錄4產(chǎn)品實物圖
17
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
附錄5主程序代碼
//基于51單片機(jī)溫濕度檢測與數(shù)字時鐘的設(shè)計與實現(xiàn)
//20移動互聯(lián)應(yīng)用技術(shù)1班羅旭
#include<reg52.h>//調(diào)用單片機(jī)頭文件
#defineucharunsignedchar//無符號字符型宏定義變量范圍0~255
#defineuintunsignedint//無符號整型宏定義變量范圍0~65535
#include"ds1302.h"
sbitbeep=P1^6;//蜂鳴器IO口定義
intflag_300ms;//300毫秒的變量
ucharkey_can;//按鍵值的變量
sbitwh_led=P2^2;//溫度上限報警指示燈IO口定義
sbitwl_led=P2^3;//溫度下限報警指示燈IO口定義
sbitsh_led=P2^1;//濕度上限報警指示燈IO口定義
sbitsl_led=P2^0;//濕度下限報警指示燈IO口定義
ucharflag_en=1;//手動取消報警的變量
ucharmenu_1;//設(shè)置不同報警參數(shù)的變量
uchart_high=35,t_low=10;//溫度上下限報警值
uchars_high=80,s_low=10;//濕度上下限報警值
bitflag_moshi;
/***************************************************************
*名稱:delay_1ms()
*功能:延時1ms函數(shù)
*輸入:q
*輸出:無
****************************************************************/
voiddelay_1ms(uintq)
{
uinti,j;
for(i=0;i<q;i++)
for(j=0;j<120;j++);
}
18
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
sbitdht11=P1^7;//溫濕度傳感器IO口定義
uchartable_dht11[5]={0};//溫濕度值放到這個數(shù)組里面
sbitrs=P1^0;//寄存器選擇信號H:數(shù)據(jù)寄存器L:指令寄存器
sbitrw=P1^1;//寄存器選擇信號H:數(shù)據(jù)寄存器L:指令寄存器
sbite=P1^2;//片選信號下降沿觸發(fā)
/********************************************************************
*名稱:delay_uint()
*功能:小延時。
*輸入:無
*輸出:無
***********************************************************************/
voiddelay_uint(uintq)
{
while(q--);
}
/********************************************************************
*名稱:write_com(ucharcom)
*功能:1602指令函數(shù)
*輸入:輸入的指令值
*輸出:無
***********************************************************************/
voidwrite_com(ucharcom)
{
rs=0;//寫指令
rw=0;//對1602寫操作
P0=com;//P0口對1602寫指令
delay_uint(25);
e=1;//e=1使能信號
delay_uint(100);//延時一下等1602完成操作
e=0;
}
/********************************************************************
*名稱:write_data(uchardat)
*功能:1602寫數(shù)據(jù)函數(shù)
*輸入:需要寫入1602的數(shù)據(jù)
*輸出:無
***********************************************************************/
voidwrite_data(uchardat)
{
19
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
rs=1;//寫數(shù)據(jù)
rw=0;//對1602寫操作
P0=dat;//P0口對1602寫數(shù)據(jù)
delay_uint(25);
e=1;//e=1使能信號
delay_uint(100);//延時一下等1602完成操作
e=0;
}
/***********************lcd1602上顯示特定的字符****0XDF度
********************/
voidwrite_zifu(ucharhang,ucharadd,uchardate)
{
if(hang==1)
write_com(0x80+add);//寫1602第一行的地址
else
write_com(0x80+0x40+add);//寫1602第二行的地址
write_data(date);//寫數(shù)據(jù)
}
/***********************lcd1602上顯示1位十進(jìn)制數(shù)************************/
voidwrite_lcd1(ucharhang,ucharadd,uchardate)
{
if(hang==1)
write_com(0x80+add);//1602寫第一行的地址
else
write_com(0x80+0x40+add);//1602寫第二行的地址
write_data(0x30+date%10);
}
/***********************lcd1602上顯示兩位十進(jìn)制數(shù)************************/
voidwrite_lcd2(ucharhang,ucharadd,uintdate)
{
if(hang==1)
write_com(0x80+add);//寫1602第一行的地址
else
write_com(0x80+0x40+add);//寫1602第二行的地址
write_data(0x30+date/10%10);//顯示十位數(shù)
write_data(0x30+date%10);//顯示個位數(shù)
}
/***********************lcd1602上顯示兩位16進(jìn)制數(shù)************************/
20
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
voidwrite_lcd2_ds1302(ucharhang,ucharadd,uchardate)
{
if(hang==1)
write_com(0x80+add);//1602寫第一行的地址
else
write_com(0x80+0x40+add);//1602寫第二行的地址
write_data(0x30+date/16);//顯示十位數(shù)
write_data(0x30+date%16);//顯示個位數(shù)
}
/***********************lcd1602上顯示這字符函數(shù)************************/
voidwrite_string(ucharhang,ucharadd,uchar*p)
{
if(hang==1)
write_com(0x80+add);//寫1602第一行的地址
else
write_com(0x80+0x40+add);//寫1602第二行的地址
while(1)
{
if(*p=='\0')break;//\0字符串的結(jié)尾標(biāo)志break結(jié)束while循環(huán)結(jié)
束寫字符
write_data(*p);//寫數(shù)據(jù)
p++;//指針地址加1
}
}
/*****************控制光標(biāo)函數(shù)********************/
voidwrite_guanbiao(ucharhang,ucharadd,uchardate)
{
if(hang==1)
write_com(0x80+add);//寫1602第一行的地址
else
write_com(0x80+0x40+add);//寫1602第二行的地址
if(date==1)
write_com(0x0f);//顯示光標(biāo)并且閃爍
else
write_com(0x0c);//關(guān)閉光標(biāo)
}
/***********************lcd1602初始化設(shè)置************************/
voidinit_1602()//lcd1602初始化
{
write_com(0x38);//顯示模式設(shè)置:16×2顯示,5×7點陣,8位數(shù)據(jù)接口不檢
21
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
測忙信號
write_com(0x0c);//開顯示不顯示光標(biāo)
write_com(0x06);//當(dāng)寫一個字符是,地址指針加1
write_string(1,0,"Wd:00H00L00");//初始化1602顯示
write_string(2,0,"Sd:00%H00%L00%");//初始化1602顯示
write_zifu(1,5,0xdf);//顯示溫度單位度
write_zifu(1,10,0xdf);//顯示溫度單位度
write_zifu(1,15,0xdf);//顯示溫度單位度
write_lcd2(1,3,table_dht11[2]);//顯示溫度
write_lcd2(2,3,table_dht11[0]);//顯示濕度
write_lcd2(1,8,t_high);//顯示溫度上限
write_lcd2(2,8,s_high);//顯示濕度上限
write_lcd2(1,13,t_low);//顯示溫度下限
write_lcd2(2,13,s_low);//顯示濕度下限
}
/********************獨立按鍵程序*****************/
voidkey()//獨立按鍵程序
{
ucharkey_new;//key_new這個變量的功能是做按鍵松手檢測的
key_can=0;//按鍵值還原成0
if((P3&0xf0)!=0xf0)//按鍵按下11110000
{
delay_1ms(1);//按鍵延時消抖動
if(((P3&0xf0)!=0xf0)&&(key_new==1))
{//確認(rèn)是按鍵按下11110000
key_new=0;//key_new=0說明按鍵已按下
switch(P3&0xf0)
{
case0xd0:key_can=3;break;//得到按鍵值11010000
case0xb0:key_can=2;break;//得到按鍵值10110000
case0x70:key_can=1;break;//得到按鍵值01110000
}
}
}
else
key_new=1;//key_new=1說明按鍵已經(jīng)松開了
}
/****************按鍵設(shè)置函數(shù)***************/
voidkey_with()
22
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
{
if(menu_1==0)
{
if(key_can==3)
{
flag_moshi=~flag_moshi;
if(flag_moshi==0)//顯示溫濕度
{
init_1602();//lcd1602初始化
}else
{
write_string(1,0,"::");//顯示時間
write_string(2,0,"20--");
}
}
}
if(key_can==1)//設(shè)置鍵
{
menu_1++;
if(menu_1>10)
{
menu_1=0;//menu_1=0退出設(shè)置了,在正常顯示界面下
init_1602();//lcd1602初始化顯示
}
if(menu_1==5)//設(shè)置時間
{
write_string(1,0,"::W:");
write_string(2,0,"20--");
}
}
if(menu_1==1)//設(shè)置溫度上限報警值
{
if(key_can==2)//加鍵
{
t_high++;//設(shè)置溫度上限報警值加1
if(t_high>99)
t_high=99;
}
if(key_can==3)//減鍵
{
t_high--;//設(shè)置溫度上限報警值減1
if(t_high<=t_low)
t_high=t_low+1;//限制溫度上限不能低于溫度下限
23
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
}
write_lcd2(1,8,t_high);//顯示上限報警值
write_com(0x80+8);//將光標(biāo)移動到第1行第8位
write_com(0x0f);//顯示光標(biāo)并且閃爍
}
if(menu_1==2)//設(shè)置溫度下限報警值
{
if(key_can==2)//加鍵
{
t_low++;//設(shè)置溫度下限報警值加1
if(t_low>=t_high)
t_low=t_high-1;//限制溫度下限不能高于溫度上限
}
if(key_can==3)//減鍵
{
t_low--;//設(shè)置溫度下限報警值減1
if(t_low<=1)
t_low=1;
}
write_lcd2(1,13,t_low);//顯示溫度下限報警值
write_com(0x80+13);//將光標(biāo)移動到第1行第13位
write_com(0x0f);//顯示光標(biāo)并且閃爍
}
if(menu_1==3)//設(shè)置濕度上限報警值
{
if(key_can==2)//加鍵
{
s_high++;//設(shè)置濕度上限報警值加1
if(s_high>99)
s_high=99;
}
if(key_can==3)//減鍵
{
s_high--;//設(shè)置濕度上限報警值減1
if(s_high<=s_low)
s_high=s_low+1;//限制濕度上限不能低于濕度下限
}
write_lcd2(2,8,s_high);//顯示濕度上限報警值
write_com(0x80+0x40+8);//將光標(biāo)移動到第2行第8位
write_com(0x0f);//顯示光標(biāo)并且閃爍
}
if(menu_1==4)//設(shè)置濕度下限報警值
{
24
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
if(key_can==2)//加鍵
{
s_low++;//設(shè)置濕度下限報警值加1
if(s_low>=s_high)
s_low=s_high-1;//限制濕度下限不能高于濕度上限
}
if(key_can==3)//減鍵
{
s_low--;//設(shè)置濕度下限報警值減1
if(s_low<=1)
s_low=1;
}
write_lcd2(2,13,s_low);//顯示濕度下限報警值
write_com(0x80+0x40+13);//將光標(biāo)移動到第2行第13位
write_com(0x0f);//顯示光標(biāo)并且閃爍
}
if(menu_1==5)//設(shè)置時
{
if(key_can==2)//加鍵
{
shi+=0x01;//設(shè)置時鐘加1
if((shi&0x0f)>=0x0a)
shi=(shi&0xf0)+0x10;
if(shi>=0x24)
shi=0;
}
if(key_can==3)//減鍵
{
if(shi==0x00)
shi=0x24;
if((shi&0x0f)==0x00)
shi=(shi|0x0a)-0x10;
shi--;//設(shè)置時鐘減1
}
}
if(menu_1==6)//設(shè)置分
{
if(key_can==2)//加鍵
{
fen+=0x01;//設(shè)置分鐘加1
if((fen&0x0f)>=0x0a)
fen=(fen&0xf0)+0x10;
if(fen>=0x60)
25
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
fen=0;
}
if(key_can==3)//減鍵
{
if(fen==0x00)
fen=0x5a;
if((fen&0x0f)==0x00)
fen=(fen|0x0a)-0x10;
fen--;//設(shè)置分鐘減1
}
}
if(menu_1==7)//設(shè)置秒
{
if(key_can==2)//加鍵
{
miao+=0x01;//設(shè)置秒鐘加1
if((miao&0x0f)>=0x0a)
miao=(miao&0xf0)+0x10;
if(miao>=0x60)
miao=0;
}
if(key_can==3)//減鍵
{
if(miao==0x00)
miao=0x5a;
if((miao&0x0f)==0x00)
miao=(miao|0x0a)-0x10;
miao--;//設(shè)置秒減1
}
}
if(menu_1==8)//設(shè)置星期
{
if(key_can==2)//加鍵
{
week+=0x01;//設(shè)置星期加1
if((week&0x0f)>=0x0a)
week=(week&0xf0)+0x10;
if(week>=0x08)
week=1;
}
if(key_can==3)//減鍵
{
if(week==0x01)
26
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
week=0x08;
if((week&0x0f)==0x00)
week=(week|0x0a)-0x10;
week--;//設(shè)置星期減1
}
}
if(menu_1==9)//設(shè)置年
{
if(key_can==2)//加鍵
{
nian+=0x01;//設(shè)置年加1
if((nian&0x0f)>=0x0a)
nian=(nian&0xf0)+0x10;
if(nian>=0x9a)
nian=1;
}
if(key_can==3)//減鍵
{
if(nian==0x01)
nian=0x9a;
if((nian&0x0f)==0x00)
nian=(nian|0x0a)-0x10;
nian--;//設(shè)置年減1
}
}
if(menu_1==10)//設(shè)置月
{
if(key_can==2)//加鍵
{
yue+=0x01;//設(shè)置月加1
if((yue&0x0f)>=0x0a)
yue=(yue&0xf0)+0x10;
if(yue>=0x13)
yue=1;
}
if(key_can==3)//減鍵
{
if(yue==0x01)
yue=0x13;
if((yue&0x0f)==0x00)
yue=(yue|0x0a)-0x10;
yue--;//設(shè)置月減1
}
27
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
}
if(menu_1==11)//設(shè)置日
{
if(key_can==2)//加鍵
{
ri+=0x01;//設(shè)置日加1
if((ri&0x0f)>=0x0a)
ri=(ri&0xf0)+0x10;
if(ri>=0x32)
ri=0;
}
if(key_can==3)//減鍵
{
if(ri==0x01)
ri=0x32;
if((ri&0x0f)==0x00)
ri=(ri|0x0a)-0x10;
ri
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 生活化教學(xué)與小學(xué)漢字學(xué)習(xí)的有效融合
- 環(huán)保建材在文化旅游項目中的應(yīng)用研究
- 電商物流行業(yè)標(biāo)準(zhǔn)化建設(shè)與發(fā)展趨勢
- 生產(chǎn)安全教育培訓(xùn)的優(yōu)化與創(chuàng)新
- 生物技術(shù)在醫(yī)療美容領(lǐng)域的應(yīng)用
- 現(xiàn)代企業(yè)辦公中的移動支付發(fā)展趨勢
- 電商平臺的客戶服務(wù)與售后管理研究
- 電力工程施工過程中的環(huán)境監(jiān)控
- 生態(tài)友好型商業(yè)綜合體的設(shè)計與規(guī)劃
- 電力行業(yè)風(fēng)險評估與防范措施報告
- 島津氣相色譜培訓(xùn)
- 2024年03月四川農(nóng)村商業(yè)聯(lián)合銀行信息科技部2024年校園招考300名工作人員筆試歷年參考題庫附帶答案詳解
- 睡眠專業(yè)知識培訓(xùn)課件
- 臨床思維能力培養(yǎng)
- 人教版高中物理必修第三冊第十章靜電場中的能量10-1電勢能和電勢練習(xí)含答案
- 《工程勘察設(shè)計收費標(biāo)準(zhǔn)》(2002年修訂本)
- 中國宗教文化 中國古代宗教文化的特點及現(xiàn)代意義
- 2024年四川省巴中市級事業(yè)單位選聘15人歷年高頻難、易錯點練習(xí)500題附帶答案詳解
- 演出經(jīng)紀(jì)人培訓(xùn)
- 蓋房四鄰簽字協(xié)議書范文
- 2024年新人教版七年級上冊數(shù)學(xué)教學(xué)課件 第六章 幾何圖形初步 數(shù)學(xué)活動
評論
0/150
提交評論