標(biāo)題: 基于單片機(jī)的數(shù)字溫度計設(shè)計 畢業(yè)設(shè)計論文下載 [打印本頁]

作者: xionghongsen    時間: 2016-5-3 16:29
標(biāo)題: 基于單片機(jī)的數(shù)字溫度計設(shè)計 畢業(yè)設(shè)計論文下載

完整的word格式的畢業(yè)設(shè)計論文從這里下載:
基于單片機(jī)的數(shù)字溫度計.doc (903.07 KB, 下載次數(shù): 352)



下面是內(nèi)容預(yù)覽:


摘要:隨著科技的發(fā)展,溫度是經(jīng)常遇到的測量參數(shù)。本文介紹了設(shè)計溫度計的基本方法與測量原理,其組成部分有:AT89C52單片機(jī)、溫度傳感器DS18B20、按鍵掃描電路、顯示電路以及報警電路。它可以實時地測量溫度和設(shè)置溫度上下限,完成對被測對象溫度的自動控制。通過測試表明,該設(shè)計對溫度的控制有方便實用、操作簡單的特點,大大提高了被控對象的各種技術(shù)指標(biāo)。

關(guān)鍵詞: AT89C52; DS18B20;報警電路



The Design of Digital Thermometer Based on Single Chip Microcomputer

Abstract: With the development of science and technology, parameters of temperature usually need to measure. This paper introduces design of basic method and measuring principle of the thermometer, its components include AT89C52 single chip computer, temperature sensor DS18B20, button scanning circuit, display circuit and alarm circuit. It can measure temperature in time and set the scope of temperature, and finish to measure temperature automatically. According to our test, the design are convenient and practical, simple operation, and greatly improving all kinds of technical indicators of controlled object.

Key words:AT89C52; DS18B20; Alarm circuit




1引言
1.1課題背景
1.2課題研究的目的和意義
1.3國內(nèi)外測溫技術(shù)及單片機(jī)現(xiàn)狀
2系統(tǒng)總體方案設(shè)計
2.1系統(tǒng)的設(shè)計指標(biāo)
2.2系統(tǒng)的實現(xiàn)原理
2.3系統(tǒng)的實現(xiàn)方案分析
3 系統(tǒng)硬件設(shè)計
3.1 系統(tǒng)總體結(jié)構(gòu)
3.2 AT89C52簡介
3.3 DS18B20簡介
3.3.1溫度傳感器DS18B20引腳介紹
3.3.2 DS18B20內(nèi)部結(jié)構(gòu)與特點
3.3.3 DS18B20 溫度測量通信協(xié)議
3.4系統(tǒng)硬件設(shè)計
3.4.1 復(fù)位電路模塊
3.4.2 時鐘電路設(shè)模塊
3.4.3 報警電路模塊
3.4.4顯示電路模塊
3.4.5按鍵電路模塊
3.4.6溫度檢測電路模塊
4系統(tǒng)軟件設(shè)計
4.1系統(tǒng)主程序設(shè)計
4.2 DS18B20初始化子程序
4.3 DS18B20讀取溫度子程序
4.4 顯示數(shù)據(jù)處理子程序
4.5按鍵掃描子程序
5 系統(tǒng)軟硬件調(diào)試
總結(jié)



1引言1.1課題背景   毋庸置疑,隨著科學(xué)技術(shù)的發(fā)展和人們生活的需要,近年來單片機(jī)的應(yīng)用領(lǐng)域越來越寬廣。一般的度測量不僅設(shè)計復(fù)雜,而且精確度非常差,而應(yīng)用單片機(jī)使這個問題得到了很好的解決。在現(xiàn)代社會,溫度是一個至關(guān)重要的數(shù)據(jù),而幾十年前的測量方法科技含量太低,顯然不能滿足現(xiàn)代社會對溫度高精確度測量的要求。這些年來專家們研究了幾種測溫技術(shù),這些測溫技術(shù)不但很好的提高了測量精度,而且使產(chǎn)品的質(zhì)量更上一層樓。

由于單片機(jī)具有集成度高,通用性好,功能強(qiáng),尤其體積小,重量輕,耗能低等顯著的優(yōu)勢,因此在日常生活和工業(yè)生產(chǎn)中得到了廣泛應(yīng)用。本課題就是單片機(jī)作為核心器件進(jìn)行設(shè)計的。

1.2課題研究的目的和意義

測量溫度的基本方法是使用溫度計直接讀取溫度,如我們大家經(jīng)常使用的體溫計。隨著工業(yè)生產(chǎn)的需要,人們對溫度的測量有了的更高的要求。在迅速發(fā)展的科學(xué)技術(shù)中,前沿技術(shù)是傳感器技術(shù),特別是溫度傳感技術(shù),已經(jīng)滲透到我們生活的各個方面,溫度測量在工業(yè)生產(chǎn)中占有不可或缺的地位,此外在農(nóng)業(yè)生產(chǎn)中也離不開溫度的測量。綜上所述,測量溫度具有舉重若輕的作用。

單片機(jī)在各個領(lǐng)域的應(yīng)用廣泛,而把它作為數(shù)字溫度計的核心部件只是具體應(yīng)用的一個實例。目前,隨著在惡劣的工作環(huán)境下的對測溫技術(shù)的要求,單片機(jī)的發(fā)展越來越受到人們的重視。

1.3國內(nèi)外測溫技術(shù)及單片機(jī)現(xiàn)狀

不可否認(rèn),跟發(fā)達(dá)國家相比,我國測溫技術(shù)仍然處于較低水平。一般的測溫技術(shù)只能對較平穩(wěn)的環(huán)境溫度進(jìn)行測量,如果用于惡劣的工作環(huán)境,我國的某些技術(shù)還達(dá)不到要求。但是,隨著我國成為世界第二大經(jīng)濟(jì)體,經(jīng)濟(jì)實力直線上升,我國電子企業(yè)也在蓬勃發(fā)展。

