基于STCC單片機(jī)的LED溫計(jì)設(shè)計(jì)_第1頁(yè)
基于STCC單片機(jī)的LED溫計(jì)設(shè)計(jì)_第2頁(yè)
基于STCC單片機(jī)的LED溫計(jì)設(shè)計(jì)_第3頁(yè)
基于STCC單片機(jī)的LED溫計(jì)設(shè)計(jì)_第4頁(yè)
基于STCC單片機(jī)的LED溫計(jì)設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、目錄1.、設(shè)計(jì)的任務(wù)與要求21.1系統(tǒng)設(shè)計(jì)的背景21.2理論基礎(chǔ)22、總體設(shè)計(jì)和系統(tǒng)框圖22.1溫度采集模塊32.2溫度顯示模塊33、設(shè)計(jì)方案43.1硬件系統(tǒng)設(shè)計(jì)4供電電路設(shè)計(jì)4溫度采集模塊設(shè)計(jì)4顯示電路53.2軟件系統(tǒng)設(shè)計(jì)63.2.1 DS18B20的讀寫(xiě)時(shí)序6程序流程圖74、硬件原理圖85、系統(tǒng)仿真和調(diào)試96.程序源代碼97、設(shè)計(jì)結(jié)果分析148、設(shè)計(jì)總結(jié)和體會(huì)159、參考文獻(xiàn)16附錄一:硬件原理圖17摘要 本文介紹了采用51系列單片機(jī)和DS18B20溫度傳感器,實(shí)現(xiàn)數(shù)字溫度測(cè)量,用數(shù)碼管把溫度實(shí)時(shí)顯示出來(lái),溫度以兩位整數(shù)位和一位小數(shù)位的形式顯示。 本系統(tǒng)主要包括供電模塊、單片機(jī)最小系統(tǒng)模塊

2、、DS18B20溫度采集模塊和LED數(shù)碼管顯示模塊。關(guān)鍵詞:51單片機(jī) DS18B20 LED1.、設(shè)計(jì)的任務(wù)與要求1.1系統(tǒng)設(shè)計(jì)的背景溫度的測(cè)量廣泛的應(yīng)用在工農(nóng)業(yè)生產(chǎn)和社會(huì)生活中,由于工農(nóng)業(yè)的發(fā)展要求溫度的測(cè)量的精度和實(shí)時(shí)性提出了更高的要求,傳統(tǒng)的水銀溫度計(jì)和熱電偶等,存在測(cè)量不方便、精度低、采集和傳輸較復(fù)雜等缺點(diǎn)。本設(shè)計(jì)采用美國(guó)Dallas公司的DS18B20和stc89c52單片機(jī)構(gòu)成溫度測(cè)量系統(tǒng),用LED數(shù)碼管實(shí)時(shí)顯示溫度,具有更高的智能性和直觀性。1.2理論基礎(chǔ)要較好的設(shè)計(jì)出溫度計(jì),需要我們深入的了解DS18B20溫度傳感器的構(gòu)造、接線、信息溝通,要較好的掌握51系列單片機(jī)的使用以及

3、硬件搭建,LED數(shù)碼管的顯示原理以及與單片機(jī)的連接。要找出一個(gè)較好的溫度采集方案,使得到的溫度更加準(zhǔn)確。2、總體設(shè)計(jì)和系統(tǒng)框圖包括方案比較、方案論證、方案選擇(以方框圖的形式給出各方案,并簡(jiǎn)要說(shuō)明)為了以數(shù)字的形式來(lái)顯示采集的溫度我們需要以一個(gè)單片機(jī)來(lái)處理數(shù)據(jù),由于對(duì)單片機(jī)的性能要求不是很高,我們采用51系列單片機(jī)來(lái)處理數(shù)據(jù),系統(tǒng)總體方框圖如圖1。圖12.1溫度采集模塊 采用DS18B20溫度傳感器,DS18B20輸出的量為數(shù)字量,只要按特定的時(shí)序讀出數(shù)值就可獲得溫度數(shù)據(jù),電路較為簡(jiǎn)單且成本較低,DS18B20如圖3所示,所以選擇方案二。 圖3 DS18B202.2溫度顯示模塊 采用LED數(shù)碼

