基于52單片機紅外溫控風扇的設計與制作_第1頁
基于52單片機紅外溫控風扇的設計與制作_第2頁
基于52單片機紅外溫控風扇的設計與制作_第3頁
基于52單片機紅外溫控風扇的設計與制作_第4頁
基于52單片機紅外溫控風扇的設計與制作_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

湖南商務職業(yè)技術學院畢業(yè)設計

目錄

1產品功能分析...............................................................................................................1

1.1設計背景及內容................................................................................................1

1.2功能分析............................................................................................................1

2方案設計.......................................................................................................................1

2.1單片機的選擇方案............................................................................................1

2.2調速方式的方案選擇........................................................................................2

2.3溫度傳感器方案的選擇....................................................................................2

2.4系統(tǒng)框圖............................................................................................................3

3產品硬件設計...............................................................................................................3

3.1電路原理圖及工作原理....................................................................................3

3.2SC89C52RC單片機核心電路設計...................................................................3

3.3測溫系統(tǒng)設計....................................................................................................5

3.4控制電路設計.....................................................................................................7

3.5LED液晶顯示設計.............................................................錯誤!未定義書簽。

3.6驅動電路設計......................................................................錯誤!未定義書簽。

4產品軟件設計...............................................................................................................8

4.1STC89C52程序開發(fā)環(huán)境..................................................................................8

4.2Keil5程序燒錄軟件介紹....................................................錯誤!未定義書簽。

4.3主程序流程圖....................................................................................................9

4.4數(shù)字溫度傳感器和顯示子模塊........................................................................9

5系統(tǒng)組裝與調試.........................................................................................................11

5.1電路組裝..........................................................................................................11

5.2系統(tǒng)調試..........................................................................................................12

5.2.1系統(tǒng)軟件調試.......................................................................................12

5.2.2系統(tǒng)硬件調試.......................................................................................12

5.3實物測試..........................................................................................................13

I

湖南商務職業(yè)技術學院畢業(yè)設計

6產品使用說明.............................................................................................................13

參考資料.........................................................................................................................14

附錄1元器件清單.......................................................................................................15

附錄2電路原理圖.......................................................................................................16

附錄3PCB設計圖........................................................................................................17

附錄4作品實物照.......................................................................................................18

附錄5軟件程序代碼...................................................................................................19

II

湖南商職業(yè)技術學院畢業(yè)設計

基于52單片機紅外溫控風扇的設計與制作

1產品功能分析

1.1設計背景及內容

伴隨時代的進步,人們的生活水平質量不斷的提高,空調逐漸替換傳統(tǒng)電