眾所周知,單片機(jī)是集成在一塊芯片上的計算機(jī)系統(tǒng),它擁有計算機(jī)系統(tǒng)的主要部件和功能,如 CPU、并行I/O端口、定時與中斷系統(tǒng)、A/D與D/A轉(zhuǎn)換系統(tǒng)、總線系統(tǒng)。隨著科學(xué)技術(shù)的發(fā)展,現(xiàn)在大部分單片機(jī)功能也更加強(qiáng)大。單片機(jī)還可以連接各種各樣的外圍電路,如定時器、復(fù)位電路、時鐘電路、傳感器等等,我們應(yīng)用單片機(jī)可以對各種各樣的數(shù)據(jù)進(jìn)行采集。如連接溫度傳感器DS18B20等芯片,就可以對被測對象進(jìn)行溫度的測量與檢測。

2系統(tǒng)總體方案設(shè)計2.1系統(tǒng)的設(shè)計指標(biāo)

本課題設(shè)計的數(shù)字溫度計要求能夠及時準(zhǔn)確地對被測對象進(jìn)行溫度測量,并將其測得的溫度值顯示在LED數(shù)碼管上,然后與設(shè)定的溫度范圍比較,如果超過溫度限制,則通過蜂鳴器報警,同時報警指示燈閃爍,直到溫度回到規(guī)定的范圍為止。另外,還能夠通過按鍵自己設(shè)置溫度范圍。綜上所述,系統(tǒng)設(shè)計的要求如下:

1.開機(jī)啟動,檢測各元件是否正常工作。

2.正負(fù)溫度辨別(正溫度紅燈亮,負(fù)溫度綠燈亮)。

3.溫度測量的基本范圍是-30℃~125℃。

4.軟件預(yù)設(shè)上限溫度32℃,下限溫度10℃。

5.超過溫度上下限即實現(xiàn)報警功能,報警燈閃爍,蜂鳴器震動并發(fā)聲警示,并在負(fù)溫度時蜂鳴器震動較急促。

6.支持手動按鍵設(shè)置溫度上下限。

2.2系統(tǒng)的實現(xiàn)原理

本系統(tǒng)使用溫度傳感器,并與單片機(jī)連接組成溫度測量系統(tǒng),從而完成測量溫度。溫度傳感器對溫度的變化十分敏感,它能夠把測得的溫度及時準(zhǔn)確的轉(zhuǎn)化為一串的電路信號,這時我們可以通過顯示系統(tǒng)將其測得的溫度值顯示出來,供人們讀取和記錄。比如,溫度傳感器DS18B20是一種集成度很高的溫度測量器件,它能夠根據(jù)當(dāng)前溫度環(huán)境的變化產(chǎn)生出一串?dāng)?shù)字信號。顯然,不同的溫度環(huán)境將會有不同的數(shù)字信號,通過該信號能夠準(zhǔn)確的得到當(dāng)前環(huán)境的溫度值,從而完成溫度的測量。

2.3系統(tǒng)的實現(xiàn)方案分析

我們同樣利用溫度傳感器DS18B20作為測量器件,由于DS18B20的集成度很高,因此該器件需要的外圍電路非常簡單。并且DS18B20體積小,節(jié)省電路板。此外,DS18B20是高封裝的溫度傳感器,能夠直接和單片機(jī)通信。測溫范圍-55℃~+125℃,固有測溫分辨率0.5℃?垢蓴_能力很強(qiáng)。單片機(jī)作為主要組成器件,但這里采用LED 7位數(shù)碼管進(jìn)行溫度值的顯示,顯示溫度值清晰直觀,易于分辨。并且LED數(shù)碼管占用空間小,經(jīng)濟(jì)實惠。

3 系統(tǒng)硬件設(shè)計3.1 系統(tǒng)總體結(jié)構(gòu)

本方案設(shè)計的系統(tǒng)模塊由單片機(jī)系統(tǒng)、溫度傳感器模塊、數(shù)碼管顯示模塊和電源模塊組成,其總體結(jié)構(gòu)如圖1。


圖1 系統(tǒng)結(jié)構(gòu)圖

該系統(tǒng)是以AT89C52 單片機(jī)為核心,在開始運行它向主機(jī)先發(fā)送初始化命令使DS18B20啟動,再發(fā)送溫度轉(zhuǎn)換命令使數(shù)字溫度傳感器DS18B20 把測得的模擬溫度信號轉(zhuǎn)換為數(shù)字信號供單片機(jī)運算。同時,顯示器上顯示出當(dāng)前環(huán)境的溫度,當(dāng)溫度超出設(shè)定的溫度上下限范圍時,蜂鳴器就會發(fā)出警報。

3.2 AT89C52簡介

單片機(jī)經(jīng)過幾十年的蓬勃發(fā)展,目前已經(jīng)是自動控制理論的中流砥柱。對于專業(yè)人員來說,掌握單片機(jī)原理及其應(yīng)用已經(jīng)成為必不可少的一項技能,是專業(yè)人員必備的能力和素質(zhì)之一。單片機(jī)的應(yīng)用十分廣泛,在控制領(lǐng)域、家用電器、食品儲存等方面,都扮演著一個非常重要的角色。

ATMEL公司采用國際先進(jìn)的技術(shù)手段生產(chǎn)的AT89C52單片機(jī)與一般的單片機(jī)有所不同,它不僅是一種8位微控制器,具有低功耗和高性能的特點,還擁有非易失性Flash程序存儲器。它的主要接口與引腳的特點如下。

