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

下載本文檔

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

文檔簡介

1、<p><b>  一、設(shè)計(jì)目的</b></p><p>  通過具體小型測試系統(tǒng)設(shè)計(jì),實(shí)踐單片機(jī)系統(tǒng)設(shè)計(jì)及調(diào)試的全過程,以加深對單片機(jī)內(nèi)部結(jié)構(gòu)、功能和指令系統(tǒng)的理解,并進(jìn)一步學(xué)習(xí)單片機(jī)開發(fā)系統(tǒng)的應(yīng)用及一些外圍芯片的接口和編程方法,初步掌握單片機(jī)系統(tǒng)的硬、軟件設(shè)計(jì)技術(shù)及調(diào)試技巧。</p><p><b>  二、設(shè)計(jì)要求</b><

2、/p><p>  1)電機(jī)轉(zhuǎn)速可以平穩(wěn)控制</p><p>  2)通過鍵盤和顯示器可以設(shè)置電機(jī)的轉(zhuǎn)速</p><p>  3)顯示電機(jī)的速度趨勢</p><p><b>  三、儀器設(shè)備</b></p><p><b>  四、硬件線路圖</b></p><

3、p> ?。?)單片機(jī)最小系統(tǒng)</p><p>  上圖所示為單片機(jī)最小系統(tǒng),該系統(tǒng)通過5V直流電源供電,可上電復(fù)位和手動(dòng)復(fù)位。通過串口將程序燒寫到單片機(jī)。</p><p> ?。?)步進(jìn)電機(jī)驅(qū)動(dòng)電路</p><p>  由于步進(jìn)電機(jī)運(yùn)轉(zhuǎn)時(shí)所需電流較大,而單片機(jī)引腳提供的電流較小,所以單片機(jī)與步進(jìn)電機(jī)間需要加上驅(qū)動(dòng)芯片ULN2003A,如上圖所示,通過單片機(jī)的P

4、1口控制步進(jìn)電機(jī)的運(yùn)轉(zhuǎn)。</p><p><b> ?。?)顯示電路</b></p><p>  該系統(tǒng)用LCD12864作為顯示器,12864內(nèi)置字庫,每屏可顯示32個(gè)漢字,且編程容易,該系統(tǒng)中可用于顯示開機(jī)界面,電機(jī)轉(zhuǎn)速,速度變化趨勢等。其接口如圖所示。</p><p><b> ?。?)按鍵電路</b></p&

5、gt;<p>  由于系統(tǒng)所用按鍵較少,所以鍵盤采用獨(dú)立按鍵形式,每個(gè)按鍵都有上拉電阻,提高了按鍵的穩(wěn)定性。</p><p><b>  五、主要芯片說明</b></p><p> ?。?)STC89C52</p><p>  STC89C52是STC公司生產(chǎn)的一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統(tǒng)可編程Fla

6、sh存儲(chǔ)器。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)準(zhǔn)功能: 8k字節(jié)Flash,512字節(jié)RAM, 32 位I/O 口線,看門狗定時(shí)器,內(nèi)置4KB EEPROM,MAX810復(fù)位電路,3個(gè)16 位定時(shí)器/計(jì)數(shù)器,4個(gè)外部中斷,一個(gè)

7、7向量4級(jí)中斷結(jié)構(gòu)(兼容傳統(tǒng)51的5向量2級(jí)中斷結(jié)構(gòu)),全雙工串行口。另外 STC89C52 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU 停止工作,允許RAM、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。最高運(yùn)作頻率35MHz,6T/12T可選。</p><p> ?。?)ULN2003<

8、;/p><p>  ULN2003是高耐壓、大電流復(fù)合晶體管,由七個(gè)硅NPN 復(fù)合晶體管組成。ULN2003 的每一對達(dá)林頓都串聯(lián)一個(gè)2.7K 的基極電阻,在5V 的工作電壓下它能與TTL 和CMOS 電路直接相連,可以直接處理原先需要標(biāo)準(zhǔn)邏輯緩沖器來處理的數(shù)據(jù)。ULN2003 工作電壓高,工作電流大,灌電流可達(dá)500mA,并且能夠在關(guān)態(tài)時(shí)承受50V 的電壓,輸出還可以在高負(fù)載電流并行運(yùn)行。</p>&

