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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  物聯網工程學院</b></p><p><b>  課程設計報告</b></p><p>  課程名稱: 單片機原理及應用 </p><p>  設計題目:基于單片機的步進電機控制器的設計 班

2、級: 自動化****班 </p><p>  姓 名: *** 學 號: 0704**** </p><p>  指導教師: *** 評 分: </p><p>  2013年 6 月 29 日</p><

3、;p><b>  一,步進電機概述</b></p><p>  步進電動機又稱脈沖電動機或階躍電動機,國外一般稱為Steppingmotor、 Pulse motor或Stepper servo,其應用發展已有約80年的歷史。步進電機是一種把電脈沖信號變成直線位移或角位移的控制電機,其位移速度與脈沖頻率成正比,位移量與脈沖數成正比。步進電機在結構上也是由定子和轉子組成,可以對旋轉角度和

4、轉動速度進行高精度控制。當電流流過定子繞組時,定子繞組產生一矢量磁場,該矢量場會帶動轉子旋轉一角度,使得轉子的一對磁極磁場方向與定子的磁場方向一著該磁場旋轉一個角度。因此,控制電機轉子旋轉實際上就是以一定的規律控制定子繞組的電流來產生旋轉的磁場。每來一個脈沖電壓,轉子就旋轉一個步距角,稱為一步。根據電壓脈沖的分配方式,步進電機各相繞組的電流輪流切換,在供給連續脈沖時,就能一步一步地連續轉動,從而使電機旋轉。步進電機每轉一周的步數相同,在

5、不丟步的情況下運行,其步距誤差不會長期積累。在非超載的情況下,電機的轉速、停止的位置只取決于脈沖信號的頻率和脈沖數,而不受負載變化的影響,同時步進電機只有周期性的誤差而無累積誤差,精度高,步進電動機可以在寬廣的頻率范圍內通過改變脈沖頻率</p><p>  正是由于步進電機具有突出的優點,廣泛應用在各種自動化控制系統中。隨著微電子和計算機技術的發展,步進電機的需求量與日俱增,在各個國民經濟領域都有應用。比如在數控

6、系統中就得到廣泛的應用。目前世界各國都在大力發展數控技術,我國的數控系統也取得了很大的發展,我國已經能夠自行研制開發適合我國數控機床發展需要的各種檔次的數控系統。近年來由于微型計算機方面的快速發展,使步進電機的控制發生了革命性變革。優點明顯的步進電機被廣泛應用在電子計算機的許多外圍設備中,例如打印機,紙帶輸送機構,卡片閱讀機,主動輪驅動機構和存儲器存取機構等,步進電機也在軍用儀器,通信和雷達設備,攝影系統,光電組合裝置,閥門控制,數控機

7、床,電子鐘,醫療設備及自動繪圖儀,數字控制系統,工具機控制,程序控制系統以及許多航天工業的系統中得到應用。因而,對于步進電機控制的研究也就顯得尤為重要了。</p><p><b>  二,設計目的</b></p><p>  通過具體小型測試系統設計,實踐單片機系統設計及調試的全過程,以加深對單片機內部結構、功能和指令系統的理解,并進一步學習單片機開發系統的應用及一些

8、外圍芯片的接口和編程方法,初步掌握單片機系統的硬、軟件設計技術及調試技巧。</p><p><b>  三,設計要求</b></p><p>  1)電機轉速可以平穩控制</p><p>  2)通過鍵盤和顯示器可以設置電機的轉速</p><p>  3)顯示電機的速度趨勢</p><p><

9、;b>  四,儀器設備</b></p><p>  1、STC89C52RC單片機芯片 一片</p><p>  2、ULN2003驅動芯片 一片</p><p>  3、MT03641BR八位共陽數碼管芯片 一片</p><p>  4、8550PNP

10、 四個</p><p>  5、不同阻值電阻 若干</p><p>  6、30pF電容 兩個</p><p>  7、12M晶振 一個</p><p> 

11、 8、按鍵 四個</p><p>  9、28BYJ-48電機 一個</p><p>  10、+5V電源 一個</p><p>  五,硬件線路圖及主要芯片說明</p><p>  28BYJ-4

12、8四相八拍步進電機</p><p><b>  主要技術參數</b></p><p>  相數:四相 電壓:5VDC</p><p>  電流:92mA 電阻:130Ω</p><p>  步距角:5.625°

13、 減速比:1/64</p><p>  空載牽出頻率:800pps</p><p>  空載牽入頻率:500pps</p><p>  牽入轉矩:≥78.4mN.m</p><p>  接線指示:A(橙)、B(黃)、C(藍)、D(灰)、E(紅,中點接+5V)</p><p><b> 