風扇??照{的制冷功能雖說強大,但并不適用于老人和小孩與體制弱的人群。

其次空調相對于風扇,它的耗電量更大。要鞏固電風扇的穩(wěn)定的市場空間,我

們需要對電風扇跟進,相對于以往的老式風扇,溫控風扇的制造成本低且更加

方便,又方便于安裝,使用簡單,絕對省電。用戶也可以設置高,低溫度值,

所設置的溫度值將會保存在溫度傳感器內部當中,即使是關閉設置的溫度值,

它可以根據(jù)周圍的溫度的變化而進行調節(jié)溫度擋位,風速的大小可以給人們帶

來更好的生活體驗。

1.2功能分析

可通過LCD1602顯示溫度和檔位;

可通過按鍵調整三檔溫度和檔位;

可通過感應溫度進行調整風速大??;

2方案設計

2.1單片機的選擇方案

方案一:

STM32系列單片機優(yōu)缺點;優(yōu)點成本低,運算速度快,高性能,低功耗的

arm。

缺點對于不太熟練的操作者來說有些操作比較復雜,再一個是成本偏高是

眾多的優(yōu)點中的小瑕疵。

方案二:

52系列單片機優(yōu)缺點;優(yōu)點對與操作者來說更容易上手,操作簡單,低功

耗,高性能,結構簡單,是新一代增強型單片機。

缺點保護性差,容易損壞芯片,AD、EEPROM等功能必須擴展,這就增加了

1

湖南商職業(yè)技術學院畢業(yè)設計

硬件和軟件的負載能力。操作速度太慢。

總的來說根據(jù)兩款單片機的成本與性能相比較,我選擇了第二款STC89C52

系列單片機。

綜上所述,故選擇方案二。

2.2調速方式的方案選擇

方案一:

如果使用變壓器調節(jié)優(yōu)缺點;

優(yōu)點:變換電能,使電能能夠有更遠的距離輸出,線性雖說看著笨重,但是

功率是完全取決于變壓器和調整管。再一個就是它的設計簡單,如果有損壞,

維修起來也很方便。

缺點:效率低,電壓器是有一個轉換過程,過程中是不能避免鐵和銅的損耗。

輸入范圍很低,通常在200至240V之間。如果輸出電壓不足或高于這個范圍,

變壓器可能會燒毀。

方案二:

使用晶閘管構成無級調速電路的優(yōu)缺點;

優(yōu)點:調速范圍廣,平穩(wěn)性好,重量輕,噪音小,效率高,操作安全,非

??煽浚焖傩院?。

缺點:損耗大,整流電流中的交流成分大。

根據(jù)兩款產品比較,如果選擇方案一,由各個方面考慮,它不符合人性化

的需求。

綜上所述,故選擇方案二。

2.3溫度傳感器方案的選擇

方案一

熱電偶被用作溫度檢測的基本元件。通過橋式電路、運算放大電路以及AD

轉換電路,溫度變化信號就會被送到微控制器中進行處理。

優(yōu)點:溫度范圍大,堅固耐用,不易發(fā)熱。

缺點:精度,重復性,可靠性差,很容易受到腐蝕,需要保養(yǎng)和維護。

方案二

集成式數(shù)字溫度傳感器DS18B20被用作溫度傳感的基本元件,其體積小,

可直接輸出數(shù)字溫度信號供微控制器處理。

優(yōu)點:溫度誤差小,測量精度高,體積小,適用廣泛,溫度測量不需要外

2

湖南商職業(yè)技術學院畢業(yè)設計

圍元件。DS18B20有一個內部EEPROM存儲器,可以在系統(tǒng)電源關閉后存儲分辨

率和報警溫度設置。

缺點:精度一般只可滿足一般的場合

綜上所述,故選擇方案二。

2.4系統(tǒng)框圖

本設計由18b20測溫電路、STC89C52單片機核心電路、按鍵控制電路、

驅動風扇電路、溫度顯示電路組成。

圖1系統(tǒng)框圖

3產品硬件設計

3.1電路原理圖及工作原理

1、電路原理圖如圖2

2、電路工作原理

當有人體經(jīng)過,溫度傳感器DS18B20獲得溫度信號,此信號經(jīng)過

STC89C52單片機核心電路輸出使風扇工作同時液晶顯示屏顯示當前的溫度。按

鍵控制電路可控制檔位。

3

湖南商職業(yè)技術學院畢業(yè)設計

圖2電路原理圖

3.2STC89C52單片機核心電路設計

STC89C52是ATMEL公司生產的低電壓、高性能CMOS8位微控制器,具有4

字節(jié)的可以反復擦寫的只讀程序存儲器(PEROM)和128字節(jié)的隨機存取存儲器

(RAM)。這些器件是采用ATMEL的高密度非易失性存儲器技術制造的,與標準

的MCS-51控制系統(tǒng)兼容,內置8位中央處理器和閃存塊,功能齊全。STC89C52

單片機可以靈活地用于廣泛的控制應用。STC89C52的低效率、抗噪音、低安培、

高性能、高處理能力和性價比,為許多嵌入式系統(tǒng)提供了一個靈活性大又實惠

的方法。

STC89C52芯片由5V直流電供電,可通過USB接口40和20引腳供電。時鐘

電路位于STC89C52芯片的內部,如果沒有的話,芯片就不會進行工作。芯片內

部的時鐘電路是用來合并外部晶振完成振蕩的電路,這樣芯片就有了運行時鐘

運行時鐘為0,芯片就不會運行,如果不為0,那就正常運行,但是如果超出了

STC89C52芯片的工作頻率,這時的時鐘電路狀態(tài)下也不會工作。XTAL1與XTAL2

分別接單片機的19和18引腳。

4

湖南商職業(yè)技術學院畢業(yè)設計

通過用數(shù)字溫度傳感器收集室外環(huán)境的數(shù)據(jù),并建立一個控制系統(tǒng),其中風

扇根據(jù)溫度變化自動調整其速度,該系統(tǒng)實現(xiàn)了"高溫/強風,低溫/弱風"的性

能。此外,使用紅外發(fā)射器與接收器和按鈕可以打開和關閉所有的功能,而且

各種功都可以遠程控制。此外,用戶還可以設定在一定范圍內風扇的最小的工

作溫度,當?shù)陀谠摐囟确秶鷷r,風扇自動關機,該溫度超過設定的這個范圍時,