9、lt;p>  ULN2003是一個(gè)非門電路,包含7個(gè)單元,單獨(dú)每個(gè)單元驅(qū)動(dòng)電流最大可達(dá)350mA,多用于單片機(jī)、智能儀表、PLC、數(shù)字量輸出卡等控制電路中??芍苯域?qū)動(dòng)繼電器等負(fù)載。</p><p><b>  六、系統(tǒng)工作原理</b></p><p>  (1)步進(jìn)電機(jī)工作原理</p><p>  步進(jìn)電機(jī)是將電脈沖信號(hào)轉(zhuǎn)變?yōu)榻俏灰苹蚓€位

10、移的開環(huán)控制元件。在非超載的情況下,電機(jī)的轉(zhuǎn)速、停止的位置只取決于脈沖信號(hào)的頻率和脈沖數(shù),而不受負(fù)載變化的影響,即給電機(jī)加一個(gè)脈沖信號(hào),電機(jī)則轉(zhuǎn)過一個(gè)步距角。這一線性關(guān)系的存在,加上步進(jìn)電機(jī)只有周期性的誤差而無累積誤差等特點(diǎn)。使得在速度、位置等控制領(lǐng)域用步進(jìn)電機(jī)來控制變的非常的簡單。 雖然步進(jìn)電機(jī)已被廣泛地應(yīng)用,但步進(jìn)電機(jī)并不能象普通的直流電機(jī),交流電機(jī)在常規(guī)下使用。它必須由雙環(huán)形脈沖信號(hào)、功率驅(qū)動(dòng)電路等組成控制系統(tǒng)方可使用。</

11、p><p>  如圖步進(jìn)電機(jī)為一四相步進(jìn)電機(jī),采用單極性直流電源供電。只要對步進(jìn)電機(jī)的各相繞組按合適的時(shí)序通電,就能使步進(jìn)電機(jī)步進(jìn)轉(zhuǎn)動(dòng)。</p><p>  開始時(shí),開關(guān)SB接通電源,SA、SC、SD斷開,B相磁極和轉(zhuǎn)子0、3號(hào)齒對 齊,同時(shí),轉(zhuǎn)子的1、4號(hào)齒就和C、D相繞組磁極產(chǎn)生錯(cuò)齒,2、5號(hào)齒就和D、A相繞組磁極產(chǎn)生錯(cuò)齒。當(dāng)開關(guān)SC接通電源,SB、SA、SD斷開時(shí),由于C相繞組的磁力線和

12、1、4號(hào)齒之間磁力線的作用,使轉(zhuǎn)子轉(zhuǎn)動(dòng),1、4號(hào)齒和C相繞組的磁極對齊。而0、3號(hào)齒和A、B相繞組產(chǎn)生錯(cuò)齒,2、5號(hào)齒就和A、D相繞組磁極產(chǎn)生錯(cuò)齒。依次類推,A、B、C、D四相繞組輪流供電,則轉(zhuǎn)子會(huì)沿著A、B、C、D方向轉(zhuǎn)動(dòng)。四相步進(jìn)電機(jī)按照通電順序的不同,可分為單四拍、雙四拍、八拍三種工作方式。單四拍與雙四拍的步距角相等,但單四拍的轉(zhuǎn)動(dòng)力矩小。八拍工作方式的步距角是單四拍與雙四拍的一半,因此,八拍工作方式既可以保持較高的轉(zhuǎn)動(dòng)力矩又可以

13、提高控制精度。</p><p> ?。?)步進(jìn)電機(jī)調(diào)速原理</p><p>  步進(jìn)電動(dòng)機(jī)是一種將電脈沖信號(hào)轉(zhuǎn)換成角位移或線位移的機(jī)電元件。步進(jìn)電動(dòng)機(jī)的輸入量是脈沖序列,輸出量則為相應(yīng)的增量位移或步進(jìn)運(yùn)動(dòng)。正常運(yùn)動(dòng)情況下,它每轉(zhuǎn)一周具有固定的步數(shù);做連續(xù)步進(jìn)運(yùn)動(dòng)時(shí),其旋轉(zhuǎn)轉(zhuǎn)速與輸入脈沖的頻率保持嚴(yán)格的對應(yīng)關(guān)系,不受電壓波動(dòng)和負(fù)載變化的影響。</p><p>  在步

