多點溫度檢測系統(tǒng)試驗_第1頁
多點溫度檢測系統(tǒng)試驗_第2頁
多點溫度檢測系統(tǒng)試驗_第3頁
多點溫度檢測系統(tǒng)試驗_第4頁
多點溫度檢測系統(tǒng)試驗_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、多點溫度檢測系統(tǒng)實驗(設(shè)計性實驗)一、實驗?zāi)康耐ㄟ^仿真搭建和實物搭建相結(jié)合,完成多點溫度檢測單片機系統(tǒng)設(shè)計。二、實驗內(nèi)容1、方案一:用8279芯片為鍵盤和數(shù)碼顯示控制芯片,完成靈活的設(shè)置與顯示設(shè)計,建立基本的串行口(MAX232接口),普通的I/0口,A/D轉(zhuǎn)換口功能,采樣多個點,并按鍵顯示不同的通道采樣數(shù)據(jù)。方案二:以8255或8155芯片為鍵盤顯示控制芯片,建立基本的串行口(MAX232樓口),普通的I/0日,VD轉(zhuǎn)換轉(zhuǎn)換口功能,采樣多個點,并按鍵顯示不同的通道采樣數(shù)據(jù)。2、用Proteus仿真軟件搭建仿真硬件電路圖。驗證編制軟件。3、用prote199s布原理圖、建PCB板圖。4、實物器

2、件焊接搭建。三、硬件設(shè)計硬件元件參考清單單片機AT89C51瓷片電容CAP30PF晶振CRYSTAL12MHz電解電容CAP-ELEC電阻RES按鈕BUTTON發(fā)光數(shù)碼管LED插針8*2開關(guān)SWTTCH排陽RESPACK-88*2排座單排20*1插針DS18B208255芯片熱敏電阻74LS138芯片74LS37374LS245DAC0809232芯片以DS18B20為傳感器、AT89C51單片機為控制核心組成多點溫度測試系統(tǒng)。四、實驗程序以及系統(tǒng)框圖系統(tǒng)框圖(二)實驗程序:#include<REG51.H>#include<intrins.h>#include<

3、math.h>#defineuintunsignedint#defineucharunsignedcharuchartemp_value;ucharTempBuffer7;voidshow_time();uchartemp_value1;ucharTempBuffer17;charxiaoshu=0;charxiaoshu1=0;voidshow_time1();/溫度值/液晶顯木程序/溫度值"*1602液晶顯示部分子程序*/chardone,count,temp,flag,up_flag,down_flag;/PortDefinitionssbitLcdRs=P2A0;sbi

4、tLcdRw=P2A1;sbitLcdEn=P2A2;sfrDBPort=0x80;/P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.數(shù)據(jù)端口sbitDQ=P1A7;/溫度傳送數(shù)據(jù)IO口sbitDQ1=P1A6;/內(nèi)部等待函數(shù)unsignedcharLCD_Wait(void)LcdRs=0;LcdRw=1;_nop_();LcdEn=1;_nop_();LcdEn=0;returnDBPort;)0/Command1/Data/清屏0x02/光標(biāo)返回原點/向LCD寫入命令或數(shù)據(jù)#defineLCD_COMMAND#defineLCD_DATA#defineLCD_CLEAR_

5、SCREENX01#defineLCD_HOMINGvoidLCD_Write(bitstyle,unsignedcharinput)LcdEn=0;LcdRs=style;LcdRw=0;_nop_();DBPort=input;_nop_();LcdEn=1;_nop_();LcdEn=0;_nop_();LCD_Wait();)/設(shè)置顯示模式#defineLCD_SHOW0x04/業(yè)小開#defineLCD_HIDE0x00/顯示關(guān)#defineLCD_CURSOR0x02/業(yè)已初、#defineLCD_NO_CURSOR0x00/無光標(biāo)#defineLCD_FLASH0x01/光標(biāo)閃動