風扇再次開啟。

單片機引腳圖如下圖所示:

圖3單片機引腳圖

3.3測溫系統(tǒng)設計

溫度測量功能是通過讀取數(shù)字溫度傳感器DS18B20的內部計數(shù)時鐘實現(xiàn)的。

溫度寄存器中的16位二進制值就是溫度測量值。從主機發(fā)出一個內存讀取指令,

先讀取低階位,再讀取高階位。溫度振蕩器是拋物線型的,由斜率累加器進行

補償。在這個系統(tǒng)中將DS18B20連接到微控制器的P1.5端口,用于溫度采集。

其與單片機的連接如圖4所示:

圖4測溫系統(tǒng)原理圖

人體紅外傳感器模塊主要用于檢測人體的溫度,該設計是采用STC89C52RC

5

湖南商職業(yè)技術學院畢業(yè)設計

單片機作為主控芯片,采用LCD1602單片機顯示操作的數(shù)據(jù)輸出值,用于測量

人體皮膚表面溫度的紅外傳感器。當傳感器接近人體皮膚的時候,被紅外線檢

測到,然后被A/D電路轉換成電壓和電流,最后變成數(shù)據(jù)值,因為溫度模塊的

輸出信號是模擬信號,所以輸出端需要一個轉換電路將溫度傳感器的模擬信號

被轉換為數(shù)字信號,然后將數(shù)據(jù)發(fā)送到微控制器中。這有利于快速檢測人體溫

度的當前值。人體感應傳感器圖4所示

圖5人體感應傳感器實物圖

3.4控制電路設計

本產品有三個獨立的鍵:S1、S2和S3一端連接到單片機P3.5、P3.6和

P3.7,另一端接地。當一個鍵被按下時,會產生一個低電平,P1端口會做出反

應,停止溫度控制。3個獨立的按鍵分別可以實現(xiàn)風扇的風速增加或減小,并可

以控制打開或關閉風扇。這使得風扇速度可以手動設置,并獨立開啟和關閉,

更加方便和人性化。

其接線圖如圖6所示:

圖6控制電路

6

湖南商職業(yè)技術學院畢業(yè)設計

3.5LCD1602液晶顯示電路

LCD1602液晶顯示器使用了液晶的物理特性,電壓供應電,在有電的情況下

顯示。內部是由液晶材料制成的,有光和沒有光來顯示顏色的不一樣,看到的

圖像也就不一樣。當我們通過軟件程序連接,達到的效果會不一樣。

(1)模塊特點:

LCD1602液晶顯示屏是數(shù)字式的

顯示質量比較高,當顯示屏收到的信號然后就會一直保持那個顏色或者亮

度,發(fā)光不會像其他顯示屏一直閃,不會出現(xiàn)不穩(wěn)定的情況。