14、 28BYJ-48圖</b></p><p><b>  四相八拍相序表</b></p><p>  如果需要電機正轉,只需要從A-AB-B-BC-C-CD-D-DA依次通電即可,反轉,則需要反過來依次通電。</p><p><b>  ULN2003</b></p><p>  ULN

15、2003是大電流驅動陣列,多用于單片機、智能儀表、PLC、數字量輸出卡等控制電路中??芍苯域寗永^電器等負載。輸入5VTTL電平,輸出可達500mA/50V。ULN2003是高耐壓、大電流達林頓陳列,由七個硅NPN達林頓管組成。 該電路的特點如下: ULN2003的每一對達林頓都串聯一個2.7K的基極電阻,在5V的工作電壓下它能與TTL和CMOS電路 直接相連,可以直接處理原先需要標準邏輯緩沖器來處理的數據。ULN2003 是高壓大電流達

16、林頓晶體管陣列系列產品,具有電流增益高、工作電壓高、溫度范圍寬、帶負載能力強等特點,適應于各類要求高速大功率驅動的系統。 </p><p>  引腳1:CPU脈沖輸入端,端口對應一個信號輸出端。</p><p>  引腳2:CPU脈沖輸入端。   </p><p>  引腳3:CPU脈沖輸入端。   </p><p>  引腳4:CPU脈沖輸

17、入端。   </p><p>  引腳5:CPU脈沖輸入端。   </p><p>  引腳6:CPU脈沖輸入端。   </p><p>  引腳7:CPU脈沖輸入端。   </p><p>  引腳8:接地。   </p><p>  引腳9:該腳是內部7個續流二極管負極的公共端,各二極管的正極分別接各達林頓管的集電

18、極。用于感性負載時,該腳接負載電源正極,實現續流作用。如果該腳接地,實際上就是達林頓管的集電極對地接通。   </p><p>  引腳10:脈沖信號輸出端,對應7腳信號輸入端。 </p><p>  引腳11:脈沖信號輸出端,對應6腳信號輸入端。   </p><p>  引腳12:脈沖信號輸出端,對應5腳信號輸入端。   </p><p>

19、;  引腳13:脈沖信號輸出端,對應4腳信號輸入端。   </p><p>  引腳14:脈沖信號輸出端,對應3腳信號輸入端。   </p><p>  引腳15:脈沖信號輸出端,對應2腳信號輸入端?!?  </p><p>  引腳16:脈沖信號輸出端,對應1腳信號輸入端。</p><p>  ULN2003的輸出端可達500mA/50V.

20、 輸出端的二極管學名續流二極管,英文freewheel diode。如果ULN2003的達林頓管輸入端輸入低電平使其截止,其驅動的元件是感性元件,則電流不能突變,此時會產生一個高壓;如果沒有二極管,達林頓管會被擊穿,所以這個二極管主要起保護作用。 由于ULN2003是集電極開路輸出,為了讓這個二極管起到續流作用,必須將COM引腳(pin9)接在負載的供電電源上,只有這樣才能夠形成續流回路。</p><p>  

21、ULN2003是一個非門電路,包含7個單元,單獨每個單元驅動電流最大可達350mA,9腳可以懸空。</p><p><b>  三極管8550</b></p><p>  三極管8550是一種常用的普通三極管,它是一種低電壓、大電流、小信號的PNP型硅三極管。</p><p>  相關參數如下

22、 </p><p>  類型:開關型 極性:PNP 材料:硅</p><p>  最大集電極電流(A):0.5 A</p><p>  直流電增益:10 to 60</p><p><b>  功耗:625 mW</b></p><p>  最大集電極發

23、射電壓(VCEO):25</p><p>  頻率:150MHz </p><p>  三極管8550管腳圖</p><p>  STC89C52RC</p><p>  STC89C52RC單片機是新一代高速/低功耗/超強抗干擾的單片機,指令代碼完全兼容傳統8051單片機,12 時鐘/機器周期和 6 時鐘/機器周期可以任意選擇。</p

24、><p><b>  主要特性如下: </b></p><p>  1. 增強型 8051 單片機,6 時鐘/機器周期和 12 時鐘/機器周期可以任意選擇,指令代碼完全兼容傳統 8051. </p><p>  2. 工作電壓:5.5V~3.3V(5V 單片機)/3.8V~2.0V(3V 單片機) </p><p>  3.

