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

下載本文檔

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

文檔簡介

1、<p><b>  目錄</b></p><p>  設(shè)計目的.............................................3</p><p>  設(shè)計要求.............................................3</p><p>  儀器設(shè)備...............

2、..............................3</p><p>  四、硬件線路圖及主要芯片說明.............................3</p><p>  系統(tǒng)所使用的開發(fā)板上的區(qū)域.................................3</p><p>  系統(tǒng)硬件電路圖......................

3、.....................3</p><p>  系統(tǒng)所用主要芯片說明......................................4</p><p>  3.1 STC89C52RC芯片介紹...................................4</p><p>  3.2 ULN2003A芯片介紹..........

4、...........................4</p><p>  3.3 LCD1602液晶介紹......................................4</p><p>  系統(tǒng)工作原理.........................................5</p><p>  步進(jìn)電機(jī)介紹...............

5、..............................5</p><p>  2.控制原理基本框圖..........................................5</p><p>  程序框圖..............................................6</p><p>  程序清單............

6、..................................7</p><p>  設(shè)計體會.............................................12</p><p>  參考文獻(xiàn).............................................12</p><p><b>  一、設(shè)計目

7、的</b></p><p>  通過具體小型測試系統(tǒng)設(shè)計,實踐單片機(jī)系統(tǒng)設(shè)計及調(diào)試的全過程,以加深對單片機(jī)內(nèi)部結(jié)構(gòu)、功能和指令系統(tǒng)的理解,并進(jìn)一步學(xué)習(xí)單片機(jī)開發(fā)系統(tǒng)的應(yīng)用及一些外圍芯片的接口和編程方法,初步掌握單片機(jī)系統(tǒng)的硬、軟件設(shè)計技術(shù)及調(diào)試技巧。</p><p>  了解步進(jìn)電機(jī)的構(gòu)造、驅(qū)動、工作原理以及步進(jìn)電機(jī)的一些指標(biāo)術(shù)語,掌握步進(jìn)電機(jī)的轉(zhuǎn)動控制方式和調(diào)速方法。<

8、/p><p>  加深對單片機(jī)開發(fā)試驗儀各部分功能的了解與使用,方便對以后的設(shè)計進(jìn)行開發(fā)、編程與調(diào)試。</p><p>  熟練C語言以及函數(shù)、中斷的使用。</p><p><b>  二、設(shè)計要求</b></p><p>  1)電機(jī)轉(zhuǎn)速可以平穩(wěn)控制</p><p>  2)通過鍵盤可以選擇電機(jī)的轉(zhuǎn)

9、動方式</p><p>  3)通過鍵盤可以設(shè)置電機(jī)的轉(zhuǎn)速</p><p>  4)顯示器可以顯示步進(jìn)電機(jī)的運行狀況 </p><p><b>  主要儀器設(shè)備</b></p><p>  硬件線路圖及主要芯片說明</p><p>  1.系統(tǒng)所使用的開發(fā)板上的

10、區(qū)域</p><p>  步進(jìn)電機(jī)實驗區(qū)上面有一個四相步進(jìn)電機(jī)及其驅(qū)動芯片,用戶可以在上面進(jìn)行步進(jìn)電機(jī)控制的相關(guān)實驗。步進(jìn)電機(jī)將電脈沖信號轉(zhuǎn)變?yōu)榻俏灰苹蚓€位移實現(xiàn)電機(jī)轉(zhuǎn)動。</p><p>  鍵盤實驗區(qū)的按鍵控制步進(jìn)電機(jī)的啟動/停止,正/反轉(zhuǎn),加/減速,本設(shè)計采用單鍵控制啟停、單鍵控制正反轉(zhuǎn)以及兩個按鍵分別控制加減速。</p><p>  用STC89C52RC單

11、片機(jī)實現(xiàn)控制整個步進(jìn)電機(jī)系統(tǒng)的啟動/停止,正/反轉(zhuǎn),加/減速以及驅(qū)動LCD1602顯示步進(jìn)電機(jī)的運行狀況。</p><p><b>  2.系統(tǒng)硬件電路圖</b></p><p>  步進(jìn)電機(jī)運動系統(tǒng)的硬件電路圖(用Proteus繪制)如下圖所示:</p><p>  3.系統(tǒng)所用主要芯片說明</p><p>  3.1