這個顯示屏體積小,里面有液晶分子,顯示出來的,所以和其他產品對比,

質量方面還是挺好的,面積也小,小巧靈活,操作起來方便許多。

性價比高,功耗低。這款顯示屏的功耗主要在產品的內部,因為是通過電

極顯示的,所以耗電量跟其他顯示屏相比要少很多。

(2)主要參數(shù):

顯示容量:16*2個字符

工作電壓:4.5至5.5V之間

工作電流:2.0mA

其具體電路原理圖如下圖所示。

圖7顯示電路

3.6驅動電路

該產品的風扇電機速度是由微控制器的PWM脈沖控制的。溫度可以通過手

動按鍵控制范圍,單片機通過P2.7口與三極管Q1端相連輸出PWM波驅動電機

實現(xiàn)自動調速。在三極管工作期間利用PWM矩形波信號調整控制占空比。占空

比是高電平持續(xù)時間,在時間段內的百分比。當單片機控制電機速度時,占空

比越高,速度就越快,占空比越低,速度就越慢。如果單片機輸出波形的占空

比為100%,即單片機的輸出信號為全高電平,此時電機轉速達到最高。當周圍

7

湖南商職業(yè)技術學院畢業(yè)設計

環(huán)境溫度升高時,單片機輸出的占空比增加,電機轉速根據(jù)用戶設定的溫度等

級增加,達到快速降溫的目的;當周圍環(huán)境溫度降低時,單片機輸出的占空比

降低,電機轉速根據(jù)用戶設定的溫度等級相應降低;當周圍環(huán)境溫度低于設定

溫度值時,電機就會自動停止運轉,當周圍環(huán)境溫度高于設定溫度值時,電機

就會再次自動啟動。

電機及調速電路如圖所示:

圖8風扇驅動電路

4產品軟件設計

主程序要實現(xiàn)的功能具體如下:系統(tǒng)初始化、各子模塊的初始化、溫度讀

取和顯示功能、按鍵掃描功能、溫度處理判斷功能和風扇電機控制功能。

4.1STC89C52程序開發(fā)環(huán)境

開發(fā)第一個步驟就是生產程序代碼,編寫完畢后另存成擴展名為.c\.h等,

它與java、c++以及其他語言方式的開發(fā)軟件環(huán)境相似,隨著移動互聯(lián)網(wǎng)和社

會信息網(wǎng)絡的發(fā)展,越來越多的年輕人都希望可以充分利用這些新技術。

STC89C52開發(fā)環(huán)境搭建;aduino開發(fā)板通過USB線和電腦連接在一起。然后找

到插入USB接口。然后會出現(xiàn)編輯的界面,如果看不習慣也可以轉化成中文。

我們的電路板和代碼缺一不可,如果想要實現(xiàn)取決于代碼。

下載之前先了解開發(fā)板的型號和對應的串口。下載編譯成功就可以了。

8

湖南商職業(yè)技術學院畢業(yè)設計

圖9keil5開發(fā)界面圖

4.2Keil5程序燒錄軟件介紹

在Keil5開發(fā)環(huán)境下,編譯程序,直到程序編譯無誤后把程序燒錄進去就

可以完成了。具體下載界面如下圖所示。

圖10燒錄軟件框

4.3主程序流程圖

當主程序開始初始化以后,主程序就會重復地對各個模塊的相關部分的緩

沖區(qū)域的標記進行檢測,如果緩沖區(qū)域被設置了,那么就意味著對應的數(shù)據(jù)是

要被處理的,然后對應的處理子模由主程序調用。

9

湖南商職業(yè)技術學院畢業(yè)設計

如圖11所示

圖11主程序運行流程圖

4.4數(shù)字溫度傳感器和顯示子模塊

主機通過初始化、ROM指令和存儲器指令三個步驟來控制DS18B20進行溫

度轉換。單片機采用12MHz的系統(tǒng)頻率。

根據(jù)數(shù)字溫度傳感器DS18B20,其初始化時、讀取和寫入時間可分別寫入3

