數(shù)溫控--完全手冊_51單片機(jī)C語言開發(fā)詳解系列之第11章__綜合實(shí)例——多功能數(shù)字溫度計(jì).ppt_第1頁
數(shù)溫控--完全手冊_51單片機(jī)C語言開發(fā)詳解系列之第11章__綜合實(shí)例——多功能數(shù)字溫度計(jì).ppt_第2頁
數(shù)溫控--完全手冊_51單片機(jī)C語言開發(fā)詳解系列之第11章__綜合實(shí)例——多功能數(shù)字溫度計(jì).ppt_第3頁
數(shù)溫控--完全手冊_51單片機(jī)C語言開發(fā)詳解系列之第11章__綜合實(shí)例——多功能數(shù)字溫度計(jì).ppt_第4頁
數(shù)溫控--完全手冊_51單片機(jī)C語言開發(fā)詳解系列之第11章__綜合實(shí)例——多功能數(shù)字溫度計(jì).ppt_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第11章 綜合實(shí)例多功能數(shù)字溫度計(jì)設(shè)計(jì),通過前面幾章的學(xué)習(xí),讀者已經(jīng)基本掌握了AT89S51單片機(jī)的系統(tǒng)設(shè)計(jì)與程序設(shè)計(jì)方法。從本章開始,將通過綜合的實(shí)例向讀者繼續(xù)深入介紹嵌入式系統(tǒng)開發(fā)的知識和實(shí)例。 本章主要講解一個(gè)多功能數(shù)字溫度計(jì)設(shè)計(jì)的綜合實(shí)例,通過該實(shí)例,讀者能夠?qū)W習(xí)到鍵盤輸入設(shè)計(jì)、LED數(shù)碼管接口設(shè)計(jì)、溫度采集、人機(jī)交互設(shè)計(jì)等各方面的知識。,11.1 系統(tǒng)結(jié)構(gòu)與分析,本章介紹的多功能數(shù)字溫度計(jì)具備溫度計(jì)和時(shí)鐘的功能,該系統(tǒng)由以下幾個(gè)部分組成:單片機(jī)、溫度傳感器、顯示設(shè)備、鍵盤輸入幾部分組成。,11.1.1 多功能數(shù)字溫度計(jì)功能分析,在本章設(shè)計(jì)的多功能溫度計(jì),需要具備以下的功能。 溫度測量

2、:能夠?qū)崟r(shí)顯示當(dāng)前的環(huán)境溫度; 時(shí)鐘功能:能夠作為時(shí)鐘使用,顯示當(dāng)前時(shí)間; 鬧鈴功能:能夠在設(shè)定時(shí)間時(shí)候,作為鬧鈴發(fā)聲; 時(shí)鐘設(shè)置功能:能夠設(shè)定時(shí)鐘,修改當(dāng)前時(shí)間; 電池或者直流穩(wěn)壓電源9V供電;,11.1.2 多功能數(shù)字溫度計(jì)系統(tǒng)分析,多功能數(shù)字溫度計(jì)的原理十分簡單,即通過溫度傳感器測量溫度,通過單片機(jī)采集后在LED數(shù)碼管上顯示出來,同時(shí),該溫度計(jì)還兼有時(shí)鐘的功能。,11.2 DS1620溫度傳感器電路,DS1620是Maxim-Dallas公司生產(chǎn)的一款高性能、寬測溫范圍的串行數(shù)字接口溫度傳感器。下面詳細(xì)介紹DS1620溫度傳感器的使用。,11.2.1 DS1620的性能指標(biāo),DS1620

3、溫度傳感器的主要性能指標(biāo)如下。 供電電壓:2.7V5.5V; 測量溫度范圍:-55C+125C; 測量溫度精度:0.5C; 轉(zhuǎn)換時(shí)間:50ms; 接口:三線串行接口; 可設(shè)定報(bào)警限值; 9Bit溫度數(shù)據(jù)格式。,11.2.2 DS1620的引腳定義,DS1620具有8-Pin的SOIC封裝和DIP雙列直插封裝,其引腳分布如圖所示。,11.2.3 DS1620的溫度格式,DS1620采用的9位的溫度數(shù)據(jù)格式,負(fù)溫度數(shù)據(jù)用補(bǔ)碼表示,最低位表示0.5,因此需要兩個(gè)8位寄存器存儲(chǔ)溫度值,如圖所示為溫度為-25C的數(shù)據(jù)值。,11.2.4 DS1620的三線數(shù)據(jù)串行接口,DS1620的三線數(shù)據(jù)串行接口由一下

