基于單片機(jī)的測(cè)溫時(shí)鐘設(shè)計(jì)_第1頁(yè)
基于單片機(jī)的測(cè)溫時(shí)鐘設(shè)計(jì)_第2頁(yè)
基于單片機(jī)的測(cè)溫時(shí)鐘設(shè)計(jì)_第3頁(yè)
基于單片機(jī)的測(cè)溫時(shí)鐘設(shè)計(jì)_第4頁(yè)
基于單片機(jī)的測(cè)溫時(shí)鐘設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩10頁(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、專業(yè)課程綜合設(shè)計(jì)專業(yè)課程綜合設(shè)計(jì)題題目目基于基于 AT89S52、DS18B20 的測(cè)溫和時(shí)鐘設(shè)計(jì)的測(cè)溫和時(shí)鐘設(shè)計(jì)學(xué)生姓名學(xué)號(hào)學(xué)院專業(yè)指導(dǎo)教師二一二年六月一日二一二年六月一日基于 AT89S52、DS18B20 的測(cè)溫和時(shí)鐘設(shè)計(jì)摘要摘要:基于單片機(jī)的溫度檢測(cè)與時(shí)鐘系統(tǒng)。溫度檢測(cè)系統(tǒng)也是在日常生活和工業(yè)應(yīng)用非常廣泛的工具, 能實(shí)時(shí)采集周圍的溫度信息進(jìn)行顯示, 此系統(tǒng)是基于 AT89S52 單片機(jī)設(shè)計(jì)的, 包含數(shù)碼管顯示模塊, DS18B20溫度采集模塊,鍵盤輸入模塊。AT89S52 作為控制核心,具有功耗低,功能強(qiáng)等特點(diǎn), 電壓可選 3 到 5V電源供電。 顯示模塊采用數(shù)碼管顯示, 對(duì)于顯示數(shù)字

2、最為合適,而且與單片機(jī)連線簡(jiǎn)單,占用 I/O 口相對(duì)較少。溫度檢測(cè)模塊采用數(shù)字式溫度傳感器 DS18B20,該芯片具有精度高,測(cè)量范圍廣等優(yōu)點(diǎn),易與單片機(jī)連接,模塊電路組成簡(jiǎn)單。關(guān)鍵詞:關(guān)鍵詞:ST89S52;DS18B20;溫度檢測(cè);時(shí)鐘1 設(shè)計(jì)要求1) 實(shí)時(shí)溫度檢測(cè)并顯示。2) 時(shí)鐘能夠顯示時(shí),分,秒,并具有可調(diào)節(jié)性。2 系統(tǒng)方案選擇與論證AT89S52 單片機(jī)作為核心控制體,該單片機(jī)具有高可靠,超低價(jià),低功耗,無(wú)法解密等優(yōu)點(diǎn)。該單片機(jī)屬于雙列直插式封裝的 PDI40 口管腳。具有 4 個(gè)輸入輸出端口, 分別 為 PORT0,PROT1,PROT2,PROT3, 其中 P0 口是一組 8

3、位漏極開(kāi)路型雙向 IO口,校驗(yàn)時(shí),要 求接上拉電阻。其他三個(gè)內(nèi)部有 30K 的電阻,所以不用再外接電阻。此單片機(jī)具有 6 個(gè)中 斷, 其中包括三個(gè)定時(shí)器中斷, 二個(gè)外部中斷, 一個(gè)串口中斷,為全雙工通信口。內(nèi)部有 靜態(tài)非易失 EEPROM 和看門狗。 片內(nèi)含 8Kbbytes 的可反復(fù)檫寫(xiě)的只讀程序存儲(chǔ)器 (PEROM) 和 256bytes 的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM) ,功能強(qiáng)大,適合許多較為復(fù)雜的控制應(yīng)用場(chǎng) 合。相比較其他芯片來(lái)說(shuō)比較適合學(xué)生試驗(yàn)所用,故采用此單片機(jī)作為核心控制芯片。DS18B20 是數(shù)字式溫度傳感器,采用單總線通信協(xié)議。DS18B20 具有體積小,硬件開(kāi) 銷低,抗干擾

