基于單片機(jī)的數(shù)字溫度計(jì)設(shè)計(jì)(附代碼及仿真)_第1頁
基于單片機(jī)的數(shù)字溫度計(jì)設(shè)計(jì)(附代碼及仿真)_第2頁
基于單片機(jī)的數(shù)字溫度計(jì)設(shè)計(jì)(附代碼及仿真)_第3頁
基于單片機(jī)的數(shù)字溫度計(jì)設(shè)計(jì)(附代碼及仿真)_第4頁
基于單片機(jī)的數(shù)字溫度計(jì)設(shè)計(jì)(附代碼及仿真)_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、基于STC89C52的數(shù)字溫度計(jì)目錄1、 緒論.32、 方案選擇 2.1、主控芯片選擇 32.2、顯示模塊.32.3、溫度檢測模塊.43、 系統(tǒng)硬件設(shè)計(jì)3.1、51單片機(jī)最小系統(tǒng)設(shè)計(jì).43.2、電源供電電路設(shè)計(jì).53.3、LCD顯示電路設(shè)計(jì).63.4、溫度檢測電路設(shè)計(jì).74、 系統(tǒng)軟件設(shè)計(jì)4.1、溫度傳感器數(shù)據(jù)讀取流程圖.94.2、系統(tǒng)程序設(shè)計(jì).105、 編程和仿真5.1、Keil編程軟件.115.2、proteus.115.3、仿真界面.116、 總結(jié).127、 附錄 附錄1、原理圖.12 附錄2、程序清單.131、緒論在信息高速發(fā)展的21世紀(jì),科學(xué)技術(shù)的發(fā)展日新月異,科技的進(jìn)步帶動了測量技

2、術(shù)的發(fā)展,現(xiàn)代控制設(shè)備的性能和結(jié)構(gòu)發(fā)生了翻天覆地的變化。我們已經(jīng)進(jìn)入了高速發(fā)展的信息時(shí)代,測量技術(shù)也成為當(dāng)今科技的一個(gè)主流,廣泛地深入到研究和應(yīng)用工程的各個(gè)領(lǐng)域。溫度和人們的生活息息相關(guān),溫度的測量也就變得很重要。2、系統(tǒng)方案選擇2.1 主控芯片選擇方案一:STC89C52RCSTC89C52RC是采用8051核的ISP在線可編程芯片,最高工作時(shí)鐘頻率80MHz,片內(nèi)含8KB的可反復(fù)擦寫1000次的Flash只讀存儲器,器件兼容MCS-51指令系統(tǒng)及8051引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和ISP Flash存儲單元,具有在線可編程特定,配合PC端的控制程序即可將用戶的程序代碼下載進(jìn)單

3、片機(jī)內(nèi)部,省去了購買通用編程器,而且速度更快。STC89C52RC系列單片機(jī)是單時(shí)鐘周期、高速、低功耗的新一代8051單片機(jī)。方案二:ATmega8ATmega8是ATMAL公司在2002年第一季度推出的一款新型AVR高檔單片機(jī)。在AVR家族中,ATmega8是一種非常特殊的單片機(jī),它的芯片內(nèi)部集成了較大容量的存儲器和豐富強(qiáng)大的硬件接口電路,具備AVR高檔單片機(jī)MEGA系列的全部性能和特點(diǎn)。但由于采用了小引腳封裝(為DIP28和TQFP/MLF32),所以其價(jià)格僅與低檔單片機(jī)相當(dāng),再加上AVR單片機(jī)的系統(tǒng)內(nèi)可編程特性,使得無需購買昂貴的仿真器和編程器也可進(jìn)行單片機(jī)嵌入式系統(tǒng)的設(shè)計(jì)和開發(fā),同時(shí)也

