久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 38837|回復: 18
打印 上一主題 下一主題
收起左側

基于單片機的數字溫度計設計 畢業設計論文下載

  [復制鏈接]
跳轉到指定樓層
樓主
ID:118171 發表于 2016-5-3 16:29 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

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



下面是內容預覽:


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

關鍵詞: 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國內外測溫技術及單片機現狀
2系統總體方案設計
2.1系統的設計指標
2.2系統的實現原理
2.3系統的實現方案分析
3 系統硬件設計
3.1 系統總體結構
3.2 AT89C52簡介
3.3 DS18B20簡介
3.3.1溫度傳感器DS18B20引腳介紹
3.3.2 DS18B20內部結構與特點
3.3.3 DS18B20 溫度測量通信協議
3.4系統硬件設計
3.4.1 復位電路模塊
3.4.2 時鐘電路設模塊
3.4.3 報警電路模塊
3.4.4顯示電路模塊
3.4.5按鍵電路模塊
3.4.6溫度檢測電路模塊
4系統軟件設計
4.1系統主程序設計
4.2 DS18B20初始化子程序
4.3 DS18B20讀取溫度子程序
4.4 顯示數據處理子程序
4.5按鍵掃描子程序
5 系統軟硬件調試
總結



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

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

1.2課題研究的目的和意義

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

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

1.3國內外測溫技術及單片機現狀

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

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

2系統總體方案設計2.1系統的設計指標

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

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

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

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

4.軟件預設上限溫度32℃,下限溫度10℃。

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

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

2.2系統的實現原理

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

2.3系統的實現方案分析

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

3 系統硬件設計3.1 系統總體結構

本方案設計的系統模塊由單片機系統、溫度傳感器模塊、數碼管顯示模塊和電源模塊組成,其總體結構如圖1。


圖1 系統結構圖

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

3.2 AT89C52簡介

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

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

其引腳圖如圖2所示:

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

圖2 單片機AT89C52引腳圖

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

              P3口用作第二功能:當使用P3口的第二功能時,8個引腳有不同的意義。當某位用作第二功能輸入時,該位的鎖存器輸出端被內部硬件自動置1,并且W在端口不作第二功能輸出時保持為1,則與非門3輸出低,所以FET截止,該位引腳為高位輸入。因此讀引腳信號無效,三臺緩沖器無效,這樣,從引腳輸入的第二個能信號,經緩沖器后被直接送給CPU處理。當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(外部數據存儲器寫選通)
P3.7
RD(外部數據存儲器讀選通)

                           表1  P3口的第二功能圖

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

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

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

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

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

              XTAL1:該引腳接外部晶振和微調電容的一端,與單片機內振蕩電路一起,產生由外部晶振決定的振蕩頻率。在使用外部時鐘時,該引腳輸入外部時鐘脈沖。

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

3.3 DS18B20簡介

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

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

3.3.1溫度傳感器DS18B20引腳介紹

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

圖3 DS18B20TO-92封裝

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

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

引腳功能說明:

GND :接地信號

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

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

3.3.2 DS18B20內部結構與特點

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

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

圖4 DS18B20溫度值格式表

      

1、配置寄存器

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

表3 DS18B20寄存器中各位內容

BIT7

BIT6

BIT5

BIT4

BIT3

BIT2

BIT1

BIT0

TM

R1

RO

1

1

1

1

1


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

表4 溫度分辨率設置表

RR1

RRO

分辨率

溫度最大轉換時間

00

00

99位

93.75ms

00

11

110位

187.5ms

11

00

111位

375ms

11

11

112位

750ms


2、高速暫存存儲器

該存儲器一共有9個字節組成。當溫度轉換命令發出后,經溫度傳感器的轉換所得的溫度值以二進制補碼形式存放在該存儲器的前兩個字節。單片機可通過單線接口讀到該數據。讀取時低位在前,高位在后。對應的溫度計算:當符號位S=0時,直接將二進制位轉換為十進制;當S=1時,先將補碼變為原碼,再計算十進制值。其中第9個字節是冗余檢驗字節。


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

表5 DS18B20暫存寄存器分布

寄存器內容

字節地址

溫度值低位(LS Byte)

0

溫度值高位(MS Byte)

1

高溫限值(TH)

2

低溫限值(TL)

3

配置寄存器

4

保留

5

保留

6

保留

7

CRC校驗值

8


3.3.3 DS18B20 溫度測量通信協議

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

DS18B20有嚴格的通信協議來保證各位數據傳輸的正確性。該協議定義了幾種信號的時序:初始化時序、讀時序、寫時序。所有時序都是將主機作為主設備,單總線器件作為從屬設備。而每一次命令和數據的傳輸都是從主機主動啟動寫時序開始,

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

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

圖5 (a)初始化時序

DS18B20的初始化過程:

1. 先將數據線置高電平“1”。

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

3. 數據線拉到低電平“0”。

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

5.數據線拉到高電平“1”。

6. 延時等待。

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

