欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 8267|回復(fù): 0
收起左側(cè)

基于單片機(jī)的數(shù)字溫度計(jì) 帶溫度上限設(shè)置 文檔下載

[復(fù)制鏈接]
ID:137190 發(fā)表于 2016-9-3 19:50 | 顯示全部樓層 |閱讀模式
0.png
完整的Word下載地址:
基于單片機(jī)的數(shù)字溫度計(jì).rar (466.01 KB, 下載次數(shù): 34)


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

基于單片機(jī)的數(shù)字溫度計(jì)設(shè)計(jì)

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


毋庸置疑,隨著科學(xué)技術(shù)的發(fā)展和人們生活的需要,近年來單片機(jī)的應(yīng)用領(lǐng)域越來越寬廣。一般的度測(cè)量不僅設(shè)計(jì)復(fù)雜,而且精確度非常差,而應(yīng)用單片機(jī)使這個(gè)問題得到了很好的解決。在現(xiàn)代社會(huì),溫度是一個(gè)至關(guān)重要的數(shù)據(jù),而幾十年前的測(cè)量方法科技含量太低,顯然不能滿足現(xiàn)代社會(huì)對(duì)溫度高精確度測(cè)量的要求。這些年來專家們研究了幾種測(cè)溫技術(shù),這些測(cè)溫技術(shù)不但很好的提高了測(cè)量精度,而且使產(chǎn)品的質(zhì)量更上一層樓。 由于單片機(jī)具有集成度高,通用性好,功能強(qiáng),尤其體積小,重量輕,耗能低等顯著的優(yōu)勢(shì),因此在日常生活和工業(yè)生產(chǎn)中得到了廣泛應(yīng)用。本課題就是單片機(jī)作為核心器件進(jìn)行設(shè)計(jì)的。
1.2課題研究的目的和意義 測(cè)量溫度的基本方法是使用溫度計(jì)直接讀取溫度,如我們大家經(jīng)常使用的體溫計(jì)。隨著工業(yè)生產(chǎn)的需要,人們對(duì)溫度的測(cè)量有了的更高的要求。在迅速發(fā)展的科學(xué)技術(shù)中,前沿技術(shù)是傳感器技術(shù),特別是溫度傳感技術(shù),已經(jīng)滲透到我們生活的各個(gè)方面,溫度測(cè)量在工業(yè)生產(chǎn)中占有不可或缺的地位,此外在農(nóng)業(yè)生產(chǎn)中也離不開溫度的測(cè)量。綜上所述,測(cè)量溫度具有舉重若輕的作用。
單片機(jī)在各個(gè)領(lǐng)域的應(yīng)用廣泛,而把它作為數(shù)字溫度計(jì)的核心部件只是具體應(yīng)用的一個(gè)實(shí)例。目前,隨著在惡劣的工作環(huán)境下的對(duì)測(cè)溫技術(shù)的要求,單片機(jī)的發(fā)展越來越受到人們的重視。
1.3國內(nèi)外測(cè)溫技術(shù)及單片機(jī)現(xiàn)狀不可否認(rèn),跟發(fā)達(dá)國家相比,我國測(cè)溫技術(shù)仍然處于較低水平。一般的測(cè)溫技術(shù)只能對(duì)較平穩(wěn)的環(huán)境溫度進(jìn)行測(cè)量,如果用于惡劣的工作環(huán)境,我國的某些技術(shù)還達(dá)不到要求。但是,隨著我國成為世界第二大經(jīng)濟(jì)體,經(jīng)濟(jì)實(shí)力直線上升,我國電子企業(yè)也在蓬勃發(fā)展。
眾所周知,單片機(jī)是集成在一塊芯片上的計(jì)算機(jī)系統(tǒng),它擁有計(jì)算機(jī)系統(tǒng)的主要部件和功能,如 CPU、并行I/O端口、定時(shí)與中斷系統(tǒng)、A/DD/A轉(zhuǎn)換系統(tǒng)、總線系統(tǒng)。隨著科學(xué)技術(shù)的發(fā)展,現(xiàn)在大部分單片機(jī)功能也更加強(qiáng)大。單片機(jī)還可以連接各種各樣的外圍電路,如定時(shí)器、復(fù)位電路、時(shí)鐘電路、傳感器等等,我們應(yīng)用單片機(jī)可以對(duì)各種各樣的數(shù)據(jù)進(jìn)行采集。如連接溫度傳感器DS18B20等芯片,就可以對(duì)被測(cè)對(duì)象進(jìn)行溫度的測(cè)量與檢測(cè)。
2系統(tǒng)總體方案設(shè)計(jì)
2.1系統(tǒng)的設(shè)計(jì)指標(biāo)
本課題設(shè)計(jì)的數(shù)字溫度計(jì)要求能夠及時(shí)準(zhǔn)確地對(duì)被測(cè)對(duì)象進(jìn)行溫度測(cè)量,并將其測(cè)得的溫度值顯示在LED數(shù)碼管上,然后與設(shè)定的溫度范圍比較,如果超過溫度限制,則通過蜂鳴器報(bào)警,同時(shí)報(bào)警指示燈閃爍,直到溫度回到規(guī)定的范圍為止。另外,還能夠通過按鍵自己設(shè)置溫度范圍。綜上所述,系統(tǒng)設(shè)計(jì)的要求如下:
1.開機(jī)啟動(dòng),檢測(cè)各元件是否正常工作。
2.正負(fù)溫度辨別(正溫度紅燈亮,負(fù)溫度綠燈亮)。
3.溫度測(cè)量的基本范圍是-30℃~125℃。
4.軟件預(yù)設(shè)上限溫度32℃,下限溫度10℃。
5.超過溫度上下限即實(shí)現(xiàn)報(bào)警功能,報(bào)警燈閃爍,蜂鳴器震動(dòng)并發(fā)聲警示,并在負(fù)溫度時(shí)蜂鳴器震動(dòng)較急促。
6.支持手動(dòng)按鍵設(shè)置溫度上下限。
2.2系統(tǒng)的實(shí)現(xiàn)原理本系統(tǒng)使用溫度傳感器,并與單片機(jī)連接組成溫度測(cè)量系統(tǒng),從而完成測(cè)量溫度。溫度傳感器對(duì)溫度的變化十分敏感,它能夠把測(cè)得的溫度及時(shí)準(zhǔn)確的轉(zhuǎn)化為一串的電路信號(hào),這時(shí)我們可以通過顯示系統(tǒng)將其測(cè)得的溫度值顯示出來,供人們讀取和記錄。比如,溫度傳感器DS18B20是一種集成度很高的溫度測(cè)量器件,它能夠根據(jù)當(dāng)前溫度環(huán)境的變化產(chǎn)生出一串?dāng)?shù)字信號(hào)。顯然,不同的溫度環(huán)境將會(huì)有不同的數(shù)字信號(hào),通過該信號(hào)能夠準(zhǔn)確的得到當(dāng)前環(huán)境的溫度值,從而完成溫度的測(cè)量。
2.3系統(tǒng)的實(shí)現(xiàn)方案分析 我們同樣利用溫度傳感器DS18B20作為測(cè)量器件,由于DS18B20的集成度很高,因此該器件需要的外圍電路非常簡(jiǎn)單。并且DS18B20體積小,節(jié)省電路板。此外,DS18B20是高封裝的溫度傳感器,能夠直接和單片機(jī)通信。測(cè)溫范圍-55℃~+125℃,固有測(cè)溫分辨率0.5℃。抗干擾能力很強(qiáng)。單片機(jī)作為主要組成器件,但這里采用LED 7位數(shù)碼管進(jìn)行溫度值的顯示,顯示溫度值清晰直觀,易于分辨。并且LED數(shù)碼管占用空間小,經(jīng)濟(jì)實(shí)惠。
3 系統(tǒng)硬件設(shè)計(jì)3.1 系統(tǒng)總體結(jié)構(gòu)本方案設(shè)計(jì)的系統(tǒng)模塊由單片機(jī)系統(tǒng)、溫度傳感器模塊、數(shù)碼管顯示模塊和電源模塊組成,其總體結(jié)構(gòu)如圖1。

