2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  課 程 設(shè) 計 報 告</p><p>  一、課程設(shè)計的性質(zhì)和目的</p><p>  通過課程設(shè)計,進(jìn)行硬軟件設(shè)計的方法和技能訓(xùn)練,鞏固在課堂上學(xué)到的有關(guān)硬件電路設(shè)計和相應(yīng)程序設(shè)計的基本知識和基本方法,通過具體課題的訓(xùn)練,達(dá)到能獨立閱讀、查閱資料、軟硬件設(shè)計和調(diào)試完善特定功能的目的。</p><p><b>  二、課程設(shè)計的要求

2、</b></p><p>  1、遵循硬件設(shè)計模塊化。</p><p>  2、要求通過自制PCB板、或萬能板、或面包板設(shè)計實物。</p><p>  3、程序設(shè)計結(jié)構(gòu)化。</p><p>  4、要求程序結(jié)構(gòu)合理,程序簡明易懂,有必要的注釋。</p><p>  三、主要儀器設(shè)備及軟件</p>

3、<p>  PC機、Keil軟件、、ALTIUM DESINGERS09(PROTEL99)、 Proteus繪圖軟件及仿真等。</p><p>  四、課程設(shè)計題目及要求 </p><p>  見具體課題(有課題老師與選題學(xué)生共同商定)</p><p>  地點: 信息工程學(xué)院實驗室(有教師協(xié)調(diào)安排)</p><p&g

4、t;  元器件領(lǐng)用:由指導(dǎo)教師簽字在行政樓301領(lǐng)取</p><p>  時間安排: 每天集中半天的輔導(dǎo)(具體師生協(xié)商安排)</p><p>  五、課題分析及設(shè)計思路</p><p><b>  硬軟件設(shè)計思路</b></p><p>  基于單片機的步進(jìn)電機控制,可以通過四個按鍵分別實現(xiàn)開始/停止,正傳/反轉(zhuǎn),全速

5、前進(jìn)和單步前進(jìn)。</p><p>  通過外部中斷來控制開始/停止按鍵可實時響應(yīng)按鍵的輸入。由兩個LED分別指示程序的運行狀態(tài),可以方便進(jìn)行操作。</p><p><b>  硬件設(shè)計框圖</b></p><p>  總體硬件電路圖如下所示:</p><p>  硬件設(shè)計電路圖(按模塊設(shè)計)</p><

6、;p><b>  1.單片機最小系統(tǒng)</b></p><p>  AT89C51為8 位通用微處理器,主要管腳有:XTAL1(19 腳)和XTAL2(18 腳)為振蕩器輸入輸出端口,外接12MHz 晶振。RST/Vpd(9 腳)為復(fù)位輸入端口,外接電阻電容組成的復(fù)位電路。VCC(40 腳)和VSS(20 腳)為供電端口,分別接+5V電源的正負(fù)端。P0~P3 為可編程通用I/O 腳,其功

7、能用途由軟件定義。</p><p>  5l系列單片機提供以下功能:4 kB存儲器;256 BRAM;32條工/O線;2個16b定時/計數(shù)器;5個2級中斷源;1個全雙向的串行口以及時鐘電路。</p><p><b>  2.電機模塊</b></p><p>  步進(jìn)電機是將電脈沖信號轉(zhuǎn)變?yōu)榻俏灰苹蚓€位移的開環(huán)控制元步進(jìn)電機件

8、。在非超載的情況下,電機的轉(zhuǎn)速、停止的位置只取決于脈沖信號的頻率和脈沖數(shù),而不受負(fù)載變化的影響,當(dāng)步進(jìn)驅(qū)動器接收到一個脈沖信號,它就驅(qū)動步進(jìn)電機按設(shè)定的方向轉(zhuǎn)動一個固定的角度,稱為“步距角”,它的旋轉(zhuǎn)是以固定的角度一步一步運行的。制脈沖頻率來控制電機轉(zhuǎn)動的速度和加速度,從而達(dá)到調(diào)速的目的。</p><p>  步進(jìn)電動機的勵磁方式可分為全部勵磁及半步勵磁,其中全步勵磁又有1相勵磁及2相勵磁之分,而半步勵磁又稱1—

9、2相勵磁。每輸出一個脈沖信號,步進(jìn)電動機只走一步。因此,依序不斷送出脈沖信號,步進(jìn)電動機即可連續(xù)轉(zhuǎn)動。本設(shè)計選擇半步勵磁(1—2相勵磁): 1—2相勵磁法為1相與2相輪流交替導(dǎo)通。因分辨率提高,且運轉(zhuǎn)平滑,每送一勵磁信號可走9度。若以1—2相勵磁法控制步進(jìn)電動機正轉(zhuǎn),其勵磁順序如下所示(若勵磁信號反向傳送,則步進(jìn)電動機反轉(zhuǎn)):勵磁順序:A—AB—B—BC—C— CD— D— DA</p>

