單片機課程設(shè)計-- 單片機原理及應用_第1頁
已閱讀1頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  **大學</b></p><p><b>  ***工程學院</b></p><p><b>  課程設(shè)計報告</b></p><p>  課程名稱: 單片機原理及應用 </p><p>  設(shè)計題目:

2、 </p><p>  班 級: ************* </p><p>  姓 名: **** 學 號: ********** </p><p>  指導教師: ****** 評 分: <

3、/p><p><b>  2013年7月1日</b></p><p><b>  前言</b></p><p>  步進電機是將電脈沖信號轉(zhuǎn)變?yōu)榻俏灰苹蚓€位移的開環(huán)控制元步進電機件。在非超載的情況下,電機的轉(zhuǎn)速、停止的位置只取決于脈沖信號的頻率和脈沖數(shù),而不受負載變化的影響,當步進驅(qū)動器接收到一個脈沖信號,它就驅(qū)動步進電機按設(shè)

4、定的方向轉(zhuǎn)動一個固定的角度,稱為“步距角”,它的旋轉(zhuǎn)是以固定的角度一步一步運行的??梢酝ㄟ^控制脈沖個數(shù)來控制角位移量,從而達到準確定位的目的;同時可以通過控制脈沖頻率來控制電機轉(zhuǎn)動的速度和加速度,從而達到調(diào)速的目的。</p><p>  通常電機的轉(zhuǎn)子為永磁體,當電流流過定子繞組時,定子繞組產(chǎn)生一矢量磁場。該磁場會帶動轉(zhuǎn)子旋轉(zhuǎn)一角度,使得轉(zhuǎn)子的一對磁場方向與定子的磁場方向一致。當定子的矢量磁場旋轉(zhuǎn)一個角度。轉(zhuǎn)子也

5、隨著該磁場轉(zhuǎn)一個角度。每輸入一個電脈沖,電動機轉(zhuǎn)動一個角度前進一步。它輸出的角位移與輸入的脈沖數(shù)成正比、轉(zhuǎn)速與脈沖頻率成正比。改變繞組通電的順序,電機就會反轉(zhuǎn)。所以可用控制脈沖數(shù)量、頻率及電動機各相繞組的通電順序來控制步進電機的轉(zhuǎn)動。</p><p><b>  目錄</b></p><p>  設(shè)計目的……………………………………………………………2</p&g

6、t;<p>  設(shè)計要求……………………………………………………………2</p><p>  儀器設(shè)備……………………………………………………………2</p><p>  硬件線路圖及主要芯片說明………………………………………2</p><p>  系統(tǒng)工作原理………………………………………………………7</p><p>  程

7、序框圖………………………………………………………… 11</p><p>  程序清單………………………………………………………… 12</p><p>  設(shè)計體會………………………………………………………… 17</p><p><b>  一、設(shè)計目的</b></p><p>  通過具體小型測試系統(tǒng)設(shè)計,實踐單片

8、機系統(tǒng)設(shè)計及調(diào)試的全過程,以加深對單片機內(nèi)部結(jié)構(gòu)、功能和指令系統(tǒng)的理解,并進一步學習單片機開發(fā)系統(tǒng)的應用及一些外圍芯片的接口和編程方法,初步掌握單片機系統(tǒng)的硬、軟件設(shè)計技術(shù)及調(diào)試技巧。</p><p><b>  設(shè)計要求</b></p><p>  1) 電機轉(zhuǎn)速可以平穩(wěn)控制</p><p>  2)通過鍵盤和顯示器可以設(shè)置電機的轉(zhuǎn)速<

9、/p><p>  3)顯示電機的速度趨勢</p><p><b>  儀器設(shè)備</b></p><p>  1、單片機開發(fā)試驗儀 一套</p><p>  2、“m35sp-5”步進電機 一個</p><p>  硬件線路圖及主要芯片說明</p&g