4、為單片機(jī)的初學(xué)者提供了非常方便和簡捷的開發(fā)環(huán)境。由以上兩種方案進(jìn)行比較,我們選擇STC89C52RC作為主控芯片,因?yàn)樵撔酒侨腴T級單片機(jī),我們對該款單片機(jī)比較熟悉,而AVR單片機(jī)較為高端,這次的設(shè)計(jì)用STC89C52已經(jīng)足夠使用,引腳也夠用,故用STC89C52作為主控芯片。STC89C52RC價(jià)格低廉,一般5元以內(nèi)可以買到,在通銀買也很方便。2.2 時(shí)鐘及顯示模塊方案一:數(shù)碼管數(shù)碼管亮度高,顯示大,特別是顯示的時(shí)間很直觀,價(jià)格比較便宜,但多位的數(shù)碼管在動態(tài)掃描的時(shí)候會出現(xiàn)閃爍。而且數(shù)碼管占用的位置較大,且比較耗電。方案二: 1602液晶屏1602液晶屏顯示清晰且不會閃爍,在需要時(shí)還可以輸出

5、字符等內(nèi)容,由于液晶屏是數(shù)字式的,因此和單片機(jī)系統(tǒng)的接口簡單,操作方便。1602LCD液晶顯示屏的功耗主要消耗在其內(nèi)部的電極和驅(qū)動IC 上,因而耗電量比其他顯示器要少得多,功耗較低。由于其內(nèi)部集成有顯示芯片,程序編寫簡單,適用于多方面的應(yīng)用。因此由以上兩種方案進(jìn)行比較,我們選擇方案二來設(shè)計(jì)顯示模塊。1602液晶顯示屏網(wǎng)上可購買的途徑較多,價(jià)格一般在10元以內(nèi),重慶育森電子網(wǎng)店價(jià)格為8.5元。通銀那也有,不過可能價(jià)格要15元左右。2.3 溫度檢測模塊方案一:熱敏電阻+AD模塊本方案使用熱敏電阻之類的器件(如AD590等模擬溫度傳感器)利用其感溫效應(yīng),在將隨被測溫度變化的電壓或電流采集出來,進(jìn)行A

6、/D轉(zhuǎn)換后,就可以利用單片機(jī)進(jìn)行數(shù)據(jù)的處理,在顯示電路上可以將被測溫度顯示出來,這種設(shè)計(jì)需要用到A/D轉(zhuǎn)換電路,感溫電路比較麻煩。方案二:DS18B20DS18B20數(shù)字溫度傳感器是DALLAS公司生產(chǎn)的1-Wire,即單總線器件,具有線路簡單,體積小的特點(diǎn)。因此用它來組成一個(gè)測溫系統(tǒng),具有線路簡單,在一根通信線,可以掛很多這樣的數(shù)字溫度計(jì),十分方便。它在實(shí)際應(yīng)用中不需要外部任何元器件即可實(shí)現(xiàn)測溫,測量溫度范圍在-55到+125攝氏度之間,由以上兩種方案進(jìn)行比較,我們選擇方案二來設(shè)計(jì)溫度檢測模塊。其中DS18B20網(wǎng)上報(bào)價(jià)約為5元,其中,重慶育森電子的網(wǎng)店較為便宜,為4.5元。通銀也有賣,價(jià)格

7、稍微高點(diǎn)。3、系統(tǒng)硬件設(shè)計(jì)3.1 51單片機(jī)最小系統(tǒng)設(shè)計(jì)單片機(jī)最小系統(tǒng)如下圖所示:以STC89C52單片機(jī)為核心,選用12M的晶振,這是最常用的選擇,外接電容沒有特別的要求,但是外接電容的大小會影響振蕩器的頻率高低、振蕩器的穩(wěn)定性和起振的快速性,因此我們選用30pf的電容作為起振電容。復(fù)位電路為按鍵低電平復(fù)位,當(dāng)按鍵按下,RET端為高電平,當(dāng)高電平持續(xù)4us的時(shí)間就可以使單片機(jī)復(fù)位。這里尤其要注意的是晶振和電容的位置,它們距離單片機(jī)引腳越短越好,因?yàn)樘L可能無法使單片機(jī)起振。另外是EA端一定要接上電源,使單片機(jī)能夠工作。3.2 電源供電電路設(shè)計(jì)電源供電電路如下圖所示:我們采用4節(jié)1.5V的電池