1.002.jpg


圖1 系統(tǒng)結(jié)構(gòu)圖
該系統(tǒng)是以AT89C52 單片機(jī)為核心,在開始運(yùn)行它向主機(jī)先發(fā)送初始化命令使DS18B20啟動(dòng),再發(fā)送溫度轉(zhuǎn)換命令使數(shù)字溫度傳感器DS18B20 把測(cè)得的模擬溫度信號(hào)轉(zhuǎn)換為數(shù)字信號(hào)供單片機(jī)運(yùn)算。同時(shí),顯示器上顯示出當(dāng)前環(huán)境的溫度,當(dāng)溫度超出設(shè)定的溫度上下限范圍時(shí),蜂鳴器就會(huì)發(fā)出警報(bào)。
3.2 AT89C52簡(jiǎn)介單片機(jī)經(jīng)過幾十年的蓬勃發(fā)展,目前已經(jīng)是自動(dòng)控制理論的中流砥柱。對(duì)于專業(yè)人員來說,掌握單片機(jī)原理及其應(yīng)用已經(jīng)成為必不可少的一項(xiàng)技能,是專業(yè)人員必備的能力和素質(zhì)之一。單片機(jī)的應(yīng)用十分廣泛,在控制領(lǐng)域、家用電器、食品儲(chǔ)存等方面,都扮演著一個(gè)非常重要的角色。
ATMEL公司采用國際先進(jìn)的技術(shù)手段生產(chǎn)的AT89C52單片機(jī)與一般的單片機(jī)有所不同,它不僅是一種8位微控制器,具有低功耗和高性能的特點(diǎn),還擁有非易失性Flash程序存儲(chǔ)器。它的主要接口與引腳的特點(diǎn)如下。
其引腳圖如圖2所示:
P0口:P0口與其他端口不同,它的輸出級(jí)無上拉電阻。作為通用輸出I/O口使用時(shí),輸出級(jí)是開漏電路,故用其輸出去驅(qū)動(dòng)NMOS輸入時(shí)外接上拉電阻,上拉電阻一般在10KΩ左右即可。這時(shí)每一位輸出可以驅(qū)動(dòng)4個(gè)LS型負(fù)載。用作輸入時(shí),應(yīng)先向端口鎖存器寫1。把P0口用作地址/數(shù)據(jù)總線時(shí),無需外接上拉電阻。作總線輸入時(shí),不需先向端口寫1。P0口作總線時(shí),每一位輸出可以驅(qū)動(dòng)8個(gè)LS型TTL負(fù)載。
1.003.jpg
圖2 單片機(jī)AT89C52引腳圖
P1~P3口:P1~P3口接有上拉負(fù)載電阻,它們的每一位輸出可以驅(qū)動(dòng)4個(gè)LS型TTL負(fù)載。用作輸出口時(shí),任何TTL或NMOS電路都能以正常的方式驅(qū)動(dòng)89C51系列單片機(jī)的P1~P3口。由于它們的輸出級(jí)接有上拉電阻,因此,在使用時(shí)無需外接上拉電阻。由于單片機(jī)的端口輸出電流一般為幾毫安,當(dāng)用作輸出口去驅(qū)動(dòng)一個(gè)晶體管的基極時(shí),應(yīng)在基極和端口之間串聯(lián)一個(gè)電阻,以限制高電平時(shí)的輸出電流。
              P3口用作第二功能:當(dāng)使用P3口的第二功能時(shí),8個(gè)引腳有不同的意義。當(dāng)某位用作第二功能輸入時(shí),該位的鎖存器輸出端被內(nèi)部硬件自動(dòng)置1,并且W在端口不作第二功能輸出時(shí)保持為1,則與非門3輸出低,所以FET截止,該位引腳為高位輸入。因此讀引腳信號(hào)無效,三臺(tái)緩沖器無效,這樣,從引腳輸入的第二個(gè)能信號(hào),經(jīng)緩沖器后被直接送給CPU處理。當(dāng)P3口的某一引腳用作第二功能時(shí),該引腳不能用作通用I/O端口。