個子程序:初始化子程序、寫入子程序和讀取子程序。

10

湖南商職業(yè)技術學院畢業(yè)設計

圖12數(shù)字溫度傳感器模塊程序流程圖

5系統(tǒng)組裝與調試

5.1電路組裝

第一步開始焊接:

第一步是清潔需要焊接的焊接區(qū),可以使用衛(wèi)生紙擦掉灰塵,然后將需要焊接的

元器件的兩腳掰開一點,方便焊接,注意不要將元器件的兩腳挨在一起,否則會

影響焊接效果。然后把烙鐵的頭部放在元件的底部,然后用焊錫絲把它連接起

來。一定要小心,不要把烙鐵的頭部碰到其他的元件,不然的話就會把其他的

元件給損壞了,而且會把兩個元件焊接在一起。

11

湖南商職業(yè)技術學院畢業(yè)設計

第二步給焊接升溫:

第一步完成以后,第二步就是加熱焊絲進行焊接。將燒熱的烙鐵放在元器

件腳旁,一點點融化焊錫絲,注意不要停頓太久,否則會變成很大一塊,影響

美觀,要注意電洛鐵的溫度和加熱時間,如果時間過長,會損壞焊盤的,平常

將電洛鐵溫度在400攝氏度左右即可,加熱幾秒鐘左右就可以了。在焊接過程

中,要注意安全,避免將烙鐵觸碰到手上,如果有焊錯的地方,就把元器件卸

掉,重新焊接。盡量焊的圓潤一點,烙鐵停在板上的時間不宜過長,停留時間

長會損壞板子。

第三步檢查:

當完成以上兩步了,最后就需要整體再檢查一遍,主要看焊接點是不是足

夠飽滿,確認是不是緊固了,有沒有與其它管腳相連在一起了。線有沒有脫落

或者正負極接反了。

5.2系統(tǒng)調試

5.2.1系統(tǒng)軟件調試

如果程序編譯顯示沒有錯誤,就可以通過串口燒寫模塊燒寫程序,檢查是

否可以滿足功能要求,如果功能還存在問題,那就要調試到?jīng)]有問題為止。

新建文件;新建一個新的文件夾,文件里面編寫程序代碼。然后保存到文

件夾。

程序編譯和調試;首先第一步就是點編譯,然后可以看到提示的信息。如

果有錯誤的話會提示,我們找出錯誤并修改。直到?jīng)]有錯誤。

5.2.2系統(tǒng)硬件調試

最后就是硬件測試,可以使用萬用表等檢查所有元器件是不是都可以通電,

都可以正常工作了,主要可以分為以下幾種。

(1)調試主要分為以下:

我們先觀察,看焊接的是否完整,還有元器件直接有沒有焊接好,有沒有

遺漏忘記焊的情況,不然會出現(xiàn)短路情況,否則達不到效果。

可以用萬用表測試電源是否短路和帶電,然后檢查測量引腳是否正確連接,

是否有接線錯誤,避免焊接腳管全部連在一起了,不然達不到工作效果。

(2)到了最后一步進行檢查,確認每個器件是不是都可以正常工作,能不

能滿足開發(fā)的效果,在此要好好保護產品,不要讓元器件損壞和丟失,。

12

湖南商職業(yè)技術學院畢業(yè)設計

5.3實物測試

測試正常,如下圖所示。

圖13系統(tǒng)測試圖

6產品使用說明

(1)檢查插線是否完整,檢查零件是否完整,使用時泡沫紙墊墊著風扇

(2)插上電源線,通上電以后產品就可以自主檢測周圍環(huán)境的溫度,到達

一定數(shù)值,將會運行風扇,也可以通過按鍵來進行操作,實現(xiàn)該產品的功能。

(3)不使用時,收好產品,輕拿輕放,切記不要暴力操作。

13

湖南商職業(yè)技術學院畢業(yè)設計

參考資料