10、t;<p><b>  單片機開發(fā)試驗儀</b></p><p>  STC90C51RD單片機是新一代高速/低功耗/超強抗干擾的單片機,指令代碼完全兼容傳統(tǒng)8051單片機,12 時鐘/機器周期和 6 時鐘/機器周期可以任意選擇。</p><p><b>  主要特性如下: </b></p><p>  1)

11、. 增強型 9051 單片機,6 時鐘/機器周期和 12 時鐘/機器周期可以任意選擇,指令代碼完全兼容傳統(tǒng) 8051. </p><p>  2). 工作電壓:5.5V~3.3V(5V 單片機)/3.8V~2.0V(3V 單片機) </p><p>  3). 工作頻率范圍:0~40MHz,相當于普通 8051 的 0~80MHz,實際工作頻率可達 48MHz </p>&l

12、t;p>  4). 用戶應用程序空間為 8K 字節(jié) </p><p>  5). 片上集成 512 字節(jié) RAM</p><p>  6). 通用 I/O 口(32 個)復位后為: , P1/P2/P3/P4 是準雙向口/弱上拉, P0 口是漏極開路輸出,作為總線擴展用時,不用加上拉電阻,作為 I/O 口用時,需加上拉電阻。 </p><p>  7). IS

13、P(在系統(tǒng)可編程)/IAP(在應用可編程),無需專用編程器,無需專用仿真器,可通過串口(RxD/P3.0,TxD/P3.1)直接下載用戶程 序,數(shù)秒即可完成一片</p><p>  8). 具有 EEPROM 功能 </p><p>  9). 具有看門狗功能 </p><p>  10). 共 3 個 16 位定時器/計數(shù)器。即定時器 T0、T1、T2</p

14、><p>  11). 外部中斷 4 路,下降沿中斷或低電平觸發(fā)電路,Power Down 模式可由外部中斷低電平觸發(fā)中斷方式喚醒 </p><p>  12). 通用異步串行口(UART),還可用定時器軟件實現(xiàn)多個 UART </p><p>  13). 工作溫度范圍:-40~+85℃(工業(yè)級)/0~75℃(商業(yè)級) </p><p>  1

15、4). PDIP 封裝 </p><p>  STC89C52RC 單片機的工作模式</p><p>  掉電模式:典型功耗<0.1μA,可由外部中斷喚醒,中斷返回后,繼續(xù)執(zhí)行原程序空閑模式:典型功耗 2mA </p><p>  正常工作模式:典型功耗 4mA~7mA </p><p>  掉電模式可由外部中斷喚醒,適用于水表、氣表

16、等電池供電系統(tǒng)及便攜設(shè)備 STC89C52RC 引腳功能說明</p><p>  VCC(40 引腳):電源電壓 </p><p>  VS S(20 引腳):接地 </p><p>  P0 端口(P0.0~P0.7 P0.7,39~32 引腳):P0 口是一個漏極開路的 8 位雙向 I/O 口。作為輸出端口,每個引腳能驅(qū)動8個TTL 負載,對端口 P0 寫入

17、每個引腳能驅(qū)動寫入“1”時,可以作為高阻抗輸入。在訪問外部程序和數(shù)據(jù)存儲器時,P0 口也可以提供低 8 位 地址和 8 位數(shù)據(jù)的復用總線 位數(shù)據(jù)的復用總線。此時,P0 口內(nèi)部上拉電阻有效。在 Flash ROM 在線編程時,P0 端口接收指令字節(jié);而在校驗程序時,則輸出指令字節(jié)。驗證時,要求外接上拉電阻。 </p><p>  P1 端口(P1.0~P1.7,1~8 引腳):P1 口是一個帶內(nèi)部上拉電阻的 8 位