P3口各個(gè)引腳的第二功能見下表1


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

                           表1  P3口的第二功能圖
RST: RST是復(fù)位信號(hào)輸入端,高電平有效。當(dāng)單片機(jī)正常工作時(shí),該引腳出現(xiàn)兩個(gè)機(jī)器周期的高電平就會(huì)使單片機(jī)復(fù)位;在上電時(shí),由于振蕩器需要一定的起振時(shí)間,該引腳的高電平必須保持10ms以上才能保證有效復(fù)位。
              ALE: ALE是地址鎖存器信號(hào),每個(gè)機(jī)器周期輸出兩個(gè)正脈沖。在訪問片外存儲(chǔ)器時(shí),下降沿用于控制外接的地址鎖存器鎖存從P0口輸出的低8位地址。在沒有接外部存儲(chǔ)器時(shí),可以將該引腳的輸出作為時(shí)鐘信號(hào)使用,因此它可對(duì)外輸出時(shí)鐘或用于定時(shí)目的。
PROG:為片內(nèi)程序存儲(chǔ)器的編程脈沖輸入端,低電平有效。
              PSEN:片外程序存儲(chǔ)器讀選通信號(hào)輸出端,每個(gè)機(jī)器周期輸出兩個(gè)負(fù)脈沖,低電平有效。在訪問片外數(shù)據(jù)存儲(chǔ)器時(shí),該信號(hào)不出現(xiàn)。            
EA/VPP:EA為片外程序存儲(chǔ)器選擇輸入端,該引腳低電平時(shí),使用外部程序存儲(chǔ)器,為高電平時(shí),使用片內(nèi)程序存儲(chǔ)器;VPP為片內(nèi)程序存儲(chǔ)器編程電壓輸入端。
              XTAL1:該引腳接外部晶振和微調(diào)電容的一端,與單片機(jī)內(nèi)振蕩電路一起,產(chǎn)生由外部晶振決定的振蕩頻率。在使用外部時(shí)鐘時(shí),該引腳輸入外部時(shí)鐘脈沖。