14、進(jìn)電機(jī)工作方式確定后,其在每個(gè)脈沖下前進(jìn)1步,因此只要改變給脈沖間的時(shí)間間隔即可改變步進(jìn)電機(jī)的速度。程序中通過在每次脈沖后加可調(diào)時(shí)間延時(shí)來控制步進(jìn)電機(jī)的速度。</p><p><b> ?。?)系統(tǒng)工作原理</b></p><p>  該系統(tǒng)可實(shí)現(xiàn)開機(jī)界面,步進(jìn)電機(jī)工作方式選擇,步進(jìn)電機(jī)加速、減速,顯示器可顯示步進(jìn)電機(jī)速度變化趨勢,步進(jìn)電機(jī)理論轉(zhuǎn)速。</p>

15、;<p>  開機(jī)后,系統(tǒng)進(jìn)入開機(jī)界面,通過以下函數(shù)實(shí)現(xiàn):</p><p>  writestring(0,0,8,"歡迎使用");</p><p>  writestring(1,0,16,"步進(jìn)電機(jī)控制器");</p><p>  delay(2000);</p><p>  writ

16、e(0x01,0); //清屏</p><p>  delay(100);</p><p>  writestring(1,0,16,"請選擇工作方式");</p><p>  稍作延時(shí)后系統(tǒng)提示選擇步進(jìn)電機(jī)的工作方式,包括單相四拍,雙相四拍和四相八拍共三種工作方式。while(m)</p><p><b>

17、  {</b></p><p>  if(key1==0)</p><p><b>  delay(5);</b></p><p>  if(key1==0)</p><p><b>  n++;</b></p><p><b>  if(n==1)&l

18、t;/b></p><p><b>  {</b></p><p>  write(0x01,0);</p><p>  delay(100);</p><p>  writestring(1,2,8,"單相四拍");</p><p>  while(n==1)</

19、p><p><b>  {</b></p><p>  for(i=0;i<4;i++)</p><p><b>  {</b></p><p>  P1=string1[i];</p><p><b>  delay(1);</b></p>

20、;<p><b>  }</b></p><p>  if(key1==0) break;</p><p>  if(key4==0) {m=0;break;}</p><p><b>  }</b></p><p><b>  }</b></p>

21、<p><b>  if(n==2)</b></p><p><b>  {</b></p><p>  write(0x01,0);</p><p>  delay(100);</p><p>  writestring(1,2,8,"雙相四拍");</p>

22、;<p>  while(n==2)</p><p><b>  {</b></p><p>  for(i=0;i<4;i++)</p><p><b>  {</b></p><p>  P1=string2[i];</p><p><b>

23、  delay(1);</b></p><p><b>  }</b></p><p>  if(key1==0) break;</p><p>  if(key4==0) {m=0;break;}</p><p><b>  }</b></p><p><

24、b>  }</b></p><p><b>  if(n==3)</b></p><p><b>  {</b></p><p>  write(0x01,0);</p><p>  delay(100);</p><p>  writestring(1,2

25、,8,"四相八拍");</p><p>  while(n==3)</p><p><b>  {</b></p><p>  for(i=0;i<8;i++)</p><p><b>  {</b></p><p>  P1=string3[i];

26、</p><p><b>  delay(1);</b></p><p><b>  }</b></p><p>  if(key1==0) break;</p><p>  if(key4==0) {m=0;break;}</p><p><b>  }&l

27、t;/b></p><p><b>  }</b></p><p><b>  if(n>3)</b></p><p><b>  n=0;</b></p><p><b>  }</b></p><p>  按鍵1為工

28、作方式選擇鍵,每次按下設(shè)定參數(shù)加1,程序檢測給定參數(shù)的值,從而控制步進(jìn)電機(jī)做相應(yīng)運(yùn)動(dòng),按鍵4為退出鍵,工作方式子函數(shù)中實(shí)時(shí)檢測按鍵4的狀態(tài),但按鍵4按下時(shí),程序跳出當(dāng)前循環(huán),回到主程序,步進(jìn)電機(jī)停轉(zhuǎn),液晶顯示器從現(xiàn)實(shí)工作方式信息跳到下一環(huán)節(jié)。</p><p>  上述功能跳出后,系統(tǒng)進(jìn)入調(diào)速功能,此時(shí)步進(jìn)電機(jī)以一定的速度運(yùn)轉(zhuǎn),液晶顯示此時(shí)電機(jī)的理論速度。當(dāng)按鍵2按下時(shí),步進(jìn)電機(jī)每步間延時(shí)減小,電機(jī)加速;當(dāng)按鍵3按