18、雙向 I/O 口。P1 的輸出緩沖器可驅(qū)動(吸收或者輸出電流方式)4 個 TTL 輸入。對端 口寫入 1 時,通過內(nèi)部的上拉電阻把端口拉到高電位,這是可用作輸入口。P1 口作輸入口使用時,因為有內(nèi)部上拉電阻,那些被外部拉低的引腳會輸出一個電流(I)。此外,P1.0 和 P1.1 還可以作為定時器/計數(shù)器 2 的外部技術(shù)輸入(P1.0/T2和定時器/計數(shù)器 2 的觸發(fā)輸入(P1.1/T2EX) 。</p><p>

19、  P2 端口(P2.0~P2.7,21~28 引腳):P2 口是一個帶內(nèi)部上拉電阻的 8 位雙 向 I/O 端口。P2 的輸出緩沖器可以驅(qū)動(吸收或輸出電流方式)4 個 TTL 輸入。 對端口寫入 1 時,通過內(nèi)部的上拉電阻把端口拉到高電平,這時可用作輸入口。 P2 作為輸入口使用時,因為有內(nèi)部的上拉電阻,那些被外部信號拉低的引腳會輸出一個電流(I) 。在訪問外部程序存儲器和 16 位地址的外部數(shù)據(jù)存儲器(如執(zhí)行“MOVX @DPTR

20、”指令)時,P2 送出高 8 位地址。在訪問 8 位地址的外部數(shù)據(jù)存儲器(如 執(zhí)行“MOVX @R1”指令)時,P2 口引腳上的內(nèi)容(就是專用寄存器(SFR)區(qū) 中的 P2 寄存器的內(nèi)容) ,在整個訪問期間不會改變。</p><p>  在對 Flash ROM 編程和程序校驗期間, P2也接收高位地址和一些控制信號。</p><p>  P3 端口(P3.0~P3.7,10~17 引腳)

21、 :P3 是一個帶內(nèi)部上拉電阻的 8 位雙向 I/O 端口。P3 的輸出緩沖器可驅(qū)動(吸收或輸出電流方式)4 個 TTL 輸入。對端 口寫入 1 時,通過內(nèi)部的上拉電阻把端口拉到高電位,這時可用作輸入口。P3 做輸入口使用時,因為有內(nèi)部的上拉電阻,那些被外部信號拉低的引腳會輸入一 個電流(I) 。 在對 Flash ROM 編程或程序校驗時,P3 還接收一些控制信號。P3 口除作為一般 I/O 口外,還有其他一些復用功能。</p&

22、gt;<p>  RST(9 引腳):復位輸入。當輸入連續(xù)兩個機器周期以上高電平時為有效, 用來完成單片機單片機的復位初始化操作。看門狗計時完成后,RST 引腳輸出 96 個晶振周期的高電平。特殊寄存器 AUXR(地址 8EH)上的 DISRTO 位可以使此功 能無效。DISRTO 默認狀態(tài)下,復位高電平有效。 </p><p>  ALE/ ROG (30 引腳) 地址鎖存控制信號 : (ALE)

23、 是訪問外部程序存儲器時, 鎖存低 8 位地址的輸出脈沖。在 Flash 編程時,此引腳( ROG)也用作編程輸入 脈沖。 在一般情況下,ALE 以晶振六分之一的固定頻率輸出脈沖,可用來作為外部 定時器或時鐘使用。然而,特別強調(diào),在每次訪問外部數(shù)據(jù)存儲器時,ALE 脈沖 將會跳過。如果需要,通過將地址位 8EH 的 SFR 的第 0 位置“1” ,ALE 操作將無效。這 一位置“1” ,ALE 僅在執(zhí)行 MOVX 或 MOV 指令時有效

24、。否則,ALE 將被微弱拉 高。這個 ALE 使能標志位(地址位 8EH 的 SFR 的第 0 位)的設(shè)置對微控制器處于 外部執(zhí)行模式下無效。PSEN(29 引腳):PSEN是外部程序存儲器選通信號。當 STC89C52RC 從外部程序存儲器執(zhí)行外部代碼時,PSEN在每個機器周期被激活兩次,而訪問外部數(shù)據(jù)存儲器時,PSEN將不被激活。</p><p>  EA/VPP (31 引腳):訪問外部程序存儲器控制信號

25、。為使能從 0000H 到 FFFFH 的外部程序存儲器讀取指令, EA必須接 GND。注意加密方式 1 時, EA將內(nèi)部鎖 定位 RESET。為了執(zhí)行內(nèi)部程序指令, EA應該接 VCC。在 Flash 編程期間,EA也 接收 12 伏 VPP 電壓。 </p><p>  XTAL1(19 引腳) :振蕩器反相放大器和內(nèi)部時鐘發(fā)生電路的輸入端。</p><p>  XTAL2(18 引腳

26、) :振蕩器反相放大器的輸入端。</p><p>  “m35sp-5”步進電機</p><p><b>  主要技術(shù)參數(shù):</b></p><p><b>  相數(shù):四相</b></p><p><b>  電壓:5VDC</b></p><p>&l

27、t;b>  電流:92mA</b></p><p><b>  電阻:800Ω</b></p><p><b>  步距角:7.5°</b></p><p>  空載牽出頻率:800pps</p><p>  空載牽入頻率:500pps</p><p&

28、gt;<b>  減速比:1/64</b></p><p>  牽入轉(zhuǎn)矩:≥78.4mN.m</p><p>  接線指示:A(橙)、B(黃)、C(藍)、D(灰)、E(紅,中點接+5V)</p><p><b>  四相八拍相序表</b></p><p>  如果需要電機正轉(zhuǎn),只需要從A-AB-B-

29、BC-C-CD-D-DA依次通電即可,反轉(zhuǎn),則需要反過來依次通電。</p><p><b>  3、開發(fā)板原理圖:</b></p><p><b>  系統(tǒng)工作原理</b></p><p>  本程序包括按鍵處理程序、顯示處理程序、中斷處理程序、數(shù)據(jù)處理程序四個主要部分</p><p><b&

30、gt;  1、按鍵處理程序</b></p><p>  按鍵處理安排在主程序當中,使其處于不斷檢測狀態(tài),當有按鍵按下能夠及時對其進行相應的處理。同時,對于按鍵還應該進行消抖處理,避免系統(tǒng)誤動作。其主要程序如下: </p><p><b>  if(k1==0)</b></p><p><b>  {</b>

31、;</p><p>  delay(5); //延時消抖</p><p><b>  if(k1==0)</b></p><p><b>  delay(5);</b></p><p><b>  if(k1==0)</b></p><p&

32、gt;<b>  {</b></p><p><b>  TR0=~TR0;</b></p><p><b>  k++;</b></p><p>  } //啟動/停止</p><p><b>  }</b></p>&l

33、t;p>  while(!k1); //等待按鍵釋放</p><p><b>  if(k2==0)</b></p><p><b>  {</b></p><p>  delay(5); //延時消抖</p><p><b>  if(k

34、2==0)</b></p><p><b>  delay(5);</b></p><p><b>  if(k2==0)</b></p><p>  time=time-1000;</p><p>  } //加速</p><p>  whi