4、三個(gè)信號線組成。 RST(復(fù)位); CLK(時(shí)鐘); DQ(數(shù)據(jù))。,11.2.5 DS1620的控制寄存器,DS1620具有一個(gè)8位的控制寄存器,用于控制溫度傳感器的所有操作,其寄存器各位分布如圖所示。,11.2.6 DS1620的操作字,要對DS1620進(jìn)行需要的操作,就需要執(zhí)行DS1620的操作字,如圖11.8時(shí)序圖中的Protocol部分就是操作字的代碼,跟隨Protocol后的是操作字的參數(shù)或者讀取值。 DS1620共有如下的9個(gè)不同的操作字,通過不同的操作字可以實(shí)現(xiàn)開始轉(zhuǎn)換溫度、對DS1620的寄存器進(jìn)行讀寫、讀取溫度數(shù)據(jù)、設(shè)置TH和TL等操作。 AAH:讀取轉(zhuǎn)換好的溫度數(shù)據(jù),從指

5、令輸入后的第9個(gè)時(shí)鐘脈沖開始,將輸出溫度寄存器中的數(shù)據(jù); 01H:給高溫臨界寄存器寫入TH數(shù)據(jù);02H:給低溫臨界寄存器寫入TL數(shù)據(jù); A1H:讀高溫臨界寄存器中的TH數(shù)據(jù);A2H:讀低溫臨界寄存器中的TL數(shù)據(jù); EEH:開始轉(zhuǎn)換溫度數(shù)據(jù);22H:停止轉(zhuǎn)換溫度數(shù)據(jù); 0CH:寫控制寄存器;ACH:讀控制寄存器。,11.2.7 DS1620的單獨(dú)工作模式,DS1620可以工作在無單片機(jī)控制的系統(tǒng)中,稱為DS1620的單獨(dú)工作模式,在這種工作模式下,主要是依靠DS1620的三個(gè)溫度限制輸出引腳進(jìn)行控制,作為熱繼電器使用。 使用該工作模式必須寫入控制寄存器操作模式和TH、TL寄存器的溫度設(shè)定值,使用

6、CLK/CONV用作轉(zhuǎn)換開始控制端。這種工作模式下,控制寄存器的CPU標(biāo)志位必須設(shè)為“0”。,11.2.8 DS1620的單片機(jī)接口電路,當(dāng)使用AT89S51控制DS1620進(jìn)行溫度測量時(shí),只需要使用AT89S51的三個(gè)引腳和DS1620的串行接口按照通訊協(xié)議進(jìn)行通訊即可,其電路如圖所示。,11.3 MAX7219數(shù)碼管驅(qū)動(dòng)電路,MAX7219是Maxim公司生產(chǎn)的一款高性能8位共陰極數(shù)碼管驅(qū)動(dòng)芯片,通過MAX7219可以使用單片機(jī)極少的引腳實(shí)現(xiàn)多個(gè)數(shù)碼管的顯示驅(qū)動(dòng)。,11.3.1 MAX7219的性能指標(biāo),MAX7219的主要性能指標(biāo)如下。 10Mhz的串行接口; 獨(dú)立的LED數(shù)碼管段控制;

7、 可以使用內(nèi)部BCD數(shù)碼管解碼; 150uA的Shut-Down電流; 可以調(diào)節(jié)數(shù)碼管發(fā)光強(qiáng)度; 工作溫度范圍:-40C85C;,11.3.2 MAX7219的引腳定義,如圖所示,MAX7219具有24引腳的SO貼片與DIP雙列直插兩種不同的封裝。,11.3.3 MAX7219的串行數(shù)據(jù)通訊,單片機(jī)需要通過D0D15的16位串行通訊對MAX7219進(jìn)行控制,,11.3.4 MAX7219的內(nèi)部寄存器地址,要實(shí)現(xiàn)數(shù)碼管的不同模式、不同形式下的驅(qū)動(dòng),就需要對MAX7219的內(nèi)部寄存器進(jìn)行操作,寄存器的地址為數(shù)據(jù)D8D11位,如圖所示。,11.3.5 MAX7219的數(shù)字位寄存器,數(shù)字位寄存器的地址