XTAL2:該引腳接外部晶振和微調(diào)電容的另一端,XTAL2接內(nèi)部反向放大器的輸出端,因此在使用外部時(shí)鐘時(shí),該引腳接地。
3.3 DS18B20簡(jiǎn)介溫度傳感器是各種傳感器中最常用的一種,早期使用的是模擬溫度傳感器,如熱敏電阻,隨著環(huán)境溫度的變化,它的阻值也按照一定的函數(shù)關(guān)系發(fā)生線性變化,通過采集電阻兩端的電壓,再根據(jù)某個(gè)函數(shù)關(guān)系式就可以計(jì)算出當(dāng)前環(huán)境溫度。
DS18B20是美國DALLAS半導(dǎo)體公司推出的第一片支持“一線總線”接口的溫度傳感器,它具有微型化、低功耗、高性能、抗干擾能力強(qiáng)、易配置微處理器等優(yōu)點(diǎn),可直接將溫度轉(zhuǎn)化成串行數(shù)字信號(hào)供處理器處理。
3.3.1溫度傳感器DS18B20引腳介紹溫度傳感器DS18B20有兩種封裝:三腳TO-92直插式和八腳SOIC貼片式,其中三腳TO-92直插式是使用的最多、最普遍的封裝。封裝引腳如圖3所示。
1.004.jpg
圖3 DS18B20TO-92封裝
下表2列出了溫度傳感器DS18B20的引腳定義
表2 DS18B20的引腳定義
引腳
定義
GND
電源負(fù)極
DQ
信號(hào)輸入輸出
VDD
電源正極
NC


引腳功能說明:
GND :接地信號(hào)
DQ :數(shù)據(jù)輸入/輸出引腳。開漏單總線接口引腳。當(dāng)被用在寄生電源下,可以向器件提供電源。
VDD :可選VDD引腳,電源電壓范圍3V~5.5V。當(dāng)工作于寄生電源時(shí),此引腳必須接地。
3.3.2 DS18B20內(nèi)部結(jié)構(gòu)與特點(diǎn) DS18B20的內(nèi)部結(jié)構(gòu)主要包括:寄生電源,溫度傳感器,64位ROM和單總線接口,存放中間數(shù)據(jù)的高速暫存器RAM,用于存儲(chǔ)用戶設(shè)定溫度上下限值的TH和TL觸發(fā)器,存儲(chǔ)與控制邏輯,8位循環(huán)冗余校驗(yàn)碼(CRC)發(fā)生器等7部分組成。
DS18B20中的溫度傳感器可完成對(duì)溫度的測(cè)量,以12位轉(zhuǎn)化為例:用16位符號(hào)擴(kuò)展的二進(jìn)制補(bǔ)碼讀數(shù)形式提供,以0.0625℃/LSB形式表達(dá),其中S為符號(hào)位,12位轉(zhuǎn)化后得到的12位數(shù)據(jù),存儲(chǔ)在DS18B20的兩個(gè)8比特的RAM中。DS18B20溫度值格式如二進(jìn)制表2.2所示,其中,前5位是符號(hào)位,如果測(cè)得的溫度大于0,這5位為0,只要將測(cè)得的數(shù)值乘以0.0625即可得到實(shí)際溫度;如果溫度小于0,這5位為1,測(cè)到的數(shù)值需要取反加1再乘于 0.0625即可得到實(shí)際溫度。
圖4 DS18B20溫度值格式表
       1.005.jpg

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是測(cè)試模式位,用于設(shè)置溫度傳感器DS18B20是在工作模式還是在測(cè)試模式。溫度傳感器DS18B20默認(rèn)該位被設(shè)置為0,我們不要去修改。其中,R1和R0作用主要是設(shè)置分辨率,具體設(shè)置如表4所示:(DS18B20默認(rèn)設(shè)置為12位)。
表4 溫度分辨率設(shè)置表
RR1
RRO
分辨率
溫度最大轉(zhuǎn)換時(shí)間
00
00
99位
93.75ms
00
11
110位
187.5ms
11
00
111位
375ms
11
11
112位
750ms

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

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

表5 DS18B20暫存寄存器分布
寄存器內(nèi)容
字節(jié)地址
溫度值低位(LS Byte)
0
溫度值高位(MS Byte)
1
高溫限值(TH)
2
低溫限值(TL)
3
配置寄存器
4
保留
5
保留
6
保留
7
CRC校驗(yàn)值
8