35、le(!k2); //等待按鍵釋放</p><p><b>  if(k3==0)</b></p><p><b>  {</b></p><p>  delay(5); //延時消抖</p><p><b>  if(k3==0)<

36、/b></p><p><b>  delay(5);</b></p><p><b>  if(k3==0)</b></p><p>  time=time+1000;</p><p>  } //減速</p><p>  whi

37、le(!k3); //等待按鍵釋放</p><p><b>  if(k4==0)</b></p><p><b>  {</b></p><p>  delay(5); //延時消抖</p><p><b>  if(k4==0)</b&

38、gt;</p><p><b>  delay(5);</b></p><p><b>  if(k4==0)</b></p><p><b>  f++;</b></p><p>  } //正/反轉(zhuǎn)</p><p

39、>  while(!k4); //等待按鍵釋放</p><p><b>  2、中斷處理程序</b></p><p>  中斷程序中安排對P1口賦值及對定時器重新裝入初值,每次進入中斷程序時,先判斷是否執(zhí)行反轉(zhuǎn),如是,則送反轉(zhuǎn)編碼,否則,送正轉(zhuǎn)編碼。其主要程序如下: </p><p>  void timer0(

40、)interrupt 1</p><p><b>  {</b></p><p><b>  if(f%2)</b></p><p><b>  {</b></p><p>  P1=FF[j++];</p><p><b>  if(j==

41、8)</b></p><p><b>  j=0;</b></p><p>  } //f為奇數(shù)時代表反轉(zhuǎn),則送反轉(zhuǎn)編碼到P1口</p><p><b>  else </b></p><p><b>  {</b></p>

42、<p>  P1=ZF[j++];</p><p><b>  if(j==8)</b></p><p><b>  j=0;</b></p><p>  } //否則送正轉(zhuǎn)編碼到P1口</p><p>  TH0=(65536-time)/256;<