[1]高海生.單片機及應用技術大全[M].成都:西南交通大學出版社.2005.

[2]王福瑞.單片微型機測控技術大全[M].北京:北京航空航天大學出版社.2003.

[3]張偉.單片機原理及應用[M].北京:機械工業(yè)出版社.2003.

[4]何立民.單片機應用系統(tǒng)設計[M].北京:清華大學出版社.2006.

[5]吳少軍.實用低功耗設計(原理器件與應用)/單片機應用技術系列[M].人民郵電出版社,2003.

[6]DingXiaojin.Ametheodofmeasuringmulti-pointtemperaturebasedonDS18B20[J].Electronic

Engineer,2006,27(7):1-7.

[7]WangJinliang.ApplicationofdigitalizedsensorDS18B20inchemicalfiled[J].Foreing

ElectronicMeasurementTechnology,2005,24(2):18-21.

[8]楊子文.單片機原理及應用[M].陜西:西安電子科技大學出版社.2006.

[9]黃堅,自動控制原理及其應用[M].北京:高等教育出版社,2004.

[10]沙占友,集成化智能傳感器原理與應用[M].北京:電子工業(yè)出版社,2004.

14

湖南商職業(yè)技術學院畢業(yè)設計

附錄1元器件清單

15

湖南商職業(yè)技術學院畢業(yè)設計

附錄2電路原理圖

16

湖南商職業(yè)技術學院畢業(yè)設計

附錄3PCB設計圖

17

湖南商職業(yè)技術學院畢業(yè)設計

附錄4作品實物照

18

湖南商職業(yè)技術學院畢業(yè)設計

附錄5軟件程序代碼

數(shù)字溫度傳感器模塊和顯示子模塊程序:

#include<reg52.h>//調用單片機頭文件

#defineucharunsignedchar//無符號字符型宏定義變量范圍0~255

#defineuintunsignedint//無符號整型宏定義變量范圍0~65535

#include<intrins.h>

sbitdq=P1^5;//18b20IO口的定義

uinttemperature;//溫度變量

ucharflag_lj_en;//按鍵連加變量

uintflag_250ms;//250毫秒的變量

sbitrs=P1^0;//寄存器選擇信號H:數(shù)據(jù)寄存器L:指令寄存器

sbitrw=P1^1;//寄存器選擇信號H:數(shù)據(jù)寄存器L:指令寄存器

sbite=P1^2;//片選信號下降沿觸發(fā)

sbitpwm=P1^4;//控制風扇IO口定義

ucharf_pwm_l;//PWM信號占空比的變量

ucharmenu_1;//設置不同參數(shù)的變量

uintt_high=280,t_low=230;//溫度上下限值

ucharflag_en;

sbithw=P1^3;//紅外人體IO口定義

sbitkey1=P3^5;//按鍵IO口定義

sbitkey2=P3^6;//按鍵IO口定義

sbitkey3=P3^7;//按鍵IO口定義

/***********************1ms延時函數(shù)*****************************/

voiddelay_1ms(uintq)

19

湖南商職業(yè)技術學院畢業(yè)設計

{

uinti,j;

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

for(j=0;j<120;j++);

}

/*****************************************************************

***

*名稱:delay_uint()

*功能:小延時。

*輸入:無

*輸出:無

******************************************************************

*****/

voiddelay_uint(uintq)

{

while(q--);

}

/*****************************************************************

***

*名稱:write_com(ucharcom)

*功能:1602命令函數(shù)

*輸入:輸入的命令值

*輸出:無

******************************************************************

*****/

20

湖南商職業(yè)技術學院畢業(yè)設計

voidwrite_com(ucharcom)

{

rs=0;//寫命令

rw=0;//對1602寫操作

P0=com;//P0口對1602寫命令數(shù)據(jù)

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)