3.3.3 DS18B20 溫度測(cè)量通信協(xié)議由于DS18B20采用的是1Wire總線協(xié)議方式,即在一根數(shù)據(jù)線實(shí)現(xiàn)數(shù)據(jù)的雙向傳輸,而對(duì)AT89S51單片機(jī)來說,硬件上并不支持單總線協(xié)議,因此,我們必須采用軟件的方法來模擬單總線的協(xié)議時(shí)序來完成對(duì)DS18B20芯片中的數(shù)據(jù)處理。
DS18B20有嚴(yán)格的通信協(xié)議來保證各位數(shù)據(jù)傳輸?shù)恼_性。該協(xié)議定義了幾種信號(hào)的時(shí)序:初始化時(shí)序、讀時(shí)序、寫時(shí)序。所有時(shí)序都是將主機(jī)作為主設(shè)備,單總線器件作為從屬設(shè)備。而每一次命令和數(shù)據(jù)的傳輸都是從主機(jī)主動(dòng)啟動(dòng)寫時(shí)序開始,
DS18B20的一線工作協(xié)議流程是:初始化→ROM操作指令→存儲(chǔ)器操作指令→數(shù)據(jù)傳輸,其工作時(shí)序包括初始化時(shí)序、寫時(shí)序和讀時(shí)序。
它們的工作時(shí)序如圖5 a)(b)(c)所示。
1.006.jpg
5 (a)初始化時(shí)序
DS18B20的初始化過程:
1. 先將數(shù)據(jù)線置高電平“1”。
2. 延時(shí),盡可能短一點(diǎn)。
3. 數(shù)據(jù)線拉到低電平“0”。
4. 延時(shí)750微秒(該時(shí)間的時(shí)間范圍可以從480960微秒)。
5.數(shù)據(jù)線拉到高電平“1”。
6. 延時(shí)等待。
7. CPU讀到了數(shù)據(jù)線上的低電平“0”后,還要做延時(shí),其延時(shí)的時(shí)間從發(fā)出的高電平算起(第(5)步的時(shí)間算起)最少要480微秒。
8.將數(shù)據(jù)線再次拉高到高電平“1”后結(jié)束。
1.007.jpg
5 (b)寫時(shí)序
DS18B20的寫操作過程:
1. 數(shù)據(jù)線先置低電平“0”。
2. 延時(shí)確定的時(shí)間為15微秒。
3. 按從低位到高位的順序發(fā)送字節(jié),一次只發(fā)送一位。
4. 延時(shí)時(shí)間為45微秒。
5. 將數(shù)據(jù)線拉到高電平。
6. 重復(fù)上(1)到(6)的操作直到所有的字節(jié)全部發(fā)送完為止。
7. 最后將數(shù)據(jù)線拉高。

1.008.jpg
5 (c)讀時(shí)序
DS18B20的讀操作過程:
1. 將數(shù)據(jù)線拉高“1”。
2. 延時(shí)2微秒。
3. 將數(shù)據(jù)線拉低“0”。
4. 延時(shí)15微秒。
5. 將數(shù)據(jù)線拉高“1”。
6. 延時(shí)15微秒。
7. 讀數(shù)據(jù)線的狀態(tài)得到1個(gè)狀態(tài)位,并進(jìn)行數(shù)據(jù)處理。
8. 延時(shí)30微秒。
3.4系統(tǒng)硬件設(shè)計(jì)3.4.1 復(fù)位電路模塊本系統(tǒng)采用按鍵復(fù)位電路,按鍵未按下時(shí),它利用電容來實(shí)現(xiàn)復(fù)位,在接電瞬間,RST引腳的電位與電源VCC相同,隨著充電電流的減少,RST的電位逐漸下降。此時(shí)只要保證RST為高電平的時(shí)間大于兩個(gè)機(jī)器周期,便可以正常復(fù)位;按鍵按下時(shí),此時(shí)電源VCC經(jīng)兩個(gè)電阻分壓,在RST引腳產(chǎn)生一個(gè)復(fù)位高電平,從而實(shí)現(xiàn)復(fù)位。
復(fù)位電路如圖6所示。
1.009.jpg
6 復(fù)位電路