4、管顯示,雖然占用了單片機(jī)較多的時(shí)間,但數(shù)碼管顯示的較清晰,且價(jià)格較便宜連接電路簡(jiǎn)單。3、設(shè)計(jì)方案 3.1硬件系統(tǒng)設(shè)計(jì)51系列單片機(jī)性能穩(wěn)定價(jià)格便宜功耗低,使用于在較低應(yīng)用下的智能系統(tǒng)的設(shè)計(jì)。3.1.1供電電路設(shè)計(jì)該單片機(jī)的正常工作電壓為+5V,可以由外界直接輸入+5V電壓,此單片機(jī)采用USB供電。圖4 供電電路3.1.4溫度采集模塊設(shè)計(jì)本系統(tǒng)采用DS18B20作為溫度采集芯片,DS18B20通過(guò)一個(gè)單線接口發(fā)送或接收信息,因此在中央微處理器和DS18B20之間僅需一條連接線,每只DS18B20都有一個(gè)獨(dú)特的片序列號(hào),所以多只DS18B20可以同時(shí)連在一根單線總線上。DS1820 依靠一個(gè)單線端

5、口通訊。在單線端口條件下,必須先建立 ROM 操作協(xié)議,才能進(jìn)行存儲(chǔ)器和控制操作。因此,控制器必須首先提供下面 5 個(gè) ROM 操作命令之一:1)讀 ROM,2)匹配 ROM,3)搜索ROM,4)跳過(guò) ROM,5)報(bào)警搜索。這些命令對(duì)每個(gè)器件的激光 ROM 部分進(jìn)行操作,在單線總線上掛有多個(gè)器件時(shí),可以區(qū)分出單個(gè)器件,同時(shí)可以向總線控制器指明有多少器件或是什么型號(hào)的器件。成功執(zhí)行完一條 ROM 操作序列后,即可進(jìn)行存儲(chǔ)器和控制操作,控制器可以提供 6 條存儲(chǔ)器和控制操作指令中的任一條。 一條控制操作命令指示 DS1820 完成一次溫度測(cè)量。測(cè)量結(jié)果放在 DS1820 的暫存器里,用一條讀暫存器

6、內(nèi)容的存儲(chǔ)器操作命令可以把暫存器中數(shù)據(jù)讀出。硬件電路設(shè)計(jì)如圖7所示。圖7 DS18B20硬件連接3.1.5顯示電路我們最常用的是七段式和八段式LED數(shù)碼管,八段比七段多了一個(gè)小數(shù)點(diǎn),所謂的八段就是指數(shù)碼管里有八個(gè)小LED發(fā)光二極管,通過(guò)控制不同的LED的亮滅來(lái)顯示不同的字形。數(shù)碼管又分為共陰極和共陽(yáng)極兩種,共陰極就是將八個(gè)LED的陰極連在一起,讓其接地,這樣給任何一個(gè)LED的另一端高電平,它便能點(diǎn)亮。共陽(yáng)極就是將八個(gè)LED的陽(yáng)極連在一起。其原理圖如圖9所示。圖9 LED原理圖3.2軟件系統(tǒng)設(shè)計(jì)3.2.1 DS18B20的讀寫(xiě)時(shí)序圖10 初始化過(guò)程 復(fù)位和存在脈沖圖11 控制器寫(xiě)時(shí)序圖12 控制

7、器讀時(shí)序3.2.2程序流程圖圖13 系統(tǒng)流程圖 4、硬件原理圖5、系統(tǒng)仿真和調(diào)試 在仿真過(guò)程中溫度由高到零下,然后又由零下調(diào)到零上,觀察到數(shù)碼管顯示的溫度可以很好的跟蹤溫度的變化。具有較好的靈活性和準(zhǔn)確性。仿真過(guò)程中的兩個(gè)截圖如下。圖14 仿真截圖1圖15 仿真截圖26.程序源代碼在仿真過(guò)程中觀察到數(shù)碼管顯示的溫度可以很好的跟蹤溫度的變化。具有較好的靈活性和準(zhǔn)確性。程序源代碼如下。#include<reg52.h>#include<intrins.h>sbit p1_1=P10;sbit DS=P33;unsigned int a,i;unsigned char dum