其引腳圖如圖2所示:

P0口:P0口與其他端口不同,它的輸出級無上拉電阻。作為通用輸出I/O口使用時,輸出級是開漏電路,故用其輸出去驅(qū)動NMOS輸入時外接上拉電阻,上拉電阻一般在10KΩ左右即可。這時每一位輸出可以驅(qū)動4個LS型負(fù)載。用作輸入時,應(yīng)先向端口鎖存器寫1。把P0口用作地址/數(shù)據(jù)總線時,無需外接上拉電阻。作總線輸入時,不需先向端口寫1。P0口作總線時,每一位輸出可以驅(qū)動8個LS型TTL負(fù)載。

圖2 單片機(jī)AT89C52引腳圖

P1~P3口:P1~P3口接有上拉負(fù)載電阻,它們的每一位輸出可以驅(qū)動4個LS型TTL負(fù)載。用作輸出口時,任何TTL或NMOS電路都能以正常的方式驅(qū)動89C51系列單片機(jī)的P1~P3口。由于它們的輸出級接有上拉電阻,因此,在使用時無需外接上拉電阻。由于單片機(jī)的端口輸出電流一般為幾毫安,當(dāng)用作輸出口去驅(qū)動一個晶體管的基極時,應(yīng)在基極和端口之間串聯(lián)一個電阻,以限制高電平時的輸出電流。

              P3口用作第二功能:當(dāng)使用P3口的第二功能時,8個引腳有不同的意義。當(dāng)某位用作第二功能輸入時,該位的鎖存器輸出端被內(nèi)部硬件自動置1,并且W在端口不作第二功能輸出時保持為1,則與非門3輸出低,所以FET截止,該位引腳為高位輸入。因此讀引腳信號無效,三臺緩沖器無效,這樣,從引腳輸入的第二個能信號,經(jīng)緩沖器后被直接送給CPU處理。當(dāng)P3口的某一引腳用作第二功能時,該引腳不能用作通用I/O端口。

P3口各個引腳的第二功能見下表1。







端口引腳
第二功能
P3.0
RXD(串行輸入口)
P3.1
TXD(串行輸出口)
P3.2
INT0(外中斷0)
P3.3
INT1(外中斷1)
P3.4
T0(定時/計時器0外部輸入)
P3.5
T1(定時/計時器1外部輸入)
P3.6
WR(外部數(shù)據(jù)存儲器寫選通)
P3.7
RD(外部數(shù)據(jù)存儲器讀選通)

                           表1  P3口的第二功能圖

RST: RST是復(fù)位信號輸入端,高電平有效。當(dāng)單片機(jī)正常工作時,該引腳出現(xiàn)兩個機(jī)器周期的高電平就會使單片機(jī)復(fù)位;在上電時,由于振蕩器需要一定的起振時間,該引腳的高電平必須保持10ms以上才能保證有效復(fù)位。

              ALE: ALE是地址鎖存器信號,每個機(jī)器周期輸出兩個正脈沖。在訪問片外存儲器時,下降沿用于控制外接的地址鎖存器鎖存從P0口輸出的低8位地址。在沒有接外部存儲器時,可以將該引腳的輸出作為時鐘信號使用,因此它可對外輸出時鐘或用于定時目的。

PROG:為片內(nèi)程序存儲器的編程脈沖輸入端,低電平有效。

              PSEN:片外程序存儲器讀選通信號輸出端,每個機(jī)器周期輸出兩個負(fù)脈沖,低電平有效。在訪問片外數(shù)據(jù)存儲器時,該信號不出現(xiàn)。            

EA/VPP:EA為片外程序存儲器選擇輸入端,該引腳低電平時,使用外部程序存儲器,為高電平時,使用片內(nèi)程序存儲器;VPP為片內(nèi)程序存儲器編程電壓輸入端。

              XTAL1:該引腳接外部晶振和微調(diào)電容的一端,與單片機(jī)內(nèi)振蕩電路一起,產(chǎn)生由外部晶振決定的振蕩頻率。在使用外部時鐘時,該引腳輸入外部時鐘脈沖。

XTAL2:該引腳接外部晶振和微調(diào)電容的另一端,XTAL2接內(nèi)部反向放大器的輸出端,因此在使用外部時鐘時,該引腳接地。

3.3 DS18B20簡介

溫度傳感器是各種傳感器中最常用的一種,早期使用的是模擬溫度傳感器,如熱敏電阻,隨著環(huán)境溫度的變化,它的阻值也按照一定的函數(shù)關(guān)系發(fā)生線性變化,通過采集電阻兩端的電壓,再根據(jù)某個函數(shù)關(guān)系式就可以計算出當(dāng)前環(huán)境溫度。

DS18B20是美國DALLAS半導(dǎo)體公司推出的第一片支持“一線總線”接口的溫度傳感器,它具有微型化、低功耗、高性能、抗干擾能力強(qiáng)、易配置微處理器等優(yōu)點,可直接將溫度轉(zhuǎn)化成串行數(shù)字信號供處理器處理。

3.3.1溫度傳感器DS18B20引腳介紹

溫度傳感器DS18B20有兩種封裝:三腳TO-92直插式和八腳SOIC貼片式,其中三腳TO-92直插式是使用的最多、最普遍的封裝。封裝引腳如圖3所示。

圖3 DS18B20TO-92封裝

下表2列出了溫度傳感器DS18B20的引腳定義

表2 DS18B20的引腳定義
引腳
定義
GND
電源負(fù)極
DQ
信號輸入輸出
VDD
電源正極
NC

引腳功能說明:

GND :接地信號

DQ :數(shù)據(jù)輸入/輸出引腳。開漏單總線接口引腳。當(dāng)被用在寄生電源下,可以向器件提供電源。

