單片機(jī)課程設(shè)計(jì)報告5篇_第1頁
單片機(jī)課程設(shè)計(jì)報告5篇_第2頁
單片機(jī)課程設(shè)計(jì)報告5篇_第3頁
單片機(jī)課程設(shè)計(jì)報告5篇_第4頁
單片機(jī)課程設(shè)計(jì)報告5篇_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

單片機(jī)課程設(shè)計(jì)報告[5篇]第一篇:單片機(jī)課程設(shè)計(jì)報告《單片機(jī)課程設(shè)計(jì)報告》學(xué)校:專業(yè):班級:姓名:學(xué)號:指導(dǎo)教師:摘要由于單片機(jī)體積小、成本低、使用方便,所以被廣泛地應(yīng)用于儀器儀表、現(xiàn)場數(shù)據(jù)的采集和控制。通過本次課程設(shè)計(jì)掌握單片機(jī)硬件和軟件方面的知識,更深入的了解單片機(jī)的實(shí)際應(yīng)用。關(guān)鍵詞單片機(jī),程序,流水燈,數(shù)碼管,溫度計(jì),鍵盤掃描,定時器等。實(shí)驗(yàn)內(nèi)容一、課程設(shè)計(jì)的目的以本學(xué)期對單片機(jī)的學(xué)習(xí)和認(rèn)識,并通過本次課程設(shè)計(jì)加以應(yīng)用,從而達(dá)到一個對所學(xué)知識的鞏固、更深一步的理解,面對一個電子設(shè)計(jì),應(yīng)對出系統(tǒng)的方案,分析出各個板塊來,再對各個板塊進(jìn)一步的具體的設(shè)計(jì),先進(jìn)行硬件電路設(shè)計(jì),此時一定要考慮好要用什么元件、各個元件的具體參數(shù)、是否能實(shí)現(xiàn)應(yīng)有功能,從而得到一個完整的硬件電路。在根據(jù)該電路設(shè)計(jì)出軟件的功能模塊、從而完成程序流程圖,在根據(jù)流程圖完成程序的設(shè)計(jì),并通過反復(fù)的調(diào)試、運(yùn)行、更正,直至完成既定功能為止,最后將軟件、硬件結(jié)合進(jìn)行調(diào)試、運(yùn)行,對其功能進(jìn)行最終測試,并反復(fù)思考其測試中遇到相應(yīng)問題的原因,并將其一一處理,從而完成本次設(shè)計(jì)的實(shí)驗(yàn)要求,以及本次課程設(shè)計(jì)的最終目的。實(shí)驗(yàn)一:鍵盤操作實(shí)驗(yàn)實(shí)驗(yàn)要求:通過本次實(shí)驗(yàn)實(shí)現(xiàn)對鍵盤的控制,操作數(shù)碼管的顯示數(shù)字。實(shí)驗(yàn)程序:#include#include#include#include#defineWR273XBYTE[0XC000]#defineRD244XBYTE[0XC000]#defineucharunsignedchar#defineuintunsignedintsbitDQ=P1^0;uintcount=0,x,buf[20],tim,flag;ucharfen,shi;ucharcodetable_16_1[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};ucharcodetable_16_2[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0x08,0x03,0x46,0x21,0x06,0x0e};voidled_clc(void){XBYTE[0X8000]=0XFF;XBYTE[0X9000]=0XFF;XBYTE[0XA000]=0XFF;XBYTE[0XB000]=0XFF;}voiddelay(unsignedinti){while(i--);}voiddelay_1ms(uintz){uinti,j;for(i=z;i>0;i--)for(j=110;j>0;j--);}ucharkey_test(){WR273=0XF0;if((RD244&0X0F)!=0X0F)return1;elsereturn0;}voidtime_init(){TMOD=0X01;TH0=(65536-46080)/256;TL0=(65536-46080)%256;TR0=1;ET0=1;EA=1;}voidtime_display(){if(count==10000)count=0;XBYTE[0X8000]=table_16_1[count%10];XBYTE[0X9000]=table_16_1[count%100/10];XBYTE[0XA000]=table_16_1[count%1000/100];XBYTE[0XB000]=table_16_1[count/1000];}voidTIME_SET(){uchara,b,c,d,key;while(flag==1){led_clc();while(!key_test());a=keyscan();XBYTE[0XB000]=table_16_1[a];while(!key_test());b=keyscan();XBYTE[0XA000]=table_16_2[b];while(!key_test());c=keyscan();XBYTE[0X9000]=table_16_1[c];while(!key_test());d=keyscan();XBYTE[0X8000]=table_16_1[d];while(!key_test());key=keyscan();if(key==11){shi=a*10+b;fen=c*10+d;flag=0;}}}voidTIME_DIS(){if(tim==60){fen++;tim=0;if(fen==60){shi++;fen=0;if(shi==24)shi=0;}}XBYTE[0X8000]=table_16_1[fen%10];XBYTE[0X9000]=table_16_1[fen/10];XBYTE[0XA000]=table_16_2[shi%10];XBYTE[0XB000]=table_16_1[shi/10];}voidmain(){uinttemp;led_clc();//serial_init();time_init();while(1){temp=keyscan();if(temp==10)flag=1;TIME_SET();//XBYTE[0X8000]=table_16_1[temp];//time_display();TIME_DIS();}}voidtime()interrupt2{ucharm;TH0=(65536-46080)/256;TL0=(65536-46080)%256;m++;if(m==20){m=0;count++;tim++;}}voidserial()interrupt4{if(RI==1){x=SBUF;RI=0;}put_char(x);delay_1ms(5);}實(shí)驗(yàn)心得體會:通過本次實(shí)驗(yàn),讓我對單片機(jī)實(shí)驗(yàn)有了更深的了解,認(rèn)為這個實(shí)驗(yàn)還是比較容易的,沒有花太多的時間。實(shí)驗(yàn)二:流水燈實(shí)驗(yàn)實(shí)驗(yàn)要求:本次實(shí)驗(yàn)實(shí)現(xiàn)的是小燈的閃爍,流水燈可以按照程序規(guī)定的要求進(jìn)行閃爍。實(shí)驗(yàn)程序設(shè)計(jì)#include//52單片機(jī)頭文件#include//包含有左右循環(huán)移位子函數(shù)的庫#defineuintunsignedint//宏定義#defineucharunsignedchar//宏定義uintflag=0;voiddelay(uintz)//延時函數(shù),z的取值為這個函數(shù)的延時ms數(shù),如delay(200);大約延時200ms.{//delay(500);大約延時500ms.uintx,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}voidinit(){TMOD=0X01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TR0=1;ET0=1;EA=1;}voidmain()//主函數(shù){init();while(1){uchara,i,j;if(flag==1){for(j=0;j<3;j++)//寄偶交替{P1=0x55;//點(diǎn)亮小燈delay(300);//延時300毫秒P1=0xaa;delay(300);//延時300毫秒}for(j=0;j<3;j++)//流水燈{a=0xfe;for(i=0;i<8;i++){P1=a;//點(diǎn)亮小燈delay(300);//延時300毫秒a=_crol_(a,1);}}P1=0xff;for(j=0;j<3;j++)//從兩邊往中間流{P1=0x7e;//點(diǎn)亮小燈delay(300);//延時300毫秒P1=0xbd;delay(300);//延時300毫秒P1=0xdb;//點(diǎn)亮小燈delay(300);//延時300毫秒P1=0xe7;delay(300);//延時300毫秒}P1=0xff;for(j=0;j<3;j++)//從中間往兩邊流{P1=0xe7;//點(diǎn)亮小燈delay(300);//延時300毫秒P1=0xdb;delay(300);//延時300毫秒P1=0xbd;//點(diǎn)亮小燈delay(300);//延時300毫秒P1=0x7e;delay(300);//延時300毫秒}P1=0xff;for(j=0;j<6;j++)//全部閃爍{P1=~P1;//點(diǎn)亮小燈delay(300);//延時300毫秒}P1=0xff;flag=0;}}}voidtimer()interrupt1{flag=1;}實(shí)驗(yàn)心得體會:通過本次實(shí)驗(yàn)一步一步的進(jìn)行實(shí)驗(yàn),設(shè)計(jì)程序,寫入中斷來實(shí)現(xiàn)流水燈的全部實(shí)驗(yàn)要求。實(shí)驗(yàn)三:數(shù)碼管性質(zhì)實(shí)驗(yàn)要求:通過上一次流水燈的實(shí)驗(yàn)本次進(jìn)行了數(shù)碼管的實(shí)驗(yàn),通過原理圖了解數(shù)碼管的性質(zhì)。設(shè)計(jì)程序#include#include#include#include#defineWR273XBYTE[0XC000]#defineRD244XBYTE[0XC000]#defineucharunsignedchar#defineuintunsignedintsbitDQ=P1^0;uintcount=0,x,buf[20],tim,flag;ucharfen,shi;ucharcodetable_16_1[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};ucharcodetable_16_2[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0x08,0x03,0x46,0x21,0x06,0x0e};voidled_clc(void){XBYTE[0X8000]=0XFF;XBYTE[0X9000]=0XFF;XBYTE[0XA000]=0XFF;XBYTE[0XB000]=0XFF;}voiddelay(unsignedinti){while(i--);}voiddelay_1ms(uintz){uinti,j;for(i=z;i>0;i--)for(j=110;j>0;j--);}ucharkey_test(){WR273=0XF0;if((RD244&0X0F)!=0X0F)return1;elsereturn0;}voidserial_init(){TMOD=0x20;TH1=0xfd;TL1=0xfd;TR1=1;REN=1;SM0=0;SM1=1;EA=1;ES=1;}voidput_char(uchars){SBUF=s;while(TI==0);TI=0;}voidput_string(uchar*s){while(*s){put_char(*s);s++;}利用匯編實(shí)現(xiàn)數(shù)碼管顯示:ORG0000HLJMPMAINORG0030HEXTRNDATA(BUFFER);DBBUFFER,30H;DBBUFFER+2,32H;DBBUFFER+3,33HMAIN:LCALLCLS;LCALLDISP;MOVBUFFER,#30H;MOVBUFFER+1,#31H;MOVBUFFER+2,#33H;MOVBUFFER+3,#35HLCALLPRINTST:LJMPSTCLS:MOVA,#0FFHMOVDPTR,#8000HMOVX@DPTR,AMOVDPTR,#9000HMOVX@DPTR,AMOVDPTR,#0A000HMOVX@DPTR,AMOVDPTR,#0B000HMOVX@DPTR,ARET;DISP:;MOVA,BUFFER;MOVDPTR,#8000H;MOVX@DPTR,A;MOVA,BUFFER+1;MOVDPTR,#9000H;MOVA,BUFFER+2;MOVDPTR,#0A000H;MOVX@DPTR,A;MOVA,BUFFER+3;MOVDPTR,#0B000H;MOVX@DPTR,A;RETPRINT:PUSHPSWCLRCMOVBUFFER,#30HMOVA,BUFFERSUBBA,#30HMOVDPTR,#TABLEDMOVCA,@A+DPTRMOVDPTR,#0B000HMOVX@DPTR,AMOVBUFFER+1,#31HMOVA,BUFFER+1SUBBA,#30HMOVDPTR,#TABLEDMOVCA,@A+DPTRMOVDPTR,#0A000HMOVX@DPTR,AMOVBUFFER+2,#33HMOVA,BUFFER+2SUBBA,#30HMOVDPTR,#TABLEDMOVCA,@A+DPTRMOVDPTR,#09000HMOVX@DPTR,AMOVBUFFER+3,#34HMOVA,BUFFER+3SUBBA,#30HMOVDPTR,#TABLEDMOVCA,@A+DPTRMOVDPTR,#08000HMOVX@DPTR,APOPPSWRETTABLED:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80HDB90H,88H,83H,0C6H,0A1H,86H,84H,0FFH,8CHDB0BFHTABLED1:DB0C0H,0F9H,64H,70H,59H,52H,42H,0F8H,40HDB50H,48H,43H,0C6H,61H,46H,4EH,0FFH,4CHDB7FHEnd實(shí)驗(yàn)心得體會:本次實(shí)驗(yàn)利用了c語言與匯編的對比,進(jìn)行的簡單的實(shí)驗(yàn)過程。更好的為以后程序設(shè)計(jì)奠定了基礎(chǔ)。實(shí)驗(yàn)四:溫度測量實(shí)驗(yàn)實(shí)驗(yàn)要求實(shí)現(xiàn)對DS18B20的對室內(nèi)溫度的測量,實(shí)現(xiàn)了單片機(jī)的溫度測量設(shè)計(jì)實(shí)驗(yàn)。實(shí)驗(yàn)程序#include#include#include#defineuintunsignedint#defineucharunsignedchar#define_Nop()_nop_()Ucharcodedis_16_1[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};ucharcodedis_16_2[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0x08,0x03,0x46,0x21,0x06,0x0e};sbitDQ=P1^0;//定義DS18B20通信端口//////////////////以下是DS18B20驅(qū)動程序//////////////////延時函數(shù)voiddelay_us(unsignedinti){while(i--);}//初始化函數(shù)Init_DS18B20(void){unsignedcharx=0;DQ=1;//DQ復(fù)位delay_us(8);//稍做延時DQ=0;//單片機(jī)將DQ拉低delay_us(80);//精確延時大于480usDQ=1;//拉高總線delay_us(14);x=DQ;//稍做延時后如果x=0則初始化成功x=1則初始化失敗delay_us(20);}//讀一個字節(jié)ReadOneChar(void){unsignedchari=0;unsignedchardat=0;for(i=8;i>0;i--){DQ=0;//給脈沖信號dat>>=1;DQ=1;//給脈沖信號if(DQ)dat|=0x80;delay_us(4);}return(dat);}//寫一個字節(jié)WriteOneChar(unsignedchardat){unsignedchari=0;for(i=8;i>0;i--){DQ=0;DQ=dat&0x01;delay_us(5);DQ=1;dat>>=1;}}//讀取溫度ReadTemperature(void){unsignedchara=0;unsignedcharb=0;unsignedintt=0;floattt=0;Init_DS18B20();WriteOneChar(0xCC);//跳過讀序號列號的操作WriteOneChar(0x44);//啟動溫度轉(zhuǎn)換Init_DS18B20();WriteOneChar(0xCC);//跳過讀序號列號的操作WriteOneChar(0xBE);//讀取溫度寄存器等(共可讀9個寄存器)a=ReadOneChar();b=ReadOneChar();t=b;t<<=8;t=t|a;tt=t*0.0625;//將溫度的高位與低位合并t=tt*10+0.5;//對結(jié)果進(jìn)行4舍5入return(t);}//////////////////以上是DS18B20驅(qū)動程序////////////////前兩個就是溫度/*定義數(shù)字ascii編碼*//*1MS為單位的延時程序*/voiddelay_1ms(ucharx){ucharj;while(x--){for(j=0;j<125;j++){;}}}main(){unsignedinti=0;ReadTemperature();/*讀取當(dāng)前溫度*/delay_us(500);i=ReadTemperature();/*讀取當(dāng)前溫度*/init();while(1){i=ReadTemperature();//讀取當(dāng)前溫度XBYTE[0Xb000]=0xff;XBYTE[0Xa000]=dis_16_1[i/100];/*把溫度顯示出來*/XBYTE[0X9000]=dis_16_2[i%100/10];XBYTE[0X8000]=dis_16_1[i%10];delay_1ms(100);}}實(shí)驗(yàn)心得體會:本次實(shí)驗(yàn)雖然遇到了很多難題,但是還是慢慢克服了,并且通過和實(shí)驗(yàn)室同學(xué)的交流的得到了解決的方案。從中學(xué)會了很多技巧與知識。實(shí)驗(yàn)五:定時器實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康膶?shí)現(xiàn)定時器50ms定時。程序設(shè)計(jì)#include#include#include#include#defineWR273XBYTE[0XC000]#defineRD244XBYTE[0XC000]#defineucharunsignedchar#defineuintunsignedintsbitDQ=P1^0;uintcount=0,x,buf[20],tim,flag;ucharfen,shi;ucharcodetable_16_1[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};ucharcodetable_16_2[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0x08,0x03,0x46,0x21,0x06,0x0e};voidled_clc(void){XBYTE[0X8000]=0XFF;XBYTE[0X9000]=0XFF;XBYTE[0XA000]=0XFF;XBYTE[0XB000]=0XFF;}voiddelay(unsignedinti){while(i--);}voiddelay_1ms(uintz){uinti,j;for(i=z;i>0;i--)for(j=110;j>0;j--);}ucharkey_test(){WR273=0XF0;if((RD244&0X0F)!=0X0F)return1;elsereturn0;voidtime_init(){TMOD=0X01;TH0=(65536-46080)/256;TL0=(65536-46080)%256;TR0=1;ET0=1;EA=1;}voidtime_display(){if(count==10000)count=0;XBYTE[0X8000]=table_16_1[count%10];XBYTE[0X9000]=table_16_1[count%100/10];XBYTE[0XA000]=table_16_1[count%1000/100];XBYTE[0XB000]=table_16_1[count/1000];}voidTIME_SET(){uchara,b,c,d,key;while(flag==1){led_clc();while(!key_test());a=keyscan();XBYTE[0XB000]=table_16_1[a];while(!key_test());b=keyscan();XBYTE[0XA000]=table_16_2[b];while(!key_test());c=keyscan();XBYTE[0X9000]=table_16_1[c];while(!key_test());d=keyscan();XBYTE[0X8000]=table_16_1[d];while(!key_test());key=keyscan();if(key==11){shi=a*10+b;fen=c*10+d;flag=0;}}}voidTIME_DIS(){if(tim==60){fen++;tim=0;if(fen==60){shi++;fen=0;if(shi==24)shi=0;}}XBYTE[0X8000]=table_16_1[fen%10];XBYTE[0X9000]=table_16_1[fen/10];XBYTE[0XA000]=table_16_2[shi%10];XBYTE[0XB000]=table_16_1[shi/10];}voidmain(){uinttemp;led_clc();//serial_init();time_init();while(1){temp=keyscan();if(temp==10)flag=1;TIME_SET();//XBYTE[0X8000]=table_16_1[temp];//time_display();TIME_DIS();}}voidtime()interrupt2{ucharm;TH0=(65536-46080)/256;TL0=(65536-46080)%256;m++;if(m==20){m=0;count++;tim++;}}voidserial()interrupt4{if(RI==1){x=SBUF;RI=0;}put_char(x);delay_1ms(5);}實(shí)驗(yàn)心得體會:本次實(shí)驗(yàn)主要是定時器的設(shè)計(jì)實(shí)驗(yàn),通過本次實(shí)驗(yàn)更好的了解GAL器件的應(yīng)用。實(shí)現(xiàn)了對此單片機(jī)的應(yīng)用。實(shí)驗(yàn)總結(jié)通過本次課程設(shè)計(jì)我們獲益良多。既鞏固了單片機(jī)的一些相關(guān)基本知識,又熟悉了PROTRL的相關(guān)操作。對一個整體的電子設(shè)計(jì)項(xiàng)目,有了一定的認(rèn)識,初步學(xué)會了一定的設(shè)計(jì)方法,明白了如何用這種方法去實(shí)現(xiàn)一個系統(tǒng)的設(shè)計(jì)。在電子技術(shù)應(yīng)用領(lǐng)域中,單片機(jī)的應(yīng)用愈來愈多地應(yīng)用到各行各業(yè)。如:工業(yè)控制、儀器儀表、電訊技術(shù)、辦公自動化和計(jì)算機(jī)外部設(shè)備、汽車與節(jié)能、商用產(chǎn)品、家用電器等。目前,單片機(jī)正朝著大容量片上存儲器、多功能i/o接口、寬范圍工作電源和低功耗方向發(fā)展。要開發(fā)單片機(jī)的應(yīng)用,不但要掌握單片機(jī)硬件和軟件方面的知識,而且還要深入了解各應(yīng)用系統(tǒng)的專業(yè)知識,只有將這兩方面的知識融會貫通和有機(jī)結(jié)合,才能設(shè)計(jì)出優(yōu)良的應(yīng)用系統(tǒng)。一個好的工程設(shè)計(jì)師不僅要掌握單片機(jī)的工作原理,而且還要不斷了解各公司最新芯片的結(jié)構(gòu)和應(yīng)用,在實(shí)際應(yīng)用中找到最好的性能價格比。所以以后還要注意培養(yǎng)接受新知識的自學(xué)能力,掌握芯片發(fā)展動態(tài)。同時也讓我們找到了自己在某些知識上的欠缺,并通過這次機(jī)會得到彌補(bǔ),取得進(jìn)步!第二篇:單片機(jī)課程設(shè)計(jì)報告單片機(jī)課程設(shè)計(jì)報告題目:小直流電機(jī)調(diào)速實(shí)驗(yàn)教學(xué)單位:機(jī)電工程系專業(yè):機(jī)械設(shè)計(jì)制造及其自動化班級:0803班學(xué)號:0811050342姓名:程懷虎2011年11月(以下內(nèi)容用宋體,五號,單倍行距)第三篇:單片機(jī)課程設(shè)計(jì)報告格式《單片機(jī)課程設(shè)計(jì)》報告格式一、封面(注明:單片機(jī)課程設(shè)計(jì)報告、課題名稱、班級、姓名、指導(dǎo)教師、日期)二、摘要(課題簡要說明)三、課題設(shè)計(jì)目標(biāo)(功能、性能指標(biāo))、方案論證(要求作兩種以上方案比較)四、設(shè)計(jì)過程(關(guān)鍵電路工作原理、元器件參數(shù)選用、程序流程圖、程序)五、軟硬件的安裝、調(diào)試方法六、完整電路圖、性能參數(shù)測試七、存在的問題和改進(jìn)方向八、參考文獻(xiàn)資料第四篇:單片機(jī)課程設(shè)計(jì)報告《單片機(jī)原理與接口技術(shù)》課程設(shè)計(jì)報告設(shè)計(jì)題目:基于80C51單片機(jī)系統(tǒng)實(shí)驗(yàn)板的制作與程序設(shè)計(jì)專業(yè):應(yīng)用電子專業(yè)班級:11應(yīng)電班姓名:丁文俊指導(dǎo)教師:余靜老師2013年5月20日目錄前言…………………2課程設(shè)計(jì)的目的及要求……………3硬件電路設(shè)計(jì)………4軟件程序設(shè)計(jì)……………………5小結(jié)………………參考文獻(xiàn)附錄A電路總圖附錄B程序清單基于80C51單片機(jī)系統(tǒng)實(shí)驗(yàn)板的制作與程序設(shè)計(jì)1.前言2、課程設(shè)計(jì)的目的及要求2.1課程設(shè)計(jì)目的2.2課程設(shè)計(jì)要求3、系統(tǒng)主要硬件電路設(shè)計(jì)3.1STC89C51單片機(jī)簡介MCS-51是美國Intel公司生產(chǎn)的一系列單片機(jī)的總稱,包括多個品種,如8031、8051、8751、8032、80C52、8752等。其中8051是最典型的產(chǎn)品,其他單片機(jī)都是在其基礎(chǔ)上進(jìn)行功能增減而來的,所以人們習(xí)慣于用8051來稱呼MCS-51系列單片機(jī)。Intel公司將MCS-51的核心技術(shù)授權(quán)給了多家公司,這些廠家生產(chǎn)的單片機(jī)在功能上或多或少有些改變,以滿足不同的需求,其中美國的ATMEL公司生產(chǎn)的AT89C51是曾經(jīng)在我國非常流行的51單片機(jī)。當(dāng)前AT89C51/52已經(jīng)停產(chǎn),其替代產(chǎn)品為AT89S51/52。深圳宏晶公司出品的STC89C51可以直接代替?zhèn)鹘y(tǒng)的AT89S51和AT89C51芯片,也可以代替菲利普、華幫等其他公司的89C51,由于時代的發(fā)展,工藝的進(jìn)步,STC89C51功能更強(qiáng),壽命更長(4K字節(jié)Flash存儲器、128字節(jié)片內(nèi)RAM、支持ISP下載編程)圖2.1STC89c51單片機(jī)單片機(jī)的時鐘信號用來提供單片機(jī)片內(nèi)各種微操作的時間基準(zhǔn),時鐘信號通常用兩種電路形式得到:內(nèi)部振蕩和外部振蕩。MCS-51單片機(jī)內(nèi)部有一個用于構(gòu)成振蕩器的高增益反向放大器,引腳XTALl和XTAL2分別是此放大電器的輸入端和輸出端,由于采用內(nèi)部方式時,電路簡單,所得的時鐘信號比較穩(wěn)定,實(shí)際使用中常采用這種方式,如圖2-2所示在其外接晶體振蕩器(簡稱晶振)或陶瓷諧振器就構(gòu)成了內(nèi)部振蕩方式,片內(nèi)高增益反向放大器與作為反饋元件的片外石英晶體或陶瓷諧振器一起可構(gòu)成一個自激振蕩器并產(chǎn)生振蕩時鐘脈沖。圖2-2中外接晶體以及電容C2和C1構(gòu)成并聯(lián)諧振電路,它們起穩(wěn)定振蕩頻率、快速起振的作用,其值均為30P左右,晶振頻率選11.0592MHz。為了初始化單片機(jī)內(nèi)部的某些特殊功能寄存器,必須采用復(fù)位的方式,復(fù)位后可使CPU及系統(tǒng)各部件處于確定的初始狀態(tài),并從初始狀態(tài)開始正常工作。單片機(jī)的復(fù)位是靠外電路來實(shí)現(xiàn)的,在正常運(yùn)行情況下,只要RST引腳上出現(xiàn)兩個機(jī)器周期時間以上的高電平,即可引起系統(tǒng)復(fù)位,但如果RST引腳上持續(xù)為高電平,單片機(jī)就處于循環(huán)復(fù)位狀態(tài)。復(fù)位后系統(tǒng)將輸入/輸出(1/0)端口寄存器置為FFH,堆棧指針SP置為07H,SBUF內(nèi)置為不定值,其余的寄存器全部清0,內(nèi)部RAM的狀態(tài)不受復(fù)位的影響,在系統(tǒng)上電時RAM的內(nèi)容是不定的。復(fù)位操作有兩種情況,即上電復(fù)位和手動(開關(guān))復(fù)位。本系統(tǒng)采用上電復(fù)位方式。圖2-2中R9和Cl組成上電復(fù)位電路,其值R取為10K,C取為10μF.4圖2.2最小系統(tǒng)結(jié)構(gòu)圖3.2電平轉(zhuǎn)換電路3.34、軟件程序設(shè)計(jì)5、小結(jié)參考文獻(xiàn)[1]張偉,《單片機(jī)原理及應(yīng)用》,機(jī)械工業(yè)出版社,2005(這是格式)附錄江西工業(yè)職業(yè)技術(shù)學(xué)院電子與信息工程系課程設(shè)計(jì)指導(dǎo)教師評語班級:學(xué)生姓名:學(xué)號:指導(dǎo)教師評語(包括工作態(tài)度,遵守紀(jì)律;基本理論、知識、技能;獨(dú)立工作能力和分析解決問題的能力;完成任務(wù)情況及水平):學(xué)生成績(五級分制):指導(dǎo)教師簽名:****年**月**日第五篇:單片機(jī)課程設(shè)計(jì)報告DS18B20測溫及按鍵控制課程設(shè)計(jì)課程名稱單片機(jī)基礎(chǔ)課程設(shè)計(jì)題目名稱18B20測溫及按鍵控制學(xué)生學(xué)院****專業(yè)班級****班號****學(xué)生組員******指導(dǎo)教師*****DS18B20測溫及按鍵控制第一章系統(tǒng)的概述及設(shè)計(jì)任務(wù)書摘要和關(guān)鍵詞【摘要】:本設(shè)計(jì)所介紹的數(shù)字溫度計(jì)與傳統(tǒng)的溫度計(jì)相比,具有讀數(shù)方便,測溫范圍廣,測溫準(zhǔn)確,其輸出溫度采用數(shù)字顯示,主要用于對測溫比較準(zhǔn)確的場所,或科研實(shí)驗(yàn)室使用,該設(shè)計(jì)控制器使用單片機(jī)STC89C52,測溫傳感器使用DS18B20,用4位共陽極LED數(shù)碼管以串口傳送數(shù)據(jù),實(shí)現(xiàn)溫度顯示,能準(zhǔn)確達(dá)到以上要求?!娟P(guān)鍵詞】:單片機(jī),數(shù)字控制,溫度計(jì),DS18B20,STC89C52設(shè)計(jì)任務(wù)與技術(shù)指標(biāo)要求:1.基本范圍-50℃-125℃2.精度誤差小于0.5℃3.LED數(shù)碼直讀顯示總體設(shè)計(jì)方案數(shù)字溫度計(jì)設(shè)計(jì)方案論證方案一由于本設(shè)計(jì)是測溫電路,可以使用熱敏電阻之類的器件利用其感溫效應(yīng),在將隨被測溫度變化的電壓或電流采集過來,進(jìn)行A/D轉(zhuǎn)換后,就可以用單片機(jī)進(jìn)行數(shù)據(jù)的處理,在顯示電路上,就可以將被測溫度顯示出來,這種設(shè)計(jì)需要用到A/D轉(zhuǎn)換電路,感溫電路比較麻煩。方案二進(jìn)而考慮到用溫度傳感器,在單片機(jī)電路設(shè)計(jì)中,大多都是使用傳感器,所以這是非常容易想到的,所以可以采用一只溫度傳感器DS18B20,此傳感器,可以很容易直接讀取被測溫度值,進(jìn)行轉(zhuǎn)換,就可以滿足設(shè)計(jì)要求。從以上兩種方案,很容易看出,采用方案二,電路比較簡單,軟件設(shè)計(jì)也比較簡單,故采用了方案二。方案二的總體設(shè)計(jì)框圖溫度計(jì)電路設(shè)計(jì)總體設(shè)計(jì)方框圖如圖1所示,控制器采用單片機(jī)AT89S51,溫度傳感器采用DS18B20,用3位LED數(shù)碼管以串口傳送數(shù)據(jù)實(shí)現(xiàn)溫度顯示。第二章單元模塊的設(shè)計(jì)與分析主控制器:單片機(jī)STC89C52,具有低電壓供電和體積小等特點(diǎn),四個端口只需要兩個口就能滿足電路系統(tǒng)的設(shè)計(jì)需要,很適合便攜手持式產(chǎn)品的設(shè)計(jì)使用。DS18B20測溫及按鍵控制個字節(jié),為配置寄存器,它的內(nèi)容用于確定溫度值的數(shù)字轉(zhuǎn)換分辨率。DS18B20工作時寄存器中的分辨率轉(zhuǎn)換為相應(yīng)精度的溫度數(shù)值。該字節(jié)各位的定義如圖3所示。低5位一直為1,TM是工作模式位,用于設(shè)置DS18B20在工作模式還是在測試模式,DS18B20出廠時該位被設(shè)置為0,用戶要去改動,R1和R0決定溫度轉(zhuǎn)換的精度位數(shù),來設(shè)置分辨率。系統(tǒng)軟件算法分析系統(tǒng)程序主要包括主程序,讀出溫度子程序,溫度轉(zhuǎn)換命令子程序,計(jì)算溫度子程序,顯示數(shù)據(jù)刷新子程序等。主程序主程序的主要功能是負(fù)責(zé)溫度的實(shí)時顯示、讀出并處理DS18B20的測量的當(dāng)前溫度值,溫度測量每1s進(jìn)行一次。這樣可以在一秒之內(nèi)測量一次被測溫度,其程序流程見圖7所示。3.2讀出溫度子程序讀出溫度子程序的主要功能是讀出RAM中的9字節(jié),在讀出時需進(jìn)行CRC校驗(yàn),校驗(yàn)有錯時不進(jìn)行溫度數(shù)據(jù)的改寫。其程序流程圖如圖8示3.3溫度轉(zhuǎn)換命令子程序溫度轉(zhuǎn)換命令子程序主要是發(fā)溫度轉(zhuǎn)換開始命令,當(dāng)采用12位分辨率時轉(zhuǎn)換時間約為750ms,在本程序設(shè)計(jì)中采用1s顯示程序延時法等待轉(zhuǎn)換的完成。溫度轉(zhuǎn)換命令子程序流程圖如上圖,圖9所示3.4計(jì)算溫度子程序計(jì)算溫度子程序?qū)AM中讀取值進(jìn)行BCD碼的轉(zhuǎn)換運(yùn)算,并進(jìn)行溫度值正負(fù)的判定,其程序流程圖如圖10所示。DS18B20測溫及按鍵控制第三章實(shí)驗(yàn)程序else{b=0-b;if(b%10==1)f-=1;b=10-(b%10);/*

溫馨提示

  • 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

提交評論