{

rs=1;//寫數(shù)據(jù)

rw=0;//對1602寫操作

P0=dat;//P0口對1602寫數(shù)據(jù)

delay_uint(25);

e=1;//e=1使能信號

21

湖南商職業(yè)技術學院畢業(yè)設計

delay_uint(100);//延時一下等1602完成操作

e=0;

}

/*****************************************************************

***

*名稱:write_string(ucharhang,ucharadd,uchar*p)

*功能:改變液晶中某位的值,如果要讓第一行,第五個字符開始顯示"abcd

ef",調用該函數(shù)如下

write_string(1,5,"abcdef;")

*輸入:行,列,需要輸入1602的數(shù)據(jù)

*輸出:無

******************************************************************

*****/

/***********************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字符串的結尾標志break結束while

循環(huán)結束寫字符

write_data(*p);//寫數(shù)據(jù)

22

湖南商職業(yè)技術學院畢業(yè)設計

p++;//指針地址加1

}

}

/***********************lcd1602上顯示特定的字符

************************/

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上顯示兩位十進制數(shù)

************************/

voidwrite_lcd3_18B20(ucharhang,ucharadd,uintdate)

{

if(hang==1)

write_com(0x80+add);//1602寫第一行的地址

else

write_com(0x80+0x40+add);//1602寫第二行的地址

write_data(0x30+date/100%10);//顯示十位數(shù)

write_data(0x30+date/10%10);//顯示個位數(shù)

write_data('.');//顯示小數(shù)點

write_data(0x30+date%10);//顯示小數(shù)位

23

湖南商職業(yè)技術學院畢業(yè)設計

}

/***********************lcd1602初始化設置

************************/

voidinit_1602()

{

write_com(0x38);//顯示模式設置:16×2顯示,5×7點陣,8位數(shù)據(jù)接

口不檢測忙信號

write_com(0x0c);//開顯示不顯示光標

write_com(0x06);//當寫一個字符是,地址指針加1

write_string(1,0,"temp:.");

write_string(2,0,"H:.L:.");

write_zifu(1,12,0xdf);//顯示度

write_zifu(2,6,0xdf);//顯示度

write_zifu(2,14,0xdf);//顯示度

write_lcd3_18B20(2,2,t_high);//顯示上限值

write_lcd3_18B20(2,10,t_low);//顯示下限值

}

/***********************18b20初始化函數(shù)

*****************************/

voidinit_18b20()

{

bitq;

dq=1;//把總線拿高

delay_uint(8);

dq=0;//給復位脈沖再將數(shù)據(jù)線從高拉低,要求保持

480~960us

24

湖南商職業(yè)技術學院畢業(yè)設計

delay_uint(80);

dq=1;//把總線拿高等待

delay_uint(8);

q=dq;//讀取18b20初始化信號

delay_uint(4);

dq=1;//把總線拿高釋放總線

}

/*************寫18b20內的數(shù)據(jù)***************/

voidwrite_18b20(uchardat)

{

uchari;

for(i=0;i<8;i++)//單總線寫8位的數(shù)據(jù)需要循環(huán)8次才能寫完

{//寫數(shù)據(jù)是低位開始

dq=0;//把總線拿低寫時間隙開始

dq=dat&0x01;//向18b20總線寫一位數(shù)

delay_uint(4);

dq=1;//釋放總線

dat>>=1;//將dat中的各二進制位數(shù)據(jù)右移1位

}

delay_uint(4);//稍作延時,給硬件一點反應時間

}

/*************讀取18b20內的數(shù)據(jù)***************/

ucharread_18b20()

{

25

湖南商職業(yè)技術學院畢業(yè)設計

uchari,value;

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

{

dq=0;//把總線拿低讀時間隙開始

value>>=1;//讀數(shù)據(jù)是低位開始

dq=1;//釋放總線

if(dq==1)//開始讀寫數(shù)據(jù)

value|=0x80;

delay_uint(4);

}

returnvalue;//返回數(shù)據(jù)

}

/*************讀取溫度的值讀出來的是小數(shù)***************/

uintread_temp()