VDD :可選VDD引腳,電源電壓范圍3V~5.5V。當(dāng)工作于寄生電源時,此引腳必須接地。

3.3.2 DS18B20內(nèi)部結(jié)構(gòu)與特點

DS18B20的內(nèi)部結(jié)構(gòu)主要包括:寄生電源,溫度傳感器,64位ROM和單總線接口,存放中間數(shù)據(jù)的高速暫存器RAM,用于存儲用戶設(shè)定溫度上下限值的TH和TL觸發(fā)器,存儲與控制邏輯,8位循環(huán)冗余校驗碼(CRC)發(fā)生器等7部分組成。

DS18B20中的溫度傳感器可完成對溫度的測量,以12位轉(zhuǎn)化為例:用16位符號擴(kuò)展的二進(jìn)制補(bǔ)碼讀數(shù)形式提供,以0.0625℃/LSB形式表達(dá),其中S為符號位,12位轉(zhuǎn)化后得到的12位數(shù)據(jù),存儲在DS18B20的兩個8比特的RAM中。DS18B20溫度值格式如二進(jìn)制表2.2所示,其中,前5位是符號位,如果測得的溫度大于0,這5位為0,只要將測得的數(shù)值乘以0.0625即可得到實際溫度;如果溫度小于0,這5位為1,測到的數(shù)值需要取反加1再乘于 0.0625即可得到實際溫度。

圖4 DS18B20溫度值格式表

      

1、配置寄存器

DS18B20配置寄存器各字節(jié)意義如表3下:

表3 DS18B20寄存器中各位內(nèi)容

BIT7

BIT6

BIT5

BIT4

BIT3

BIT2

BIT1

BIT0

TM

R1

RO

1

1

1

1

1


低五位一直都是"1",其中TM是測試模式位,用于設(shè)置溫度傳感器DS18B20是在工作模式還是在測試模式。溫度傳感器DS18B20默認(rèn)該位被設(shè)置為0,我們不要去修改。其中,R1和R0作用主要是設(shè)置分辨率,具體設(shè)置如表4所示:(DS18B20默認(rèn)設(shè)置為12位)。

表4 溫度分辨率設(shè)置表

RR1

RRO

分辨率

溫度最大轉(zhuǎn)換時間

00

00

99位

93.75ms

00

11

110位

187.5ms

11

00

111位

375ms

11

11

112位

750ms


2、高速暫存存儲器

該存儲器一共有9個字節(jié)組成。當(dāng)溫度轉(zhuǎn)換命令發(fā)出后,經(jīng)溫度傳感器的轉(zhuǎn)換所得的溫度值以二進(jìn)制補(bǔ)碼形式存放在該存儲器的前兩個字節(jié)。單片機(jī)可通過單線接口讀到該數(shù)據(jù)。讀取時低位在前,高位在后。對應(yīng)的溫度計算:當(dāng)符號位S=0時,直接將二進(jìn)制位轉(zhuǎn)換為十進(jìn)制;當(dāng)S=1時,先將補(bǔ)碼變?yōu)樵a,再計算十進(jìn)制值。其中第9個字節(jié)是冗余檢驗字節(jié)。


溫度傳感器DS18B20暫存寄存器分布如表5所示。

表5 DS18B20暫存寄存器分布

寄存器內(nèi)容

字節(jié)地址

溫度值低位(LS Byte)

0

溫度值高位(MS Byte)

1

高溫限值(TH)

2

低溫限值(TL)

3

配置寄存器

4

保留

5

保留

6

保留

7

CRC校驗值

8


3.3.3 DS18B20 溫度測量通信協(xié)議

由于DS18B20采用的是1-Wire總線協(xié)議方式,即在一根數(shù)據(jù)線實現(xiàn)數(shù)據(jù)的雙向傳輸,而對AT89S51單片機(jī)來說,硬件上并不支持單總線協(xié)議,因此,我們必須采用軟件的方法來模擬單總線的協(xié)議時序來完成對DS18B20芯片中的數(shù)據(jù)處理。

DS18B20有嚴(yán)格的通信協(xié)議來保證各位數(shù)據(jù)傳輸?shù)恼_性。該協(xié)議定義了幾種信號的時序:初始化時序、讀時序、寫時序。所有時序都是將主機(jī)作為主設(shè)備,單總線器件作為從屬設(shè)備。而每一次命令和數(shù)據(jù)的傳輸都是從主機(jī)主動啟動寫時序開始,

DS18B20的一線工作協(xié)議流程是:初始化→ROM操作指令→存儲器操作指令→數(shù)據(jù)傳輸,其工作時序包括初始化時序、寫時序和讀時序。

它們的工作時序如圖5 (a)(b)(c)所示。

圖5 (a)初始化時序

DS18B20的初始化過程:

1. 先將數(shù)據(jù)線置高電平“1”。

2. 延時,盡可能短一點。

3. 數(shù)據(jù)線拉到低電平“0”。

4. 延時750微秒(該時間的時間范圍可以從480到960微秒)。

5.數(shù)據(jù)線拉到高電平“1”。

6. 延時等待。

7. 若CPU讀到了數(shù)據(jù)線上的低電平“0”后,還要做延時,其延時的時間從發(fā)出的高電平算起(第(5)步的時間算起)最少要480微秒。

8.將數(shù)據(jù)線再次拉高到高電平“1”后結(jié)束。

圖5 (b)寫時序

DS18B20的寫操作過程:

1. 數(shù)據(jù)線先置低電平“0”。

2. 延時確定的時間為15微秒。

3. 按從低位到高位的順序發(fā)送字節(jié),一次只發(fā)送一位。

4. 延時時間為45微秒。  

5. 將數(shù)據(jù)線拉到高電平。