3.4.2 時(shí)鐘電路設(shè)模塊時(shí)鐘電路作用:?jiǎn)纹瑱C(jī)外部必須接上振蕩器,提供的高頻脈沖經(jīng)過分頻處理后,成為單片機(jī)內(nèi)部時(shí)鐘信號(hào),作為片內(nèi)各部件協(xié)調(diào)工作的控制信號(hào)。如果沒有時(shí)鐘信號(hào),觸發(fā)器的狀態(tài)就不能改變,單片機(jī)內(nèi)部的所有電路在完成一個(gè)任務(wù)后將最終達(dá)到一個(gè)穩(wěn)定狀態(tài)而不能再繼續(xù)進(jìn)行其它任何工作了。
時(shí)鐘電路如圖7所示:
1.010.jpg
7 時(shí)鐘電路
3.4.3 報(bào)警電路模塊當(dāng)被測(cè)環(huán)境溫度超過溫度上下限時(shí),我們需要進(jìn)行報(bào)警處理,這里用到的是蜂鳴器。
蜂鳴器工作電流一般為10mA,而單片機(jī)的I/O口只能承受幾毫安的電流,因此需要加三極管進(jìn)行驅(qū)動(dòng),單片機(jī)的I/O口中的P1.4接三極管的基極,當(dāng)P1.4為低電平時(shí),三極管導(dǎo)通,5V的電壓加載到蜂鳴器兩端,于是蜂鳴器鳴叫;當(dāng)P1.4高電平時(shí),三極管截止,蜂鳴器不鳴叫。
報(bào)警電路如下圖8所示:
1.011.jpg
8 報(bào)警電路
3.4.4顯示電路模塊顯示系統(tǒng)是單片機(jī)控制系統(tǒng)的重要組成部分,單片機(jī)應(yīng)用系常采用7段LED數(shù)碼管作為顯示器,這種顯示器具有耗電低、線路簡(jiǎn)單、價(jià)格低廉等優(yōu)點(diǎn)。
LED數(shù)碼管顯示器可以分為共陰極和共陽極兩種結(jié)構(gòu)。
(1)共陰極結(jié)構(gòu):如果所有的發(fā)光二極管的陰極接在一起,稱為共陰極結(jié)構(gòu)
(2)共陽極結(jié)構(gòu):如果所有的發(fā)光二極管的陽極接在一起,稱為共陽極結(jié)構(gòu)

七段LED顯示器是由7個(gè)LED按—定的圖形排列組成,如圖9所示,七段LED顯示器的各個(gè)二極管分別稱為a、b、c、d、e、f、g段,有些七段顯示器增加一個(gè)dp段表示小數(shù)點(diǎn),也稱為八段LED顯示器。
1.012.jpg
圖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è)計(jì)采用四位共陰極動(dòng)態(tài)顯示方式,可以直接讀取溫度值,顯示溫度可以精確到1℃。
10為顯示電路的連接圖。
1.013.jpg
圖10 顯示電路
3.4.5按鍵電路模塊該電路采用彈性按鍵。按鍵電路的作用是手動(dòng)設(shè)置溫度的上下限。按下K4,進(jìn)行上下限報(bào)警切換,通過K1和K2調(diào)節(jié)溫度上下限,最后,按下K3確認(rèn)。
具體的按鍵電路圖如下圖11所示:
                   1.014.jpg
圖11 按鍵電路
3.4.6溫度檢測(cè)電路模塊該電路中溫度傳感器采用Dallas公司生產(chǎn)的數(shù)字溫度傳感器DS18B20該芯片硬件接口簡(jiǎn)單,使用方便,且節(jié)省大量的導(dǎo)線,具有很好的通用性。該系統(tǒng)中將單片機(jī)的P1.1引腳與DS18B20的數(shù)據(jù)線連接。
具體的溫度檢測(cè)電路圖如下圖12所示:


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



1.016.jpg


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

主程序如下:
void  main()
{            
    TCON=0x01;         //定時(shí)器T0工作在01模式下
    TMOD=0X01;            
              TH0=0XD8;          //裝入初值
              TL0=0XF0;
              EA=1;               //開總中斷
              ET0=1;              //開T0中斷
              TR0=1;              //T0開始運(yùn)行計(jì)數(shù)
              EX0=1;              //開外部中斷0
              for(n=0;n<500;n++)     //顯示啟動(dòng)LOGo"- - - -"
              {bell=1;warn=1;logo();}
              Red=0;
              while(1)
              {
                  key();
                            ss=ReadTemperature();
        Show();
                            alarm();          //報(bào)警函數(shù)
                            if(Flag==1)
                            {bell=!bell;
                            warn=!warn;}     //蜂鳴器滴滴響
                            else {bell=1;
                                  warn=1;}            
              }            
}
4.2 DS18B20初始化子程序DS18B20的初始化相當(dāng)于DS18B20數(shù)據(jù)頭的作用,DS18B20檢測(cè)到初始化電平,準(zhǔn)備開始接收或發(fā)送數(shù)據(jù)。初始化子程序流程圖如下圖14所示。
1.017.jpg


                          圖14 DS18B20初始化程序流程圖