25、 工作頻率范圍:0~40MHz,相當于普通 8051 的 0~80MHz,實際工 作頻率可達 48MHz </p><p>  4. 用戶應用程序空間為 8K 字節 </p><p>  5. 片上集成 512 字節 RAM </p><p>  6. 通用 I/O 口(32 個)復位后為: , P1/P2/P3/P4 是準雙向口/弱上拉, P0 口是漏極開路輸出,

26、作為總線擴展用時,不用加上拉電阻,作為 I/O 口用時,需加上拉電阻。 </p><p>  7. ISP(在系統可編程)/IAP(在應用可編程),無需專用編程器,無需專用仿真器,可通過串口(RxD/P3.0,TxD/P3.1)直接下載用戶程 序,數秒即可完成一片</p><p>  8. 具有 EEPROM 功能 </p><p>  9. 具有看門狗功能 <

27、;/p><p>  10. 共 3 個 16 位定時器/計數器。即定時器 T0、T1、T2</p><p>  11. 外部中斷 4 路,下降沿中斷或低電平觸發電路,Power Down 模式可由外部中斷低電平觸發中斷方式喚醒 </p><p>  12. 通用異步串行口(UART),還可用定時器軟件實現多個 UART </p><p>  13

28、. 工作溫度范圍:-40~+85℃(工業級)/0~75℃(商業級) </p><p>  14. PDIP 封裝 </p><p>  STC89C52RC 引腳功能說明</p><p>  VCC(40 引腳):電源電壓 </p><p>  VS S(20 引腳):接地 </p><p>  MT03641BR八位

29、共陽數碼管</p><p><b>  主要參數</b></p><p><b>  工作電壓:2V</b></p><p>  工作電流:5—10mA</p><p><b>  數碼管顯示原理</b></p><p>  數碼管動態顯示介面是單片機中

30、應用最為廣泛的一種顯示方式之一,動態驅動是將所有數碼管的8個顯示筆劃"a,b,c,d,e,f,g,dp "的同名端連在一起,另外為每個數碼管的公共極COM增加位元選通控制電路,位元選通由各自獨立的I/O線控制,當單片機輸出字形碼時,所有數碼管都接收到相同的字形碼,但究竟是那個數碼管會顯示出字形,取決于單片機對位元選通COM端電路的控制,所以我們只要將需要顯示的數碼管的選通控制打開,該位元就顯示出字形,沒有選通的數碼管

31、就不會亮。透過分時輪流控制各個LED數碼管的COM端,就使各個數碼管輪流受控顯示,這就是動態驅動。在輪流顯示過程中,每位元數碼管的點亮時間為1~2ms,由于人的視覺暫留現象及發光二極體的余輝效應,盡管實際上各位數碼管并非同時點亮,但只要掃描的速度足夠快,給人的印象就是一組穩定的顯示資料,不會有閃爍感,動態顯示的效果和靜態顯示是一樣的,能夠節省大量的I/O口,而且功耗更低。</p><p><b>  段

32、碼表如下:</b></p><p>  根據表中所給的段碼,只需要送入相應的數碼管即可。</p><p><b>  數碼管內部結構</b></p><p>  硬件線路圖(見附圖)</p><p><b>  六,系統工作原理</b></p><p>  本程序