8、為01H08H,其對應(yīng)了每個(gè)數(shù)碼管的現(xiàn)實(shí)內(nèi)容,在沒有進(jìn)行使用解碼模式時(shí),其存儲(chǔ)數(shù)據(jù)與數(shù)碼管顯示的對應(yīng)方式如圖所示。,11.3.6 MAX7219的停機(jī)寄存器,停機(jī)寄存器用于關(guān)閉MAX7219,如圖所示,當(dāng)D0=0 時(shí),MAX721 處于停機(jī)狀態(tài);當(dāng)D0=1 時(shí),處于正常工作狀態(tài)。,11.3.7 MAX7219的測試寄存器,測試寄存器用于測試數(shù)碼管和MAX7219十分正常工作,如圖所示,當(dāng)D0=0時(shí),MAX7219 按設(shè)定模式正常工作;當(dāng)D0=1 時(shí),處于測試狀態(tài)。 在測試狀態(tài)下,無論MAX7219 處于什么模式,全部LED 將按最大亮度顯示。,11.3.8 MAX7219的亮度寄存器,數(shù)碼管的

9、現(xiàn)實(shí)亮度可以用硬件和軟件兩種方法調(diào)節(jié),亮度寄存器中的D0D3位可以控制LED 顯示器的亮度,如圖所示,通過改變亮度寄存器的值,可以調(diào)整MAX7210驅(qū)動(dòng)數(shù)碼管的有效循環(huán)時(shí)間,從而改變數(shù)碼管顯示的亮度。,11.3.9 MAX7219的掃描界限寄存器,MAX7219的掃描界限寄存器用于限定MAX7219的掃描數(shù)碼管的個(gè)數(shù),這個(gè)主要是用于當(dāng)MAX7219被用于驅(qū)動(dòng)不到8個(gè)數(shù)碼管的情況下,例如本章的數(shù)碼溫度計(jì)只使用了6個(gè)數(shù)碼管,就可以限制掃描數(shù)碼管的個(gè)數(shù)為6。 如圖所示,該寄存器中D0D3 位數(shù)據(jù)設(shè)定值為07H,設(shè)定值表示顯示器動(dòng)態(tài)掃描個(gè)數(shù)為18。,11.3.10 MAX7219的譯碼寄存器,該寄存器

10、的8 位二進(jìn)制數(shù)的各位分別控制8 個(gè)LED 顯示器的譯碼方式。當(dāng)高電平時(shí),選擇BCD-B 譯碼模式,當(dāng)?shù)碗娖綍r(shí)選擇不譯碼模式,而使用送來數(shù)據(jù)為字型碼,其具體對應(yīng)的實(shí)例如圖所示。,11.3.11 MAX7219驅(qū)動(dòng)電路設(shè)計(jì),如圖所示為官方推薦的MAX7219常用驅(qū)動(dòng)電路連接圖,圖中ISET引腳連接的是硬件調(diào)節(jié)數(shù)碼管亮度的電阻,可以通過更改外接電阻值改變數(shù)碼管的亮度。 DIG0DIG7引腳分別與8位數(shù)碼管的共陰極相連,SEG AG及其DP引腳分別與每個(gè)數(shù)碼管的AG與GP段相連,AG以及DP各段的定義請參考圖,11.4 其他硬件電路設(shè)計(jì),除了溫度傳感器電路和數(shù)碼管驅(qū)動(dòng)電路,在本節(jié)中繼續(xù)介紹多功能溫度

11、計(jì)其余的硬件電路設(shè)計(jì),包括單片機(jī)最小系統(tǒng)、電源系統(tǒng)、按鍵輸入等部分。,11.4.1 AT89S51單片機(jī)最小系統(tǒng)電路,在該設(shè)計(jì)中采用了AT89S51單片機(jī)作為核心處理器,因此在電路中首先需要設(shè)計(jì)的是AT89S51的最小系統(tǒng)。 AT89S51單片機(jī)的最小系統(tǒng)電路包含以下幾個(gè)部分: 單片機(jī)供電電路:AT89S51需要具有可靠的5V供電,在電路圖中的VCC和GND為供電網(wǎng)絡(luò)標(biāo)識符; 振蕩電路:AT89S51需要一個(gè)穩(wěn)定的振蕩電路才能夠正常工作,在該電路采用了24Mhz的晶振作為AT89S51的時(shí)鐘源; 復(fù)位電路:復(fù)位電路是單片機(jī)正常運(yùn)行的一個(gè)必要部分,復(fù)位電路應(yīng)該保證單片機(jī)在上電的瞬間進(jìn)行一次有效的