43、/p><p>  TL0=(65536-time)%256;//重新裝初值</p><p><b>  }</b></p><p><b>  3、顯示處理程序</b></p><p>  顯示程序則通過對相應數(shù)碼管的通斷,然后送段碼。以這種方式來控制其動態(tài)顯示,同時需要主要每個數(shù)碼管都應該延時亮一

44、段時間。并且要對其消隱。以獲得較好的顯示效果。其主要程序如下:</p><p>  void display(uchar a,uchar b,uchar c,uchar d)</p><p><b>  {</b></p><p><b>  if(f%2)</b></p><p><b>

45、;  {</b></p><p>  P2=0x7f; </p><p>  P0=0xbf; //f為奇數(shù)時代表反轉(zhuǎn),第一個數(shù)碼管顯示"0"</p><p>  delay(1); </p><p><b>  P0=0xff;</b></p&g

46、t;<p>  } //消隱</p><p><b>  else</b></p><p><b>  {</b></p><p>  P2=0x7f; </p><p>  P0=0x06; //f為偶數(shù)時代表正轉(zhuǎn),第一個數(shù)碼管顯示&q

47、uot;1"</p><p>  delay(1); </p><p><b>  P0=0x00;</b></p><p><b>  }</b></p><p>  P2=0xef; </p><p>  P0=SM[a]; //顯示萬位</p&g

48、t;<p>  delay(1); </p><p>  P0=0x00; //消隱</p><p>  P2=0xf7; </p><p>  P0=SM[b]; //顯示千位</p><p>  delay(1); </p><p>  P0=0x00; //消隱</

49、p><p><b>  P2=0xfb;</b></p><p>  P0=SM[c]; //顯示百位</p><p><b>  delay(1);</b></p><p>  P0=0x00; //消隱</p><p><b>  P2=0xfd;&

50、lt;/b></p><p>  P0=SM[d]; //顯示十位</p><p><b>  delay(1);</b></p><p>  P0=0x00; //消隱</p><p><b>  P2=0xfe;</b></p><p>  P0=SM

51、[d]; //顯示個位</p><p><b>  delay(1);</b></p><p>  P0=0x00; //消隱</p><p><b>  }</b></p><p><b>  4、數(shù)據(jù)處理程序</b></p><p> 

52、 通過對數(shù)據(jù)進行處理來獲得電機的轉(zhuǎn)速,可以先計算出1ms時電機的速度,然后通過改變時間間隔來計算電機的轉(zhuǎn)速。其主要程序如下:</p><p>  void dispose()</p><p><b>  {</b></p><p>  h=time/10000;</p><p>  w=time/1000%10;<

53、/p><p>  p=time/100%10;</p><p>  q=time/10%10;</p><p>  u=time%10;</p><p><b>  }</b></p><p>  根據(jù)以上四個主要部分來把整個系統(tǒng)劃分成相應模塊,有利于提高系統(tǒng)的抗干擾能力。能較好的保證系統(tǒng)運行的可靠。

54、</p><p><b>  程序框圖</b></p><p><b>  程序清單</b></p><p>  #include<reg52.h> //頭文件</p><p>  #define uint unsigned int //宏定義&

55、lt;/p><p>  #define uchar unsigned char //宏定義</p><p>  uchar code ZF[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09}; //正轉(zhuǎn)編碼表</p><p>  uchar code FF[8]={0x09,0x08,0x0c,0x04,0x06,0x0

56、2,0x03,0x01}; //反轉(zhuǎn)編碼表</p><p>  uchar code SM[]=</p><p><b>  {</b></p><p>  0x3f,0x06,0x5b,0x4f,</p><p>  0x66,0x6d,0x7d,0x07,</p><p>  0x7f,0