8、作為電源,LM2940為穩(wěn)壓芯片,穩(wěn)壓芯片兩端分別接兩個(gè)0.1uf和100uf的電容進(jìn)行濾波,以獲得更穩(wěn)定的電壓。D1為電源指示燈,當(dāng)開關(guān)打開,顯示燈亮,表示給電路供+5V電壓。其中,LM2940作為常用的穩(wěn)壓芯片,比7805的轉(zhuǎn)換效率要高,7805直接輸入不接輸出的情況下,其內(nèi)部會有3mA的靜態(tài)電流消耗,而2940的靜態(tài)電流比7805要小的多,故選擇LM2940作為穩(wěn)壓芯片。4節(jié)電池裝在電池盒中,在電路板下方安裝,使用兩套螺絲。3.3 LCD顯示電路設(shè)計(jì)1602LCD液晶屏顯示電路如下圖所示:1602LCD液晶屏為5V電壓驅(qū)動,帶背光,可顯示兩行,每行16個(gè)字符,不能顯示漢字。液晶1、2端為

9、電源;15、16為背光電源;為防止直接加5V而燒壞背光燈,在15腳串聯(lián)一個(gè)1K電阻晶3端為液晶對比度調(diào)節(jié)端,通過一個(gè)10K的電位器來調(diào)節(jié)液晶顯示對比度。用于限流。液液晶4端為向液晶控制器寫數(shù)據(jù)/寫命令選擇端,接單片機(jī)P1.0端口。液晶5端為讀/寫選擇端,因?yàn)槲覀儾恍枰獜囊壕е凶x取數(shù)據(jù),只向其寫入命令和數(shù)據(jù),因此此端始終選擇為寫狀態(tài),即低電平接地。液晶6端為使能信號,是操作必須的信號,接單片機(jī)的P1.1口。3.4 溫度檢測電路設(shè)計(jì)溫度檢測電路如下圖所示:DS18B20是美國DALLAS半導(dǎo)體公司最新推出的一種改進(jìn)型智能溫度傳感器,與傳統(tǒng)的熱敏電阻等測溫元件相比,它能直接讀出被測溫度,并且可根據(jù)實(shí)

10、際要求通過簡單的編程實(shí)現(xiàn)位的數(shù)字值讀數(shù)方式。DS18B20的性能特點(diǎn)如下: 獨(dú)特的單線接口僅需一個(gè)端口引腳進(jìn)行通訊 簡單的多點(diǎn)分布應(yīng)用 無需外部器件 可通過數(shù)據(jù)線供電 零待機(jī)功耗 測溫范圍-55+125,以0.5遞增。華氏器件-67+2570F,以0.90F 遞增 溫度以9 位數(shù)字量讀出 溫度數(shù)字量轉(zhuǎn)換時(shí)間200ms(典型值) 用戶可定義的非易失性溫度報(bào)警設(shè)置 報(bào)警搜索命令識別并標(biāo)志超過程序限定溫度(溫度報(bào)警條件)的器件。DS18B20內(nèi)部結(jié)構(gòu)主要由四部分組成:64位光刻ROM、溫度傳感器、非揮發(fā)的溫度報(bào)警觸發(fā)器TH和TL、配置寄存器。DS18B20的管腳排列、各種封裝形式如圖 3.3.1所示

11、,DQ 為數(shù)據(jù)輸入/輸出引腳。開漏單總線接口引腳。當(dāng)被用著在寄生電源下,也可以向器件提供電源;GND為地信號;VDD為可選擇的VDD引腳。當(dāng)工作于寄生電源時(shí),此引腳必須接地。其電路圖如圖5.3.1所示.。 圖5.3.1 外部封裝形式 在仿真軟件中如圖5.3.2所示 圖5.3.2DS18B20的測溫原理如圖5.3.3所示,圖中低溫度系數(shù)晶振的振蕩頻率受溫度的影響很小用于產(chǎn)生固定頻率的脈沖信號送給減法計(jì)數(shù)器1,高溫度系數(shù)晶振隨溫度變化其震蕩頻率明顯改變,所產(chǎn)生的信號作為減法計(jì)數(shù)器2的脈沖輸入,圖中還隱含著計(jì)數(shù)門,當(dāng)計(jì)數(shù)門打開時(shí),DS18B20就對低溫度系數(shù)振蕩器產(chǎn)生的時(shí)鐘脈沖后進(jìn)行計(jì)數(shù),進(jìn)而完成溫