12、復(fù)位,在單片機(jī)正常工作時(shí)將RST引腳置低。此外通過一個(gè)按鍵進(jìn)行手動(dòng)復(fù)位,在單片機(jī)運(yùn)行不正常時(shí)使用。,11.4.2 鍵盤輸入電路,由于多功能數(shù)字溫度計(jì)具備時(shí)鐘的功能,因此需要具有設(shè)置時(shí)鐘的按鍵輸入設(shè)備,在本章案例中采用了4個(gè)上拉的按鍵作為輸入設(shè)備,與AT89S51的P1_0P1_3相連,其電路如圖所示。 鍵盤輸入的具體設(shè)計(jì)細(xì)節(jié)請參考本書第7章。,11.4.3 電源電路,為了降低成本,該多功能數(shù)字溫度計(jì)采用了MC7805作為電源芯片,MC7805是使用最為廣泛的一種電源穩(wěn)壓芯片,各大芯片公司都有生產(chǎn)或具有兼容產(chǎn)品。 從芯片的手冊上可知,MC7805能夠?qū)?30V的輸入電壓穩(wěn)壓至5V輸出,但是由于M

13、C7805不是開關(guān)電源,而是線性穩(wěn)壓電源,因此多余的電壓都將轉(zhuǎn)換為熱能被消耗,導(dǎo)致芯片發(fā)熱,因此MC7805的輸入電壓不宜太高。 采用MC7805作為電源的電路,其中BAT是電池電源輸入端,一般為9V。,11.4.4 多功能數(shù)字溫度計(jì)的硬件電路,通過11.2.111.2.5小節(jié)的設(shè)計(jì)分析,可以得到該多功能數(shù)字溫度計(jì)的硬件電路圖如圖所示,其中P2為電源輸入接口,蜂鳴器使用P2_7引腳驅(qū)動(dòng)。,11.5 多功能數(shù)字溫度計(jì)軟件設(shè)計(jì),本節(jié)講解多功能溫度計(jì)的軟件設(shè)計(jì),軟件要實(shí)現(xiàn)的功能包括實(shí)時(shí)溫度測量顯示、時(shí)鐘顯示、時(shí)鐘設(shè)置、鬧鈴設(shè)置、鬧鈴等功能。下面詳細(xì)講解軟件的設(shè)計(jì)過程。,11.5.1 軟件結(jié)構(gòu)分析,一

14、個(gè)嵌入式系統(tǒng)軟件總是由復(fù)雜的程序構(gòu)成的,一般來說,一個(gè)完整的嵌入式程序分為兩個(gè)主要的層次,功能軟件和底層驅(qū)動(dòng)。,11.5.2 DS1620驅(qū)動(dòng)程序設(shè)計(jì),DS1620的驅(qū)動(dòng)程序由以下幾部分組成。 DS1620寫字節(jié)函數(shù);DS1620讀字節(jié)函數(shù); DS1620寫控制寄存器函數(shù);DS1620讀控制寄存器函數(shù); DS1620讀取溫度值函數(shù);DS1620啟動(dòng)轉(zhuǎn)換函數(shù); DS1620初始化函數(shù); 11.5.2.1 宏定義 11.5.2.2 DS1620寫字節(jié)函數(shù) 11.5.2.3 DS1620讀字節(jié)函數(shù) 11.5.2.4 DS1620寫控制寄存器函數(shù) 11.5.2.5 DS1620讀控制寄存器函數(shù) 11.

15、5.2.6 DS1620讀溫度值函數(shù) 11.5.2.7 DS1620啟動(dòng)溫度轉(zhuǎn)換函數(shù) 11.5.2.8 DS1620初始化函數(shù),11.5.3 MAX7219驅(qū)動(dòng)程序設(shè)計(jì),MAX7219的驅(qū)動(dòng)程序由以下幾部分組成。 MAX7219寫控制函數(shù); MAX7219初始化函數(shù); 11.5.3.1 宏定義 11.5.3.2 MAX7219寫控制函數(shù) 11.5.3.3 MAX7219初始化函數(shù),11.5.4 鍵盤接口程序設(shè)計(jì),鍵盤接口程序的功能是對按下的按鍵進(jìn)行識別,為程序提供按鍵碼,為執(zhí)行下一步程序提供來自用戶的反饋。 鍵盤接口程序比較簡單,就是使用P1口讀取按鍵的值,然后返回按鍵值,具體的按鍵輸入程序過