10、;<p>  驅(qū)動電路如下:其中:1B,2B,3B,4B分別與P10,P11.P12,P13相連接。</p><p><b>  步進(jìn)電機時序表:</b></p><p><b>  3.按鍵模塊</b></p><p>  通過四個按鍵分別實現(xiàn)對步進(jìn)電機的不同功能的實現(xiàn),電路圖如下:</p>

11、<p>  開始/停止和方向按鍵分別通過連接單片機的P3.3,P3.2,用外部中斷的方式對其處理,可快速準(zhǔn)確的相應(yīng)中斷,以實現(xiàn)對電機的控制。</p><p><b>  4.LED模塊</b></p><p>  通過兩個LED分別指示開始/停止(D1),正/反轉(zhuǎn)(D2)。電路圖如下:</p><p><b>  軟件設(shè)計思

12、路</b></p><p><b>  軟件功能規(guī)劃</b></p><p>  軟件部分整體功能由開始/停止鍵控制,只有當(dāng)開始/停止鍵按下,LED1(D1)亮?xí)r,才能控制步進(jìn)電機的轉(zhuǎn)動。D1點亮后,由LED2(D2)的亮滅來指示電機的正反轉(zhuǎn),當(dāng)D2燈亮?xí)r,電機正轉(zhuǎn),D2滅時,電機反轉(zhuǎn)。</p><p>  當(dāng)電機全速運行時,可通過

13、開始/停止鍵和方向鍵控制電機停止轉(zhuǎn)動。重新按下按鍵時,電機正常運行。</p><p><b>  軟件流程圖如下:</b></p><p>  六、程序主要代碼與分析(關(guān)鍵代碼要有注釋):</p><p>  #include <reg51.h> //51芯片管腳定義頭文件</p><p>  #inc

14、lude <intrins.h> //內(nèi)部包含延時函數(shù) _nop_();</p><p>  #define uchar unsigned char</p><p>  #define uint unsigned int</p><p>  uchar code FFW[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0

15、x09}; //正轉(zhuǎn)電機編碼</p><p>  uchar code REV[8]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01}; //反轉(zhuǎn)電機編碼</p><p>  sbit K1 = P3^0; //全速 </p><p>  sbit K2 = P3^1; //單步 </p&g

16、t;<p>  sbit K3 = P3^2; //正/反轉(zhuǎn) </p><p>  sbit K4 = P3^3; //開始/停止 </p><p>  sbit led1 = P0^0; //指示燈,表示開始/停止?fàn)顟B(tài)</p><p>  sbit led2 = P0^2; //指示燈,表示正

17、轉(zhuǎn)/反轉(zhuǎn)狀態(tài)</p><p>  int num=500; //延時函數(shù)的常量,控制步進(jìn)電機的轉(zhuǎn)速</p><p>  uchar h=0; //設(shè)置變量,控制單步運行</p><p>  uchar flag = 0; //控制運行狀態(tài),控制開始/停止 </p><p>  uchar flag1 = 0;

18、 //控制運行狀態(tài),控制正轉(zhuǎn)/反轉(zhuǎn)</p><p>  void motor_ffw(); //函數(shù)聲明</p><p>  void motor_rev(); </p><p>  void motor_ffw2();</p><p>  / /* 延時t毫秒,11.0592MHz時鐘,延時約1ms </p>