12、度測量.計(jì)數(shù)門的開啟時(shí)間由高溫度系數(shù)振蕩器來決定,每次測量前,首先將-55 所對應(yīng)的基數(shù)分別置入減法計(jì)數(shù)器1和溫度寄存器中,減法計(jì)數(shù)器1和溫度寄存器被預(yù)置在-55 所對應(yīng)的一個(gè)基數(shù)值。減法計(jì)數(shù)器1對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進(jìn)行減法計(jì)數(shù),當(dāng)減法計(jì)數(shù)器1的預(yù)置值減到0時(shí)溫度寄存器的值將加1,減法計(jì)數(shù)器 1的預(yù)置將重新被裝入,減法計(jì)數(shù)器1重新開始對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進(jìn)行計(jì)數(shù),如此循環(huán)直到減法計(jì)數(shù)器2計(jì)數(shù)到0時(shí),停止溫度寄存器值的累加,此時(shí)溫度寄存器中的數(shù)值即為所測溫圖5.3.3中的斜率累加器用于補(bǔ)償和修正測溫過程中的非線性其輸出用,于修正減法計(jì)數(shù)器的預(yù)置值,只要計(jì)數(shù)門仍未關(guān)閉就重復(fù)上述

13、過程,直至溫度寄存器值達(dá)到被測溫度值,這就是DS18B20的測溫原理。另外,由于DS18B20單線通信功能是分時(shí)完成的,有嚴(yán)格的時(shí)隙概念,因此讀寫時(shí)序很重要。系統(tǒng)對DS18B20的各種操作必須按協(xié)議進(jìn)行。操作協(xié)議為:初始化DS18B20(發(fā)復(fù)位脈沖)發(fā)ROM功能命令發(fā)存儲器操作命令處理數(shù)據(jù)。圖5.3.3 在正常測溫情況下,DS1820的測溫分辨力為0.5。4、 系統(tǒng)軟件設(shè)計(jì)4.1:實(shí)驗(yàn)主程序流程圖4.2:溫度傳感器數(shù)據(jù)讀取流程圖5、編程和仿真5.1 編程軟件Keil4Keil C51是美國Keil software 公司出品的51系列兼容單片機(jī)C語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在功能上、結(jié)

14、構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢,因而易學(xué)易用。Keil提供了包括C編譯器、宏匯編、連接器、庫管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過一個(gè)集成開發(fā)環(huán)境(uVision)將這些部分組合在一起。運(yùn)行Keil需要win98、NT、win2000、winXP、win7等操作系統(tǒng)。2009年2月發(fā)布的Keil uVision4,Keil uVision4引入靈活的窗口管理系統(tǒng),使開發(fā)人員能夠使用多臺監(jiān)視器,并提供了視覺上的表面對窗口位置的完全控制的任何地方,新的用戶界面可以更好地利用屏幕空間和更有效地組織多個(gè)窗口,提供一個(gè)整潔、高效的環(huán)境來開發(fā)應(yīng)用程序。5.2 仿真軟件proteus

15、7.7Proteus軟件是Labcenter electronics公司出版的EDA工具軟件(該軟件中國總代理為廣州風(fēng)標(biāo)電子技術(shù)有限公司)。它不僅具有其它EDA工具軟件的仿真功能,還能仿真單片機(jī)及外圍器件。它是目前最好的仿真單片機(jī)及外圍器件的工具。雖然目前國內(nèi)推廣剛起步,但已受到單片機(jī)愛好者、從事單片機(jī)教學(xué)的教師、致力于單片機(jī)開發(fā)應(yīng)用的科技工作者的青睞。Proteus是世界上著名的EDA工具(仿真軟件),從原理圖布圖、代碼調(diào)試到單片機(jī)與外圍電路協(xié)同仿真,一鍵切換到PCB設(shè)計(jì),真正實(shí)現(xiàn)了從概念到產(chǎn)品的完整設(shè)計(jì)。是目前世界上唯一將電路仿真軟件、PCB設(shè)計(jì)軟件和虛擬模型仿真軟件三合一的設(shè)計(jì)平臺,其處