29、下時(shí),步進(jìn)電機(jī)每步間延時(shí)增加,步進(jìn)電機(jī)減速,同時(shí)12864實(shí)時(shí)顯示步進(jìn)電機(jī)速度及速度變化趨勢。</p><p>  該功能函數(shù)同樣檢測按鍵4的狀態(tài),當(dāng)按鍵4按下時(shí),系統(tǒng)退出,步進(jìn)電機(jī)停轉(zhuǎn)。</p><p><b>  七、程序框圖</b></p><p><b>  123</b></p><p&g

30、t;<b>  YY</b></p><p><b>  Y</b></p><p><b>  Y</b></p><p>  Key2 Key3 Key4</p><p><b>  八、程序清單</b></p>&

31、lt;p>  #include<reg51.h></p><p>  #define uint unsigned int</p><p>  #define uchar unsigned char</p><p>  sbit RS=P2^0;</p><p>  sbit RW=P2^1;</p><p

32、>  sbit E=P2^2;</p><p>  sbit key1=P2^3;</p><p>  sbit key2=P2^4;</p><p>  sbit key3=P2^5;</p><p>  sbit key4=P2^6;</p><p>  uchar i,time=10,m=1,sudu;&l

33、t;/p><p>  static uchar n=0;</p><p>  uchar string1[]={0xfe,0xfd,0xfb,0xf7}; //單相四拍</p><p>  uchar string2[]={0xfc,0xf9,0xf3,0xf6}; //雙相四拍</p><p>  uchar string3[]={0x

34、fe,0xfc,0xfd,0xf9,0xfb,0xf3,0xf7,0xf6}; //四相八拍</p><p>  uchar sudu1[3]; //速度暫存</p><p>  void write(uchar,bit);</p><p>  void writestring(uchar,uchar,uchar,uchar *p);</p&g