12、 STC89C52RC芯片介紹</p><p>  STC89C52是STC公司生產(chǎn)的一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統(tǒng)可編程Flash存儲器。STC89C52使用經(jīng)典的MCS-51內(nèi)核,但做了很多的改進(jìn)使得芯片具有傳統(tǒng)51單片機(jī)不具備的功能。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash,使得STC89C52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。 具有以下標(biāo)

13、準(zhǔn)功能: 8k字節(jié)Flash,512字節(jié)RAM, 32 位I/O 口線,看門狗定時器,內(nèi)置4KB EEPROM,MAX810復(fù)位電路,3個16 位定時器/計數(shù)器,4個外部中斷,一個7向量4級中斷結(jié)構(gòu)(兼容傳統(tǒng)51的5向量2級中斷結(jié)構(gòu)),全雙工串行口。另外 STC89C52 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU 停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存

14、,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個中斷或硬件復(fù)位為止。最高運作頻率35MHz,6T/12T可選。</p><p>  3.2 ULN2003A芯片介紹</p><p>  本設(shè)計采用ULN2003A作為步進(jìn)電機(jī)的驅(qū)動芯片,ULN2003A電路具有以下特點: </p><p>  ● 電流增益高(大于1000)</p><p>

15、  ● 帶負(fù)載能力強(qiáng)(輸出電流大于500mA)</p><p>  ● 溫度范圍寬(-40℃—85℃)</p><p>  ● 工作電壓高(大于50V)</p><p>  3.3 LCD1602液晶介紹</p><p>  1602液晶也叫1602字符型液晶,它是一種專門用來顯示字母、數(shù)字、符號等的點陣型液晶模塊。它由若干個5X7或者5X1

16、1等點陣字符位組成,每個點陣字符位都可以顯示一個字符,每位之間有一個點距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用,正因為如此所以它不能很好地顯示圖形。   1602LCD是指顯示的內(nèi)容為16X2,即可以顯示兩行,每行16個字符液晶模塊(顯示字符和數(shù)字)。   </p><p><b>  五、系統(tǒng)工作原理</b></p><p><b> 

17、 1.步進(jìn)電機(jī)介紹</b></p><p>  步進(jìn)電機(jī)是將電脈沖信號轉(zhuǎn)變?yōu)榻俏灰苹蚓€位移的開環(huán)控制元步進(jìn)電機(jī)件。在非超載的情況下,電機(jī)的轉(zhuǎn)速、停止的位置只取決于脈沖信號的頻率和脈沖數(shù),而不受負(fù)載變化的影響,當(dāng)步進(jìn)驅(qū)動器接收到一個脈沖信號,它就驅(qū)動步進(jìn)電機(jī)按設(shè)定的方向轉(zhuǎn)動一個固定的角度,稱為“步距角”,它的旋轉(zhuǎn)是以固定的角度一步一步運行的??梢酝ㄟ^控制脈沖個數(shù)來控制角位移量,從而達(dá)到準(zhǔn)確定位的目的;同

18、時可以通過控制脈沖頻率來控制電機(jī)轉(zhuǎn)動的速度和加速度,從而達(dá)到調(diào)速的目的。</p><p>  步進(jìn)電機(jī)是一種感應(yīng)電機(jī),它的工作原理是利用電子電路將直流電變成分時供電的多相時序控制電流,用這種電流為步進(jìn)電機(jī)供電,步進(jìn)電機(jī)才能正常工作,驅(qū)動器就是為步進(jìn)電機(jī)分時供電的多相時序控制器。雖然步進(jìn)電機(jī)已被廣泛地應(yīng)用,但步進(jìn)電機(jī)并不能像普通的直流電機(jī),交流電機(jī)在常規(guī)下使用。它必須由雙環(huán)形脈沖信號、功率驅(qū)動電路等組成控制系統(tǒng)方可