57、x6f,0x77,0x7c,</p><p>  0x39,0x5e,0x79,0x71</p><p>  }; //數(shù)碼表</p><p>  sbit k1=P3^0; //定義K1為啟動/停止按鍵</p><p>  sbit k2=P3^1; //定義

58、K2為減速按鍵</p><p>  sbit k3=P3^2; //定義K3為加速按鍵</p><p>  sbit k4=P3^3; //定義K4為正/反轉(zhuǎn)按鍵</p><p>  uchar j=0;</p><p>  uint time=12000; //time為每兩拍之間的間隔時間</p&g

59、t;<p>  uint temp2;</p><p>  uchar temp1,h,w,p,q,f;</p><p>  /********************************************************************</p><p>  函數(shù):void delay(uchar z)</p>

60、<p>  功能:1ms延時函數(shù)(12M晶振下)</p><p>  ********************************************************************/</p><p>  void delay(uchar z)</p><p><b>  { </b></p>

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

62、*********************************************************</p><p>  函數(shù):void display(uchar a,uchar b,uchar c,uchar d)</p><p><b>  功能:顯示函數(shù)</b></p><p>  ********************

63、************************************************/</p><p>  void display(uchar a,uchar b,uchar c,uchar d)</p><p><b>  {</b></p><p><b>  if(f%2)</b></p>

64、<p><b>  {</b></p><p>  P2=0x7f; </p><p>  P0=0xbf; //f為奇數(shù)時代表反轉(zhuǎn),第一個數(shù)碼管顯示"0"</p><p>  delay(1); </p><p><b>  P0=0xff;

65、</b></p><p>  } //消隱</p><p><b>  else</b></p><p><b>  {</b></p><p>  P2=0x7f; </p><p>  P0=0x06; //f為

66、偶數(shù)時代表正轉(zhuǎn),第一個數(shù)碼管顯示"1"</p><p>  delay(1); </p><p><b>  P0=0x00;</b></p><p><b>  }</b></p><p>  P2=0xef; </p><p>  P0=SM[a

67、]; //顯示萬位</p><p>  delay(1); </p><p>  P0=0x00; //消隱</p><p>  P2=0xf7; </p><p>  P0=SM[b]; //顯示千位</p><p>  delay(1); </p><p>  P0=

68、0x00; //消隱</p><p><b>  P2=0xfb;</b></p><p>  P0=SM[c]; //顯示百位</p><p><b>  delay(1);</b></p><p>  P0=0x00; //消隱</p><p>&l

69、t;b>  P2=0xfd;</b></p><p>  P0=SM[d]; //顯示十位</p><p><b>  delay(1);</b></p><p>  P0=0x00; //消隱</p><p><b>  P2=0xfe;</b></p>

70、<p>  P0=SM[d]; //顯示個位</p><p><b>  delay(1);</b></p><p>  P0=0x00; //消隱</p><p><b>  }</b></p><p>  /******************************

71、**************************************</p><p>  函數(shù):void dispose()</p><p>  功能:數(shù)值處理函數(shù)********************************************************************/</p><p>  void dispose()<

72、/p><p><b>  {</b></p><p>  h=time/10000;</p><p>  w=time/1000%10;</p><p>  p=time/100%10;</p><p>  q=time/10%10;</p><p>  u=time%10;&

73、lt;/p><p><b>  }</b></p><p>  /********************************************************************</p><p>  函數(shù):void main()</p><p>  功能:主函數(shù)********************

74、************************************************/</p><p>  void main()</p><p><b>  {</b></p><p><b>  uchar k; </b></p><p>  TMOD=0x01;

75、 //定義定時器0工作方式1</p><p>  EA=1; //開總中斷</p><p>  ET0=1; //開定時器0中斷</p><p>  TH0=(65536-time)/256;</p><p>  TL0=(65536-time)%256;

76、 //裝定時器初值</p><p>  TR0=1; //開定時器0</p><p><b>  while(1)</b></p><p><b>  {</b></p><p><b>  if(k1==0)</b></p>

77、<p><b>  {</b></p><p>  delay(5); //延時消抖</p><p><b>  if(k1==0)</b></p><p><b>  delay(5);</b></p><p><b>  if(k1=

78、=0)</b></p><p><b>  {</b></p><p><b>  TR0=~TR0;</b></p><p><b>  k++;</b></p><p>  } //啟動/停止</p><p><b

79、>  }</b></p><p>  while(!k1); //等待按鍵釋放</p><p><b>  if(k2==0)</b></p><p><b>  {</b></p><p>  delay(5); //延時消抖</

80、p><p><b>  if(k2==0)</b></p><p><b>  delay(5);</b></p><p><b>  if(k2==0)</b></p><p>  time=time-1000;</p><p>  }