8.將數據線再次拉高到高電平“1”后結束。

圖5 (b)寫時序

DS18B20的寫操作過程:

1. 數據線先置低電平“0”。

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

3. 按從低位到高位的順序發送字節,一次只發送一位。

4. 延時時間為45微秒。  

5. 將數據線拉到高電平。

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

7. 最后將數據線拉高。  

圖5 (c)讀時序

DS18B20的讀操作過程:

1. 將數據線拉高“1”。

2. 延時2微秒。

3. 將數據線拉低“0”。

4. 延時15微秒。

5. 將數據線拉高“1”。

6. 延時15微秒。

7. 讀數據線的狀態得到1個狀態位,并進行數據處理。

8. 延時30微秒。

3.4系統硬件設計3.4.1 復位電路模塊

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

復位電路如圖6所示。

圖6 復位電路

3.4.2 時鐘電路設模塊

時鐘電路作用:單片機外部必須接上振蕩器,提供的高頻脈沖經過分頻處理后,成為單片機內部時鐘信號,作為片內各部件協調工作的控制信號。如果沒有時鐘信號,觸發器的狀態就不能改變,單片機內部的所有電路在完成一個任務后將最終達到一個穩定狀態而不能再繼續進行其它任何工作了。

時鐘電路如圖7所示:

圖7 時鐘電路

3.4.3 報警電路模塊

當被測環境溫度超過溫度上下限時,我們需要進行報警處理,這里用到的是蜂鳴器。

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

報警電路如下圖8所示:

圖8 報警電路

3.4.4顯示電路模塊

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

LED數碼管顯示器可以分為共陰極和共陽極兩種結構。

(1)共陰極結構:如果所有的發光二極管的陰極接在一起,稱為共陰極結構;

(2)共陽極結構:如果所有的發光二極管的陽極接在一起,稱為共陽極結構。

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

圖9 典型七段LED器件

將數碼管的引腳和單片機的數據輸出口相連,控制輸出的數據可以使數碼管顯示不同的數字和字符,通常稱控制發光二極管的8位字節數據為段選碼。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

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

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

圖10 顯示電路

3.4.5按鍵電路模塊

該電路采用彈性按鍵。按鍵電路的作用是手動設置溫度的上下限。按下K4,進行上下限報警切換,通過K1和K2調節溫度上下限,最后,按下K3確認。

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

                  

圖11 按鍵電路

3.4.6溫度檢測電路模塊

該電路中溫度傳感器采用Dallas公司生產的數字溫度傳感器DS18B20。該芯片硬件接口簡單,使用方便,且節省大量的導線,具有很好的通用性。該系統中將單片機的P1.1引腳與DS18B20的數據線連接。

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

圖12 溫度檢測電路

4系統軟件設計 4.1系統主程序設計

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




































              圖13 系統主程序框圖

主程序如下:

void  main()