19、使用。</p><p>  四相步進(jìn)電機(jī)可以在不同的通電方式下運行,常見的通電方式有單(單相繞組通電)四拍(A-B-C-D-A...),雙(雙相繞組通電)四拍(AB-BC-CD-DA-AB-...),八拍(A-AB-B-BC-C-CD-D-DA-A...);當(dāng)通電時序相反時,轉(zhuǎn)向相反。本設(shè)計采用的通電方式是八拍。</p><p>  2.控制原理基本框圖</p><p&

20、gt;  步進(jìn)電機(jī)控制原理的基本框圖如下:</p><p>  其中P3.2、P3.3為外部中斷,本設(shè)計采用下降沿觸發(fā)方式,通過改變用m和n的值來控制電機(jī)的啟動/停止,正/反轉(zhuǎn);P3.4、P3.5為定時/計數(shù)器中斷,本設(shè)計采用計數(shù)方式,并工作于方式2,將TH0、TL0、TH1、TL1都設(shè)為0xff,這樣和外部中斷是一樣的功能,通過改變脈沖之間的延遲時間T來控制電機(jī)的加/減速;P0口用以控制液晶指令與數(shù)據(jù)的傳輸,P

21、2.5、P2.6、P2.7連接液晶的三個控制接口從而實現(xiàn)對液晶的控制。</p><p><b>  程序框圖</b></p><p><b>  開始</b></p><p><b>  系統(tǒng)以及LCD</b></p><p><b>  初始化</b>&

22、lt;/p><p><b>  N </b></p><p><b>  m==0</b></p><p><b>  Y </b></p><p>  Yn==0 N</p><p><b>  正轉(zhuǎn) 反轉(zhuǎn)</b>

23、;</p><p><b>  T0中斷T1中斷</b></p><p><b>  YY</b></p><p><b>  減速加速</b></p><p><b>  結(jié)束</b></p><p><b> 

24、 程序清單</b></p><p>  #include<reg51.h></p><p>  #include<intrins.h></p><p>  #define uchar unsigned char</p><p>  #define uint unsigned int</p>&

25、lt;p>  sbit RS=P2^6;</p><p>  sbit RW=P2^5;</p><p>  sbit EN=P2^7;</p><p>  void DelayMS(uint ms)</p><p><b>  {</b></p><p><b>  uchar

26、i;</b></p><p>  while(ms--) for(i=0;i<120;i++);</p><p><b>  }</b></p><p>  uchar Busy_Check()</p><p><b>  {</b></p><p>  u

27、char LCD_Status;</p><p><b>  RS=0;</b></p><p><b>  RW=1;</b></p><p><b>  EN=1;</b></p><p>  DelayMS(1);</p><p&g

28、t;  LCD_Status=P0;</p><p><b>  EN=0;</b></p><p>  return LCD_Status;</p><p><b>  }</b></p><p>  void Write_LCD_Command(uchar cmd)</p><

29、;p><b>  {</b></p><p>  while((Busy_Check()&0x80)==0x80);</p><p><b>  RS=0;</b></p><p><b>  RW=0;</b></p><p><b>  EN=0

30、;</b></p><p>  P0=cmd;EN=1;DelayMS(1);EN=0;</p><p><b>  }</b></p><p>  void Write_LCD_Data(uchar dat)</p><p><b>  {</b></p><p&

31、gt;  while((Busy_Check()&0x80)==0x80);</p><p>  RS=1;RW=0;EN=0;P0=dat;EN=1;DelayMS(1);EN=0;</p><p><b>  }</b></p><p>  void Initialize_LCD()</p><p><

32、;b>  {</b></p><p>  Write_LCD_Command(0x38);DelayMS(1);</p><p>  Write_LCD_Command(0x01);DelayMS(1);</p><p>  Write_LCD_Command(0x06);DelayMS(1);</p><p>  Wr

33、ite_LCD_Command(0x0c);DelayMS(1);</p><p><b>  }</b></p><p>  void ShowString(uchar x,uchar y,uchar z,uchar *str)</p><p><b>  {</b></p><p>  uch

34、ar i=0;</p><p>  if(y==0) Write_LCD_Command(0x80|x);</p><p>  if(y==1) Write_LCD_Command(0xc0|x);</p><p>  for(i=0;i<z;i++)</p><p><b>  {</b></p

35、><p>  Write_LCD_Data(str[i]);</p><p><b>  }</b></p><p><b>  }</b></p><p>  for(i=0;i<z;i++)</p><p><b>  {</b><

36、/p><p>  Write_LCD_Data(str[i]);</p><p><b>  }</b></p><p><b>  }</b></p><p>  LCD_Data(str[i]);</p><p><b>  }</b></p>