6、#defineLCD_NO_FLASH0x00光標(biāo)不閃動voidLCD_SetDisplay(unsignedcharDisplayMode)LCD_Write(LCD_COMMAND,0x08|DisplayMode);)/設(shè)置輸入模式#defineLCD_AC_UP#defineLCD_AC_DOWN0x020x00/default#defineLCD_MOVE0x01/回面可平移#defineLCD_NO_MOVE0x00/defaultvoidLCD_SetInput(unsignedcharInputMode)LCD_Write(LCD_COMMAND,0x04|InputMode)

7、;)初始化LCDvoidLCD_Initial()LcdEn=0;LCD_Write(LCD_COMMAND,0x38);/8位數(shù)據(jù)端口,2行顯示,5*7點陣LCD_Write(LCD_COMMAND,0x38);LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR);開啟顯示,無光標(biāo)LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN)/清屏LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE);/AC遞增,畫面不動/液晶字符輸入的位置voidGotoXY(unsignedcharx,unsignedchary)if(y=0)LC

8、D_Write(LCD_COMMAND,0x80|x);if(y=1)LCD_Write(LCD_COMMAND,0x80|(x-0x40);將字符輸出到液晶顯示voidPrint(unsignedchar*str)while(*str!=''0')LCD_Write(LCD_DATA,*str);str+;/*ds18b20子程序*/*ds18b20延遲子函數(shù)(晶振12MHz)*/voiddelay_18B20(unsignedinti)while(i-);/*ds18b20初始化函數(shù)*/voidInit_DS18B20(void)unsignedcharx=0;DQ

9、=1;/DQ復(fù)位delay_18B20(8);稍做延時DQ=0;/單片機將DQ拉低delay_18B20(80);/精確延時大于480usDQ=1;拉高總線delay_18B20(14);x=DQ;稍做延時后如果x=0則初始化成功x=1則初始化失敗delay_18B20(20);/*ds18b20讀一個字節(jié)*/unsignedcharReadOneChar(void)uchari=0;uchardat=0;for(i=8;i>0;i-)DQ=0;/給脈沖信號dat>>=1;DQ=1;/給脈沖信號if(DQ)dat|=0x80;delay_18B20(4);)return(da

10、t);/*ds18b20寫一個字節(jié)*/voidWriteOneChar(uchardat)unsignedchari=0;for(i=8;i>0;i-)DQ=0;DQ=dat&0x01;delay_18B20(5);DQ=1;dat>>=1;)/*讀取ds18b20當(dāng)前溫度*/voidReadTemp(void)unsignedchara=0;unsignedcharb=0;chart;longtt;Init_DS18B20();WriteOneChar(0xCC);/跳過讀序號列號的操作WriteOneChar(0x44);/啟動溫度轉(zhuǎn)換delay_18B20(10

11、0);/thismessageisweryimportantInit_DS18B20();WriteOneChar(0xCC);/跳過讀序號列號的操作前兩個就是溫度WriteOneChar(0xBE);/讀取溫度寄存器等(共可讀9個寄存器)/讀取溫度值低位/讀取溫度值高位delay_18B20(100);a=ReadOneChar();b=ReadOneChar();temp_value=b<<4;temp_value+=(a&0xf0)>>4;t=a&0x0f;tt=t*625;xiaoshu=tt/1000;)voidtemp_to_str()/溫度

12、數(shù)據(jù)轉(zhuǎn)換成液晶字符顯示TempBuffer0=temp_value/10+'0'/十位TempBuffer1=temp_value%10+'0'/個位TempBuffer2='.'TempBuffer3=xiaoshu+'0'TempBuffer4=0xdf;TempBuffer5='C'TempBuffer16='0'voidDelay1ms(unsignedintcount)unsignedinti,j;for(i=0;i<count;i+)for(j=0;j<120;j+);voi