16、理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列處理器,并持續(xù)增加其他系列處理器模型。在編譯方面,它也支持IAR、Keil和MPLAB等多種編譯器。5.3仿真界面6、總結(jié)1、選擇芯片和傳感器時(shí),夠用易用就可以,綜合考慮選擇性價(jià)比最好的。2、在進(jìn)行電路實(shí)際制作之前,應(yīng)該用仿真軟件進(jìn)行仿真,可以使開發(fā)進(jìn)程加快。3、在實(shí)際制作電路時(shí),需要注意電源端和地端要檢測過不導(dǎo)通后才能通電檢測,防止燒壞芯片。7、 附錄附錄1、原理圖附錄2、程序清單#include<reg52.h&

17、gt; /頭文件#define uchar unsigned char #define uint unsigned intsbit rs=P20;sbit lcden=P21; /液晶使能端sbit DATA = P37; /DS18B20接入口uchar FLAG_DIS=0;uchar bai_18b20,shi_18b20,ge_18b20,num; /定義變量bit flag_Negative_number ;/負(fù)數(shù)標(biāo)志uchar code table="tempreture:" ; /提示語/*一毫秒定時(shí)*/void delay_ms(uint z)uint x,

18、y;for(x=z;x>0;x-)for(y=110;y>0;y-);/*延時(shí)子函數(shù)*/void delay(uint num)while(num-) ;/*液晶寫命令*/void write_lcd_com(uchar com)rs=0;lcden=0;P0=com;delay_ms(1);lcden=1;delay_ms(1);lcden=0;/*液晶寫數(shù)據(jù)*/void write_lcd_date(uchar date)rs=1;lcden=0;P0=date;delay_ms(1);lcden=1;delay_ms(1);lcden=0;/*液晶初始化程序*/void lc

19、d_init()write_lcd_com(0x38);write_lcd_com(0x0c);write_lcd_com(0x06);write_lcd_com(0x01);/*DS18b20溫度傳感器函數(shù)*/void Init_DS18B20(void) /傳感器初始化 uchar x=0; DATA = 1; /DQ復(fù)位 delay(10); /稍做延時(shí) DATA = 0; /單片機(jī)將DQ拉低 delay(80); /精確延時(shí) 大于 480us /450 DATA = 1; /拉高總線 delay(20); x=DATA; /稍做延時(shí)后 如果x=0則初始化成功 x=1則初始化失敗 del

20、ay(30);/*溫度傳感器讀一個(gè)字節(jié)*/ReadOneChar(void)uchar i=0;uchar dat = 0;for (i=8;i>0;i-) DATA = 0; / 給脈沖信號 dat>>=1; DATA = 1; / 給脈沖信號 if(DATA) dat|=0x80; delay(8); return(dat);/*溫度傳感器寫一個(gè)字節(jié)*/void WriteOneChar(uchar dat) uchar i=0; for (i=8; i>0; i-) DATA = 0; DATA = dat&0x01; delay(10); DATA =

21、1; dat>>=1; delay(8);/*讀取溫度傳感器溫度*/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個(gè)寄存器)前兩個(gè)就是溫度a=ReadOneChar();/低位b=ReadOneCha

22、r();/高位t=b;t<<=8;t=t|a;if(b&0x80) t=t+1;flag_Negative_number = 1; else flag_Negative_number = 0; tt=t*0.0625;t= tt*10+0.5; return(t);/*液晶顯示溫度*/void dis_D18B20(void)int temp;temp=ReadTemperature();/讀溫度bai_18b20=temp%1000/100;/顯示十位shi_18b20=temp%100/10;/顯示個(gè)位ge_18b20=temp%10;/顯示十分位if(flag_Neg

23、ative_number) /負(fù)數(shù)if(bai_18b20=0) /十位為0,則不顯示十位write_lcd_com(0x80+0x40);write_lcd_date(0x2D);write_lcd_date(0x30+shi_18b20);write_lcd_date(0x30+ge_18b20);write_lcd_date(0xDF);write_lcd_date(0x43);elsewrite_lcd_com(0x80+0x40);write_lcd_date(0x2D);write_lcd_date(0x30+bai_18b20);write_lcd_date(0x30+shi_18b20);write_lcd_date(0xDF);write_lcd

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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

提交評論