DS18B20初始化程序如下:
Init_DS18B20(void)              //傳感器初始化
{
              uchar x=0;
              DATA = 1;    //DQ復(fù)位
              delay(10);    //稍做延時(shí)
              DATA = 0;    //單片機(jī)將DQ拉低
              delay(80);   //精確延時(shí) 大于 480us   
              DATA = 1; //拉高總線
              delay(20);
              x=DATA;    //稍做延時(shí)后 如果x=0則初始化成功 x=1則初始化失敗
              delay(30);
}
4.3 DS18B20讀取溫度子程序讀出溫度子程序的主要功能是讀出RAM中的9字節(jié),在讀出時(shí)需進(jìn)行CRC校驗(yàn),校驗(yàn)有錯(cuò)時(shí)不進(jìn)行溫度數(shù)據(jù)的改寫。
DSBl820可以從單總線獲取電源,當(dāng)信號(hào)線為高電平時(shí),將能量貯存在內(nèi)部電容器中;當(dāng)單信號(hào)線為低電平時(shí),將該電源斷開,直到信號(hào)線變?yōu)楦唠娖街匦陆由霞纳?電容)電源為止。DSl8820的供電方式靈活,利用外接電源還可增加系統(tǒng)的穩(wěn)定性和可靠性。圖15為讀取數(shù)據(jù)流程圖。
1.018.jpg


                    圖15 DS18B20讀取溫度子程序流程圖
讀取溫度子程序如下:
int ReadTemperature(void)     //讀取溫度
{
              uchar a=0;
              uchar b=0;
              int t=0;
              float tt=0;
              Init_DS18B20();
              WriteOneChar(0xCC);    // 跳過讀序號(hào)列號(hào)的操作
              WriteOneChar(0x44);    // 啟動(dòng)溫度轉(zhuǎn)換
              Init_DS18B20();
              WriteOneChar(0xCC);   //跳過讀序號(hào)列號(hào)的操作
              WriteOneChar(0xBE);    //讀取溫度寄存器等(共可讀9個(gè)寄存器) 前兩個(gè)就是溫度
              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ù)提取出來,分為三個(gè)部分:小數(shù)部分、整數(shù)部分和符號(hào)部分。小數(shù)部分進(jìn)行四舍五入處理:大于0.5℃的話,向個(gè)位進(jìn)1;小于0.5℃的時(shí)候,舍去不要。當(dāng)數(shù)據(jù)是個(gè)負(fù)數(shù)的時(shí)候,顯示之前要進(jìn)行數(shù)據(jù)轉(zhuǎn)換,將其整數(shù)部分取反加一。還因?yàn)镈S18B20最低溫度只能為-55℃,所以可以將整數(shù)部分的最高位換成一個(gè)“-”,表示為負(fù)數(shù)。
16為溫度數(shù)據(jù)處理程序的流程圖:





1.019.jpg



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


以下是顯示正值子函數(shù)的程序:
void  display()
{                          
              buf[1]=temp/1000;           //顯示百位
              buf[2]=temp/100%10;        //顯示十位
              buf[3]=temp%100/10;        //顯示個(gè)位
              buf[0]=temp%10;           //小數(shù)位
              for(j=0;j<3;j++)
              {
              P2=0xff;                                        // 初始燈為滅的
    P0=0x00;
              P2=0xfd; //顯示小數(shù)點(diǎn)
              P0=0x80; //顯示小數(shù)點(diǎn)
              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)支持手動(dòng)設(shè)置溫度上下限,而按鍵掃描的主要功能就是手動(dòng)設(shè)置溫度的上下限。系統(tǒng)默認(rèn)的溫度上下限是10℃~32℃。當(dāng)被測(cè)溫度值處于0℃~125℃時(shí),若被測(cè)溫度沒有超過上下限,則蜂鳴器不鳴叫,否則蜂鳴器鳴叫;當(dāng)被測(cè)溫度值處于0℃以下時(shí),蜂鳴器鳴叫較急促。
為了防止抖動(dòng),按鍵電路中都要消抖的措施,本設(shè)計(jì)中是采用的軟件消抖,在單片機(jī)檢測(cè)到某個(gè)鍵按下后,延時(shí)10ms再監(jiān)測(cè),如果仍然按下,才確定按下了該鍵。
按鍵K4、K1、K2、K3分別與單片機(jī)的P2.4-P2.7引腳連接。默認(rèn)狀態(tài)設(shè)置溫度上限,若按下按鍵K4,也就是使P2.4為低電平時(shí),進(jìn)入溫度下限的設(shè)置,再按一次進(jìn)入溫度上限的設(shè)置;在每個(gè)溫度上下限設(shè)置里面,按下K1一次增加1℃溫度值,按下按鍵K一次減小1℃溫度值,最后按K3確定。
按鍵掃描子程序的流程圖如下圖17所示:
1.020.jpg


                           圖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ù)位,開定時(shí)
        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è)計(jì)采用Keil uVision2來編寫C語言程序,通過它的編譯器進(jìn)行編譯、連接,最后將生成的機(jī)器碼下載到單片機(jī)上。