6. 重復(fù)上(1)到(6)的操作直到所有的字節(jié)全部發(fā)送完為止。

7. 最后將數(shù)據(jù)線拉高。  

圖5 (c)讀時序

DS18B20的讀操作過程:

1. 將數(shù)據(jù)線拉高“1”。

2. 延時2微秒。

3. 將數(shù)據(jù)線拉低“0”。

4. 延時15微秒。

5. 將數(shù)據(jù)線拉高“1”。

6. 延時15微秒。

7. 讀數(shù)據(jù)線的狀態(tài)得到1個狀態(tài)位,并進(jìn)行數(shù)據(jù)處理。

8. 延時30微秒。

3.4系統(tǒng)硬件設(shè)計3.4.1 復(fù)位電路模塊

本系統(tǒng)采用按鍵復(fù)位電路,按鍵未按下時,它利用電容來實現(xiàn)復(fù)位,在接電瞬間,RST引腳的電位與電源VCC相同,隨著充電電流的減少,RST的電位逐漸下降。此時只要保證RST為高電平的時間大于兩個機(jī)器周期,便可以正常復(fù)位;按鍵按下時,此時電源VCC經(jīng)兩個電阻分壓,在RST引腳產(chǎn)生一個復(fù)位高電平,從而實現(xiàn)復(fù)位。

復(fù)位電路如圖6所示。

圖6 復(fù)位電路

3.4.2 時鐘電路設(shè)模塊

時鐘電路作用:單片機(jī)外部必須接上振蕩器,提供的高頻脈沖經(jīng)過分頻處理后,成為單片機(jī)內(nèi)部時鐘信號,作為片內(nèi)各部件協(xié)調(diào)工作的控制信號。如果沒有時鐘信號,觸發(fā)器的狀態(tài)就不能改變,單片機(jī)內(nèi)部的所有電路在完成一個任務(wù)后將最終達(dá)到一個穩(wěn)定狀態(tài)而不能再繼續(xù)進(jìn)行其它任何工作了。

時鐘電路如圖7所示:

圖7 時鐘電路

3.4.3 報警電路模塊

當(dāng)被測環(huán)境溫度超過溫度上下限時,我們需要進(jìn)行報警處理,這里用到的是蜂鳴器。

蜂鳴器工作電流一般為10mA,而單片機(jī)的I/O口只能承受幾毫安的電流,因此需要加三極管進(jìn)行驅(qū)動,單片機(jī)的I/O口中的P1.4接三極管的基極,當(dāng)P1.4為低電平時,三極管導(dǎo)通,5V的電壓加載到蜂鳴器兩端,于是蜂鳴器鳴叫;當(dāng)P1.4高電平時,三極管截止,蜂鳴器不鳴叫。

報警電路如下圖8所示:

圖8 報警電路

3.4.4顯示電路模塊

顯示系統(tǒng)是單片機(jī)控制系統(tǒng)的重要組成部分,單片機(jī)應(yīng)用系常采用7段LED數(shù)碼管作為顯示器,這種顯示器具有耗電低、線路簡單、價格低廉等優(yōu)點。

LED數(shù)碼管顯示器可以分為共陰極和共陽極兩種結(jié)構(gòu)。

(1)共陰極結(jié)構(gòu):如果所有的發(fā)光二極管的陰極接在一起,稱為共陰極結(jié)構(gòu);

(2)共陽極結(jié)構(gòu):如果所有的發(fā)光二極管的陽極接在一起,稱為共陽極結(jié)構(gòu)。

七段LED顯示器是由7個LED按—定的圖形排列組成,如圖9所示,七段LED顯示器的各個二極管分別稱為a、b、c、d、e、f、g段,有些七段顯示器增加一個dp段表示小數(shù)點,也稱為八段LED顯示器。

圖9 典型七段LED器件

將數(shù)碼管的引腳和單片機(jī)的數(shù)據(jù)輸出口相連,控制輸出的數(shù)據(jù)可以使數(shù)碼管顯示不同的數(shù)字和字符,通常稱控制發(fā)光二極管的8位字節(jié)數(shù)據(jù)為段選碼。7段LED段選碼如表6所示。

表6 7段LED段選碼

顯示字符
共陰極段選碼
共陽極段選碼
顯示字符
共陰極段選碼
共陽極段選碼
0
3FH
C0H
C
3EH
C6H
1
06H
F9H
D
5EH
AH
2
5BH
A4H
E
79H
86H
3
4FH
B0H
F
71H
8EH
5
6DH
92H
U
3EH
C1H
6
7DH
82H
R
31H
CEH
7
07H
F8H
Y
6EH
91H
8
7FH
80H
8.
FFH
00H
9
6FH
90H
“滅”
00H
FFH
A
77H
88H
B
7CH
83H

    本設(shè)計采用四位共陰極動態(tài)顯示方式,可以直接讀取溫度值,顯示溫度可以精確到1℃。

圖10為顯示電路的連接圖。

圖10 顯示電路

3.4.5按鍵電路模塊

該電路采用彈性按鍵。按鍵電路的作用是手動設(shè)置溫度的上下限。按下K4,進(jìn)行上下限報警切換,通過K1和K2調(diào)節(jié)溫度上下限,最后,按下K3確認(rèn)。

具體的按鍵電路圖如下圖11所示:

                  

圖11 按鍵電路

3.4.6溫度檢測電路模塊

該電路中溫度傳感器采用Dallas公司生產(chǎn)的數(shù)字溫度傳感器DS18B20。該芯片硬件接口簡單,使用方便,且節(jié)省大量的導(dǎo)線,具有很好的通用性。該系統(tǒng)中將單片機(jī)的P1.1引腳與DS18B20的數(shù)據(jù)線連接。

