




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
單片機(jī)課程設(shè)計報告————溫度采集電路設(shè)計與仿真一、設(shè)計目的1、通過單片機(jī)課程設(shè)計,熟練掌握C語言與匯編語言的編程方法,將理論聯(lián)系到實踐中去,提高我們的動腦和動手的能力。2、通過數(shù)字采集與控制系統(tǒng)的設(shè)計,掌握如何采集數(shù)據(jù)并在LCD上顯示采集的數(shù)據(jù)合如何控制電機(jī)的使用方法,和簡單程序的編寫,最終提高我們的邏輯抽象能力。二、設(shè)計任務(wù)和要求任務(wù):設(shè)計一個能夠采集數(shù)據(jù)和控制電機(jī)的系統(tǒng).具體要求:通過I/O口擴(kuò)展5個按鍵單片機(jī)的P口外接8個撥碼開關(guān),作為8位數(shù)據(jù)輸入通過I/O口外接DS18B20溫度傳感器,進(jìn)行溫度采集外接一步進(jìn)電機(jī),作為控制部分外接一LCM1602液晶屏,進(jìn)行數(shù)據(jù)顯示在PROTEUS軟件中設(shè)計實現(xiàn)上述功能的電路,然后編寫源程序?qū)崿F(xiàn)如下功能:按下按鍵“1”時在液晶屏上顯示“DANPIANJIKECHENGSHEJI”。按下按鍵“2”時在液晶屏上顯示自己的學(xué)號和姓名(拼音)。按下按鍵“3”時進(jìn)行溫度采集并顯示在液晶屏上。按下按鍵“4”時通過撥碼開關(guān)采集8位數(shù)據(jù)并顯示在液晶屏上,數(shù)據(jù)大于200控制步進(jìn)電機(jī)反轉(zhuǎn),小于50步進(jìn)電機(jī)正轉(zhuǎn)。按下按鍵“5”時步進(jìn)電機(jī)停止轉(zhuǎn)動。三、設(shè)計原理分析1、顯示“DANPIANJIKECHENGSHEJI”與自己的學(xué)號和姓名(拼音)直接定義字符串然后送入1602LCD顯示。2、采集溫度通過DS18B20溫度傳感器將采集的溫度通過硬件電路轉(zhuǎn)送入單片機(jī)內(nèi)部,單片機(jī)內(nèi)部將采集的溫度轉(zhuǎn)換成字符串然后送入1602LCD顯示。3、通過控制ULN2003來控制電機(jī)的正反轉(zhuǎn)。(ULN2003是另一款電機(jī)脈沖分配芯片,由于其結(jié)構(gòu)簡單,價格低廉,而且無需外接功率放大電路,因此也常用來作為步進(jìn)電機(jī)的驅(qū)動芯片)。4、該電路系統(tǒng)采用“一線總線”數(shù)字傳感器DS18B20實現(xiàn)溫度的采集,采用液晶顯示器進(jìn)行數(shù)據(jù)顯示。首先啟動Proteus并從Proteus元件庫中選擇需要的元件繪制電路圖并設(shè)置相應(yīng)元件的參數(shù)值。5、電路繪制完成以后,打開KeilμVision2新建一個項目,命名為cewen.uv2。選擇Project菜單下的SelectDeviceforTarget選擇AT89C51。然后單擊Project菜單下的OptionforTarget‘Target1’項,選擇Debug,使用ProteusVSMEm-ulator仿真。然后新建一個源文件cewen.c,寫入源程序(只給出讀取溫度函數(shù)):四、硬件圖五、源程序//////////ds18b20/////////#include<reg51.h>#include<INTRINS.h>#include<absacc.h>unsignedcharreaddata[2];sbitDQ=P3^3;////////////endofds18b20variable////////////////////lcdvariable/////////////////#include<reg51.h>#include<absacc.h>#defineREG0XBYTE[0x0000]#defineREG1XBYTE[0x0001]#defineREG2XBYTE[0x0002]#defineREG3XBYTE[0x0003]#defineUP20#defineDOWN30#defineSTOP40unsignedcharbdatabusyflag;unsignedchardat,datn,count;unsignedcharword1[16]={"T="};codeunsignedcharword2[16]={"byKeTingTing"};codeunsignedcharword3[16]={"DANPINJI"};codeunsignedcharword4[16]={"KECHENGSHEJI"};codeunsignedcharword5[16]={"WellcomeTo"};codeunsignedcharword6[16]={"ProteusTools!"};codeunsignedcharword7[16]={"204799218”"};codeunsignedcharword8[16]={"byKeTingTing"};dataunsignedcharword9[16]={"P2="};sbitbusyflag_7=busyflag^7;sbitp10=P1^0;sbitp11=P1^1;sbitp12=P1^2;sbitp13=P1^3;sbitp14=P1^4;sbitp20=P2^0;sbitp21=P2^1;sbitp22=P2^2;sbitp23=P2^3;sbitp24=P2^4;sbitp25=P2^5;sbitp26=P2^6;sbitp27=P2^7;/////////////////endoflcdvariable///////////////////////////ds18b20///////////////////////延時函數(shù)voiddelay(unsignedinti){ while(i--);}//初始化函數(shù)voidInit_DS18B20(void){ unsignedcharx=0; DQ=1;//DQ復(fù)位 delay(8);//稍做延時 DQ=0;//單片機(jī)將DQ拉低 delay(80);//精確延時大于480us DQ=1;//拉高總線 delay(14); x=DQ;//稍做延時后如果x=0則初始化成功x=1則初始化失敗 delay(20);}//讀一個字節(jié)unsignedcharReadOneChar(void){ unsignedchari=0; unsignedchardat=0; for(i=8;i>0;i--) { DQ=0;//給脈沖信號 dat>>=1; DQ=1;//給脈沖信號 if(DQ) dat|=0x80; delay(4); } return(dat);}//寫一個字節(jié)voidWriteOneChar(unsignedchardat){ unsignedchari=0; for(i=8;i>0;i--) { DQ=0; DQ=dat&0x01; delay(5); DQ=1; dat>>=1; } delay(4);}//讀取溫度voidReadTemperature(void){ Init_DS18B20(); WriteOneChar(0xCC);//跳過讀序號列號的操作 WriteOneChar(0x44);//啟動溫度轉(zhuǎn)換 Init_DS18B20(); WriteOneChar(0xCC);//跳過讀序號列號的操作 WriteOneChar(0xBE);//讀取溫度寄存器等(共可讀9個寄存器)前兩個就是溫度 readdata[0]=ReadOneChar(); readdata[1]=ReadOneChar(); }voidTempprocess()//溫度轉(zhuǎn)換{ unsignedintt; floattt; unsignedchartemp; if((readdata[1]&0x80)!=0) { word1[3]='-'; t=readdata[1]; t<<=8; t=t|readdata[0]; t=t-1; t=~t; t>>=4; word1[4]=t/100+48; word1[5]=((t/10)%10)+48; word1[6]=t%10+48; temp=readdata[0]; temp=temp-1; temp=~temp; temp=temp&0x0f; tt=temp*0.0625; word1[7]='.'; word1[8]=(unsignedchar)(tt*10); word1[9]=(unsignedchar)(tt*100-word1[8]*10); word1[10]=(unsignedchar)(tt*1000-word1[8]*100-word1[9]*10); word1[11]=(unsignedchar)(tt*10000-word1[8]*1000-word1[9]*100-word1[10]*10); word1[8]+=48; word1[9]+=48; word1[10]+=48; word1[11]+=48; word1[12]='C'; } else { word1[3]='+'; t=readdata[1]; t<<=8; t=t|readdata[0]; t>>=4; word1[4]=t/100+48; word1[5]=((t/10)%10)+48; word1[6]=t%10+48; temp=readdata[0]; temp=temp&0x0f; tt=temp*0.0625; word1[7]='.'; word1[8]=(unsignedchar)(tt*10); word1[9]=(unsignedchar)(tt*100-word1[8]*10); word1[10]=(unsignedchar)(tt*1000-word1[8]*100-word1[9]*10); word1[11]=(unsignedchar)(tt*10000-word1[8]*1000-word1[9]*100-word1[10]*10); word1[8]+=48; word1[9]+=48; word1[10]+=48; word1[11]+=48; word1[12]='C'; }}////////////////////P2shujuxianshi////////////////voidxie(){//if(p13==0){ if(p27==1){word9[4]='1';}else{word9[4]='0';}if(p26==1){word9[5]='1';}else{word9[5]='0';}if(p25==1){word9[6]='1';}else{word9[6]='0';}if(p24==1){word9[7]='1';}else{word9[7]='0';}if(p23==1){word9[8]='1';}else{word9[8]='0';}if(p22==1){word9[9]='1';}else{word9[9]='0';}if(p21==1){word9[10]='1';}else{word9[10]='0';}if(p20==1){word9[11]='1';}else{word9[11]='0';} } } /////////////////////endofds18b20/////////////////////////////////startoflcd1602/////////////////voidbusy(){ do { busyflag=REG1; }while(busyflag_7);}voidwrc(unsignedcharwcon){ busy(); REG0=wcon;}voidwrd(unsignedcharwdat){ busy(); REG2=wdat;}voidrdd(){ busy(); dat=REG3;}voidlcdint(){ wrc(0x38); wrc(0x01); wrc(0x06); wrc(0x0c);}voidwrn(unsignedcharword[]){ unsignedchari; for(i=0;i<16;i++) { wrd(word[i]); }}//////////////endoflcd1602///////////////////////voidmain(){ unsignedchartemp; unsignedcharcout; lcdint();//初始化液晶 wrc(0x80); wrn(word5); wrc(0xc0); wrn(word6); while(1) {if(p10==0)//判斷P1.0是否按下 { ReadTemperature(); Tempprocess(); wrc(0x80); wrn(word1); wrc(0xc0); wrn(word2); } if(p11==0)//判斷P1.1是否按下 { wrc(0x80); wrn(word3); wrc(0xc0); wrn(word4); } if(p12==0)//判斷P1.2是否按下 { wrc(0x80); wrn(word7); wrc(0xc0); wrn(word8); } { P2=0xff; cout=P2; if(p13==0) { xie(); wrc(0x80); wrn(word9); wrc(0xc0); wrn(word8); if(cout>200) { temp=UP;//控制正轉(zhuǎn) P3=0X00; delay(1000); } if(cout<50) { temp=DOWN;//控制反轉(zhuǎn) P3=0X00; delay(1000);
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 分子生物學(xué)測試題含答案
- 2024安徽合肥市廬江縣部分國有企業(yè)招聘補檢及進(jìn)一步檢查人員筆試參考題庫附帶答案詳解
- 2024安康嵐皋祥瑞城投建筑工程有限公司招聘筆試參考題庫附帶答案詳解
- 高級家政服務(wù)員考試模擬題與參考答案
- 12《坐井觀天》教學(xué)設(shè)計-2024-2025學(xué)年統(tǒng)編版(五四制)語文二年級上冊
- 2024四川長虹電源股份有限公司招聘產(chǎn)品研發(fā)高級經(jīng)理等崗位測試筆試參考題庫附帶答案詳解
- 幼兒保教知識與能力-教師資格考試《幼兒保教知識與能力》??荚嚲?
- 第二課 網(wǎng)絡(luò)生活新空間 教學(xué)設(shè)計-2024-2025學(xué)年統(tǒng)編版道德與法治八年級上冊(兩課時)
- 2024中國融通地產(chǎn)所屬單位總會計師崗位招聘11人筆試參考題庫附帶答案詳解
- 第14課 歷史上的疫病與醫(yī)學(xué)成就 教學(xué)設(shè)計-2024-2025學(xué)年高二歷史統(tǒng)編版(2019)選擇性必修2
- 優(yōu)秀員工榮譽證書模板
- 仁愛版八年級英語上復(fù)習(xí)課Unit 2 Keep Healthy Topic1 2教學(xué)課件
- 三維電生理導(dǎo)航系統(tǒng)技術(shù)參數(shù)
- 三年級下冊科學(xué)活動手冊
- 《交通工程CAD》課程教學(xué)大綱(本科)
- 人教版數(shù)學(xué)五年級下冊 全冊各單元教材解析
- 換班申請表(標(biāo)準(zhǔn)模版)
- 者陰村戰(zhàn)友紀(jì)念者陰山對越自衛(wèi)還擊作戰(zhàn)30周年聯(lián)誼會計劃2
- 基于單片機(jī)的電子廣告牌設(shè)計畢業(yè)設(shè)計論文
- 承插型盤扣式支模架專項施工方案
- 我國古代職業(yè)教育的發(fā)展
評論
0/150
提交評論