33、包括按鍵處理程序、顯示處理程序、中斷處理程序、數據處理程序四個主要部分</p><p><b>  按鍵處理程序</b></p><p>  按鍵處理安排在主程序當中,使其處于不斷檢測狀態,當有按鍵按下能夠及時對其進行相應的處理。同時,對于按鍵還應該進行消抖處理,避免系統誤動作。其主要程序如下:</p><p>  if(k1==0){dela

34、y(5); //延時消抖</p><p>  if(k1==0){TR0=~TR0;k++;}//啟動/停止</p><p>  }while(!k1); // 等待按鍵釋放</p><p>  if(k2==0){delay(5); //延時消抖</p><p>  if(k2==0)time=time-150;} // 加速</

35、p><p>  while(!k2); // 等待按鍵釋放</p><p>  if(k3==0){delay(5); //延時消抖</p><p>  if(k3==0)time=time+150;}//減速</p><p>  while(!k3);// 等待按鍵釋放</p><p>  if(k4==0){d

36、elay(5); //延時消抖</p><p>  if(k4==0)f++;} // 正/反轉</p><p>  while(!k4);// 等待按鍵釋放</p><p><b>  中斷處理程序</b></p><p>  中斷程序中安排對P1口賦值及對定時器重新裝入初值,每次進入中斷程序時,先判斷是否執行

37、反轉,如是,則送反轉編碼,否則,送正轉編碼。其主要程序如下:</p><p>  void timer0()interrupt 1</p><p><b>  {</b></p><p>  if(f%2){P1=FF[j++];if(j==8)j=0;} // f為奇數時代表反轉,則送反轉編碼到P1口</p><p>

38、;  else {P1=ZF[j++];if(j==8)j=0;} // 否則送正轉編碼到P1口</p><p>  TH0=(65536-time)/256;</p><p>  TL0=(65536-time)%256;//重新裝初值</p><p><b>  }</b></p><p><b>

39、  顯示處理程序</b></p><p>  顯示程序則通過對相應數碼管的通斷,然后送段碼。以這種方式來控制其動態顯示,同時需要主要每個數碼管都應該延時亮一段時間。并且要對其消隱。以獲得較好的顯示效果。其主要程序如下:</p><p>  void display(uchar a,uchar b,uchar c,uchar d)</p><p><

40、b>  {</b></p><p><b>  if(f%2)</b></p><p>  {P2=0xfe; </p><p>  P0=0xbf; //f為奇數時代表反轉,則第一個數碼管顯示“-”,否則不顯示 </p><p>  delay(1); </p

41、><p>  P0=0xff;} //消隱</p><p>  P2=0xfd; </p><p>  P0=SM[a]; //顯示十位</p><p>  delay(1); </p><p>  P0=0xff; //消隱</p><p>  P2=0xfb; <

42、/p><p>  P0=SM[b]&0x7f;//顯示個位(帶小數點)</p><p>  delay(1); </p><p>  P0=0xff; //消隱</p><p><b>  P2=0xf7;</b></p><p>  P0=SM[c]; //顯示小數點后第一位小

43、數</p><p><b>  delay(1);</b></p><p>  P0=0xff;//消隱</p><p><b>  P2=0xef;</b></p><p>  P0=SM[d]; //顯示小數點后第二位小數</p><p><b>  dela

44、y(1);</b></p><p>  P0=0xff; //消隱</p><p><b>  }</b></p><p><b>  數據處理程序</b></p><p>  通過對數據進行處理來獲得電機的轉速,可以先計算出1ms時電機的速度,然后通過改變時間間隔來計算電機的轉速。

45、其主要程序如下:</p><p>  void dispose()</p><p><b>  {</b></p><p>  temp1=14648/time;</p><p>  h=temp1/10; //十位</p><p>  w=temp1%10; //個位</p>&

46、lt;p>  temp2=14648%time;</p><p>  p=temp2/1000;// 小數點后第一位小數</p><p>  q=temp2%1000*10/1000;//小數點后第二位小數</p><p><b>  }</b></p><p>  根據以上四個主要部分來把整個系統劃分成相應

47、模塊,有利于提高系統的抗干擾能力。能較好的保證系統運行的可靠。</p><p><b>  七,程序清單</b></p><p>  #include<reg52.h> //頭文件</p><p>  #define uint unsigned int //宏定義</p><p>  #define

48、uchar unsigned char //宏定義</p><p>  uchar code ZF[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};</p><p><b>  //正轉編碼表</b></p><p>  uchar code FF[8]={0x09,0x08,0x0c,0x04,

49、0x06,0x02,0x03,0x01};</p><p><b>  //反轉編碼表</b></p><p>  uchar code SM[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};</p><p><b>  //數碼表</b></p>

50、;<p>  sbit k1=P3^2;//定義K1為啟動/停止按鍵</p><p>  sbit k2=P3^3;//定義K2為加速按鍵</p><p>  sbit k3=P3^4; //定義K3為減速按鍵</p><p>  sbit k4=P3^5; //定義K4為正/反轉按鍵</p><p>  uchar j

51、=0;</p><p>  uint time=12000;//time為每兩拍之間的間隔時間</p><p>  uint temp2;</p><p>  uchar temp1,h,w,p,q,f;</p><p>  /*1ms延時函數(12M晶振下)*/</p><p>  void delay(uchar

52、 z)</p><p><b>  { </b></p><p>  uchar s,v;</p><p>  for(s=0;s<z;s++)</p><p>  for(v=0;v<125;v++); //一個for循環8個機器周期(125*8*1us=1ms)</p><p>

53、;<b>  }</b></p><p><b>  /*顯示函數*/</b></p><p>  void display(uchar a,uchar b,uchar c,uchar d)</p><p><b>  {</b></p><p><b>  if(f

54、%2)</b></p><p>  {P2=0xfe; </p><p><b>  P0=0xbf;</b></p><p>  //f為奇數時代表反轉,則第一個數碼管顯示“-”,否則不顯示</p><p>  delay(1); </p><p>

55、  P0=0xff;} //消隱</p><p>  P2=0xfd; </p><p>  P0=SM[a]; //顯示十位</p><p>  delay(1); </p><p>  P0=0xff; //消隱</p><p>  P2=0xfb; </p><p&g

56、t;  P0=SM[b]&0x7f;//顯示個位(帶小數點)</p><p>  delay(1); </p><p>  P0=0xff; //消隱</p><p><b>  P2=0xf7;</b></p><p>  P0=SM[c]; //顯示小數點后第一位小數</p>&l

57、t;p><b>  delay(1);</b></p><p>  P0=0xff;//消隱</p><p><b>  P2=0xef;</b></p><p>  P0=SM[d]; //顯示小數點后第二位小數</p><p><b>  delay(1);</b>

58、</p><p>  P0=0xff; //消隱</p><p><b>  }</b></p><p>  /*數值處理函數*/</p><p>  void dispose()</p><p><b>  {</b></p><p>  tem

59、p1=14648/time;</p><p>  h=temp1/10; //十位</p><p>  w=temp1%10; //個位</p><p>  temp2=14648%time;</p><p>  p=temp2/1000;// 小數點后第一位小數</p><p>  q=temp2%1000*10

60、/1000;//小數點后第二位小數</p><p><b>  }</b></p><p><b>  /*主函數*/</b></p><p>  void main()</p><p><b>  {</b></p><p><b>  

61、uchar k; </b></p><p>  TMOD=0x01;//定義定時器0工作方式1</p><p>  EA=1; // 開總中斷</p><p>  ET0=1; //開定時器0中斷</p><p>  TH0=(65536-time)/256;</p><p>  TL0=(6553

62、6-time)%256; //裝定時器初值</p><p>  TR0=1;//開定時器0</p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  if(k1==0){delay(5); //延時消抖</p><p

63、>  if(k1==0){TR0=~TR0;k++;}//啟動/停止</p><p>  }while(!k1); // 等待按鍵釋放</p><p>  if(k2==0){delay(5); //延時消抖</p><p>  if(k2==0)time=time-150;} // 加速</p><p>  while(!k2);

64、// 等待按鍵釋放</p><p>  if(k3==0){delay(5); //延時消抖</p><p>  if(k3==0)time=time+150;}//減速</p><p>  while(!k3);// 等待按鍵釋放</p><p>  if(k4==0){delay(5); //延時消抖</p>&l

65、t;p>  if(k4==0)f++;} // 正/反轉</p><p>  while(!k4);// 等待按鍵釋放</p><p>  dispose();</p><p><b>  if(k%2)</b></p><p>  display(0,0,0,0); //停止時顯示00.00</p&g

66、t;<p><b>  else</b></p><p>  display(h,w,p,q);//正常運轉時調用顯示函數</p><p><b>  }</b></p><p><b>  }</b></p><p>  /*定時器0中斷處理函數*/</p

67、><p>  void timer0()interrupt 1</p><p><b>  {</b></p><p>  if(f%2){if(j==8)j=0;P1=FF[j++];} // f為奇數時代表反轉,則送反轉編碼到P1口</p><p>  else {if(j==8)j=0;P1=ZF[j++];} /

68、/ 否則送正轉編碼到P1口</p><p>  TH0=(65536-time)/256;</p><p>  TL0=(65536-time)%256;//重新裝初值</p><p><b>  }</b></p><p><b>  八,設計體會</b></p><p&

69、gt;  步進電機的控制可以用硬件,也可以用軟件通過單片機實現。本系統采用了軟件方法,即用單片機產生控制脈沖來控制步進電機的運行狀態,這種方比采用硬件方法,即采用脈沖分配器芯片進行通用換相控制,電路更加簡單,成本更低。</p><p>  在做本次設計的過程中,我感觸最深的當屬查閱大量的設計了。為了讓自己的設計更加完善,查閱這方面的設計資料是十分必要的。在這次課程設計中,我們運用到了以前所學的專業課知識,如:C語

70、言、模擬和數字電路知識等。雖然過去從未獨立應用過它們,但在學習的過程中帶著問題去學我發現效率很高,這是我做這次課程設計的又一收獲。</p><p>  設計結束了,但是從中得到的知識會讓我受益終身。發現、提出、分析、解決問題和實踐能力的提高都會受益于我在以后的學習、工作和生活中。此次設計更鍛煉了我的毅力,我覺得做任何事情要善始善終,不要中途放棄,只要自己認真的去對待,再難的問題也能找到辦法解決。</p>

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論