37、;<p><b>  }</b></p><p>  #include<reg51.h></p><p>  #include<string.h></p><p>  #define uchar unsigned char </p><p>  #define uint unsig

38、ned int</p><p>  void Initialize_LCD();</p><p>  void ShowString(uchar,uchar,uchar,uchar *);</p><p>  sbit K1=P3^2;</p><p>  sbit K2=P3^3;</p><p>  sbit K3

39、=P3^4;</p><p>  sbit K4=P3^5;</p><p><b>  uint Sp;</b></p><p>  float T=45;</p><p>  bit m=1,n=1;</p><p>  uchar LCD_DSP[]={"00.0 r/min&q

40、uot;};</p><p>  uchar LCD_DSP1[]={" up "}; </p><p>  uchar LCD_DSP2[]={"down"};</p><p>  uchar LCD_DSP3[]={"<<"};</p><p>  uchar LCD

41、_DSP4[]={">>"}; </p><p>  uchar code FFW[]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9}; //八拍正轉(zhuǎn)</p><p>  uchar code REV[]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1}; //八拍反轉(zhuǎn)</p&g

42、t;<p>  void delay(uint t)</p><p>  { </p><p><b>  uchar i;</b></p><p>  while(t--)</p><p>  for(i=0;i<80;i++); </

43、p><p><b>  }</b></p><p>  void motor_ffw() //正轉(zhuǎn)</p><p><b>  { </b></p><p>  uchar i,j;</p><p>  for(j=0;j<2;j++)</p><

44、;p><b>  {</b></p><p>  for(i=0;i<8;i++) </p><p><b>  {</b></p><p>  P1 = FFW[i]; </p><p>  delay(T); //調(diào)節(jié)轉(zhuǎn)速</p>

45、<p><b>  }</b></p><p>  if(m==1) break;</p><p><b>  }</b></p><p>  } </p><p>  void motor_rev()//反轉(zhuǎn)</p><p&g

46、t;<b>  { </b></p><p>  uchar i,j;</p><p>  for(j=0;j<2;j++)</p><p><b>  {</b></p><p>  for(i=0;i<8;i++) </p><

47、p><b>  { </b></p><p>  P1 = REV[i]; </p><p>  delay(T); //調(diào)節(jié)轉(zhuǎn)速</p><p><b>  }</b></p><p>  if(m==1) break;</p><p><b

48、>  }</b></p><p>  } </p><p>  void Format_speed(uchar d,uchar *a) //速度轉(zhuǎn)換為數(shù)字字符</p><p><b>  {</b></p><p>  a[0]=d+'0';</p&

49、gt;<p><b>  }</b></p><p>  void main() </p><p><b>  {</b></p><p>  TMOD=0x66;</p><p>  TH0=TL0=0xff;</p><p>  TH1=TL1=0

50、xff;</p><p>  TR0=1;</p><p><b>  TR1=1;</b></p><p><b>  IT0=1;</b></p><p><b>  IT1=1;</b></p><p><b>  IE=0x8

51、f;</b></p><p>  Initialize_LCD();</p><p><b>  while(1)</b></p><p><b>  {</b></p><p><b>  if(m==0)</b></p><p><

52、b>  {</b></p><p><b>  if(n==0)</b></p><p><b>  {</b></p><p>  ShowString(9,1,2,LCD_DSP3);</p><p>  motor_ffw();</p><p><

53、;b>  }</b></p><p><b>  else </b></p><p><b>  {</b></p><p>  ShowString(9,1,2,LCD_DSP4);</p><p>  motor_rev();</p><p><b

54、>  }</b></p><p>  Sp=(uint)(9000/T);</p><p><b>  }</b></p><p><b>  else </b></p><p><b>  {</b></p><p><b>

55、;  P1=0xf9;</b></p><p><b>  Sp=0; </b></p><p>  ShowString(9,1,2," ");</p><p><b>  }</b></p><p>  Format_speed(Sp/100, LCD_DSP)

56、;</p><p>  Format_speed(Sp%100/10, LCD_DSP+1);</p><p>  Format_speed(Sp%10, LCD_DSP+3);</p><p>  ShowString(3,0,10,LCD_DSP);</p><p><b>  }</b></p>&l

57、t;p><b>  }</b></p><p>  void EX_INT0() interrupt 0</p><p><b>  {</b></p><p><b>  m=~m;</b></p><p><b>  }</b></p&

