欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      單片機課程設(shè)計報告[5篇]

      時間:2019-05-12 02:20:22下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《單片機課程設(shè)計報告》,但愿對你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《單片機課程設(shè)計報告》。

      第一篇:單片機課程設(shè)計報告

      《單片機課程設(shè)計報告》

      學(xué)校:

      專業(yè):

      班級:

      姓名:

      學(xué)號:

      指導(dǎo)教師:

      摘要

      由于單片機體積小、成本低、使用方便,所以被廣泛地應(yīng)用于儀器儀表、現(xiàn)場數(shù)據(jù)的采集和控制。通過本次課程設(shè)計掌握單片機硬件和軟件方面的知識,更深入的了解單片機的實際應(yīng)用。

      關(guān)鍵詞

      單片機,程序,流水燈,數(shù)碼管,溫度計,鍵盤掃描,定時器等。

      實驗內(nèi)容

      一、課程設(shè)計的目的

      以本學(xué)期對單片機的學(xué)習(xí)和認識,并通過本次課程設(shè)計加以應(yīng)用,從而達到一個對所學(xué)知識的鞏固、更深一步的理解,面對一個電子設(shè)計,應(yīng)對出系統(tǒng)的方案,分析出各個板塊來,再對各個板塊進一步的具體的設(shè)計,先進行硬件電路設(shè)計,此時一定要考慮好要用什么元件、各個元件的具體參數(shù)、是否能實現(xiàn)應(yīng)有功能,從而得到一個完整的硬件電路。在根據(jù)該電路設(shè)計出軟件的功能模塊、從而完成程序流程圖,在根據(jù)流程圖完成程序的設(shè)計,并通過反復(fù)的調(diào)試、運行、更正,直至完成既定功能為止,最后將軟件、硬件結(jié)合進行調(diào)試、運行,對其功能進行最終測試,并反復(fù)思考其測試中遇到相應(yīng)問題的原因,并將其一一處理,從而完成本次設(shè)計的實驗要求,以及本次課程設(shè)計的最終目的。

      實驗一:鍵盤操作實驗 實驗要求:

      通過本次實驗實現(xiàn)對鍵盤的控制,操作數(shù)碼管的顯示數(shù)字。

      實驗程序:

      #include #include #include #include #define WR273 XBYTE[0XC000] #define RD244 XBYTE[0XC000] #define uchar unsigned char #define uint unsigned int sbit DQ =P1^0;uint count=0,x,buf[20],tim,flag;uchar fen,shi;uchar code

      table_16_1[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};uchar code

      table_16_2[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0x08,0x03,0x46,0x21,0x06,0x0e};void led_clc(void){ XBYTE[0X8000]=0XFF;XBYTE[0X9000]=0XFF;XBYTE[0XA000]=0XFF;XBYTE[0XB000]=0XFF;}

      void delay(unsigned int i){ while(i--);} void delay_1ms(uint z){ uint i,j;for(i=z;i>0;i--)for(j=110;j>0;j--);} uchar key_test(){ WR273=0XF0;if((RD244&0X0F)!=0X0F)return 1;else return 0;}

      void time_init(){ TMOD=0X01;TH0=(65536-46080)/256;TL0=(65536-46080)%256;TR0=1;ET0=1;EA=1;} void time_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];

      } void TIME_SET(){ uchar a,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;

      } } } void TIME_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];} void main(){ uint temp;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();} } void time()interrupt 2 { uchar m;TH0=(65536-46080)/256;TL0=(65536-46080)%256;m++;if(m==20){ m=0;count++;tim++;} } void serial()interrupt 4 { if(RI==1){ x=SBUF;RI=0;} put_char(x);delay_1ms(5);}

      實驗心得體會:

      通過本次實驗,讓我對單片機實驗有了更深的了解,認為這個實驗還是比較容易的,沒有花太多的時間。

      實驗二:流水燈實驗 實驗要求:

      本次實驗實現(xiàn)的是小燈的閃爍,流水燈可以按照程序規(guī)定的要求進行閃爍。

      實驗程序設(shè)計

      #include //52單片機頭文件

      #include //包含有左右循環(huán)移位子函數(shù)的庫 #define uint unsigned int //宏定義 #define uchar unsigned char //宏定義 uint flag=0;void delay(uint z)//延時函數(shù),z的取值為這個函數(shù)的延時ms數(shù),如delay(200);大約延時200ms.{ //delay(500);大約延時500ms.uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);} void init(){ TMOD=0X01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TR0=1;ET0=1;EA=1;} void main()//主函數(shù) { init();

      while(1){ uchar a,i,j;

      if(flag==1){ for(j=0;j<3;j++)//寄偶交替 { P1=0x55;//點亮小燈 delay(300);//延時300毫秒 P1=0xaa;delay(300);//延時300毫秒 } for(j=0;j<3;j++)//流水燈 { a=0xfe;for(i=0;i<8;i++){ P1=a;//點亮小燈

      delay(300);//延時300毫秒 a=_crol_(a,1);} } P1=0xff;for(j=0;j<3;j++)//從兩邊往中間流 { P1=0x7e;//點亮小燈 delay(300);//延時300毫秒 P1=0xbd;delay(300);//延時300毫秒 P1=0xdb;//點亮小燈 delay(300);//延時300毫秒 P1=0xe7;delay(300);//延時300毫秒 } P1=0xff;for(j=0;j<3;j++)//從中間往兩邊流 { P1=0xe7;//點亮小燈 delay(300);//延時300毫秒 P1=0xdb;delay(300);//延時300毫秒 P1=0xbd;//點亮小燈 delay(300);//延時300毫秒 P1=0x7e;delay(300);//延時300毫秒 } P1=0xff;for(j=0;j<6;j++)//全部閃爍 { P1=~P1;//點亮小燈 delay(300);//延時300毫秒 } P1=0xff;flag=0;} } } void timer()interrupt 1 { flag=1;}

      實驗心得體會:

      通過本次實驗一步一步的進行實驗,設(shè)計程序,寫入中斷來實現(xiàn)流水燈的全部實驗要求。

      實驗三:數(shù)碼管性質(zhì) 實驗要求:

      通過上一次流水燈的實驗本次進行了數(shù)碼管的實驗,通過原理圖了解數(shù)碼管的性質(zhì)。

      設(shè)計程序

      #include #include #include #include #define WR273 XBYTE[0XC000] #define RD244 XBYTE[0XC000] #define uchar unsigned char #define uint unsigned int sbit DQ =P1^0;uint count=0,x,buf[20],tim,flag;uchar fen,shi;uchar code

      table_16_1[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};uchar code

      table_16_2[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0x08,0x03,0x46,0x21,0x06,0x0e};void led_clc(void){ XBYTE[0X8000]=0XFF;XBYTE[0X9000]=0XFF;XBYTE[0XA000]=0XFF;XBYTE[0XB000]=0XFF;} void delay(unsigned int i){ while(i--);} void delay_1ms(uint z){ uint i,j;for(i=z;i>0;i--)for(j=110;j>0;j--);} uchar key_test(){ WR273=0XF0;if((RD244&0X0F)!=0X0F)return 1;else return 0;} void serial_init(){ TMOD=0x20;TH1=0xfd;TL1=0xfd;TR1=1;REN=1;SM0=0;SM1=1;EA=1;ES=1;}

      void put_char(uchar s){ SBUF=s;while(TI==0);TI=0;}

      void put_string(uchar *s){

      while(*s){

      put_char(*s);

      s++;}

      利用匯編實現(xiàn)數(shù)碼管顯示:

      ORG 0000H LJMP MAIN ORG 0030H EXTRN DATA(BUFFER);DB BUFFER,30H;DB BUFFER+2,32H;DB BUFFER+3,33H MAIN: LCALL CLS

      ;LCALL DISP;MOV BUFFER,#30H;MOV BUFFER+1,#31H;MOV BUFFER+2,#33H;MOV BUFFER+3,#35H LCALL PRINT ST: LJMP ST

      CLS: MOV A,#0FFH MOV DPTR,#8000H MOVX @DPTR,A MOV DPTR,#9000H MOVX @DPTR,A MOV DPTR,#0A000H MOVX @DPTR,A MOV DPTR,#0B000H MOVX @DPTR,A RET;DISP:

      ;MOV A,BUFFER;MOV DPTR,#8000H;MOVX @DPTR,A;MOV A,BUFFER+1;MOV DPTR,#9000H;MOV A,BUFFER+2;MOV DPTR,#0A000H;MOVX @DPTR,A;MOV A,BUFFER+3;MOV DPTR,#0B000H;MOVX @DPTR,A;RET PRINT: PUSH PSW CLR C MOV BUFFER,#30H MOV A,BUFFER SUBB A,#30H MOV DPTR,#TABLED MOVC A,@A+DPTR MOV DPTR,#0B000H MOVX @DPTR,A

      MOV BUFFER+1,#31H

      MOV A,BUFFER+1 SUBB A,#30H MOV DPTR,#TABLED MOVC A,@A+DPTR MOV DPTR,#0A000H MOVX @DPTR,A

      MOV BUFFER+2,#33H

      MOV A,BUFFER+2 SUBB A,#30H MOV DPTR,#TABLED MOVC A,@A+DPTR MOV DPTR,#09000H MOVX @DPTR,A

      MOV BUFFER+3,#34H MOV A,BUFFER+3 SUBB A,#30H MOV DPTR,#TABLED MOVC A,@A+DPTR MOV DPTR,#08000H MOVX @DPTR,A

      POP PSW

      RET TABLED:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H DB 90H,88H,83H,0C6H,0A1H,86H,84H,0FFH,8CH DB 0BFH TABLED1:DB 0C0H,0F9H,64H,70H,59H,52H,42H,0F8H,40H DB 50H,48H,43H,0C6H,61H,46H,4EH,0FFH,4CH DB 7FH End

      實驗心得體會:

      本次實驗利用了c語言與匯編的對比,進行的簡單的實驗過程。更好的為以后程序設(shè)計奠定了基礎(chǔ)。

      實驗四:溫度測量實驗 實驗要求

      實現(xiàn)對DS18B20的對室內(nèi)溫度的測量,實現(xiàn)了單片機的溫度測量設(shè)計實驗。

      實驗程序

      #include #include #include #define uint unsigned int #define uchar unsigned char #define _Nop()_nop_()Uchar code

      dis_16_1[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};uchar code

      dis_16_2[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0x08,0x03,0x46,0x21,0x06,0x0e};

      sbit DQ =P1^0;//定義DS18B20通信端口

      //////////////////以下是DS18B20驅(qū)動程序//////////////// //延時函數(shù)

      void delay_us(unsigned int i){

      while(i--);}

      //初始化函數(shù)

      Init_DS18B20(void){

      unsigned char x=0;

      DQ = 1;//DQ復(fù)位

      delay_us(8);//稍做延時

      DQ = 0;//單片機將DQ拉低

      delay_us(80);//精確延時 大于 480us

      DQ = 1;//拉高總線

      delay_us(14);

      x=DQ;//稍做延時后 如果x=0則初始化成功 x=1則初始化失敗

      delay_us(20);}

      //讀一個字節(jié)

      Read One Char(void){

      unsigned char i=0;

      unsigned char dat = 0;for(i=8;i>0;i--){

      DQ = 0;// 給脈沖信號

      dat>>=1;

      DQ = 1;// 給脈沖信號

      if(DQ)

      dat|=0x80;

      delay_us(4);

      }

      return(dat);}

      //寫一個字節(jié)

      Write One Char(unsigned char dat){

      unsigned char i=0;for(i=8;i>0;i--){

      DQ = 0;

      DQ = dat&0x01;

      delay_us(5);

      DQ = 1;

      dat>>=1;

      } }

      //讀取溫度

      Read Temperature(void){

      unsigned char a=0;

      unsigned char b=0;

      unsigned int t=0;

      float tt=0;

      Init_DS18B20();

      Write One Char(0xCC);

      / / 跳過讀序號列號的操作

      Write One Char(0x44);

      // 啟動溫度轉(zhuǎn)換

      Init_DS18B20();

      Write One Char(0xCC);

      //跳過讀序號列號的操作

      Write One Char(0xBE);//讀取溫度寄存器等(共可讀9個寄存器)

      a=Read One Char();

      b=Read One Char();

      t=b;

      t<<=8;

      t=t|a;

      tt=t*0.0625;

      //將溫度的高位與低位合并

      t= tt*10+0.5;

      //對結(jié)果進行4舍5入

      return(t);} //////////////////以上是DS18B20驅(qū)動程序////////////////

      前兩個就是溫度

      /*定義數(shù)字ascii 編碼*/

      /*1MS為單位的延時程序*/ void delay_1ms(uchar x){

      uchar j;

      while(x--){

      for(j=0;j<125;j++)

      {;}

      } }

      main(){

      unsigned int i=0;

      Read Temperature();/*讀取當(dāng)前溫度*/

      delay_us(500);

      i=Read Temperature();/*讀取當(dāng)前溫度*/

      init();while(1){

      i=Read Temperature();//讀取當(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);

      } }

      實驗心得體會:

      本次實驗雖然遇到了很多難題,但是還是慢慢克服了,并且通過和實驗室同學(xué)的交流的得到了解決的方案。從中學(xué)會了很多技巧與知識。

      實驗五 :定時器實驗 實驗?zāi)康?/p>

      實現(xiàn)定時器50ms定時。

      程序設(shè)計 #include #include #include #include #define WR273 XBYTE[0XC000] #define RD244 XBYTE[0XC000] #define uchar unsigned char #define uint unsigned int sbit DQ =P1^0;uint count=0,x,buf[20],tim,flag;uchar fen,shi;uchar code

      table_16_1[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};uchar code

      table_16_2[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0x08,0x03,0x46,0x21,0x06,0x0e};

      void led_clc(void){ XBYTE[0X8000]=0XFF;XBYTE[0X9000]=0XFF;XBYTE[0XA000]=0XFF;XBYTE[0XB000]=0XFF;} void delay(unsigned int i){ while(i--);} void delay_1ms(uint z){ uint i,j;for(i=z;i>0;i--)for(j=110;j>0;j--);} uchar key_test(){ WR273=0XF0;if((RD244&0X0F)!=0X0F)

      return 1;else return 0;void time_init(){ TMOD=0X01;TH0=(65536-46080)/256;TL0=(65536-46080)%256;TR0=1;

      ET0=1;

      EA=1;} void time_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];

      }

      void TIME_SET(){

      uchar a,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;}

      } }

      void TIME_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];} void main(){ uint temp;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();} } void time()interrupt 2 { uchar m;TH0=(65536-46080)/256;TL0=(65536-46080)%256;m++;if(m==20){

      m=0;

      count++;

      tim++;} } void serial()interrupt 4 {

      if(RI==1){

      x=SBUF;

      RI=0;

      }

      put_char(x);delay_1ms(5);}

      實驗心得體會:

      本次實驗主要是定時器的設(shè)計實驗,通過本次實驗更好的了解GAL器件的應(yīng)用。實現(xiàn)了對此單片機的應(yīng)用。

      實驗總結(jié)

      通過本次課程設(shè)計我們獲益良多。既鞏固了單片機的一些相關(guān)基本知識,又熟悉了PROTRL的相關(guān)操作。對一個整體的電子設(shè)計項目,有了一定的認識,初步學(xué)會了一定的設(shè)計方法,明白了如何用這種方法去實現(xiàn)一個系統(tǒng)的設(shè)計。

      在電子技術(shù)應(yīng)用領(lǐng)域中,單片機的應(yīng)用愈來愈多地應(yīng)用到各行各業(yè)。如:工業(yè)控制、儀器儀表、電訊技術(shù)、辦公自動化和計算機外部設(shè)備、汽車與節(jié)能、商用產(chǎn)品、家用電器等。目前,單片機正朝著大容量片上存儲器、多功能i/o接口、寬范圍工作電源和低功耗方向發(fā)展。要開發(fā)單片機的應(yīng)用,不但要掌握單片機硬件和軟件方面的知識,而且還要深入了解各應(yīng)用系統(tǒng)的專業(yè)知識,只有將這兩方面的知識融會貫通和有機結(jié)合,才能設(shè)計出優(yōu)良的應(yīng)用系統(tǒng)。一個好的工程設(shè)計師不僅要掌握單片機的工作原理,而且還要不斷了解各公司最新芯片的結(jié)構(gòu)和應(yīng)用,在實際應(yīng)用中找到最好的性能價格比。所以以后還要注意培養(yǎng)接受新知識的自學(xué)能力,掌握芯片發(fā)展動態(tài)。

      同時也讓我們找到了自己在某些知識上的欠缺,并通過這次機會得到彌補,取得進步!

      第二篇:單片機課程設(shè)計報告格式

      《單片機課程設(shè)計》報告格式

      一、封面(注明:單片機課程設(shè)計報告、課題名稱、班級、姓名、指導(dǎo)教師、日期)

      二、摘要(課題簡要說明)

      三、課題設(shè)計目標(功能、性能指標)、方案論證(要求作兩種以上方案比較)

      四、設(shè)計過程(關(guān)鍵電路工作原理、元器件參數(shù)選用、程序流程圖、程序)

      五、軟硬件的安裝、調(diào)試方法

      六、完整電路圖、性能參數(shù)測試

      七、存在的問題和改進方向

      八、參考文獻資料

      第三篇:單片機課程設(shè)計報告格式

      單片機課程設(shè)計報告格式要求

      統(tǒng)一的A4紙打印。每頁約44行,每行約34字;打印正文用宋體小四號字;版面頁邊距上空2.5cm,下空2cm,左空2.5cm,右空2cm;頁碼用小五號字,底端居中。

      A、封面;B、課程設(shè)計任務(wù)書;C、摘要; D、目錄; E、正文;F、參考文獻;G、附錄(源程序代碼);H、有關(guān)圖紙(系統(tǒng)的總體原理圖)

      摘要(內(nèi)容提要)

      摘要是論文內(nèi)容的簡要陳述,應(yīng)盡量反映主要信息,內(nèi)容包括研究目的、方法、成果和結(jié)論,不含圖表,不加注釋,具有獨立性和完整性,?摘要?字樣位置居中。

      目錄

      目錄按三級標題編寫,要求層次清晰,且要與正文標題一致。主要包括緒論、正文主體、結(jié)論、主要參考文獻及附錄等。

      題序?qū)哟未笾掠幸韵聨追N格式:

      1、緒論

      1.1課題背景

      ˉˉˉˉˉˉ(正文)ˉˉˉˉˉˉˉˉˉ

      1.2交會對接技術(shù)發(fā)展概況

      ˉˉˉˉˉˉˉ(正文)ˉˉˉˉˉˉˉˉˉ

      1.2.1俄羅斯空間交會對接發(fā)展概況

      ˉˉˉˉˉˉˉ(正文)ˉˉˉˉˉˉˉˉˉ

      1.2.2美國空間交會對接發(fā)展概況

      ˉˉˉˉˉˉˉ(正文)ˉˉˉˉˉˉˉˉˉ

      2、空間飛行器

      2.1引言

      ˉˉˉˉˉˉˉ(正文)ˉˉˉˉˉˉˉˉˉ

      結(jié)論

      ˉˉˉˉˉˉˉ(正文)ˉˉˉˉˉˉˉˉˉ

      主要參考文獻

      為了反映報告的科學(xué)依據(jù)和作者尊重他人研究成果的嚴肅態(tài)度,同時向讀者提供有關(guān)信息的出處,正文之后一般應(yīng)列出主要參考文獻(只限于那些作者親自閱讀過的,最重要的且發(fā)表在公開出版物上的文獻或網(wǎng)上下載的資料)。報告中被引用的參考文獻序號置于所引用部分的右上角。參考文獻所列著作按報告中引用順序排列,著作按如下格式著錄:序號、著作者、書名、出版地、出版社、出版日期。

      例1(著作):1.宋尚桂.大學(xué)通識教育的理論和模式.青島:中國海洋大學(xué)出版社,2007年9月

      例2(文章):2.朱曉剛.以人為本----美國大學(xué)通識教育理念和實踐的解讀.民辦教育研究,2005(5)

      設(shè)計報告裝訂順序

      (一)課程設(shè)計封面

      (二)課程設(shè)計任務(wù)書

      (三)摘要

      (四)目錄

      例:

      1、緒論ˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉ

      11.1課題背景ˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉ1

      1.2交會對接技術(shù)發(fā)展概況ˉˉˉˉˉˉˉˉˉˉˉˉˉ

      31.2.1俄羅斯空間交會對接發(fā)展概況ˉˉˉˉˉˉˉˉˉ

      51.2.2美國空間交會對接發(fā)展概況ˉˉˉˉˉˉˉˉˉˉ72、空間飛行器ˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉ20

      2.1引言ˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉ20

      2.2空間飛行器姿態(tài)表示ˉˉˉˉˉˉˉˉˉˉˉˉˉˉ23 結(jié)論ˉˉˉˉˉˉˉˉˉˉˉˉ ˉˉˉˉˉˉˉˉˉˉ50 主要參考文獻ˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉ

      51(五)正文

      (六)參考文獻

      (七)附錄

      (八)有關(guān)圖紙

      撰寫設(shè)計報告的幾點要求

      1、文字

      設(shè)計中漢字應(yīng)采用《簡化漢字總表》規(guī)定的簡化字,并嚴格執(zhí)行漢字的規(guī)范,所有文字字面清晰,不得涂改。

      第一層次(章)題序和標題居中放置,其余各層次(節(jié)、條、款)題序和標題一律沿版面左側(cè)邊線頂格排列。第一層次(章)題序和標題距下文雙倍行距。段落開始后縮兩個字。行與行之間,段落和層次標題以及各段落之間均為單倍行距。

      第一層次(章)題序和標題用小二號黑體字。題序和標題之間空兩個字,不加標點,下同。

      第二層次(節(jié))題序和標題用小三號黑體字。

      第三層次(條)題序和標題用四號黑體字。

      第四層次及以下層次題序及標題一律用小四號黑體字。

      結(jié)論(結(jié)束語)作為單獨一章排列,但標題前不加?第XXX?字樣。結(jié)論是整個設(shè)計的總結(jié),應(yīng)以簡練的文字說明所做的工作。

      2、表格

      設(shè)計中的表格可以統(tǒng)一編序,也可以逐章單獨編序,方式應(yīng)與插圖及公式的編序方式統(tǒng)一。表序必須連續(xù),不得重復(fù)或跳躍。表格的結(jié)構(gòu)應(yīng)簡潔,各欄都應(yīng)標注量和相應(yīng)的單位。表格內(nèi)數(shù)字須上下對齊,相鄰欄內(nèi)的數(shù)值相同時,不能用‘同上’、‘同左’和其它類似用詞,應(yīng)一一重新標注。表序和表題置于表格上方中間位置,無表題的表序置于表格的左上方或右上方(同一篇論文位置應(yīng)一致)。

      3、插圖

      插圖要精選,圖序可以連續(xù)編序,也可以逐章單獨編序,方式應(yīng)與表格、公式的編序方式統(tǒng)一,圖序必須連續(xù),不得重復(fù)或跳躍。僅有一圖時,在圖題前加‘附圖’字樣。設(shè)計中的插圖以及圖中文字符號應(yīng)打印,無法打印時一律用鋼筆繪制和標出。由若干個分圖組成的插圖,分圖用a,b,c,……標出。圖序和圖題置于圖下方中間位置。

      4、公式

      設(shè)計中重要的或者后文中須重新提及的公式應(yīng)注序號并加圓括號,序號一律用阿拉伯?dāng)?shù)字連續(xù)編序或逐章編序,序號排在版面右側(cè),且距右邊距相等。公式與序號之間不加虛線。

      5、數(shù)字用法

      公歷世紀、年代、年、月、日、時間和各種計數(shù)、計量,均用阿拉伯?dāng)?shù)字。年份不能簡寫(如1999年不能寫成99年)。數(shù)值的有效數(shù)字應(yīng)全部寫出,如:0.50∶20.0不能寫作0.5∶20。

      6、軟件

      軟件流程圖和原程序清單要按軟件文檔格式附在報告后面,特殊情況可在答辯時展示,不附在報告內(nèi)。

      7、計量單位的定義和使用方法按國家計量標準執(zhí)行。

      第四篇:單片機課程設(shè)計報告

      《單片機原理與接口技術(shù)》

      課程設(shè)計報告

      設(shè)計題目: 基于80C51單片機系統(tǒng)實驗板的制作

      與程序設(shè)計

      業(yè):應(yīng)用電子專業(yè)

      級: 11應(yīng)電班

      名: 丁文俊

      指導(dǎo)教師: 余靜老師

      2013 年 5 月20 日

      目錄 前 言………………………………………………………………… 2 課程設(shè)計的目的及要求…………………………………………… 3 硬件電路設(shè)計……………………………………………………… 4 軟件程序設(shè)計…………………………………………………… 5 小結(jié)………………………………………………………………

      參考文獻 附錄A 電路總圖 附錄B 程序清單

      基于80C51單片機系統(tǒng)實驗板的制作與程序設(shè)計

      1.前言

      2、課程設(shè)計的目的及要求 2.1課程設(shè)計目的

      2.2課程設(shè)計要求

      3、系統(tǒng)主要硬件電路設(shè)計

      3.1 STC89C51單片機簡介

      MCS-51是美國Intel公司生產(chǎn)的一系列單片機的總稱,包括多個品種,如8031、8051、8751、8032、80C52、8752等。其中8051是最典型的產(chǎn)品,其他單片機都是在其基礎(chǔ)上進行功能增減而來的,所以人們習(xí)慣于用8051來稱呼MCS-51系列單片機。Intel公司將MCS-51的核心技術(shù)授權(quán)給了多家公司,這些廠家生產(chǎn)的單片機在功能上或多或少有些改變,以滿足不同的需求,其中美國的ATMEL公司生產(chǎn)的AT89C51是曾經(jīng)在我國非常流行的51單片機。當(dāng)前AT89C51/52已經(jīng)停產(chǎn),其替代產(chǎn)品為AT89S51/52。深圳宏晶公司出品的STC89C51可以直接代替?zhèn)鹘y(tǒng)的AT89S51和AT89C51芯片,也可以代替菲利普、華幫等其他公司的89C51,由于時代的發(fā)展,工藝的進步,STC89C51功能更強,壽命更長(4K字節(jié)Flash存儲器、128字節(jié)片內(nèi)RAM、支持ISP下載編程)

      圖2.1 STC89c51單片機

      單片機的時鐘信號用來提供單片機片內(nèi)各種微操作的時間基準,時鐘信號通常用兩種電路形式得到:內(nèi)部振蕩和外部振蕩。MCS-51單片機內(nèi)部有一個用于構(gòu)成振蕩器的高增益反向放大器,引腳XTALl和XTAL2分別是此放大電器的輸入端和輸出端,由于采用內(nèi)部方式時,電路簡單,所得的時鐘信號比較穩(wěn)定,實際使用中常采用這種方式,如圖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。

      為了初始化單片機內(nèi)部的某些特殊功能寄存器,必須采用復(fù)位的方式,復(fù)位后可使CPU及系統(tǒng)各部件處于確定的初始狀態(tài),并從初始狀態(tài)開始正常工作。單片機的復(fù)位是靠外電路來實現(xiàn)的,在正常運行情況下,只要RST引腳上出現(xiàn)兩個機器周期時間以上的高電平,即可引起系統(tǒng)復(fù)位,但如果RST引腳上持續(xù)為高電平,單片機就處于循環(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.3

      4、軟件程序設(shè)計

      5、小結(jié)

      參考文獻

      [1] 張偉,《單片機原理及應(yīng)用》,機械工業(yè)出版社,2005(這是格式)

      附錄

      江西工業(yè)職業(yè)技術(shù)學(xué)院電子與信息工程系

      課程設(shè)計指導(dǎo)教師評語

      班級:

      學(xué)生姓名:

      學(xué)號:

      指導(dǎo)教師評語(包括工作態(tài)度,遵守紀律;基本理論、知識、技能;獨立工作能力和分析解決問題的能力;完成任務(wù)情況及水平):

      學(xué)生成績(五級分制):

      指導(dǎo)教師簽名:

      ****年**月**日

      第五篇:單片機課程設(shè)計報告

      課程設(shè)計報告

      題 目: 自動滴灌系統(tǒng)設(shè)計

      課程名稱: 單片機原理及應(yīng)用 學(xué) 院: 信息工程學(xué)院

      專 業(yè): 計算機科學(xué)與技術(shù) 班 級: 2014 級計本 1 班

      學(xué)生姓名: *** 學(xué) 號: 201403031 指導(dǎo)教師: 巫 宗 賓

      成 績:

      開課時間: 2016~2017 學(xué)年 2 學(xué)期

      目錄

      第一章 系統(tǒng)概要.........................................................................................................................2 1.1系統(tǒng)背景............................................................................................................................2 1.2系統(tǒng)功能............................................................................................................................2 1.3設(shè)計要求............................................................................................................................2 第二章 系統(tǒng)硬件原理...............................................................................................................3 2.1AW60主要模塊和特點........................................................................................................3 2.2 LCD模塊............................................................................................................................3 2.3 LED模塊............................................................................................................................4 第三章 系統(tǒng)軟件設(shè)計.................................................................................................................6 3.1系統(tǒng)流程............................................................................................................................6 3.2主程序(main.c)............................................................................................................7 3.2中斷處理程序(isr.c)..................................................................................................7 3.3構(gòu)件組成............................................................................................................................9 第四章 系統(tǒng)測試.......................................................................................................................27 4.1測試結(jié)果..........................................................................................................................27 第五章 總結(jié)展望........................................................................................................................31 5.1總結(jié)..................................................................................................................................31 5.2展望..................................................................................................................................31 參考文獻.....................................................................................................................................32

      第一章 系統(tǒng)概要

      1.1系統(tǒng)背景

      隨著科學(xué)技術(shù)的發(fā)展電子技術(shù)產(chǎn)業(yè)結(jié)構(gòu)調(diào)整,單片機開始迅速發(fā)展,由于單片機本身的易于控制,精度高,自動化全面,市場對于智能控制系統(tǒng)的需求也越來越大。自動滴灌系統(tǒng),就是在單片機程序的控制下實現(xiàn)濕度監(jiān)測、滴灌控制的設(shè)備。單片機系統(tǒng)座位一種典型的嵌入式系統(tǒng),其系統(tǒng)設(shè)計包括硬件設(shè)計和軟件設(shè)計編程設(shè)計兩個方面,其調(diào)試過程一般分為軟件調(diào)試,硬件調(diào)試,系統(tǒng)調(diào)試。自動滴灌系統(tǒng)需要實現(xiàn)濕度采集,A/D轉(zhuǎn)換,濕度顯示,工作狀態(tài)顯示,電機驅(qū)動的功能。

      1.2系統(tǒng)功能

      首先要進行濕度監(jiān)測,每隔固定的時間就采集一次濕度,在內(nèi)部轉(zhuǎn)換后與標準值進行比較如果濕度值低于給定值的話就切換至工作狀態(tài),滴灌結(jié)束時自動切換至結(jié)束模式,繼續(xù)監(jiān)測濕度。

      仿真狀態(tài)下濕度監(jiān)測采用軟件模擬實現(xiàn),采集濕度信息使用LED顯示,每隔5s采集一次。工作狀態(tài)由LCD顯示。分別有滴灌開始(“Drip-irrigation is starting..”),和滴灌結(jié)束(“Drip-irrigation has ended..”)。滴灌時間為5s。結(jié)束后切換至結(jié)束模式。

      1.3設(shè)計要求

      學(xué)生在設(shè)計中可以引用所需的參考資料,避免重復(fù)工作,加快設(shè)計進程,但必須和題目的要求相符合,保證設(shè)計的正確。學(xué)生要在老師的指導(dǎo)下制定好自己各環(huán)節(jié)的詳細設(shè)計進程計劃,按給定的時間計劃保質(zhì)保量的完成個階段的設(shè)計任務(wù)。設(shè)計中可邊設(shè)計,邊修改,軟件設(shè)計與硬件設(shè)計可交替進行,問題答疑與調(diào)試和方案修改相結(jié)合,提高設(shè)計的效率,保證按時完成設(shè)計工作并交出合格的設(shè)計報告。1

      第二章 系統(tǒng)硬件原理

      2.1AW60主要模塊和特點

      AW60系列主要常規(guī)模塊和特點:

      (1)最高達40MHz的CPU工作頻率和20MHz的內(nèi)部總線工作頻率;時鐘源選項包括晶振,諧振器,外部時鐘或,內(nèi)部產(chǎn)生的時鐘。

      (2)相比HC08CPU指令集,S08CPU增加了BGND指令。

      (3)單線后臺調(diào)試模式接口:增強的斷點能力,允許單一的斷點設(shè)置在線調(diào)試(在片內(nèi)調(diào)試模塊增加了多于兩個的斷點)。

      (4)內(nèi)含32個中斷/復(fù)位源;內(nèi)含2KB的片內(nèi)RAM;內(nèi)含60KB的片內(nèi)在線可編程的Flash存儲器,帶有 塊保護和安全選項。

      (5)可選的計算機正常操作(COP)復(fù)位;低電壓檢測與復(fù)位或中斷;非法操作碼檢測與復(fù)位;非法地址檢測與復(fù)位。

      (6)ADC:多達16個通道,10個A/D轉(zhuǎn)換器與動動比較功能;兩個串行通信接口SCI模塊與可選的13位中斷;一個串行外設(shè)接口SPI模塊;集成電路互聯(lián)總線IIC模塊運行高達100kbps的最高總線負載;8引腳鍵盤中斷KBI模塊。

      (7)Timers:1個2 通道和一個6通道16位定時器/脈沖寬度調(diào)制器模塊。既有輸入捕獲,輸出比較,脈寬調(diào)制功能。AW子系列MCU的4種封裝形式只是引腳數(shù)量和形式有所區(qū)別,其他方面是一致的。

      2.2 LCD模塊

      LCD作為電子信息產(chǎn)品的主要顯示器件,相對于其他類型的顯示器件來說有其自身的特點,主要包括:

      (1)低電壓,低功耗;(2)平板型結(jié)構(gòu);

      (3)使用壽命長;

      (4)被動顯示;

      (5)顯示信息量大且易于彩色化; 1

      (6)無電磁輻射。

      點陣字符型LCD是專門用于顯示數(shù)字,字母,圖形符號及少量自定義符號的液晶顯示器。這類顯示器把LCD控制器,點陣驅(qū)動器,字符存儲器,顯示體及少量的阻容元件等集成一個液晶顯示模板。鑒于字符型液晶顯示模塊目前在國際上已經(jīng)規(guī)范化,其電特性及接口特性是統(tǒng)一的,只要設(shè)計出一種型號的接口電路,在指令上稍加修改即可使用各種規(guī)格的字符型液晶顯示器模塊。

      字符型液晶顯示器模塊的特點如下:

      (1)液晶顯示屏是以若干5*8或5*11點陣塊等組成的顯示字符群。每個點陣塊塊為一個字符位,字符間距和行間距都是一個點的寬度。

      (2)主控制電路為HD44780(HITACHI及其他公司的兼容電路。從程序員的角度來看LCD顯示接口與編程是面向HD44780的,只要了解HD44780的編程結(jié)構(gòu)即可進行LCD的顯示編程。

      (3)內(nèi)部具有字符發(fā)生器ROM,可顯示192種字符。

      (4)具有64字節(jié)的字符發(fā)生器RAM,可以定義8個5*8點陣字符或4個5*11的點陣字符。

      (5)具有64字節(jié)的數(shù)據(jù)顯示RAM,供顯示器編程使用。(6)標準接口特性,與MC9S08系列的MCU容易接口。(7)模塊結(jié)構(gòu)緊湊,輕巧,裝配容易。

      (8)單+5V電源供電(寬溫型需要加-7V驅(qū)動電源)。(9)低功耗,高可靠性。

      2.3 LED模塊

      LED發(fā)光二極管分為共陰極和共陽極數(shù)碼管,若為共陰極數(shù)碼管則公共端接地,若為共陽極數(shù)碼管則公共端接電源正極。如圖1: 1

      圖1

      實際應(yīng)用中是多個LED共同使用,MCU通過一個稱為數(shù)據(jù)口的8位數(shù)據(jù)端口來控制位段而原來8段數(shù)碼管的公共端,原來接到公共電平,現(xiàn)在接MCU的一個引腳,由MCU來控制,通常叫做位選信號,這樣MCU的8個端口就可以控制8連排的數(shù)碼管了。若要控制更多數(shù)碼管則需加一個譯碼芯片。每個時刻只讓一個數(shù)碼管有效,由于人的視覺暫留效應(yīng)(100ms)可以達到同時顯示的效果。

      圖2是MCU與4排8段數(shù)碼管的連接:

      圖2 1

      第三章 系統(tǒng)軟件設(shè)計

      3.1系統(tǒng)流程

      開始初始化土壤濕度數(shù)據(jù)采集顯示濕度N小于設(shè)定值Y顯示滴灌開始計時結(jié)束,結(jié)束滴灌顯示滴灌結(jié)束 圖3 圖3是系統(tǒng)流程圖,開始時先初始化各個部件,LCD顯示結(jié)束滴灌信息,LED顯示為全零。后每隔五秒采集一次濕度數(shù)據(jù)用LED顯示濕度。判斷濕度值是否低于設(shè)定值,低于設(shè)定值的話立即啟動滴灌,此時濕度上升,結(jié)束滴灌。若沒有低于設(shè)定值的話,則繼續(xù)監(jiān)測。LED不斷刷新顯示當(dāng)前濕度值。1

      3.2主程序(main.c)

      #include “includes.h” //包涵總頭文件 int main(void){ work = 0;shidu = 75;enter_critical();LEDInit();//LED初始化 LCDInit();//LCD初始化 tpm_init(TPM0,TPM_CLKSRC_PLL,1000);//初始化TPM模塊,1ms中斷一次

      light_init(LIGHT_PORT, LIGHT_PIN_RED, LIGHT_OFF);light_init(LIGHT_PORT, LIGHT_PIN_GREEN, LIGHT_OFF);tpm_enable_int(0);init_critical();for(;;){

      }

      } return 0;3.2中斷處理程序(isr.c)

      //================== //文件名稱:isr.c //功能概要: 中斷底層驅(qū)動構(gòu)件源文件

      //版權(quán)所有:蘇州大學(xué)飛思卡爾嵌入式中心(sumcu.suda.edu.cn)1

      //================== #include “includes.h” void tpm0_isr(void){ static uint_32 TPMCounter = 0;//計時器 static uint_8 LEDindex=0;//位選口聲明 uint_8 LEDDataBuffer[4];//LED顯示緩沖區(qū)

      changeCode(shidu,LEDDataBuffer);//將濕度值轉(zhuǎn)化為對應(yīng)字符輸出 uint_8 i;uint_8 * working;uint_8 * stop;working =(uint_8 *)“Drip-irrigation is starting......”;stop =(uint_8 *)“Drip-irrigation has ended......”;if((TPM_SC_REG(TPM0_BASE_PTR)TPM_SC_TOF_MASK){ TPMCounter++;

      &

      TPM_SC_TOF_MASK)

      == } BSET(TPM_SC_TOF_SHIFT,TPM_SC_REG(TPM0_BASE_PTR));//中斷置標志位寫1清0 LEDindex++;//位選位+1 if(LEDindex>=4)LEDindex=0;//大于4位選口置0 i=LEDchangeCode(LEDDataBuffer[LEDindex]-'0');//轉(zhuǎn)碼 LEDshow1(LEDindex,i);if(TPMCounter>5000){

      shidu = sdmn(shidu);if(shidu <= 65){ 1

      } changeState(&work);//改變工作狀態(tài)

      if(work == 0)

      { LCDShow(stop);TPMCounter = 0;light_control(LIGHT_PORT, LIGHT_PIN_RED, LIGHT_ON);light_control(LIGHT_PORT, LIGHT_PIN_GREEN, LIGHT_OFF);} if(work == 1){

      LCDShow(working);

      TPMCounter = 0;shidu = 80;light_control(LIGHT_PORT, LIGHT_PIN_GREEN, LIGHT_ON);light_control(LIGHT_PORT, LIGHT_PIN_RED, LIGHT_OFF);changeState(&work);}

      } }

      3.3構(gòu)件組成

      1、TPM構(gòu)件:

      //=================== //文件名稱:tpm.c //功能概要:tpm底層驅(qū)動構(gòu)件源文件 1

      //版權(quán)所有:蘇州大學(xué)飛思卡爾嵌入式中心(sumcu.suda.edu.cn)//====================== #include “tpm.h” //定時器模塊0,1,2地址映射 Const TPM_MemMapPtr TPM_ARR[]={TPM0_BASE_PTR,TPM1_BASE_PTR,TPM2_BASE_PTR};//====================== //函數(shù)名稱:tpm_enable_int //功能概要:使能tpm模塊中斷。

      //參數(shù)說明:tpmModule:模塊號:0、1、2 //函數(shù)返回:無

      //====================== void tpm_enable_int(uint_8 tpmModule){ } //====================== //函數(shù)名稱:tpm_disable_int //功能概要:禁止tpm模塊初始化。enable_irq(tpm0_irq_no + tpmModule);//參數(shù)說明:tpmModule:模塊號:0、1、2 //函數(shù)返回:無

      //====================== void tpm_disable_int(uint_8 tpmModule){ } //====================== //函數(shù)名稱:tpm_init //功能概要:初始化tpm模塊.1

      disable_irq(tpm0_irq_no + tpmModule);

      //參數(shù)說明:tpmModule:模塊號:0、1、2 //clk_src_sel:時鐘源選擇:1:PLL/FLL(推薦)、2:晶振、3:內(nèi)部參考時鐘。1,2可用

      // int_us:中斷毫秒數(shù),中斷時間間隔,單位為毫秒,10ms=10000 //函數(shù)返回:函數(shù)執(zhí)行狀態(tài):0=正常;非0=異常

      //====================== uint_8 tpm_init(uint_8 tpmModule,uint_8 clk_src_sel,uint_32 int_us){

      if(tpmModule>2)//防止越界值 { } //開啟SIM時鐘門 tpmModule=2;BSET(SIM_SCGC6_TPM0_SHIFT+tpmModule,SIM_SCGC6);//使能TPM時鐘

      //中斷時間計算:(48000/8)*10000/1000=0x7530 10ms中斷一次 switch(clk_src_sel){ case 1: //MCGPLL/2或者MCGFLL作為時鐘源 BSET(SIM_SOPT2_PLLFLLSEL_SHIFT,SIM_SOPT2);

      //使能PLL為時鐘源

      int_us=(48000/8)*int_us/1000;break;case 2: //晶振作為時鐘源

      int_us=(8000/8)*int_us/1000;OSC0_CR|=OSC_CR_ERCLKEN_MASK;//開啟晶振輸出時鐘

      break;case 3: //內(nèi)部參考時鐘,由MCG決定 break;

      default: 1

      } return 1;//傳參錯誤,返回

      SIM_SOPT2 |= SIM_SOPT2_TPMSRC(clk_src_sel);//使能時鐘選擇 TPM_ARR[tpmModule]->CNT=0x00;TPM_ARR[tpmModule]->MOD=int_us;//TOF寫1清0,TOIE中斷使能,CMOD選擇每次時鐘加1,PS=0x011 選擇8分頻;TPM_ARR[tpmModule]->SC=TPM_SC_TOF_MASK|TPM_SC_TOIE_MASK|TPM_SC_CMOD(1)|TPM_SC_PS(3);return 0;} //====================== //函數(shù)名稱:tpm_stop //功能概要:禁止tpm模塊。

      //參數(shù)說明:tpmModule:模塊號:0、1、2 //函數(shù)返回:無

      //====================== void tpm_stop(uint_8 tpmModule){ } Tpm.h //====================== //文件名稱:tpm.c //功能概要:tpm底層驅(qū)動構(gòu)件源文件

      //版權(quán)所有:蘇州大學(xué)飛思卡爾嵌入式中心(sumcu.suda.edu.cn)//====================== #ifndef TPM_H 1

      TPM_ARR[tpmModule]->SC&=~TPM_SC_CMOD(3);

      #define TPM_H

      #include “common.h” #include “sysinit.h” //中斷號

      #define tpm0_irq_no 17 #define tpm1_irq_no 18 #define tpm2_irq_no 19 //時鐘選擇

      #define TPM_CLKSRC_PLL 1 #define TPM_CLKSRC_OSC 2 #define TPM_CLKSRC_IRC 3 //模塊號 #define TPM0 0 #define TPM1 1 #define TPM2 2

      //====================== //函數(shù)名稱:tpm_enable_int //功能概要:使能tpm模塊中斷。

      //參數(shù)說明:tpmModule:模塊號:0、1、2 //函數(shù)返回:無

      //====================== void tpm_enable_int(uint_8 tpmModule);//====================== //函數(shù)名稱:tpm_disable_int //功能概要:禁止tpm模塊初始化。

      //參數(shù)說明:tpmModule:模塊號:0、1、2 //函數(shù)返回:無 1

      //====================== void tpm_disable_int(uint_8 tpmModule);//====================== //函數(shù)名稱:tpm_init //功能概要:初始化tpm模塊.//參數(shù)說明:tpmModule:模塊號:0、1、2 //clk_src_sel:時鐘源選擇:1:PLL/FLL(推薦)、2:晶振、3:內(nèi)部參考時鐘。1,2可用

      // int_us:中斷毫秒數(shù),中斷時間間隔,單位為毫秒,10ms=10000 //函數(shù)返回:函數(shù)執(zhí)行狀態(tài):0=正常;非0=異常

      //====================== uint_8 tpm_init(uint_8 tpmModule,uint_8 clk_src_sel,uint_32 int_us);//====================== //函數(shù)名稱:tpm_stop //功能概要:禁止tpm模塊。

      //參數(shù)說明:tpmModule:模塊號:0、1、2 //函數(shù)返回:無

      //====================== void tpm_stop(uint_8 tpmModule);#endif

      2、LED構(gòu)件

      //===================== // 文件名稱:led.c // 功能概要:led構(gòu)件源文件

      // 版權(quán)所有: 蘇州大學(xué)飛思卡爾嵌入式中心(sumcu.suda.edu.cn)//====================== #include “l(fā)ed.h” //led位選端口 struct GPIO led_cs[4]= 1

      {

      {LED_CS0_PORT,LED_CS0}, {LED_CS1_PORT,LED_CS1}, {LED_CS2_PORT,LED_CS2}, {LED_CS3_PORT,LED_CS3}, };//led數(shù)據(jù)端口 struct GPIO led_d[8]= {

      {LED_D1_PORT,LED_D1}, {LED_D2_PORT,LED_D2}, {LED_D3_PORT,LED_D3}, {LED_D4_PORT,LED_D4}, {LED_D5_PORT,LED_D5}, {LED_D6_PORT,LED_D6}, {LED_D7_PORT,LED_D7}, {LED_D8_PORT,LED_D8}, };

      //====================== //函數(shù)名稱:LEDInit //函數(shù)返回:無 //參數(shù)說明:無 //功能概要:LED初始化。

      //====================== void LEDInit(){ uint_8 i = 0;//定義8根數(shù)據(jù)線為輸出,初始輸出0 for(i = 0;i < 8;i++)gpio_init(led_d[i].gpio_port, led_d[i].gpio_pin, 1, 0);1

      //定義4位選線定義為輸出,初始輸出0 for(i = 0;i < 4;i++)gpio_init(led_cs[i].gpio_port, led_cs[i].gpio_pin, 1, 0);} //====================== //函數(shù)名稱:LEDshow1 //函數(shù)返回:無

      //參數(shù)說明:i:指定LED哪一位顯示,c:顯示的內(nèi)容 //功能概要:指定LED的第i位顯示c。

      //====================== void LEDshow1(uint_8 i, uint_8 c){ uint_8 temp;uint_8 j;//位選全部置0 for(j=0;j<=3;j++)gpio_set(led_cs[j].gpio_port, led_cs[j].gpio_pin, 0);//數(shù)據(jù)上線 for(j=0;j<=7;j++){ temp =(c>>j)& 0x01;

      gpio_set(led_d[j].gpio_port, led_d[j].gpio_pin, temp);} //選擇的位選置1 gpio_set(led_cs[i].gpio_port, led_cs[i].gpio_pin, 1);}

      //顯示碼表

      const uint_8 Dtable[24] = 1

      // 0 1 2 3 4 5 6 7 8 9 {0x3F,0x06,0x5B,0x4F,0x66, 0x6D,0x7D,0x07,0x7F,0x6F, // 11 12 13 14 15 16 17 18 19 20 // 0.1.2.3.4.5.6.7.8.9.0xBF,0x86,0xDB,0x4F,0x66, 0x6D,0x7D,0x07,0xFF,0x6F, // 21 22 23(全亮)24(全滅)// E F 0x79,0x71, 0xFF, 0x00};//====================== //函數(shù)名稱:LEDchangeCode //函數(shù)返回:返回數(shù)據(jù)num對應(yīng)的顯示碼 //參數(shù)說明:num:需要轉(zhuǎn)換成顯示碼的數(shù)字 //功能概要:數(shù)字轉(zhuǎn)成顯示碼

      //===================== uint_8 LEDchangeCode(uint_8 num){ return Dtable[num];} LED.h //====================== // 文件名稱:led.h // 功能概要:led構(gòu)件頭文件

      // 版權(quán)所有: 蘇州大學(xué)飛思卡爾嵌入式中心(sumcu.suda.edu.cn)//======================

      #ifndef led_H //防止重復(fù)定義(開頭)#define led_H #include “GPIOapp.h” //LED數(shù)據(jù)口分別接PORTB的{11,10,9,8,3,2,1,0}引腳 1

      #define LED_D1_PORT PORTB #define LED_D1 11 #define LED_D2_PORT PORTB #define LED_D2 10 #define LED_D3_PORT PORTB #define LED_D3 9 #define LED_D4_PORT PORTB #define LED_D4 8 #define LED_D5_PORT PORTB #define LED_D5 3 #define LED_D6_PORT PORTB #define LED_D6 2 #define LED_D7_PORT PORTB #define LED_D7 1 #define LED_D8_PORT PORTB #define LED_D8 0 //LED位選口分別接PORTB的{19,18,17,16}引腳 #define LED_CS0_PORT PORTB #define LED_CS0 19 #define LED_CS1_PORT PORTB #define LED_CS1 18 #define LED_CS2_PORT PORTB #define LED_CS2 17 #define LED_CS3_PORT PORTB #define LED_CS3 16 //====================== //函數(shù)名稱:LEDInit //函數(shù)返回:無 //參數(shù)說明:無 1

      //功能概要:LED初始化。

      //====================== void LEDInit();//====================== //函數(shù)名稱:LEDshow1 //函數(shù)返回:無

      //參數(shù)說明:i:指定LED哪一位顯示,c:顯示的內(nèi)容 //功能概要:指定LED的第i位顯示c。

      //====================== void LEDshow1(uint_8 i, uint_8 c);//====================== //函數(shù)名稱:LEDchangeCode //函數(shù)返回:返回數(shù)據(jù)num對應(yīng)的顯示碼 //參數(shù)說明:num:需要轉(zhuǎn)換成顯示碼的數(shù)字 //功能概要:數(shù)字轉(zhuǎn)成顯示碼

      //====================== uint_8 LEDchangeCode(uint_8 num);#endif //防止重復(fù)定義(結(jié)尾)

      3、LCD構(gòu)件

      //====================== // 文件名稱:lcd.c // 功能概要:lcd構(gòu)件頭文件

      // 版權(quán)所有: 蘇州大學(xué)飛思卡爾嵌入式中心(sumcu.suda.edu.cn)//====================== #include “l(fā)cd.h”//lcd控制位和數(shù)據(jù)位端口及引腳號 struct GPIO LCD[11]= { {LCD_RS_PORT,LCD_RS}, 1

      {LCD_RW_PORT,LCD_RW}, {LCD_E_PORT,LCD_E}, {LCD_D0_PORT,LCD_D0}, {LCD_D1_PORT,LCD_D1}, {LCD_D2_PORT,LCD_D2}, {LCD_D3_PORT,LCD_D3}, {LCD_D4_PORT,LCD_D4}, {LCD_D5_PORT,LCD_D5}, {LCD_D6_PORT,LCD_D6}, {LCD_D7_PORT,LCD_D7}, };//內(nèi)部函數(shù)原型說明

      extern void LCDCommand(uint_8 cmd);//====================== //函數(shù)名稱:LCDInit //函數(shù)返回:無 //參數(shù)說明:無

      //功能概要:LCD初始化。

      //====================== void LCDInit(){ uint_32 i = 0; //定義數(shù)據(jù)口和控制口為輸出 for(i = 0;i < 11;i++){ gpio_init(LCD[i].gpio_port, LCD[i].gpio_pin, 1,0);} //設(shè)置指令,RS,R/W = 00, 寫指令代碼

      gpio_set(LCD[0].gpio_port, LCD[0].gpio_pin, 0);gpio_set(LCD[1].gpio_port, LCD[1].gpio_pin, 0);1

      //功能設(shè)置-//設(shè)置指令

      LCDCommand(0x38);//5*7點陣模式,2行顯示,8位數(shù)據(jù)總線 LCDCommand(0x08);//關(guān)顯示,關(guān)光標顯示,不閃爍

      LCDCommand(0x01);//清屏

      for(i=0;i<40000;i++)asm(“NOP”);//延時 LCDCommand(0x06);LCDCommand(0x14);//光標右移一個字符位,AC自動加1 LCDCommand(0x0C);//開顯示,關(guān)光標顯示,不閃爍 } //====================== //函數(shù)名稱:LCDShow //函數(shù)返回:無

      //參數(shù)說明:需要顯示的數(shù)據(jù) //功能概要:液晶顯示data中的數(shù)據(jù)。

      //====================== void LCDShow(uint_8 data[32]){ uint_8 i;LCDInit();//LCD初始化 //顯示第1行16個字符

      gpio_set(LCD[0].gpio_port, LCD[0].gpio_pin, 0);gpio_set(LCD[1].gpio_port, LCD[1].gpio_pin, 0);//后7位為DD RAM地址(0x00)LCDCommand(0x80);//寫16個數(shù)據(jù)到DD RAM gpio_set(LCD[0].gpio_port, LCD[0].gpio_pin, 1);gpio_set(LCD[1].gpio_port, LCD[1].gpio_pin, 0);//將要顯示在第1行上的16個數(shù)據(jù)逐個寫入DD RAM中 1

      for(i = 0;i < 16;i++){ } //顯示第2行16個字符

      gpio_set(LCD[0].gpio_port, LCD[0].gpio_pin, 0);gpio_set(LCD[1].gpio_port, LCD[1].gpio_pin, 0);//后7位為DD RAM地址(0x40)LCDCommand(0xC0);gpio_set(LCD[0].gpio_port, LCD[0].gpio_pin, 1);gpio_set(LCD[1].gpio_port, LCD[1].gpio_pin, 0);//將要顯示在第2行上的16個數(shù)據(jù)逐個寫入DD RAM中 for(i = 16;i < 32;i++){ } } //====================== //函數(shù)名稱:LCDCommand //函數(shù)返回:無

      //參數(shù)說明:cmd:待執(zhí)行的命令

      //功能概要:執(zhí)行給定的cmd命令,且延時。

      //====================== void LCDCommand(uint_8 cmd){

      uint_8 i;uint_16 j;uint_8 temp;LCDCommand(data[i]);LCDCommand(data[i]);//等待延遲防止重復(fù)調(diào)用此函數(shù)而LCD卡死 1

      for(j=0;j<1600;j++);asm(“NOP”);//數(shù)據(jù)送到LCD的數(shù)據(jù)線上 for(i = 3;i < 11;i++){ gpio_set(LCD[i].gpio_port, LCD[i].gpio_pin, 0);} for(i = 3;i < 11;i++){ temp = 0x01 &(cmd>>(i-3));gpio_set(LCD[i].gpio_port, LCD[i].gpio_pin, temp);} //給出E信號的下降沿(先高后低),使數(shù)據(jù)寫入LCD gpio_set(LCD[2].gpio_port, LCD[2].gpio_pin, 1);for(j=0;j<25;j++)asm(“NOP”);gpio_set(LCD[2].gpio_port, LCD[2].gpio_pin, 0);} LCD.h //====================== // 文件名稱:lcd.h // 功能概要:lcd構(gòu)件頭文件

      // 版權(quán)所有: 蘇州大學(xué)飛思卡爾嵌入式中心(sumcu.suda.edu.cn)// 版本更新: 2013-03-17 V1.2 //====================== #ifndef LCD_H #define LCD_H #include “GPIOapp.h” //LCD寄存器選擇信號引腳 #define LCD_RS_PORT PORTD #define LCD_RS 7 //LCD讀寫信號引腳 1

      #define LCD_RW_PORT PORTD #define LCD_RW 6 //LCD讀寫信號引腳

      #define LCD_E_PORT PORTD #define LCD_E 5 //LCD數(shù)據(jù)引腳

      #define LCD_D0_PORT PORTD #define LCD_D0 4 #define LCD_D1_PORT PORTD #define LCD_D1 3 #define LCD_D2_PORT PORTD #define LCD_D2 2 #define LCD_D3_PORT PORTD #define LCD_D3 1 #define LCD_D4_PORT PORTD #define LCD_D4 0 #define LCD_D5_PORT PORTC #define LCD_D5 17 #define LCD_D6_PORT PORTC #define LCD_D6 16 #define LCD_D7_PORT PORTC #define LCD_D7 13 //====================== //函數(shù)名稱:LCDInit //函數(shù)返回:無 //參數(shù)說明:無

      //功能概要:LCD初始化。

      //====================== extern void LCDInit();1

      //====================== //函數(shù)名稱:LCDShow //函數(shù)返回:無

      //參數(shù)說明:data[32]:需要顯示的數(shù)組 //功能概要:LCD顯示數(shù)組的內(nèi)容。

      //====================== extern void LCDShow(uint_8 data[32]);#endif //防止重復(fù)定義(結(jié)尾)

      4、輔助函數(shù) /* * qzh.h * * Created on: Jun 5, 2017 * Author: administrator */

      #ifndef QZH_H_ #define QZH_H_ #include “GPIOapp.h” void changeState(int*);//改變工作狀態(tài)函數(shù) int sdmn(int);//濕度變化模擬函數(shù)

      void changeCode(int,uint_8 s[4]);//LED顯示轉(zhuǎn)碼函數(shù) #endif /* QZH_H_ */ /* * fun.c * * Created on: Jun 5, 2017 1

      * Author: administrator */ #include“qzh.h” void changeState(int *a){

      } int sdmn(int a){ } void changeCode(int a,uint_8 s[4]){

      } 1

      if(*a == 0){ } else { } *a = 0;*a = 1;return a-=5;uint_8 c[10] = {'0','1','2','3','4','5','6','7','8','9'};s[3] = c[a%10];s[2] = c[a/10];s[1] = c[a/100];s[0] = c[a/1000];

      第四章 系統(tǒng)測試

      4.1測試結(jié)果

      圖4 圖4 是開始是濕度顯示是72%,工作狀態(tài)顯示為停止。1

      圖5 圖5 是第二次采集濕度顯示為69%,工作狀態(tài)顯示為停止。1

      圖6 圖6 是第三次采集濕度顯示為66%度,已經(jīng)逼近設(shè)定值65%,此時工作狀態(tài)顯示為停止。1

      圖7 再次采集時濕度低于65%,滴灌立即開始,濕度上升至75%。1

      第五章 總結(jié)展望

      5.1總結(jié)

      通過本次課程設(shè)計,對中斷處理有了更加深入的理解。對于計時器,LED和LCD的工作原理也有了更深的認識。LCD在試驗中遇到的問題不大,主要問題在于中斷處理函數(shù)的編寫和LED顯示上,LED顯示是每次中斷顯示一個數(shù),所以要每次中斷顯示,才能使得四個值看起來是同時顯示的且沒有閃爍效果。

      其次LED的顯示是要求是字符,所以在顯示濕度是加上了轉(zhuǎn)碼函數(shù)加以轉(zhuǎn)換。這里又涉及到了參數(shù)為數(shù)組的函數(shù)的寫法,因為學(xué)過好幾種語言,其傳遞方式偶所不同所以在這里也出現(xiàn)了不少問題。

      通過此次課程設(shè)計不僅對單片機應(yīng)用有了很好的實踐經(jīng)驗,而且也幫助鞏固了以前的知識。

      5.2展望

      1、滴灌系統(tǒng)可以增加通信模塊,使得所有者可以實時監(jiān)測農(nóng)作物生長環(huán)境,也可以遠程操控進行滴灌等功能。

      2、滴灌系統(tǒng)可以增加溫度監(jiān)測,土壤酸堿性監(jiān)測,空氣CO2濃度監(jiān)測,并配套處理設(shè)備使得對農(nóng)作物的管理更加智能化。

      1

      參考文獻

      [1] 王宜懷、張書奎、王林、吳瑾著.嵌入式技術(shù)基礎(chǔ)與實踐(第3版),北京:清華大學(xué) 出版社,2011.[2] 田澤.嵌入式系統(tǒng)開發(fā)與應(yīng)用.北京:北京航天航空大學(xué)出版社,[3] 王宜懷、陳建明、蔣銀珍著.基于32位ColdFire構(gòu)建嵌入式系統(tǒng).北京:電子工業(yè)出

      版社,2006.[4] 王粉花、王志良.嵌入式系統(tǒng)與單片機實踐教程.北京:清華大學(xué)出版社,2010.32 1

      下載單片機課程設(shè)計報告[5篇]word格式文檔
      下載單片機課程設(shè)計報告[5篇].doc
      將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
      點此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進行舉報,并提供相關(guān)證據(jù),工作人員會在5個工作日內(nèi)聯(lián)系你,一經(jīng)查實,本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        單片機課程設(shè)計報告

        單片機課程設(shè)計報告題目:小直流電機調(diào)速實驗教學(xué)單位: 機 電 工 程 系專業(yè): 機械設(shè)計制造及其自動化班級: 0803班學(xué)號: 0811050342姓名: 程懷虎2011 年 11月(以下內(nèi)容用宋體,五號,單......

        單片機課程設(shè)計報告(范文)

        片 機 課 程 設(shè) 計 報學(xué)號、姓名:年級、專業(yè):培養(yǎng)層次:課程名稱:授課學(xué)時學(xué)分:考試成績:授課或主講教師簽字:單 告1 單片機最小系統(tǒng)功能說明單片機的最小系統(tǒng)是由組成單片機系統(tǒng)必......

        單片機課程設(shè)計報告

        單片機課程設(shè)計報告? 課程名稱:單片機原理及接口課程設(shè)計? 題目:基于? 學(xué)院:電氣信息學(xué)院? 專業(yè)班級:測控技術(shù)與儀器? 姓名:江讓? 學(xué)號:? 指導(dǎo)老師:劉升老師 ? 時間: C51單片機的ADC0809數(shù)模......

        單片機課程設(shè)計報告

        DS18B20測溫及按鍵控制 課 程 設(shè) 計 課程名稱 單片機基礎(chǔ)課程設(shè)計 題目名稱 18B20測溫及按鍵控制 學(xué)生學(xué)院 **** 專業(yè)班級 **** 班號 **** 學(xué)生組員 ****** 指導(dǎo)教師 *****......

        單片機課程設(shè)計

        單片機課程設(shè)計 課題: 簡易電子琴設(shè)計 學(xué)院:電氣與信息工程學(xué)院 專業(yè):電子信息工程 姓名:李琳琳 學(xué)號:093411106 指導(dǎo)老師:田巍 河南城建學(xué)院 2014年01 月01 日......

        單片機課程設(shè)計

        課 程 設(shè) 計 設(shè)計題目: 基于單片機的8*8點陣顯示數(shù)字設(shè)計 學(xué)生姓名: 指導(dǎo)教師: 二級學(xué)院: 專業(yè): 班級: 學(xué)號: 目 錄 摘要??????????????????????????......

        單片機課程設(shè)計

        基于單片機的火災(zāi)智能報警控制系統(tǒng)的設(shè)計前言在各種災(zāi)害中,火災(zāi)是最經(jīng)常、最普通地威脅公眾安全和社會發(fā)展的災(zāi)害之一。人類能夠?qū)疬M行利用和控制,是文明進步的一個重要標志......

        單片機課程設(shè)計

        《單片機技術(shù)》課程設(shè)計說明書 音樂盒 院、部:電氣與信息工程學(xué)院 學(xué)生姓名:劉亮 指導(dǎo)教師:凌云職稱講師 專業(yè):電子信息工程 班級:電子1302班 學(xué)號:1330340220 完成時間: 2016年1......