本文相關(guān)資料和程序下載: 18B20資料(PDF) 隨文發(fā)表的源碼:隨文源碼   源碼文件說明 TCMain.c C源碼文件 TC.Uv2 keil7.09(或以上版本)項目文件 TC.hex 編譯好的單片機(jī)HEX文件,可以直接燒入單片機(jī)中
后來改進(jìn)過的1.51版本的源碼:1.51版源碼  
 |
實驗板 |
近期在各種電子技術(shù)雜志上看到不少介紹電子溫度控制器的制作文章,文章中介紹的電路類型繁多,有用模擬器件的,有用單片機(jī)的;溫度傳感器的使用也各不相同,有用熱敏電阻的,也有使用集成式的溫度傳感器。這些電路大都有數(shù)顯溫度的功能,測量的精度也不盡相同,但筆者發(fā)現(xiàn)這些制作的溫度設(shè)定操作使用不太方便,筆者根據(jù)自己的需要設(shè)計制作了一款可以方便調(diào)節(jié)、設(shè)定的溫度控制器。
1. 功能介紹 筆者設(shè)計的這一款溫度控制器是使用DS18B20集成溫度傳感器,七段數(shù)碼管做顯示,AT89C2051單片機(jī)做處理控制,電路簡單,制作起來也無需調(diào)試,安裝好后就可以使用了。該電路最大的特點是用可以直觀方便的調(diào)節(jié)所要限定的溫度值,溫度值是用3個7段共陽極數(shù)碼管顯示的,上電后會顯示當(dāng)前的溫度值,按設(shè)定鍵時會閃爍顯示設(shè)定溫度值,這時可以按上/下調(diào)節(jié)鍵調(diào)整設(shè)定溫度值,再次按下設(shè)定鍵時返回當(dāng)前溫度顯示同時會對設(shè)定溫度值進(jìn)行保存,這個設(shè)定值會保存在DS18B20中,掉電后也不會丟失,下次上電時,單片機(jī)會自動讀入上次的溫度設(shè)定值。長按設(shè)定鍵為關(guān)閉顯示和溫控,再次按下時功能再次打開。電路中還設(shè)計了一路繼電器控制,程序中設(shè)定超出設(shè)定溫度時繼電器被驅(qū)動吸合。
2. 元器件背景及選用 表一是元器件列表。在這個電路中關(guān)鍵的兩個元器件分別是單片機(jī)AT89C2051和溫度傳感傳感芯片DS18B20。AT89C2051具有2K的可多次擦寫的FLASH存儲器,有15個I/O口,用于做一些小型的控制顯示和數(shù)據(jù)采據(jù)系統(tǒng)是很好的選擇,本制作中2051單片機(jī)除要完成數(shù)據(jù)采集、處理、控制和顯示的任務(wù)外,還要完按鍵值的采集、處理。如果要用常規(guī)的數(shù)字加模擬電路實現(xiàn)起來就相對困難多了。DS18B20是DALLAS半導(dǎo)體公司(現(xiàn)屬M(fèi)AXIM公司)設(shè)計生產(chǎn)的單總線數(shù)字溫度傳感器,單總線也就是說只用一根I/O引線完成數(shù)據(jù)的輸入輸出功能,所以它的體積很小,而且電壓適用范圍在3-5.5V,封裝形式除有SO/uSO的8PIN貼片式,還有更方便的三極管形式的TO-92封裝(封裝形式和引腳說明請看圖一)。DS18B20測量溫度范圍為 -55°C~+125°C,其A/D轉(zhuǎn)換的分辯率可用程序控制分別為9位、10位、11位和12位,最高分別率可以高達(dá)0.0625°C,但在-10~+85°C范圍內(nèi)其精度為±0.5°C,這個精度已可以滿足普通型的環(huán)境溫度控制或測溫類消費(fèi)電子產(chǎn)品的要求。DS18B20中有三個8位E2RAM單元(非易失性可電擦寫儲存器),可以讀寫上下限警報溫度值和一個自定義值,在本制作的中就只使用了上限溫度值單元。每個DS18B20出廠時都有一個唯一的序列編號,就是說在同一個單總線系統(tǒng)中可以控制多個DS18B20。對DS18B20的單總線的操作方法這里因篇幅問題不可能一一說明,有興趣的讀者可以參看附屬光盤上的DS18B20資料。
元件名
|
數(shù) 量
|
說 明
|
AT89C2051 |
1
|
AT89C4051也可 |
DS18B20 |
1
|
溫度傳感器 |
七段數(shù)碼管 |
3
|
共陽極 |
LM7805 |
1
|
穩(wěn)壓三極管 |
小按鈕 |
3
|
|
100uF,10uF電解電容 |
各1
|
|
0.1uF瓷片電容 |
1
|
|
30pF |
2
|
|
12M晶振 |
1
|
也可以用11.0592M |
9012 |
1
|
也可用同類小功率三極管 |
S8550 |
3
|
同上 |
8.2K,4.7K電阻 |
各1
|
|
470歐電阻 |
7
|
可以根據(jù)數(shù)碼管的亮度選用或不用 |
1K電阻 |
4
|
|
繼電器 |
1
|
驅(qū)動電壓為5V |
 |