81、 //加速</p><p>  while(!k2); //等待按鍵釋放</p><p><b>  if(k3==0)</b></p><p><b>  {</b></p><p>  delay(5); //延時消抖</p>&l

82、t;p><b>  if(k3==0)</b></p><p><b>  delay(5);</b></p><p><b>  if(k3==0)</b></p><p>  time=time+1000;</p><p>  }

83、 //減速</p><p>  while(!k3); //等待按鍵釋放</p><p><b>  if(k4==0)</b></p><p><b>  {</b></p><p>  delay(5); //延時消抖</p><p

84、><b>  if(k4==0)</b></p><p><b>  delay(5);</b></p><p><b>  if(k4==0)</b></p><p><b>  f++;</b></p><p>  }

85、 //正/反轉(zhuǎn)</p><p>  while(!k4); //等待按鍵釋放</p><p>  dispose(); </p><p><b>  if(k%2)</b></p><p>  display(0,0,0,0); //停止時顯示00.00</p>

86、<p><b>  else</b></p><p>  display(h,w,p,q); //正常運轉(zhuǎn)時調(diào)用顯示函數(shù)</p><p><b>  }</b></p><p><b>  }</b></p><p>  /******************

87、**************************************************</p><p>  函數(shù):void timer0() interrupt 1</p><p>  功能:定時器0中斷處理函數(shù)********************************************************************/</p>&l

88、t;p>  void timer0()interrupt 1</p><p><b>  {</b></p><p><b>  if(f%2)</b></p><p><b>  {</b></p><p>  P1=FF[j++];</p><p

89、><b>  if(j==8)</b></p><p><b>  j=0;</b></p><p>  } //f為奇數(shù)時代表反轉(zhuǎn),則送反轉(zhuǎn)編碼到P1口</p><p><b>  else </b></p><p><b>  

90、{</b></p><p>  P1=ZF[j++];</p><p><b>  if(j==8)</b></p><p><b>  j=0;</b></p><p>  } //否則送正轉(zhuǎn)編碼到P1口</p><p>  TH0=

91、(65536-time)/256;</p><p>  TL0=(65536-time)%256;//重新裝初值</p><p><b>  }</b></p><p><b>  八、設(shè)計體會</b></p><p>  通過本次的課程設(shè)計,使我對單片機有了更加深入的認識。因為有了之前C語言的

92、基礎(chǔ),所以這次的軟件設(shè)計比較沒有那么困難。在主函數(shù)編寫好之后,再單獨編寫各個子函數(shù),通過主函數(shù)對子函數(shù)的調(diào)用可以讓程序結(jié)構(gòu)看起來更有層次,更簡潔,更清楚。同時,這次的課程設(shè)計讓我對STC90C51RD單片機芯片的硬件結(jié)構(gòu)有了更深的認識,平時課堂上學到的那么多關(guān)于這款芯片的硬件結(jié)構(gòu)知識終于在這次的課程設(shè)計上派上了用場。</p><p>  總之,這次的課程設(shè)計是對我們所學知識的綜合考驗,我從這次的課程設(shè)計中學到了很

溫馨提示

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

評論

0/150

提交評論