具體的溫度檢測電路圖如下圖12所示:

圖12 溫度檢測電路

4系統(tǒng)軟件設(shè)計 4.1系統(tǒng)主程序設(shè)計

主程序是系統(tǒng)的監(jiān)控程序,在程序運行的過程中必須先經(jīng)過初始化,包括開機(jī)啟動子程序,中斷程序,報警函數(shù),按鍵掃描子程序以及控制端口的初始化工作。系統(tǒng)在初始化完成后就進(jìn)入溫度測量程序,實時的測量當(dāng)前的溫度并通過顯示電路在LCD上顯示。程序中以中斷的方式來重新設(shè)定溫度的上下限,根據(jù)硬件設(shè)計完成對溫度的控制,系統(tǒng)軟件設(shè)計的總體流程圖如下圖13。




































              圖13 系統(tǒng)主程序框圖

主程序如下:

void  main()

{            

    TCON=0x01;         //定時器T0工作在01模式下

    TMOD=0X01;            

              TH0=0XD8;          //裝入初值

              TL0=0XF0;

              EA=1;               //開總中斷

              ET0=1;              //開T0中斷

              TR0=1;              //T0開始運行計數(shù)

              EX0=1;              //開外部中斷0

              for(n=0;n<500;n++)     //顯示啟動LOGo"- - - -"

              {bell=1;warn=1;logo();}

              Red=0;

              while(1)

              {

                  key();

                            ss=ReadTemperature();

        Show();

                            alarm();          //報警函數(shù)

                            if(Flag==1)

                            {bell=!bell;

                            warn=!warn;}     //蜂鳴器滴滴響

                            else {bell=1;

                                  warn=1;}            

              }            

}

4.2 DS18B20初始化子程序

DS18B20的初始化相當(dāng)于DS18B20數(shù)據(jù)頭的作用,DS18B20檢測到初始化電平,準(zhǔn)備開始接收或發(fā)送數(shù)據(jù)。初始化子程序流程圖如下圖14所示。















                          圖14 DS18B20初始化程序流程圖

DS18B20初始化程序如下:

Init_DS18B20(void)              //傳感器初始化

{

              uchar x=0;

              DATA = 1;    //DQ復(fù)位

              delay(10);    //稍做延時

              DATA = 0;    //單片機(jī)將DQ拉低

              delay(80);   //精確延時 大于 480us   

              DATA = 1; //拉高總線

              delay(20);

              x=DATA;    //稍做延時后 如果x=0則初始化成功 x=1則初始化失敗

              delay(30);

}

4.3 DS18B20讀取溫度子程序

讀出溫度子程序的主要功能是讀出RAM中的9字節(jié),在讀出時需進(jìn)行CRC校驗,校驗有錯時不進(jìn)行溫度數(shù)據(jù)的改寫。

DSBl820可以從單總線獲取電源,當(dāng)信號線為高電平時,將能量貯存在內(nèi)部電容器中;當(dāng)單信號線為低電平時,將該電源斷開,直到信號線變?yōu)楦唠娖街匦陆由霞纳?電容)電源為止。DSl8820的供電方式靈活,利用外接電源還可增加系統(tǒng)的穩(wěn)定性和可靠性。圖15為讀取數(shù)據(jù)流程圖。

                    圖15 DS18B20讀取溫度子程序流程圖

讀取溫度子程序如下:

int ReadTemperature(void)     //讀取溫度

{

              uchar a=0;

              uchar b=0;

              int t=0;

              float tt=0;

              Init_DS18B20();

              WriteOneChar(0xCC);    // 跳過讀序號列號的操作

              WriteOneChar(0x44);    // 啟動溫度轉(zhuǎn)換

              Init_DS18B20();

              WriteOneChar(0xCC);   //跳過讀序號列號的操作

              WriteOneChar(0xBE);    //讀取溫度寄存器等(共可讀9個寄存器) 前兩個就是溫度

              a=ReadOneChar();       //低位

              b=ReadOneChar();       //高位

              t=b;

              t<<=8;

              t=t|a;

              tt=t*0.0625;

              t= tt*10+0.5;

              return(t);

}

4.4 顯示數(shù)據(jù)處理子程序

讀出溫度數(shù)據(jù)后,LOW的低四位為溫度的小數(shù)部分,LOW的高四位和HIGH的低四位為溫度的整數(shù)部分,HIGH的高四位全部為1表示負(fù)數(shù),全為0表示正數(shù)。所以先將數(shù)據(jù)提取出來,分為三個部分:小數(shù)部分、整數(shù)部分和符號部分。小數(shù)部分進(jìn)行四舍五入處理:大于0.5℃的話,向個位進(jìn)1;小于0.5℃的時候,舍去不要。當(dāng)數(shù)據(jù)是個負(fù)數(shù)的時候,顯示之前要進(jìn)行數(shù)據(jù)轉(zhuǎn)換,將其整數(shù)部分取反加一。還因為DS18B20最低溫度只能為-55℃,所以可以將整數(shù)部分的最高位換成一個“-”,表示為負(fù)數(shù)。

圖16為溫度數(shù)據(jù)處理程序的流程圖:



                圖16 顯示數(shù)據(jù)處理子程序



以下是顯示正值子函數(shù)的程序:

void  display()