13、dshow_time()/液晶顯木程序ReadTemp();temp_to_str();GotoXY(0,0);Print("NO.1");GotoXY(0,1);Print("TEMP:");GotoXY(6,1);Print(TempBuffer);Delay1ms(400);/開啟溫度采集程序/溫度數(shù)據(jù)轉(zhuǎn)換成液晶字符/液晶字符顯示位置/顯示溫度/掃描延時/*ds18b20子程序*/*ds18b20/*ds18b20voidInit_DS18B201(void)unsignedcharx=0;DQ1=1;delay_18B20(8);DQ1=0;de

14、lay_18B20(80);DQ1=1;delay_18B20(14);x=DQ1;delay_18B20(20);/*ds18b20延遲子函數(shù)(晶振12MHz)*/初始化函數(shù)*/DQ復(fù)位稍做延時單片機將DQ拉低/精確延時大于480us/拉高總線稍做延時后如果x=0則初始化成功x=1則初始化失敗讀一個字節(jié)*/unsignedcharReadOneChar1(void)uchari=0;uchardat=0;for(i=8;i>0;i-)DQ1=0;/給脈沖信號dat>>=1;DQ1=1;給脈沖信號if(DQ1)dat|=0x80;delay_18B20(4);)return(

15、dat);/*ds18b201寫一個字節(jié)*/voidWriteOneChar1(uchardat)unsignedchari=0;for(i=8;i>0;i-)DQ1=0;DQ1=dat&0x01;delay_18B20(5);DQ1=1;dat>>=1;)/*讀取ds18b201當(dāng)前溫度*/跳過讀序號列號的操作/啟動溫度轉(zhuǎn)換/thismessageisveryimportant/跳過讀序號列號的操作讀取溫度寄存器等(共可讀9個寄存器)前兩個就是溫度/讀取溫度值低位/讀取溫度值高位voidReadTemp1(void)unsignedchara=0;unsignedc

16、harb=0;unsignedchart=0;longtt;Init_DS18B201();WriteOneChar1(0xCC);WriteOneChar1(0x44);delay_18B20(100);Init_DS18B201();WriteOneChar1(0xCC);WriteOneChar1(0xBE);delay_18B20(100);a=ReadOneChar1();b=ReadOneChar1();temp_value1=b<<4;temp_value1+=(a&0xf0)>>4;t=a&0x0f;tt=t*625;xiaoshu1=t

17、t/1000;)voidtemp_to_str1()/溫度數(shù)據(jù)轉(zhuǎn)換成液晶字符顯示TempBuffer10=temp_value1/10+'0'十位TempBuffer11=temp_value1%10+'0'/個位TempBuffer12='.'TempBuffer13=xiaoshu1+'0'TempBuffer14=0xdf;TempBuffer15='C'TempBuffer16='0'voidshow_time1()/液晶顯木程序ReadTemp1();temp_to_str1();Goto

18、XY(0,0);Print("NO.2");GotoXY(0,1);Print("TEMP:");GotoXY(6,1);Print(TempBuffer1);Delay1ms(400);main()LCD_Initial();Init_DS18B20();Init_DS18B201();GotoXY(1,0);Print("HELLO");GotoXY(1,1);/溫度符號/開啟溫度采集程序/溫度數(shù)據(jù)轉(zhuǎn)換成液晶字符/液晶字符顯示位置/顯示溫度/掃描延時/液晶初始化/DS18B20初始化Print("LET'SDOI

19、T");/("designbywy!");ReadTemp();ReadTemp1();Delay1ms(2000);LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);while(1)show_time();/液晶顯示數(shù)據(jù)/flag=0;Delay1ms(2000);LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);show_time1();/flag=0;Delay1ms(2000);LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);五、電路圖R=>1172-H631607040315陳希0皿IXirRyT:hi>Turtrjum:r3-3MJ»Lran而rnY£或黑一二r二二33z六、實驗結(jié)果與分析1、Keil代碼運行狀況:油'r'tJf-.Tii,1日也biF匕S

溫馨提示

  • 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

提交評論