58、gt;<p>  void Timer0() interrupt 1</p><p><b>  {</b></p><p><b>  if(T<15)</b></p><p><b>  T=T+0.2;</b></p><p>  else if(

59、T<20)</p><p><b>  T=T+0.5;</b></p><p>  else if(T<30)</p><p><b>  T=T+1;</b></p><p>  else if(T<40)</p><p><b>  T=T+

60、2;</b></p><p>  else if(T<50)</p><p><b>  T=T+3;</b></p><p>  else if(T<100)</p><p><b>  T=T+6;</b></p><p>  else if(T&

61、lt;150)</p><p><b>  T=T+18;</b></p><p>  else if(T<200)</p><p><b>  T=T+25;</b></p><p><b>  else</b></p><p><b>

62、;  T=200;</b></p><p>  ShowString(2,1,4,LCD_DSP2);</p><p>  delay(400);</p><p>  ShowString(2,1,4," ");</p><p><b>  }</b></p><

63、p>  void EX_INT1() interrupt 2</p><p><b>  {</b></p><p><b>  n=~n;</b></p><p><b>  }</b></p><p>  void Timer1() interrupt 3&l

64、t;/p><p><b>  {</b></p><p><b>  if(T>150)</b></p><p><b>  T=T-25;</b></p><p>  else if(T>100)</p><p><b>  T=T-

65、18;</b></p><p>  else if(T>50)</p><p><b>  T=T-6;</b></p><p>  else if(T>40)</p><p><b>  T=T-3;</b></p><p>  else if(T&

66、gt;30)</p><p><b>  T=T-2;</b></p><p>  else if(T>20)</p><p><b>  T=T-1;</b></p><p>  else if(T>15)</p><p><b>  T=T-0.5;

67、</b></p><p>  else if(T>11)</p><p><b>  T=T-0.2;</b></p><p><b>  else</b></p><p><b>  T=11;</b></p><p>  ShowS

68、tring(2,1,4,LCD_DSP1);</p><p>  delay(400);</p><p>  ShowString(2,1,4," ");</p><p><b>  }</b></p><p><b>  八、設(shè)計體會</b></p><

69、;p>  通過此次課程設(shè)計,首先,我更加扎實的掌握了有關(guān)單片機(jī)的控制、LCD1602液晶顯示、C語言編程等方面的知識以及步進(jìn)電機(jī)原理、控制、驅(qū)動方面的知識;其次,我進(jìn)一步懂得了如何對一個課程設(shè)計進(jìn)行整體規(guī)劃和實行。在設(shè)計過程中雖然遇到了一些問題,但經(jīng)過一次又一次的思考,一遍又一遍的檢查,終于找出了原因所在,但也暴露出了我前期在這方面的知識欠缺。實踐出真知,通過Proteus的仿真,外加開發(fā)板調(diào)試,使得設(shè)計的過程更加順暢,也使我掌握

70、的知識不再是紙上談兵。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1]徐煜明.《C51單片機(jī)及應(yīng)用系統(tǒng)設(shè)計》.電子工業(yè)出版社</p><p>  [2]彭偉.《單片機(jī)C語言程序設(shè)計實訓(xùn)100例——基于8051+Proteus仿真》.電子工業(yè)出版社</p><p>  [3]郭天祥.《51單片機(jī)C

溫馨提示

  • 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

提交評論