19、<p>  void delay(int t) </p><p>  { </p><p>  uint k; </p><p>  while(t--) </p><p><b>  { </b></p>

20、<p>  for(k=0; k<20; k++) </p><p><b>  {} </b></p><p><b>  } </b></p><p><b>  }</b></p><p>  / /*步進(jìn)電機正轉(zhuǎn)單步執(zhí)行 </p&

21、gt;<p>  void motor_single() </p><p><b>  { </b></p><p>  P1 = FFW[h]; //取數(shù)據(jù),單步轉(zhuǎn)45度 </p><p>  delay(num*2); //調(diào)節(jié)轉(zhuǎn)速 </p>

22、<p>  h++; //全局變量,控制單步的次數(shù)</p><p>  if(h == 8)</p><p><b>  {</b></p><p><b>  h = 0;</b></p><p><b>  } </b></p><p&g

23、t;<b>  }</b></p><p>  / /*步進(jìn)電機反轉(zhuǎn)單步執(zhí)行 </p><p>  void motor_single_cov() </p><p><b>  { </b></p><p>  P1 = REV[h]; //取數(shù)據(jù),單步轉(zhuǎn)45度

24、 </p><p>  delay(num*2); //調(diào)節(jié)轉(zhuǎn)速 </p><p><b>  h++; </b></p><p>  if(h == 8)//全局變量,控制單步的次數(shù)</p><p><b>  {</b></p><p&

25、gt;<b>  h = 0;</b></p><p><b>  } </b></p><p><b>  }</b></p><p>  / /*步進(jìn)電機正轉(zhuǎn) </p><p>  void motor_ffw()</p><p><b

26、>  { </b></p><p>  char i; </p><p>  for (i=0; ; i++) //一個周期轉(zhuǎn)45度 </p><p>  { </p><p>  P1 = FFW[i]; //取數(shù)據(jù) &l

27、t;/p><p>  if(K4 == 0 || K3 == 0) //若K1按下,則停止 </p><p><b>  {</b></p><p>  delay(5); //延時去抖動</p><p><b>  break;</b></p><p>  }

28、 //退出此循環(huán)程序 </p><p>  delay(num); //調(diào)節(jié)轉(zhuǎn)速 </p><p><b>  if(i > 7)</b></p><p>  i = 0; </p><p><b>  } </b>&

29、lt;/p><p><b>  }</b></p><p>  / /*步進(jìn)電機反轉(zhuǎn) </p><p>  void motor_rev() </p><p><b>  { </b></p><p>  char i; </p>

30、<p>  for (i=0; ; i++) //一個周期轉(zhuǎn)45度 </p><p>  { </p><p>  P1 = REV[i]; //取數(shù)據(jù) </p><p>  if(K4 == 0 || K3 == 0) //若K1按下,則停止</p><p>

31、<b>  {</b></p><p>  delay(5);//延時去抖動</p><p><b>  break;</b></p><p>  } //退出此循環(huán)程序 </p><p>  delay(num); //調(diào)節(jié)轉(zhuǎn)速

32、 </p><p><b>  if(i > 6)</b></p><p><b>  i = 0; </b></p><p><b>  } </b></p><p><b>  }</b></p><p>  //主

33、程序 </p><p>  void main(void) </p><p><b>  { </b></p><p>  EA=1; //開放總中斷 </p><p>  EX0=1; //允許使用外中斷0 </p><p>  IT0=1; //選

34、擇負(fù)跳變來觸發(fā)外中斷 </p><p>  EX1=1; //允許使用外中斷1 </p><p>  IT1=1; //選擇負(fù)跳變來觸發(fā)外中斷 </p><p>  while(1) //掃描查詢按鍵狀態(tài)</p><p><b>  { </b></p><p>  i

35、f(K1 == 0 && flag1 == 0 && flag == 1) //K1是否被按下 </p><p><b>  { </b></p><p><b>  delay(5);</b></p><p>  while(!K1); </p><p&

36、gt;  motor_rev(); //flag1 =0,步進(jìn)電機反轉(zhuǎn) </p><p>  } </p><p>  if(K1 == 0 && flag1 == 1 && flag == 1) </p><p><b>  { </b></p><p>

37、;<b>  delay(5);</b></p><p>  while(!K1); </p><p>  motor_ffw(); //flag1 =1,步進(jìn)電機正轉(zhuǎn)</p><p><b>  } </b></p><p>  if(K2 == 0 && flag1

38、 == 0 && flag == 1) </p><p><b>  { </b></p><p><b>  delay(5);</b></p><p>  while(!K2); </p><p>  motor_single_cov(); //flag1

39、 =0,電機反轉(zhuǎn)單步執(zhí)行 </p><p><b>  } </b></p><p>  if(K2 == 0 && flag1 == 1 && flag == 1) </p><p><b>  { </b></p><p><b> 

40、 delay(5);</b></p><p>  while(!K2); </p><p>  motor_single(); //flag1 =1,電機正轉(zhuǎn)單步執(zhí)行 </p><p><b>  } </b></p><p>  else </p><

41、p>  P1 = 0xf0; </p><p><b>  } </b></p><p><b>  }</b></p><p>  /******************************************************/ </p><p> 

42、 void int0() interrupt 0 //外中斷0的中斷編號為0 </p><p><b>  { </b></p><p>  led2 = ~led2;//取反led2</p><p><b>  flag1++; </b></p><p>  if(flag1 == 2

43、) //flag1表示正反狀態(tài)</p><p><b>  {</b></p><p>  flag1 = 0; //flag1 = 0為反轉(zhuǎn)</p><p><b>  }</b></p><p><b>  } </b></p><p>  v

44、oid int1() interrupt 2 //外中斷0的中斷編號為1 </p><p><b>  { </b></p><p>  led1 = ~led1;//取反led1</p><p>  flag++;//flag值為1,表示開始狀態(tài)</p><p>  if(flag == 2)//再次

45、按下,清flag = 0</p><p><b>  {</b></p><p>  flag = 0;//flag值為0,表示停止?fàn)顟B(tài)</p><p><b>  }</b></p><p><b>  } </b></p><p><b>

46、;  七、調(diào)試與分析</b></p><p>  驗正結(jié)果截圖或?qū)嵨镎掌c分析</p><p>  1.驗證結(jié)果截圖如下:</p><p><b>  2.分析:</b></p><p>  通過實際的按鍵檢測可以發(fā)現(xiàn)使用按鍵中斷的方法控制步進(jìn)電機的轉(zhuǎn)動,可以做到響應(yīng)速度快,結(jié)果準(zhǔn)確。相比較查詢方式更加的靈活

47、。而使用LED燈指示程序的運行狀態(tài),則更加的直觀。</p><p><b>  參考文獻(xiàn)</b></p><p><b>  例說51單片機</b></p><p><b>  九、心得體會</b></p><p>  通過本次課程設(shè)計,使用單片機完成了對步進(jìn)電機的綜合控制,程

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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

提交評論