Keil C51編譯器是目前最流行的開發(fā)MCS-51系列單片機(jī)的軟件,它具有C編輯器、宏匯編、鏈接器、庫管理和一個(gè)功能強(qiáng)大的仿真調(diào)試等在內(nèi)的功能,并通過一個(gè)集成開發(fā)環(huán)境將這些部份組合在一起。
打開Proteus ISIS,在Proteus ISIS編輯窗口中單擊元件列表之上的“P”按鈕 ,添加元件及放置元件。
按照正確的方法,合理地布局將各個(gè)元器件連線,得到如下界面,如圖18所示:

1.021.jpg
圖 18 整體電路圖

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

正溫度指示燈亮,報(bào)警指示燈閃爍,蜂鳴器鳴叫。
仿真結(jié)果如圖19所示。
1.022.jpg
圖19 數(shù)字溫度計(jì)仿真圖
我們?cè)俅握{(diào)節(jié)環(huán)境溫度,使環(huán)境溫度處于15℃,由于此時(shí)溫度不在溫度上下限10℃~32℃之間,因此單片機(jī)給正溫度指示燈高電平,給報(bào)警指示燈低電平,所以正溫度指示燈高電平亮,報(bào)警指示燈熄滅,蜂鳴器也不鳴叫。
仿真結(jié)果如圖20所示。

1.023.jpg

圖20 數(shù)字溫度計(jì)仿真圖
再次調(diào)節(jié)溫度,使溫度在-10℃,此時(shí)溫度不在溫度上下限之間,此時(shí)單片機(jī)給負(fù)溫度指示燈高電平,報(bào)警指示燈高電平,所以負(fù)溫度指示燈亮,報(bào)警指示燈閃爍,并且蜂鳴器鳴叫較為急促。
仿真結(jié)果如圖21所示。
1.024.jpg
圖21 數(shù)字溫度計(jì)仿真圖
默認(rèn)情況下設(shè)置溫度上限,若按下K4進(jìn)入溫度下限設(shè)置。通過按鍵K1和K2增加或減少溫度值,最后按下K3確認(rèn)。比如設(shè)置溫度上下限為15℃~40℃,當(dāng)環(huán)境溫度處于35℃時(shí),而35℃在設(shè)置的溫度上下限15℃~40℃之間,因此報(bào)警電路不工作。
仿真電路如圖22所示。
1.025.jpg
圖22 數(shù)字溫度計(jì)仿真圖
當(dāng)環(huán)境溫度處于12℃時(shí),當(dāng)溫度在溫度上下限15℃~40℃之間時(shí),報(bào)警電路開始工作,報(bào)警指示燈閃爍,蜂鳴器鳴叫。
仿真電路如圖23所示。
1.026.jpg
圖23 數(shù)字溫度計(jì)仿真圖
結(jié)果分析:
本文介紹并設(shè)計(jì)的數(shù)字溫度計(jì)的基本測(cè)量范圍是-30℃~125℃,并且具有自動(dòng)報(bào)警功能和默認(rèn)溫度上下限(10℃~32℃),還可以手動(dòng)設(shè)置溫度上下限,用4位一體數(shù)碼管顯示設(shè)置溫度的上下限和當(dāng)前環(huán)境的溫度。由于所采用的是DS18B20溫度傳感器,它的可測(cè)量范圍是-55℃~125℃,測(cè)量溫度在-10℃~85℃之間時(shí)的可分辨溫度是0.5℃,我們將小數(shù)位始終顯示為0,也即顯示的溫度精度是1℃。如果當(dāng)前環(huán)境溫度在默認(rèn)的溫度上下限之間,主函數(shù)不會(huì)調(diào)用報(bào)警子程序,報(bào)警電路不會(huì)工作,蜂鳴器也不鳴叫;如果當(dāng)前環(huán)境溫度在默認(rèn)的溫度上下限之外,主函數(shù)就會(huì)調(diào)用報(bào)警子程序,此時(shí)單片機(jī)送給報(bào)警指示燈蜂鳴器高電平,報(bào)警指示燈閃爍,蜂鳴器鳴叫,直到環(huán)境溫度回到默認(rèn)的溫度上下限之間。當(dāng)然,由于本設(shè)計(jì)支持手動(dòng)設(shè)置溫度上下限,我們也可以手動(dòng)設(shè)置溫度上下限。
由仿真結(jié)果及設(shè)計(jì)要求完成的指標(biāo)可知,該設(shè)計(jì)基本符合設(shè)計(jì)要求。




相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表