8、a = 0x28,0xF9,0x4C,0x58,0x99,0x1A,0x0B,0xF8,0x08,0x98,0x88,0x08,0x2E,0x28,0x0E,0x8E,0xF7;unsigned code wema=0x7F,0xBF,0xDF,0xEF;unsigned baiwei,shiwei,gewei,dianhou;#define uchar unsigned char/將unsigned char定義為uchar,簡(jiǎn)化輸寫(xiě)。提高編程速度#define uint unsigned int/將unsigned char定義為uint,簡(jiǎn)化輸寫(xiě)。提高編程速度/*延時(shí)子程序10ms*/v

9、oid delay5ms() uchar a,b;for(a=20;a>0;a-)for(b=30;b>0;b-);/*延時(shí)子程序*/ void delayb(uint count) uint i;while(count)i=200;while(i>0)i-;count-;/*DS18B20初始化*/void dsreset(void) uint i; DS=0;i=103;while(i>0)i-;DS=1;i=4;while(i>0)i-;/*讀一位數(shù)據(jù)值*/bit tmpreadbit(void) uint i;bit dat;DS=0;i+; /i+,小延

10、時(shí)一下DS=1;i+;i+;dat=DS;i=8;while(i>0)i-;return (dat);/*讀一個(gè)字節(jié)數(shù)據(jù)*/uchar tmpread(void) uchar i,j,dat;dat=0;for(i=1;i<=8;i+)j=tmpreadbit();dat=(j<<7)|(dat>>1); /讀出的數(shù)據(jù)最低位在最前面,這樣剛好/一個(gè)字節(jié)在DAT里return(dat); /將一個(gè)字節(jié)數(shù)據(jù)返回/*寫(xiě)一個(gè)字節(jié)到DS18B20里*/void tmpwritebyte(uchar dat) uint i;uchar j;bit testb;for(j

11、=1;j<=8;j+)testb=dat&0x01;dat=dat>>1;if(testb) / 寫(xiě)1部分DS=0;i+;i+;DS=1;i=8;while(i>0)i-;elseDS=0; /寫(xiě)0部分i=8;while(i>0)i-;DS=1;i+;i+;/*獲取溫度并轉(zhuǎn)化命令*/void tmpchange(void) dsreset(); /初始化DS18B20delayb(1); /延時(shí)tmpwritebyte(0xcc); /跳過(guò)序列號(hào)命令tmpwritebyte(0x44); /發(fā)送溫度轉(zhuǎn)換命令/*讀取DS18B20中溫度寄存器數(shù)據(jù)*/void

12、 get_temp(void) float ftemp;uchar a,b; int temp;dsreset();delayb(1);tmpwritebyte(0xcc); tmpwritebyte(0xbe); /發(fā)送讀取數(shù)據(jù)命令a=tmpread(); /連續(xù)讀兩個(gè)字節(jié)數(shù)據(jù),讀低8位b=tmpread(); /讀高8位temp=b;temp<<=8; /temp高8位和低8位交換,將交換過(guò)的值重新賦給temp。temp=temp|a; /兩字節(jié)合成一個(gè)字ftemp=temp*0.0625; /得到真實(shí)十進(jìn)制溫度值,因?yàn)镈S18B20可以精確到0.062度 /所以讀回?cái)?shù)據(jù)的最低

13、位代表的是0.0625度 temp=ftemp*10+0.5; /放大十倍,這樣做的目的將小數(shù)點(diǎn)后第一位也轉(zhuǎn)換為可顯示數(shù)字,同時(shí)進(jìn)行一個(gè)四舍五入操作。baiwei=temp/1000;/顯示百位溫度,這里用1000,是因?yàn)槲覀冎肮砸?0位了 delayb(1); shiwei=temp%1000/100;/顯示十位溫度 delayb(1); gewei=temp%1000%100/10;/顯示個(gè)位溫度。 delayb(1);dianhou=temp%10;/顯示小數(shù)點(diǎn)后溫度void display(uchar num,uchar dat)P0=dumadat; /段碼P2=wemanum;