{                           

              buf[1]=temp/1000;           //顯示百位

              buf[2]=temp/100%10;        //顯示十位

              buf[3]=temp%100/10;        //顯示個位

              buf[0]=temp%10;           //小數(shù)位

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

              {

              P2=0xff;                                        // 初始燈為滅的

    P0=0x00;

              P2=0xfd; //顯示小數(shù)點

              P0=0x80; //顯示小數(shù)點

              delay(300);                           

    P2=0xff;                                        // 初始燈為滅的

    P0=0x00;

    P2=0xf7;                                         //片選LCD1

    P0=table[buf[1]];

              delay(300);

              P2=0xff;

    P0=0x00;

    P2=0xfb;                 //片選LCD2

    P0=table[buf[2]];

              delay(300);

              P2=0xff;

    P0=0x00;

              P2=0Xfd;                                        //片選LCD3

              P0=table[buf[3]];

              delay(300);

              P2=0xff;

    P0=0x00;

              P2=0Xfe;

              P0=table[buf[0]];                       //片選LCD4            

              delay(300);

              P2=0xff;

              }

}

4.5按鍵掃描子程序

該系統(tǒng)支持手動設(shè)置溫度上下限,而按鍵掃描的主要功能就是手動設(shè)置溫度的上下限。系統(tǒng)默認(rèn)的溫度上下限是10℃~32℃。當(dāng)被測溫度值處于0℃~125℃時,若被測溫度沒有超過上下限,則蜂鳴器不鳴叫,否則蜂鳴器鳴叫;當(dāng)被測溫度值處于0℃以下時,蜂鳴器鳴叫較急促。

為了防止抖動,按鍵電路中都要消抖的措施,本設(shè)計中是采用的軟件消抖,在單片機(jī)檢測到某個鍵按下后,延時10ms再監(jiān)測,如果仍然按下,才確定按下了該鍵。

按鍵K4、K1、K2、K3分別與單片機(jī)的P2.4-P2.7引腳連接。默認(rèn)狀態(tài)設(shè)置溫度上限,若按下按鍵K4,也就是使P2.4為低電平時,進(jìn)入溫度下限的設(shè)置,再按一次進(jìn)入溫度上限的設(shè)置;在每個溫度上下限設(shè)置里面,按下K1一次增加1℃溫度值,按下按鍵K一次減小1℃溫度值,最后按K3確定。

按鍵掃描子程序的流程圖如下圖17所示:

                           圖17 按鍵掃描子程序

按鍵掃描子程序如下:

void key()                           //按鍵掃描子程序

{   if(k1!=1)

              {

                 delay(20);

                 if(k1!=1)

                 {

                            while(k1!=1)

                              { key_to1();

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

                                Show();

                     }

                 }

              }

              if(k2!=1)

              {

                            delay(20);

                            if(k2!=1)

                            {

                              while(k2!=1)

                                          { key_to2();

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

                                  Show();

                                          }

                            }

              }            

              if(k3!=1)

              {              TR0=1;              //復(fù)位,開定時

        temp=ReadTemperature();

              }

              if(k4!=1)

              {  delay(20);

                 if(k4!=1)

                 {  while(k4!=1);

                    set=!set;

                               if(set==0)

                               { Red=0;Green=1;}

                               else { Green=0;Red=1;}

                            }

              }

}

5 系統(tǒng)軟硬件調(diào)試

本次設(shè)計采用Keil uVision2來編寫C語言程序,通過它的編譯器進(jìn)行編譯、連接,最后將生成的機(jī)器碼下載到單片機(jī)上。

Keil C51編譯器是目前最流行的開發(fā)MCS-51系列單片機(jī)的軟件,它具有C編輯器、宏匯編、鏈接器、庫管理和一個功能強(qiáng)大的仿真調(diào)試等在內(nèi)的功能,并通過一個集成開發(fā)環(huán)境將這些部份組合在一起。

打開Proteus ISIS,在Proteus ISIS編輯窗口中單擊元件列表之上的“P”按鈕 ,添加元件及放置元件。

按照正確的方法,合理地布局將各個元器件連線,得到如下界面,如圖18所示:

圖 18 整體電路圖


把剛才產(chǎn)生的可執(zhí)行hex文件下載到單片機(jī)中,單擊運行按鈕,電路瞬間導(dǎo)通,程序首先進(jìn)入Logo函數(shù)進(jìn)行開機(jī)檢測。此時單片機(jī)給正負(fù)溫度指示燈和報警指示燈高電平,給溫度上限指示燈低電平,使它們正常發(fā)光,給共陰極數(shù)碼管相應(yīng)的位高電平,使其動態(tài)顯示溫度為85℃。由于85℃不在默認(rèn)溫度上下限10℃~32℃之間,所以此時正溫度指示燈亮,報警指示燈閃爍,蜂鳴器也開始鳴叫。大約200ms后,開機(jī)檢測結(jié)束,溫度回到當(dāng)前環(huán)境溫度5℃,由于默認(rèn)的溫度上下限是10℃~32℃,所以

正溫度指示燈亮,報警指示燈閃爍,蜂鳴器鳴叫。

仿真結(jié)果如圖19所示。
圖19 數(shù)字溫度計仿真圖

我們再次調(diào)節(jié)環(huán)境溫度,使環(huán)境溫度處于15℃,由于此時溫度不在溫度上下限10℃~32℃之間,因此單片機(jī)給正溫度指示燈高電平,給報警指示燈低電平,所以正溫度指示燈高電平亮,報警指示燈熄滅,蜂鳴器也不鳴叫。

仿真結(jié)果如圖20所示。


圖20 數(shù)字溫度計仿真圖
再次調(diào)節(jié)溫度,使溫度在-10℃,此時溫度不在溫度上下限之間,此時單片機(jī)給負(fù)溫度指示燈高電平,報警指示燈高電平,所以負(fù)溫度指示燈亮,報警指示燈閃爍,并且蜂鳴器鳴叫較為急促。
仿真結(jié)果如圖21所示。
圖21 數(shù)字溫度計仿真圖
默認(rèn)情況下設(shè)置溫度上限,若按下K4進(jìn)入溫度下限設(shè)置。通過按鍵K1和K2增加或減少溫度值,最后按下K3確認(rèn)。比如設(shè)置溫度上下限為15℃~40℃,當(dāng)環(huán)境溫度處于35℃時,而35℃在設(shè)置的溫度上下限15℃~40℃之間,因此報警電路不工作。
仿真電路如圖22所示。
圖22 數(shù)字溫度計仿真圖