35、t;<p>  void init();</p><p>  void delay(uint);</p><p>  void main()</p><p><b>  {</b></p><p><b>  init();</b></p><p>  writ

36、estring(0,0,12," 歡迎使用");</p><p>  writestring(1,0,16,"步進(jìn)電機(jī)控制器");</p><p>  delay(2000);</p><p>  write(0x01,0); //清屏</p><p>  delay(100);</p&

37、gt;<p>  writestring(1,0,16,"請選擇工作方式");</p><p><b>  while(m)</b></p><p><b>  {</b></p><p>  if(key1==0)</p><p><b>  delay

38、(5);</b></p><p>  if(key1==0)</p><p><b>  n++;</b></p><p><b>  if(n==1)</b></p><p>  { write(0x01,0);</p><p>  delay(100)

39、;</p><p>  writestring(1,2,8,"單相四拍");</p><p>  while(n==1)</p><p>  { for(i=0;i<4;i++)</p><p><b>  { </b></p><p>  P1=string

40、1[i];</p><p><b>  delay(1);</b></p><p><b>  }</b></p><p>  if(key1==0) break;</p><p>  if(key4==0) {m=0;break;}</p><p><b>  }

41、</b></p><p><b>  }</b></p><p><b>  if(n==2)</b></p><p><b>  {</b></p><p>  write(0x01,0);</p><p>  delay(100);<

42、;/p><p>  writestring(1,2,8,"雙相四拍");</p><p>  while(n==2)</p><p><b>  {</b></p><p>  for(i=0;i<4;i++)</p><p><b>  {</b>&l

43、t;/p><p>  P1=string2[i];</p><p><b>  delay(1);</b></p><p><b>  }</b></p><p>  if(key1==0) break;</p><p>  if(key4==0) {m=0;break;}<

44、;/p><p><b>  }</b></p><p><b>  }</b></p><p><b>  if(n==3)</b></p><p><b>  {</b></p><p>  write(0x01,0);</p&

45、gt;<p>  delay(100);</p><p>  writestring(1,2,8,"四相八拍");</p><p>  while(n==3)</p><p><b>  {</b></p><p>  for(i=0;i<8;i++)</p><

46、;p><b>  {</b></p><p>  P1=string3[i];</p><p><b>  delay(1);</b></p><p><b>  }</b></p><p>  if(key1==0) break;</p><p>

47、;  if(key4==0) {m=0;break;}</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  if(n>3)</b></p><p><b>  n=0;</b></p

48、><p><b>  }</b></p><p>  write(0x01,0);</p><p>  delay(1000);</p><p>  writestring(0,2,8,"調(diào)速控制");</p><p><b>  while(1)</b>&l

49、t;/p><p><b>  {</b></p><p>  writestring(1,0,6,"轉(zhuǎn)速:");</p><p>  writestring(1,5,5,"r/min");</p><p>  writestring(2,0,10,"速度趨勢:");

50、</p><p>  if(key3==0) //點(diǎn)動(dòng)減速</p><p><b>  delay(5);</b></p><p>  if(key3==0)</p><p><b>  {</b></p><p><b>  time++;</b

51、></p><p>  writestring(2,5,4,"減速");</p><p><b>  }</b></p><p>  if(time>=30)</p><p><b>  time=10;</b></p><p>  if(ke

52、y2==0) //點(diǎn)動(dòng)加速</p><p><b>  delay(5);</b></p><p>  if(key2==0)</p><p><b>  {</b></p><p><b>  time--;</b></p><p>  w

53、ritestring(2,5,4,"加速"); </p><p><b>  } </b></p><p>  if(time<=1)</p><p><b>  time=1;</b></p><p>  for(i=0;i<8;i++)</p&g

54、t;<p><b>  {</b></p><p>  P1=string3[i];</p><p>  delay(time);</p><p><b>  }</b></p><p>  sudu=358/time;</p><p>  sudu1[0]=s

55、udu/100+0x30;</p><p>  sudu1[1]=sudu%100/10+0x30;</p><p>  sudu1[2]=sudu%10+0x30;</p><p>  writestring(1,3,3,sudu1);</p><p>  if(key4==0)</p><p><b> 

56、 break;</b></p><p><b>  }</b></p><p>  write(0x01,0);</p><p>  delay(1000);</p><p>  writestring(1,2,10,"謝謝使用!");</p><p><b&

57、gt;  while(1);</b></p><p><b>  }</b></p><p>  void delay(uint z)</p><p><b>  {</b></p><p><b>  uint x,y;</b></p><p&

58、gt;  for(x=115;x>0;x--)</p><p>  for(y=z;y>0;y--);</p><p><b>  }</b></p><p>  void write(uchar dat,bit command)//寫函數(shù)</p><p><b>  {</b><

59、;/p><p><b>  P0=dat;</b></p><p>  RS=command;</p><p><b>  RW=0;</b></p><p><b>  E=1;</b></p><p><b>  E=0;</b>

60、</p><p><b>  }</b></p><p>  void init()//初始化</p><p><b>  {</b></p><p>  write(0x38,0); //8位點(diǎn)陣顯示</p><p>  write(0x01,0);</p>

61、;<p>  write(0x0c,0); //開顯示關(guān)光標(biāo)</p><p><b>  }</b></p><p>  void writestring(uchar x,uchar y,uchar z,uchar *p)//寫字符串</p><p><b>  { </b></p>

62、<p><b>  uchar i;</b></p><p><b>  if(x==1)</b></p><p><b>  x=2;</b></p><p>  else if(x==2)</p><p><b>  x=1;</b>&l

63、t;/p><p>  write(0x80+8*x+y,0);</p><p>  for(i=0;i<z;i++)</p><p><b>  {</b></p><p>  write(*p,1);</p><p><b>  p++;</b></p>&

64、lt;p><b>  }</b></p><p><b>  }</b></p><p><b>  九、設(shè)計(jì)體會(huì)</b></p><p>  這次單片機(jī)課程設(shè)計(jì)不僅復(fù)習(xí)鞏固了學(xué)到的知識(shí),還擴(kuò)展了知識(shí)。通過這次課程設(shè)計(jì),我們從純理論的人是上升到了實(shí)踐認(rèn)識(shí),鍛煉了創(chuàng)造能力,獨(dú)立思考能力,動(dòng)手能力和

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論