89C51單片機(jī)課程設(shè)計_第1頁
89C51單片機(jī)課程設(shè)計_第2頁
89C51單片機(jī)課程設(shè)計_第3頁
89C51單片機(jī)課程設(shè)計_第4頁
89C51單片機(jī)課程設(shè)計_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

.摘要摘 要: 隨著現(xiàn)代工農(nóng)業(yè)技術(shù)的發(fā)展及人們對生活環(huán)境要求的提高,人們也迫切需要檢測與控制溫度。本文通過采用蜂鳴器作為電聲元件的溫度報警器的設(shè)計,闡明了該裝置進(jìn)行設(shè)計與制作的具體過程及方法。這種溫度報警器結(jié)構(gòu)簡單,可操作性強(qiáng),應(yīng)用廣泛。工作時,溫度測量范圍為538。當(dāng)前環(huán)境溫度若超過設(shè)定的高溫臨界溫度,由單片機(jī)發(fā)出報警信號,從而防止帶來的不必要的損失。造成高溫火災(zāi)有:電氣線路短路、過載、接觸電阻過大等引發(fā)高溫或火災(zāi);靜電產(chǎn)生高溫或或火災(zāi);雷電等強(qiáng)電侵入導(dǎo)致高溫或火災(zāi);最主要是機(jī)房內(nèi)電腦、空調(diào)等用電設(shè)備長時間工作,導(dǎo)致設(shè)備老化,空調(diào)發(fā)生故障,而不能降溫;因此機(jī)房內(nèi)所屬的電子產(chǎn)品發(fā)熱快,在短時間內(nèi)機(jī)房溫度升高超出設(shè)備正常溫度,導(dǎo)致系統(tǒng)癱瘓或產(chǎn)生火災(zāi),這時溫度報警系統(tǒng)就會發(fā)揮應(yīng)有的功能。關(guān)鍵詞:STC89C51單片機(jī),數(shù)字控制,溫度計,DS18B20目 錄摘要11 設(shè)計要求與方案論證31.1 設(shè)計要求31.2 基本方案31.2.1 單片機(jī)芯片的選擇31.2.2 溫度傳感器設(shè)計32 主要元件介紹42.1 STC89C51介紹42.1.1 STC89C51引腳介紹42.1.2 單片機(jī)最小系統(tǒng):52.2 DS18B20傳感器介紹52.2.1 DS18B20引腳介紹62.2.2 DS18B20的內(nèi)部結(jié)構(gòu)62.3 數(shù)碼管介紹72.3.1 數(shù)碼管概述73 軟件部分83.1程序流程圖83.2 程序. 8結(jié)論15參考文獻(xiàn)16附錄 原理圖17;.1 設(shè)計要求與方案論證1.1 設(shè)計要求基本范圍0-99 ;數(shù)碼管直讀顯示;擴(kuò)展功能:可以任意設(shè)定溫度的上下限報警功能。1.2 基本方案 1.2.1 單片機(jī)芯片的選擇由于單片機(jī)具有以下的很多優(yōu)點,被我們選定為制作該作品的首選芯片單片機(jī)特點:(1)高集成度,體積小,高可靠性 (2)控制功能強(qiáng) (3)低電壓,低功耗,便于生產(chǎn)便攜式產(chǎn)品 (4)易擴(kuò)展 (5)優(yōu)異的性能價格比 本設(shè)計采用STC89C51芯片作為硬件核心。STC89C51內(nèi)部具有8KB ROM 存儲空間,512字節(jié)數(shù)據(jù)存儲空間,帶有2K字節(jié)的EEPROM存儲空間,可以通過串口下載數(shù)據(jù)。1.2.2 溫度傳感器設(shè)計溫度傳感器是溫度測量儀表的核心部分,品種繁多。按測量方式可分為接觸式和非接觸式兩大類,按照傳感器材料及電子元件特性分為熱電阻和熱電偶兩類。溫度傳感器的發(fā)展大致經(jīng)歷了以下三個階段;(1)傳統(tǒng)的分立式溫度傳感器(含敏感元件);(2)模擬集成溫度傳感器/控制器;(3)智能溫度傳感器。國際上新型溫度傳感器正從模擬式向數(shù)字式、由集成化向智能化、網(wǎng)絡(luò)化的方向發(fā)展。由于本設(shè)計是測溫電路,可以使用熱敏電阻之類的器件利用其感溫效應(yīng),在將隨被測溫度變化的電壓或電流采集過來,進(jìn)行 A/D 轉(zhuǎn)換后,就可以用單片機(jī)進(jìn)行數(shù)據(jù)的處理,在顯示電路上,就可以將被測溫度顯示出來,這種設(shè)計需要用到 A/D 轉(zhuǎn)換電路,感溫電路比較麻煩。進(jìn)而考慮到用溫度傳感器,在單片機(jī)電路設(shè)計中,大多都是使用傳感器,所以這是非常容易想到的,所以可以采用一只溫度傳感器 DS18B20,此傳感器,可以很容易直接讀取被測溫度值,進(jìn)行轉(zhuǎn)換,就可以滿足設(shè)計要求。2 主要元件介紹2.1 STC89C51介紹2.1.1 STC89C51引腳介紹 主電源引腳(2根)VCC(Pin40):電源輸入,接5V電源GND(Pin20):接地線外接晶振引腳(2根)XTAL1(Pin19):片內(nèi)振蕩電路的輸入端XTAL2(Pin20):片內(nèi)振蕩電路的輸出端控制引腳(4根)RST/VPP(Pin9):復(fù)位引腳,引腳上出現(xiàn)2個機(jī)器周期的高電平將使單片機(jī)復(fù)位。ALE/PROG(Pin30):地址鎖存允許信號PSEN(Pin29):外部存儲器讀選通信號EA/VPP(Pin31):程序存儲器的內(nèi)外部選通,接低電平從外部程序存儲器讀指令,如果接高電平則從內(nèi)部程序存儲器讀指令。可編程輸入/輸出引腳(32根)STC89C51單片機(jī)有4組8位的可編程I/O口,分別位P0、P1、P2、P3口,每個口有8位(8根引腳),共32根。P0口(Pin39Pin32):8位雙向I/O口線,名稱為P0.0P0.7P1口(Pin1Pin8):8位準(zhǔn)雙向I/O口線,名稱為P1.0P1.7 P2口(Pin21Pin28):8位準(zhǔn)雙向I/O口線,名稱為P2.0P2.7 P3口(Pin10Pin17):8位準(zhǔn)雙向I/O口線,名稱為P3.0P3.7圖1:STC89C51封裝圖2.1.2 單片機(jī)最小系統(tǒng)當(dāng)在STC89C51單片機(jī)的RST引腳引入高電平并保持2個機(jī)器周期時,單片機(jī)內(nèi)部就執(zhí)行復(fù)位操作,按鍵手動復(fù)位有電平方式和脈沖方式兩種。其中電平復(fù)位是通過RST端經(jīng)過電阻與電源VCC接通而實現(xiàn)的。最小系統(tǒng)如圖2所示。圖2 單片機(jī)最小系統(tǒng)電路電路以STC89C51單片機(jī)最小系統(tǒng)為控制核心,測溫電路由DS18B20提供,輸入部分采用三個獨立式按鍵S1、S2、S3。數(shù)碼管顯示部分。具體電路連接,見附錄1。2.2 DS18B20傳感器介紹2.2.1 DS18B20引腳介紹圖3:DS18B20引腳各引腳功能為:I/O為數(shù)據(jù)輸入/輸出端(即單線總線),它屬于漏極開路輸出,外接上拉電阻后,常態(tài)下呈高電平。UDD是可供選用的外部電源端,不用時接地,GND為地,NC空腳。2.2.2 DS18B20的內(nèi)部結(jié)構(gòu)DS18B20的內(nèi)部結(jié)構(gòu)主要包括7部分:寄生電源、溫度傳感器、64位激光(loser)ROM與單線接口、高速暫存器(即便筏式RAM,用于存放中間數(shù)據(jù))、TH觸發(fā)寄存器和TL觸發(fā)寄存器,分別用來存儲用戶設(shè)定的溫度上下限值、存儲和控制邏輯、位循環(huán)冗余校驗碼(CRC)發(fā)生器。圖4:DS18B20內(nèi)部結(jié)構(gòu)2.3 數(shù)碼管介紹數(shù)碼管是一種半導(dǎo)體發(fā)光器件,其基本單元是發(fā)光二極管。數(shù)碼管按段數(shù)分為七段數(shù)碼管和八段數(shù)碼管,八段數(shù)碼管比七段數(shù)碼管多一個發(fā)光二極管單元(多一個小數(shù)點顯示);按能顯示多少個“8”可分為1位、2位、4位等等數(shù)碼管; 按發(fā)光二極管單元連接方式分為共陽極數(shù)碼管和共陰極數(shù)碼管。共陽數(shù)碼管是指將所有發(fā)光二極管的陽極接到一起形成公共陽極(COM)的數(shù)碼管,共陽數(shù)碼管在應(yīng)用時應(yīng)將公共極COM接到+5V,當(dāng)某一字段發(fā)光二極管的陰極為低電平時,相應(yīng)字段就點亮,當(dāng)某一字段的陰極為高電平時,相應(yīng)字段就不亮。共陰數(shù)碼管是指將所有發(fā)光二極管的陰極接到一起形成公共陰極(COM)的數(shù)碼管,共陰數(shù)碼管在應(yīng)用時應(yīng)將公共極COM接到地線GND上,當(dāng)某一字段發(fā)光二極管的陽極為高電平時,相應(yīng)字段就點亮,當(dāng)某一字段的陽極為低電平時,相應(yīng)字段就不亮。2.3.1 數(shù)碼管概述圖5:數(shù)碼管數(shù)碼顯示器是一種由LED發(fā)光二極管組合顯示字符的顯示器件,它使用了8個Led發(fā)光二極管,其中七個用于顯示字符,一個顯示小數(shù)點,所以通稱為七段發(fā)光二極管數(shù)碼顯示器。4位一體數(shù)碼管,其內(nèi)部段已連接好,引腳如圖所示(數(shù)碼管的正面朝自己,小數(shù)點在下方)。a、b、c、d、e、f、g、dp為段引腳,S1、S2、S3、S4分別表示四個數(shù)碼管的位。3 軟件設(shè)計3.1 程序流程圖圖6:程序流程圖3.2 程序#include #define uint unsigned int#define uchar unsigned char /宏定義#define SET P3_1 /定義調(diào)整鍵#define DEC P3_2 /定義減少鍵#define ADD P3_3 /定義增加鍵#define BEEP P3_6 /定義蜂鳴器#define ALAM P1_2/定義燈光報警#define DQ P3_7 /定義DS18B20總線I/Obit shanshuo_st; /閃爍間隔標(biāo)志bit beep_st; /蜂鳴器間隔標(biāo)志sbit DIAN = P05; /小數(shù)點uchar x=0; /計數(shù)器signed char m; /溫度值全局變量uchar n; /溫度值全局變量uchar set_st=0; /狀態(tài)標(biāo)志signed char shangxian=38; /上限報警溫度,默認(rèn)值為38signed char xiaxian=5; /下限報警溫度,默認(rèn)值為 5/uchar code LEDData=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff;uchar code LEDData=0x5F,0x44,0x9D,0xD5,0xC6,0xD3,0xDB,0x47,0xDF,0xD7,0xCF,0xDA,0x9B,0xDC,0x9B,0x8B;=/=DS18B20=/*延時子程序*/void Delay_DS18B20(int num) while(num-) ;/*初始化DS18B20*/void Init_DS18B20(void) unsigned char x=0; DQ = 1; /DQ復(fù)位 Delay_DS18B20(8); /稍做延時 DQ = 0; /單片機(jī)將DQ拉低 Delay_DS18B20(80); /精確延時,大于480us DQ = 1; /拉高總線 Delay_DS18B20(14); x = DQ; /稍做延時后,如果x=0則初始化成功,x=1則初始化失敗 Delay_DS18B20(20);/*讀一個字節(jié)*/unsigned char ReadOneChar(void) unsigned char i=0; unsigned char dat = 0; for (i=8;i0;i-) DQ = 0; / 給脈沖信號 dat=1; DQ = 1; / 給脈沖信號 if(DQ) dat|=0x80; Delay_DS18B20(4); return(dat);/*寫一個字節(jié)*/void WriteOneChar(unsigned char dat) unsigned char i=0; for (i=8; i0; i-) DQ = 0; DQ = dat&0x01; Delay_DS18B20(5); DQ = 1; dat=1; /*讀取溫度*/unsigned int ReadTemperature(void) unsigned char a=0; unsigned char b=0; unsigned int t=0; float tt=0; Init_DS18B20(); WriteOneChar(0xCC); /跳過讀序號列號的操作 WriteOneChar(0x44); /啟動溫度轉(zhuǎn)換 Init_DS18B20(); WriteOneChar(0xCC); /跳過讀序號列號的操作 WriteOneChar(0xBE); /讀取溫度寄存器 a=ReadOneChar(); /讀低8位 b=ReadOneChar(); /讀高8位 t=b; t=8; t=t|a; tt=t*0.0625; t= tt*10+0.5; /放大10倍輸出并四舍五入 return(t);/=/*延時子程序*/void Delay(uint num) while( -num );/*初始化定時器0*/void InitTimer(void)TMOD=0x1;TH0=0x3c;TL0=0xb0; /50ms(晶振12M)/*讀取溫度*/void check_wendu(void)uint a,b,c;c=ReadTemperature()-5; /獲取溫度值并減去DS18B20的溫漂誤差a=c/100; /計算得到十位數(shù)字b=c/10-a*10; /計算得到個位數(shù)字m=c/10; /計算得到整數(shù)位n=c-a*100-b*10; /計算得到小數(shù)位if(m99)m=99;n=9; /設(shè)置溫度顯示上限 /*顯示開機(jī)初始化等待畫面*/void Disp_init(void) P0 = 0x80; /顯示-P2 = 0x7F;Delay(200);P2 = 0xDF;Delay(200); P2 = 0xF7;Delay(200);P2 = 0xFD;Delay(200);P2 = 0xFF; /關(guān)閉顯示/*顯示溫度子程序*/void Disp_Temperature(void) /顯示溫度P0 = 0x98; /顯示CP2 = 0x7F;Delay(400);P0=LEDDatan; /顯示個位P2 = 0xDF;Delay(400);P0 =LEDDatam%10; /顯示十位DIAN = 0; /顯示小數(shù)點P2 = 0xF7;Delay(400);P0 =LEDDatam/10; /顯示百位P2 = 0xFD;Delay(400);P2 = 0xff; /關(guān)閉顯示/*顯示報警溫度子程序*/void Disp_alarm(uchar baojing)P0 =0x98; /顯示CP2 = 0x7F;Delay(200);P0 =LEDDatabaojing%10; /顯示十位P2 = 0xDF;Delay(200);P0 =LEDDatabaojing/10; /顯示百位P2 = 0xF7;Delay(200);if(set_st=1)P0 =0xCE;else if(set_st=2)P0 =0x1A; /上限H、下限L標(biāo)示P2 = 0xFD;Delay(200);P2 = 0xff; /關(guān)閉顯示/*報警子程序*/void Alarm()if(x=10)beep_st=beep_st;x=0;if(m=shangxian&beep_st=1)|(mxiaxian&beep_st=1)BEEP=0;ALAM=0;elseBEEP=1;ALAM=1;/*主函數(shù)*/void main(void) uint z; InitTimer(); /初始化定時器 EA=1; /全局中斷開關(guān) TR0=1; ET0=1; /開啟定時器0 IT0=1; IT1=1; check_wendu(); check_wendu(); for(z=0;z2)set_st=0; if(set_st=0) EX0=0; /關(guān)閉外部中斷0 EX1=0; /關(guān)閉外部中斷1 check_wendu(); Disp_Temperature(); Alarm(); /報警檢測 else if(set_st=1) BEEP=1; /關(guān)閉蜂鳴器 ALAM=1; EX0=1; /開啟外部中斷0 EX1=1; /開啟外部中斷1 if(x=10)shanshuo_st=shanshuo_st;x=0; if(shanshuo_st) Disp_alarm(shangxian); else if(set_st=2) BEEP=1; /關(guān)閉蜂鳴器 ALAM=1; EX0=1; /開啟外部中斷0 EX1=1; /開啟外部中斷1 if(x=10)shanshuo_st=shanshuo_st;x=0; if(shanshuo_st) Disp_alarm(xiaxian); /*定時器0中斷服務(wù)程序*/void timer0(void) interrupt 1 TH0=0x3c; TL0=0xb0; x+;/*外部中斷0服務(wù)程序*/void int0(void) interrupt 0 EX0=0; /關(guān)外部中斷0 if(DEC=0&set_st=1) doDisp_alarm(shangxian); while(DEC=0); shangxian-; if(shangxianxiaxian)shangxian=xiaxian; else if(DEC=0&set_st=2) doDisp_alarm(xiaxian); while(DEC=

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論