{            

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

    TMOD=0X01;            

              TH0=0XD8;          //裝入初值

              TL0=0XF0;

              EA=1;               //開總中斷

              ET0=1;              //開T0中斷

              TR0=1;              //T0開始運行計數

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

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

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

              Red=0;

              while(1)

              {

                  key();

                            ss=ReadTemperature();

        Show();

                            alarm();          //報警函數

                            if(Flag==1)

                            {bell=!bell;

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

                            else {bell=1;

                                  warn=1;}            

              }            

}

4.2 DS18B20初始化子程序

DS18B20的初始化相當于DS18B20數據頭的作用,DS18B20檢測到初始化電平,準備開始接收或發送數據。初始化子程序流程圖如下圖14所示。















                          圖14 DS18B20初始化程序流程圖

DS18B20初始化程序如下:

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

{

              uchar x=0;

              DATA = 1;    //DQ復位

              delay(10);    //稍做延時

              DATA = 0;    //單片機將DQ拉低

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

              DATA = 1; //拉高總線

              delay(20);

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

              delay(30);

}

4.3 DS18B20讀取溫度子程序

讀出溫度子程序的主要功能是讀出RAM中的9字節,在讀出時需進行CRC校驗,校驗有錯時不進行溫度數據的改寫。

DSBl820可以從單總線獲取電源,當信號線為高電平時,將能量貯存在內部電容器中;當單信號線為低電平時,將該電源斷開,直到信號線變為高電平重新接上寄生(電容)電源為止。DSl8820的供電方式靈活,利用外接電源還可增加系統的穩定性和可靠性。圖15為讀取數據流程圖。

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

讀取溫度子程序如下:

int ReadTemperature(void)     //讀取溫度

{

              uchar a=0;

              uchar b=0;

              int t=0;

              float tt=0;

              Init_DS18B20();

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

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

              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 顯示數據處理子程序

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

圖16為溫度數據處理程序的流程圖:



                圖16 顯示數據處理子程序



以下是顯示正值子函數的程序:

void  display()

{                           

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

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

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

              buf[0]=temp%10;           //小數位

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

              {

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

    P0=0x00;

              P2=0xfd; //顯示小數點

              P0=0x80; //顯示小數點

              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按鍵掃描子程序

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

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

按鍵K4、K1、K2、K3分別與單片機的P2.4-P2.7引腳連接。默認狀態設置溫度上限,若按下按鍵K4,也就是使P2.4為低電平時,進入溫度下限的設置,再按一次進入溫度上限的設置;在每個溫度上下限設置里面,按下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;              //復位,開定時

        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 系統軟硬件調試

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

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

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

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

圖 18 整體電路圖


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

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

仿真結果如圖19所示。
圖19 數字溫度計仿真圖

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

仿真結果如圖20所示。


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

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

仿真電路如圖23所示。

圖23 數字溫度計仿真圖

結果分析:

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

由仿真結果及設計要求完成的指標可知,該設計基本符合設計要求。

總結

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

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


評分

參與人數 3黑幣 +110 收起 理由
小健2333 + 5 很給力!
qingqingqingqin + 5 很給力!
admin + 100 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏13 分享淘帖 頂5 踩
回復

使用道具 舉報

沙發
ID:1 發表于 2016-5-9 17:47 | 只看該作者
51黑有你更精彩!!!
回復

使用道具 舉報

板凳
ID:119905 發表于 2016-5-10 21:57 來自手機 | 只看該作者
留個標記!^_^^_^^_^
回復

使用道具 舉報

地板
ID:244345 發表于 2017-11-2 16:57 | 只看該作者
好想下載
回復

使用道具 舉報

5#
ID:253893 發表于 2017-12-16 12:43 | 只看該作者
大神跪求頭文件,加的有的蒙!
回復

使用道具 舉報

6#
ID:253893 發表于 2017-12-16 12:47 | 只看該作者
大神能不能也發一下頭文件什么的
回復

使用道具 舉報

7#
ID:272030 發表于 2018-1-5 17:00 | 只看該作者
值得學習
回復

使用道具 舉報

8#
ID:313505 發表于 2018-4-22 10:43 | 只看該作者
不清楚圖片
回復

使用道具 舉報

9#
ID:318439 發表于 2018-4-28 14:45 | 只看該作者
寫的挺好的可以學習一下

回復

使用道具 舉報

10#
ID:317780 發表于 2018-4-28 15:26 | 只看該作者
超級給力,可以參考一波。
回復

使用道具 舉報

11#
ID:330012 發表于 2018-5-14 22:32 | 只看該作者
下載下來看看怎么樣
回復

使用道具 舉報

12#
ID:346302 發表于 2018-6-13 17:33 | 只看該作者
可以參考
回復

使用道具 舉報

13#
ID:458644 發表于 2019-1-1 16:36 | 只看該作者
點個贊
回復

使用道具 舉報

14#
ID:183703 發表于 2019-1-3 11:12 | 只看該作者
非常需要的知識,知識可惜黑幣不夠。。
回復

使用道具 舉報

15#
ID:470695 發表于 2019-1-19 20:49 | 只看該作者
太棒了
回復

使用道具 舉報

16#
ID:522603 發表于 2019-5-6 11:35 | 只看該作者
真的是很厲害的大神,從中我可以得到學習單片機的樂趣。好像下載、
回復

使用道具 舉報

17#
ID:692039 發表于 2020-5-20 10:19 來自手機 | 只看該作者
電路是怎么連接的,各個電路都是分散的?
回復

使用道具 舉報

18#
ID:972241 發表于 2021-10-15 11:01 | 只看該作者
謝謝大神的分享,有你更精彩
回復

使用道具 舉報

19#
ID:1012756 發表于 2022-4-14 16:13 | 只看該作者
我想問一下它的溫度計算公式是什么
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 免费av毛片 | 超碰在线免费 | 成人av高清| 91久久久久久 | 国产精品毛片一区二区在线看 | 日韩中文字幕一区二区 | 欧美一级欧美一级在线播放 | 中文精品视频 | 亚洲毛片 | www.99re| 免费观看一级特黄欧美大片 | 一级黄色夫妻生活 | 国产黄色网 | 亚洲黄色av| www.久草| 国产精品一区二区三区四区 | 亚洲精品久久久久久一区二区 | 国产精品99精品久久免费 | 日韩精品中文字幕在线 | 国产欧美日韩一区二区三区在线 | 日韩视频二区 | 欧美日韩电影免费观看 | 欧美不卡 | 亚洲人va欧美va人人爽 | 国产三级精品三级在线观看四季网 | 国产精品久久免费观看 | 日韩中文字幕 | 在线观看中文字幕 | 福利片在线观看 | 精品美女| 日产精品久久久一区二区福利 | 久久国产精品一区二区三区 | 欧美性久久 | 亚洲精品一 | 91精品国产自产精品男人的天堂 | 欧美精品在线播放 | 天天插天天搞 | 精品91av | 综合久久99 | 密室大逃脱第六季大神版在线观看 | www.887色视频免费 |