14、/位碼void delay1(uint x)uint a,b;for(a=x;a>0;a-)for(b=50;b>0;b-);void dis_temp() display(2,shiwei); delay1(1);display(1,gewei);delay1(1);display(1,16);/顯示小數(shù)點(diǎn)delay1(1);display(0,dianhou); delay1(1); void main() while(1) tmpchange(); /溫度轉(zhuǎn)換 get_temp(); for(i=25;i>0;i-) /讓數(shù)碼管顯示更加清晰 dis_temp(); 7、

15、設(shè)計(jì)結(jié)果分析仿真過(guò)程中調(diào)節(jié)溫度,數(shù)碼管顯示的溫度可以很好的跟著變化,小數(shù)點(diǎn)后顯示一位,達(dá)到預(yù)定的目標(biāo)。 器件一覽表如 表1器件名稱數(shù)量Stc89c52單片機(jī)1個(gè)晶振11.0592MHZ1個(gè)10uf有極性電容1個(gè)開(kāi)關(guān)1個(gè)阻排1個(gè)8段共陽(yáng)數(shù)碼管4個(gè)DS18B20溫度傳感器1個(gè)8、設(shè)計(jì)總結(jié)和體會(huì) 通過(guò)對(duì)這一系統(tǒng)的設(shè)計(jì),我們對(duì)以前所學(xué)的知識(shí)有了更深的了解,懂得了以前基礎(chǔ)學(xué)習(xí)的重要性,在這一設(shè)計(jì)過(guò)程中我們查閱了大量地資料,并對(duì)以往所學(xué)進(jìn)行了系統(tǒng)性的復(fù)習(xí)和總結(jié)。今后我們會(huì)更加注重基礎(chǔ)知識(shí)的學(xué)習(xí)。設(shè)計(jì)過(guò)程中我們小組三人展開(kāi)了密切的合作并明確了分工,其中xxx完成了硬件電路的分析設(shè)計(jì)和proteus7.0仿真

16、環(huán)境的學(xué)習(xí)并很好的為本設(shè)計(jì)作好了仿真的工作,xxx為本設(shè)計(jì)繪制了protell99電路原理圖和參加了仿真的部分設(shè)計(jì)工作,xxx學(xué)習(xí)和編寫(xiě)了在KEIL環(huán)境下的51單片機(jī)軟件的設(shè)計(jì),在設(shè)計(jì)過(guò)程中組內(nèi)三人展開(kāi)了熱烈的討論,遇到問(wèn)題共同探討,在指導(dǎo)老師的指導(dǎo)下,成功的完成了LED溫度計(jì)的設(shè)計(jì),取得了較好的效果。設(shè)計(jì)過(guò)程中我們采取了創(chuàng)新性的設(shè)計(jì),我們并沒(méi)有讓LED一直都亮,而是采取了閃爍的形式,不僅降低了功耗,而且延長(zhǎng)了LED數(shù)碼管的壽命。本系統(tǒng)還可以采用干電池供電,從而系統(tǒng)具有較好的可攜帶性。本系統(tǒng)中我們的設(shè)計(jì)是采取有線的設(shè)計(jì),單片機(jī)和DS18B20是在一起的,由于時(shí)間倉(cāng)促,如果近一步研究,我們想把有線的設(shè)計(jì)改成無(wú)線的設(shè)計(jì),我們把溫度傳感器和單片機(jī)之間以無(wú)線的方式相連,把較多溫度傳感器的數(shù)據(jù)采集到主控單片機(jī),可以檢測(cè)到更多的溫度數(shù)據(jù),對(duì)于溫度的控制和分

溫馨提示

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

評(píng)論

0/150

提交評(píng)論