4、能力強(qiáng),精度高附加功能強(qiáng),封裝形式多樣等特點(diǎn)。適合各種狹小空間內(nèi)設(shè) 備的數(shù)字測(cè)溫和控制。同時(shí)單線可掛接多個(gè)元件,因?yàn)槊總€(gè)元件都有唯一的一個(gè) 64 位光 刻 ROM 編碼,家族碼為 28H,可以多個(gè)也可單個(gè)操作。電壓測(cè)量范圍是 3.0V 到 5.5V。內(nèi) 部含有 EEPROM,其報(bào)警上、下限溫度值和設(shè)定的分辨率倍數(shù)在芯片掉電的情況不丟失。 并且內(nèi)部帶有 AD 轉(zhuǎn)換電路,技術(shù)較為成熟,所以采用此芯片最為合適。 通過(guò)對(duì)單片機(jī)的編程來(lái)控制 DS18B20 芯片的讀 寫(xiě)操作來(lái)獲取相應(yīng)的信息,通過(guò)對(duì)定時(shí)器 T0 的編程可以實(shí)現(xiàn)時(shí)鐘的形成,再通過(guò)對(duì)數(shù)碼管的編程控制將獲取到的信息通過(guò)一系列轉(zhuǎn)換從而全部顯示到數(shù)

5、碼管顯示上。 最后達(dá)到有溫度采集和時(shí)鐘顯示等功能。3 設(shè)計(jì)方案核心控制體:AT89S52 單片機(jī) ;數(shù)字式溫度傳感器:DS18B20 ??偣苍O(shè)有三個(gè)按鍵,為節(jié)約資源考慮,每個(gè)按鍵都有多種功能。每個(gè)按鍵分別標(biāo)號(hào) 為 A,B,C,.第一次按下 B,C都沒(méi)有反應(yīng), 首先按下 A 鍵可選擇指針位置,B、C 鍵為加減鍵,可以調(diào)節(jié)數(shù)字時(shí)間大小。操作簡(jiǎn)單,按鍵靈活。4 硬件需求AT89S52 單片機(jī)一片,DS18B20 數(shù)字式溫度傳感器一個(gè),+5V 12MHZ 晶振一個(gè),多個(gè)按鍵和開(kāi)關(guān),常用電容電阻,連接線,三極管,二極管若干,兩個(gè)四位共陰數(shù)碼管等。5 設(shè)計(jì)原理框圖及其仿真進(jìn)行溫度測(cè)量仿真時(shí)間調(diào)節(jié)仿真進(jìn)行時(shí)

6、鐘加調(diào)節(jié)進(jìn)行時(shí)鐘減調(diào)節(jié)仿真成功。6 實(shí)物程序/*-按鍵接P10,P11,P12?三個(gè)18B20接P37口段選接P0口位選接P2口1鍵位功能選擇,2鍵為時(shí)間增加,3鍵為時(shí)間減少1鍵按第一下為設(shè)置小時(shí),按第二下為設(shè)置分鐘,按第三下為設(shè)置秒,第四下返回溫度顯示-*/#include/包含頭文件, 一般情況不需要改動(dòng), 頭文件包含特殊功能寄存器的定義#include#include#define uchar unsigned char#define uintunsigned int;/*/*定義端口*/*/sbit DQ=P37;/ds18b20 端口sbit key1=P10;/按鍵1sbit ke

7、y2=P11;/按鍵2sbit key3=P12;/按鍵3/*/*全局變量*/*/unsigned char const dofly=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90;/顯示段碼值01234567unsigned char codeseg=0 xfe,0 xfd,0 xfb,0 xf7,0 xef,0 xdf,0 xbf,0 x7f;/分別對(duì)應(yīng)相應(yīng)的數(shù)碼管點(diǎn)亮,即位碼uint temp,kt,fc;/18b20數(shù)據(jù)變量,按鍵鍵值,功能序號(hào)1對(duì)小時(shí)操作2對(duì)分操作3對(duì)秒操作uchar feige0,feige1,