當(dāng)環(huán)境溫度處于12℃時,當(dāng)溫度在溫度上下限15℃~40℃之間時,報警電路開始工作,報警指示燈閃爍,蜂鳴器鳴叫。

仿真電路如圖23所示。

圖23 數(shù)字溫度計仿真圖

結(jié)果分析:

本文介紹并設(shè)計的數(shù)字溫度計的基本測量范圍是-30℃~125℃,并且具有自動報警功能和默認(rèn)溫度上下限(10℃~32℃),還可以手動設(shè)置溫度上下限,用4位一體數(shù)碼管顯示設(shè)置溫度的上下限和當(dāng)前環(huán)境的溫度。由于所采用的是DS18B20溫度傳感器,它的可測量范圍是-55℃~125℃,測量溫度在-10℃~85℃之間時的可分辨溫度是0.5℃,我們將小數(shù)位始終顯示為0,也即顯示的溫度精度是1℃。如果當(dāng)前環(huán)境溫度在默認(rèn)的溫度上下限之間,主函數(shù)不會調(diào)用報警子程序,報警電路不會工作,蜂鳴器也不鳴叫;如果當(dāng)前環(huán)境溫度在默認(rèn)的溫度上下限之外,主函數(shù)就會調(diào)用報警子程序,此時單片機(jī)送給報警指示燈蜂鳴器高電平,報警指示燈閃爍,蜂鳴器鳴叫,直到環(huán)境溫度回到默認(rèn)的溫度上下限之間。當(dāng)然,由于本設(shè)計支持手動設(shè)置溫度上下限,我們也可以手動設(shè)置溫度上下限。

由仿真結(jié)果及設(shè)計要求完成的指標(biāo)可知,該設(shè)計基本符合設(shè)計要求。

總結(jié)

畢業(yè)設(shè)計完成了,在這個過程中使我覺得不論從理論知識還是從實際設(shè)計中都學(xué)到了不少知識。在寫論文開始的初期,由于對溫度傳感器的較陌生,我對于論文的結(jié)構(gòu)以及文獻(xiàn)選取等方面都有很多問題,通過對溫度計原理的認(rèn)識,最后確定了設(shè)計溫度計的功能以及各類功能模塊的器件選擇。認(rèn)識到很多知識以前都沒有接觸過,所以制定了一個大致的計劃,希望能夠很好的完成論文。在接下來的畢業(yè)設(shè)計中,主要是深入對前期溫度設(shè)計方案的認(rèn)識。在這期間,很多知識都是第一次接觸,通過查找了很多知識,認(rèn)真閱讀,但困難最大的還是硬件的設(shè)計和程序編寫方面,第一次設(shè)計起來覺得相當(dāng)吃力,剛開始不知道從何下手。后來,通過老師的指導(dǎo)和同學(xué)的幫助,克服了種種困難完成了設(shè)計。在作畢業(yè)設(shè)計的過程中,還認(rèn)識到理論對實踐有很大的指導(dǎo)作用,只有在正確的理論指導(dǎo)下,才能設(shè)計出合乎實際需要的系統(tǒng)電路。

這次畢業(yè)設(shè)計是對大學(xué)所學(xué)知識的一次實際應(yīng)用,同時對自學(xué)能力提出了很高的要求,所以理論不能聯(lián)系實際,就是嚴(yán)重的錯誤,我們不能只為了考試而學(xué)習(xí)。并且在學(xué)習(xí)的過程中更要廣闊的汲取各方面的知識,才能更好的為以后的工作打好基礎(chǔ)。



作者: admin    時間: 2016-5-9 17:47
51黑有你更精彩。!
作者: 灌灌灌灌1215    時間: 2016-5-10 21:57
留個標(biāo)記!^_^^_^^_^
作者: wning1314    時間: 2017-11-2 16:57
好想下載
作者: yang2215    時間: 2017-12-16 12:43
大神跪求頭文件,加的有的蒙!

作者: yang2215    時間: 2017-12-16 12:47
大神能不能也發(fā)一下頭文件什么的

作者: October__    時間: 2018-1-5 17:00
值得學(xué)習(xí)

作者: 楊3c    時間: 2018-4-22 10:43
不清楚圖片

作者: 1111999999    時間: 2018-4-28 14:45
寫的挺好的可以學(xué)習(xí)一下


作者: 戚嘉丶    時間: 2018-4-28 15:26
超級給力,可以參考一波。
作者: 1069108507    時間: 2018-5-14 22:32
下載下來看看怎么樣
作者: 2784883636    時間: 2018-6-13 17:33
可以參考
作者: kyk009    時間: 2019-1-1 16:36
點個贊
作者: zbr1980    時間: 2019-1-3 11:12
非常需要的知識,知識可惜黑幣不夠啊!
作者: 有本事別收費    時間: 2019-1-19 20:49
太棒了
作者: GTT2    時間: 2019-5-6 11:35
真的是很厲害的大神,從中我可以得到學(xué)習(xí)單片機(jī)的樂趣。好像下載、

作者: 娃子    時間: 2020-5-20 10:19
電路是怎么連接的,各個電路都是分散的。
作者: 四方小屋    時間: 2021-10-15 11:01
謝謝大神的分享,有你更精彩
作者: lh13954044076    時間: 2022-4-14 16:13
我想問一下它的溫度計算公式是什么




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1