圖1:圖封裝形式及引腳說明 |
3. 電路原理 制作中DS18B20使用外接電源的供電方式,數(shù)據(jù)端用4.7K電阻上拉,并聯(lián)接到2051的11腳上。晶振選用12M的,使用簡單的上電復(fù)位電路。選用共陽極的數(shù)碼管,用S8550作位驅(qū)動,段引腳通過470歐的電限流電阻接入2051的P1口上,如選用的數(shù)碼管亮度不足可以調(diào)小限流電阻值。筆者也使用過共陰極的數(shù)碼管,在P1口用1K電阻上拉提供電流,亮度不高,但可以節(jié)省三個位驅(qū)動IO腳,電路更是簡單。電路中有三個按鍵,分別是顯示開關(guān)/溫度設(shè)定,溫度上調(diào),溫度下調(diào),在電路上電運(yùn)行時程序初始是處于關(guān)閉狀態(tài)的,要按一下S2電路開始顯示和監(jiān)測,如再按一下S2進(jìn)入溫度設(shè)定狀態(tài),設(shè)定值每秒閃爍一次,這時可以按S1或S3進(jìn)行調(diào)節(jié),再按下S2時退回顯示當(dāng)前溫度狀態(tài)并保存溫度值到DS18B20。使用2051的第9腳做控制輸出端,低電平有效,筆者用它通過9012去驅(qū)動一個5V的繼電器。筆者把這個電路安裝到電腦前面板上,繼電器觸頭端接機(jī)箱的散熱風(fēng)扇,設(shè)定一個溫度值如28度,當(dāng)機(jī)箱內(nèi)的溫度超出28度時,控制端為低電平,繼電器閉合,風(fēng)扇啟動進(jìn)行散熱。圖三就是裝在電腦面板上的實物照片。
 |
圖2:電原理圖(點擊看大圖) |
4. 軟件實現(xiàn) 這個溫度控制器制作的最大難點應(yīng)該算是2051程序的編寫和調(diào)試。因在電路中有 數(shù)字顯示,按鍵設(shè)定,數(shù)據(jù)采集和繼電器控制。首先要考慮的是在電路中3個數(shù)碼管的陰極是接在P1上的,也就是說要使用動態(tài)顯示的編程方法,筆者在程序中使用了一個定時中斷去處理顯示,定時器的定時值為20毫秒,每間隔20毫秒程序但會執(zhí)行定時中斷顯示所要顯示的數(shù)字,同時在這個定時中斷中還會去掃描按鍵,看是否有鍵被按下并對其結(jié)果進(jìn)行處理。在這20ms的時間里程序還會完成溫度數(shù)據(jù)的采集和轉(zhuǎn)換和對當(dāng)前溫度和設(shè)置溫度的對比等等。在編寫采集DS18B20數(shù)據(jù)的函數(shù)時運(yùn)用了DS18B20的單總線協(xié)議,在讀寫DS18B20時IO口的電平時序上應(yīng)盡可能做到與資料上提供的數(shù)據(jù)相一致。源程序可見配刊光盤的"本期程序"文件夾,程序大部分使用模塊化設(shè)計,讀者朋友修改或使用它的函數(shù)編寫自己溫控程序,程序的最新版本可以訪問筆者的個人網(wǎng)站http://www.。
 |
圖3:實物圖 |
|