8、count,num,hours=12,minute=52,second=30;/feige0溫度顯示標(biāo)志?/feige1溫度顯示標(biāo)志/count數(shù)碼管顯示順序的變量/num定時(shí)器計(jì)數(shù)變量/hours,minute,second,初始時(shí)間設(shè)置為12時(shí)51分30秒ucharstr8;/顯示的內(nèi)容的數(shù)據(jù)/*/*函數(shù)聲明*/*/void delay1(uchar MS);/延時(shí)unsigned int ReadTemperature(void);/讀溫度void Init_DS18B20(void);/18b20初始化unsigned char ReadOneChar(void);/讀18b20數(shù)據(jù)v

9、oid WriteOneChar(unsigned char dat);/寫(xiě)18b20數(shù)據(jù)void delay(unsigned int i);/延時(shí)void scankey(void);/獲取按鍵值void function(void);/功能選著/*/*主函數(shù)*/*/main()unsigned char TempH,TempL;TMOD|=0 x01;/定時(shí)器設(shè)置TH0=0 xef;TL0=0 xf0;IE=0 x82;TR0=1;/P0=0 x0;/P2=0 x0;count=0;P1=0 xff;while(1)function();/功能選著scankey();/獲取按鍵鍵值if(

10、feige1=1)/顯示時(shí)間str0=doflyhours/10;/小時(shí)顯示str1=doflyhours%10;str2=0 xbf;str3=doflyminute/10;/分顯示str4=doflyminute%10;str5=0 xbf;str6=doflysecond/10;/秒顯示str7=doflysecond%10;if(feige0=1)&(feige1=0)/顯示當(dāng)前溫度temp=ReadTemperature();TempH=temp4;TempL=temp&0 x0F;TempL=TempL*6/10;/小數(shù)近似處?str1=doflyTempH/100; /百位溫度s

11、tr2=dofly(TempH%100)/10; /十位溫度str3=dofly(TempH%100)%10&0 x7f; /個(gè)位溫度,帶小數(shù)點(diǎn)str4=doflyTempL;str5=0 xff;str6=0 xc6;/顯示C符號(hào)str7=0 xff;if(temp&0 x8000)str0=0 xbf;/負(fù)號(hào)標(biāo)志temp=temp;/ 取反加1temp +=1;elsestr0=0 xff;feige0=0;/while/*/*定時(shí)器中斷*/*/void tim(void) interrupt 1 using 1/中斷,用于數(shù)碼管掃描和溫度檢測(cè)間隔TH0=0 xef;/定時(shí)器重裝值20ms

12、TL0=0 xf0;num+;if (num=220)/50num=0;feige0=1;/標(biāo)志位有效second+;/秒增加if(second=60)second=0;minute+;/分增加if(minute=60)minute=0;hours+;/小時(shí)增加if(hours=24)hours=0;count+;/數(shù)碼管顯示8位if(count=1)P0=seg0;/位選P2=str0;/段選if(count=2)P0=seg1;P2=str1;if(count=3)P0=seg2;P2=str2;if(count=4)P0=seg3;P2=str3;if(count=5)P0=seg4;P

13、2=str4;if(count=6)P0=seg5;P2=str5;if(count=7)P0=seg6;P2=str6;if(count=8)P0=seg7;P2=str7;count=0;/*/*延時(shí)函數(shù)*/*/void delay(unsigned int i)/延時(shí)函數(shù)while(i-);/*/*初始化*/*/void Init_DS18B20(void)unsigned char x=0;DQ = 1;/DQ復(fù)位delay(8);/稍做延時(shí)DQ = 0;/單片機(jī)將DQ拉低delay(80); /精確延時(shí) 大于 480usDQ = 1;/拉高總線delay(10);x=DQ;/稍做延時(shí)