16、程請讀者參考本書第七章。 11.5.4.1 宏定義 11.5.4.2 鍵盤接口程序,11.5.5 蜂鳴器驅(qū)動(dòng)程序設(shè)計(jì),驅(qū)動(dòng)蜂鳴器就是靠AT89S51的P2_7引腳,驅(qū)動(dòng)蜂鳴器就是通過P2_7輸出一個(gè)低電平,將三極管導(dǎo)通,從而驅(qū)動(dòng)蜂鳴器發(fā)聲。 11.5.5.1 宏定義 11.5.5.2 蜂鳴器驅(qū)動(dòng),11.5.6 定時(shí)器時(shí)鐘基準(zhǔn)設(shè)計(jì),定時(shí)器時(shí)鐘基準(zhǔn)的目的是產(chǎn)生以一秒為周期的時(shí)鐘基準(zhǔn),這樣就可作為時(shí)鐘的驅(qū)動(dòng)基準(zhǔn)。 利用定時(shí)器T0可以產(chǎn)生2ms的中斷脈沖,500個(gè)2ms技術(shù)即為1s。在使用24MHz晶振時(shí),產(chǎn)生2ms需要的計(jì)數(shù)器初值為: #define TH0_VALUE 0 x06 #define

17、TL0_VALUE 0 x00 11.5.6.1 定時(shí)器時(shí)鐘中斷 11.5.6.2 定時(shí)器初始化函數(shù) 11.5.6.3 定時(shí)器啟動(dòng)函數(shù),11.5.7 時(shí)鐘顯示程序設(shè)計(jì),時(shí)鐘顯示程序的功能是每隔一分鐘更新一次顯示的時(shí)鐘值,時(shí)鐘值按照24小時(shí)的格式進(jìn)行顯示,具體函數(shù)代碼如下。,11.5.8 鬧鈴程序設(shè)計(jì),鬧鈴程序?qū)崿F(xiàn)的功能是,當(dāng)當(dāng)前時(shí)間和鬧鈴時(shí)間一致時(shí),鬧鈴開始發(fā)聲報(bào)警,,11.5.9 按鍵操作程序設(shè)計(jì),用戶要通過鍵盤操作進(jìn)行鬧鈴和時(shí)鐘的設(shè)置,因此按鍵操作函數(shù)比較復(fù)雜,在函數(shù)中調(diào)用了鍵盤接口函數(shù),,11.5.10 顯示溫度程序設(shè)計(jì),顯示溫度程序的功能是在溫度計(jì)上實(shí)時(shí)顯示當(dāng)前所測量的溫度值,程序調(diào)用

18、了DS1620讀溫度函數(shù),具體代碼如下。,11.5.11 主程序,在所有函數(shù)和分支程序都設(shè)計(jì)完成后,主程序的設(shè)計(jì)變得十分簡單,主程序的工作是初始化各個(gè)部件,并在無限循環(huán)內(nèi)不斷運(yùn)行各個(gè)子分支程序,,11.6 多功能數(shù)字溫度計(jì)工程文件,與之前章節(jié)介紹的小程序不同,在本章的案例中,對于這樣一個(gè)較大的工程,為了使得所有的函數(shù)和分支程序能夠統(tǒng)一編譯,需要在Keil C51里統(tǒng)一建立一個(gè)工程文件,進(jìn)行統(tǒng)一的編譯與調(diào)試。,11.6.1 主函數(shù),Main.C為整個(gè)工程的主體文件,包含了工程的入口函數(shù)main()。(具體內(nèi)容請參照本書),11.6.2 溫度傳感器DS1620函數(shù)庫,DS1620.C包含了所有對溫度傳感器DS1620的操作函數(shù),具體代碼如下所示。(具體內(nèi)容請參照本書),11.6.3 DS1620引腳定義,DS1620.h對DS1620的操作函數(shù)進(jìn)行了聲明,具體代碼如下所示。(具體內(nèi)容請參照本書),11.6.4 數(shù)碼管驅(qū)動(dòng)MAX7219函數(shù)庫,MAX7219.c包含了所有對數(shù)碼管驅(qū)動(dòng)MAX7219的操作函數(shù)以及溫度顯示函數(shù),具體代碼如下所示。(具體內(nèi)容請參照本書),11.6.5 MAX7219頭文件定義,MAX7219.h對MAX7219的定義進(jìn)行了聲明,其代碼如下所示。(具體內(nèi)容請參照本書),11.6.6 鍵盤操作函數(shù),Keys.c包含了所有的鍵盤操作函數(shù),具體代碼如下。

溫馨提示

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

評論

0/150

提交評論