{

uintvalue;

ucharlow;//在讀取溫度的時候如果中斷的太頻繁了,就應該

把中斷給關了,否則會影響到18b20的時序

init_18b20();//初始化18b20

write_18b20(0xcc);//跳過64位ROM

write_18b20(0x44);//啟動一次溫度轉換命令

delay_uint(50);//溫度傳感器轉換一次溫度需要時間延時一下

init_18b20();//初始化18b20

write_18b20(0xcc);//跳過64位ROM

write_18b20(0xbe);//發(fā)出讀取暫存器命令

26

湖南商職業(yè)技術學院畢業(yè)設計

low=read_18b20();//讀溫度低字節(jié)

value=read_18b20();//讀溫度高字節(jié)

value<<=8;//把溫度的高位左移8位

value|=low;//把讀出的溫度低位放到value的低八位中

value*=0.625;//轉換到溫度值小數(shù)

returnvalue;//返回讀出的溫度帶小數(shù)

}

/*************定時器0初始化程序***************/

voidtime_init()

{

EA=1;//開總中斷

TMOD=0X10;//定時器1、工作方式1

ET1=1;//開定時器1中斷

TR1=0;//關閉定時器1

TH1=0xfe;//定時500us

TL1=0x0c;

}

/********************獨立按鍵程序*****************/

ucharkey_can;//按鍵值

voidkey()//獨立按鍵程序

{

key_can=0;//按鍵值還原成0

if(key1==0||key2==0||key3==0)//有按鍵按下

{

27

湖南商職業(yè)技術學院畢業(yè)設計

delay_1ms(1);//按鍵延時消抖動

if(key1==0)//確認是按鍵按下

key_can=3;//得到按鍵值

if(key2==0)//確認是按鍵按下

key_can=2;//得到按鍵值

if(key3==0)//確認是按鍵按下

key_can=1;//得到按鍵值

flag_lj_en++;//連加變量加1

}

else

flag_lj_en=0;//關閉連加使能

}

/****************按鍵顯示函數(shù)***************/

voidkey_with()

{

if(key_can==1)//設置鍵

{

menu_1++;

if(menu_1>=3)

{

menu_1=0;//退出設置

write_com(0x0c);//關閉光標

}

}

28

湖南商職業(yè)技術學院畢業(yè)設計

if(menu_1==1)//設置溫度上限值

{

if(key_can==2)//加鍵

{

if(flag_lj_en<=3)

t_high++;//按鍵按下未松開加1加三次

else

t_high+=10;//按鍵按下未松開加三次后加10

if(t_high>999)

t_high=999;

}

if(key_can==3)//減鍵

{

if(flag_lj_en<=3)

t_high--;//按鍵按下未松開減1減三次

else

t_high-=10;//按鍵按下未松開減三次后減10

if(t_high<=t_low)

t_high=t_low+1;//限制溫度上限不能低于溫度下限

}

write_lcd3_18B20(2,2,t_high);//顯示溫度上限值

write_com(0x80+0x40+2);//將光標移動到第2行第2位

write_com(0x0f);//顯示光標并且閃爍

}

29

湖南商職業(yè)技術學院畢業(yè)設計

if(menu_1==2)//設置溫度下限值

{

if(key_can==2)//加鍵

{

if(flag_lj_en<=3)

t_low++;//按鍵按下未松開加1加三次

else

t_low+=10;//按鍵按下未松開加三次后加10

if(t_low>=t_high)

t_low=t_high-1;//限制溫度下限不能高于溫度上限

}

if(key_can==3)//減鍵

{

if(flag_lj_en<=3)

t_low--;//按鍵按下未松開減1減三次

else

t_low-=10;//按鍵按下未松開減三次后減10

if(t_low<=10)

t_low=10;

}

write_lcd3_18B20(2,10,t_low);//顯示溫度下限值

write_com(0x80+0x40+10);//將光標移動到第2行第10

write_com(0x0f);//顯示光標并且閃爍

}

30

湖南

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論