14、后 如果x=0則初始化成功 x=1則初始化失敗delay(5);/*/*讀一個(gè)字節(jié)*/*/unsigned char ReadOneChar(void)unsigned char i=0;unsigned char dat = 0;for (i=8;i0;i-)DQ = 0; / 給脈沖信號(hào)dat=1;DQ = 1; / 給脈沖信號(hào)if(DQ)dat|=0 x80;delay(5);return(dat);/*/*寫(xiě)一個(gè)字節(jié)*/*/void WriteOneChar(unsigned char dat)unsigned char i=0;for (i=8; i0; i-)DQ = 0;DQ =

15、 dat&0 x01;delay(5);DQ = 1;dat=1;delay(5);/*/*讀取溫度*/*/unsigned int ReadTemperature(void)unsigned char a=0;unsigned int b=0;unsigned int t=0;Init_DS18B20();WriteOneChar(0 xCC); / 跳過(guò)讀序號(hào)列號(hào)的操作WriteOneChar(0 x44); / 啟動(dòng)溫度轉(zhuǎn)換delay(200);Init_DS18B20();WriteOneChar(0 xCC); /跳過(guò)讀序號(hào)列號(hào)的操作WriteOneChar(0 xBE); /讀取溫

16、度寄存器等(共可讀9個(gè)寄存器) 前兩個(gè)就是溫度a=ReadOneChar();/低位b=ReadOneChar();/高位b=4)fc=0;feige1=0;kt=0;break;/功能選著1小時(shí)2分3秒case 2:if(fc=1)hours+;/加時(shí)間if(fc=2)minute+;if(fc=3)second+;if(hours=24)hours=0;if(minute=60)minute=0;if(second=60)second=0;kt=0;break;case 3:if(fc=1)hours-;/減時(shí)間if(fc=2)minute-;if(fc=3)second-;if(hour

17、s=0)hours=24;if(minute=0)minute=60;if(second=0)second=60;kt=0;break;void scankey(void)if(!key1)delay(1000);if(!key1)kt=1;while(!key1);if(!key2)delay(1000);if(!key2)kt=2;while(!key2);if(!key3)delay(1000);if(!key3)kt=3;while(!key3);9 結(jié)論與心得這次課程綜合設(shè)計(jì),在編程和仿真方面花了很久時(shí)間。一開(kāi)始,按照時(shí)序圖將讀寫(xiě)函數(shù)寫(xiě)好后,會(huì)顯示秒部分,并準(zhǔn)時(shí)走,但液晶屏不穩(wěn) 定,有一些亂碼和光標(biāo)亂閃。經(jīng)檢查發(fā)現(xiàn)有些發(fā)生地址重疊的沖突,寫(xiě)按鍵部分程序是發(fā) 現(xiàn)調(diào)節(jié)好后在最后刷新屏幕時(shí)調(diào)節(jié)好的時(shí)間沒(méi)有讀取到,不斷調(diào)節(jié)程序, 然后仿真,最終發(fā)現(xiàn)時(shí)沒(méi)有將調(diào)節(jié)好的時(shí)間讀取到寄存器中。 加上溫度傳感器部分后發(fā) 現(xiàn)在調(diào)節(jié)時(shí)間時(shí)出現(xiàn)亂碼和不穩(wěn)定現(xiàn)象, 光標(biāo)亂跳的現(xiàn)象。經(jīng)過(guò)不斷檢查,發(fā)現(xiàn)在按鍵調(diào)節(jié)時(shí)軟件讀取溫度值的標(biāo)志位是允許的, 也就是說(shuō)它在調(diào)節(jié)時(shí)間時(shí)又在動(dòng)態(tài)顯示周圍 環(huán)境中的溫度值,這樣會(huì)導(dǎo)致光標(biāo)不穩(wěn)定的現(xiàn)

溫馨提示

  • 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)論