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

下載本文檔

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

文檔簡介

1、<p>  《基于ARM的步進(jìn)電機(jī)控制》課程設(shè)計報告</p><p>  專 業(yè): 電子信息工程 </p><p>  班 級: 一班 </p><p>  姓 名: </p><p>  學(xué) 號:

2、 </p><p>  指導(dǎo)教師: </p><p><b>  目 錄</b></p><p>  1.設(shè)計目的與要求 …………………………………………………………2</p><p>  1.1設(shè)計目的 …………………………………………………………2 </p>

3、<p>  1.2設(shè)計要求 ……………………………………………………………2 </p><p>  2.方案設(shè)計與論證 ……………………………………………………………2 </p><p>  2.1設(shè)計分析 …………………………………………………………………2</p><p>  2.2方案論證…………………………………………………………………

4、…2</p><p>  2.3方案選擇……………………………………………………………………2</p><p>  硬件電路 ………………………………………………………………2</p><p>  3.1硬件結(jié)構(gòu)………………………………………………………………………3</p><p>  3.2器件連接說明 …………………………………

5、………………………………4</p><p>  4.軟件設(shè)計………………………………………………………………………5</p><p>  5調(diào)試 ……………………………………………………………………………7</p><p>  6.結(jié)論與心得……………………………………………………………………7</p><p>  7.參考文獻(xiàn)…………………

6、……………………………………………………7</p><p>  附錄 程序 …………………………………………………………………8</p><p>  1、設(shè)計的目的與要求</p><p><b>  1.1 設(shè)計目的</b></p><p> ?。?)本次課程設(shè)計是在學(xué)習(xí)了《深入淺出ARM7——LPC213X/

7、214X》課程之后綜合利用所學(xué)知識完成一個計算機(jī)應(yīng)用系統(tǒng)設(shè)計并在實(shí)驗(yàn)室實(shí)現(xiàn)。</p><p>  (2)通過課程設(shè)計,鞏固和加深了對“微機(jī)原理與接口技術(shù)”課程中所學(xué)的理論知識和實(shí)驗(yàn)?zāi)芰Γ菊莆沼嬎銠C(jī)接口應(yīng)用電路的一般設(shè)計方法,提高電子電路的設(shè)計和實(shí)驗(yàn)?zāi)芰Α?lt;/p><p> ?。?)加深對計算機(jī)軟硬知識的理解,獲得初步的應(yīng)用經(jīng)驗(yàn),為以后從事生產(chǎn)和科研工作打下一定的基礎(chǔ)。</p>

8、;<p><b>  1.2 設(shè)計要求</b></p><p>  (1)設(shè)計一個步進(jìn)電機(jī)的控制系統(tǒng)。</p><p>  (2)可通過鍵盤設(shè)定轉(zhuǎn)速和方向。</p><p>  (3)能夠顯示當(dāng)前的轉(zhuǎn)速。</p><p>  2、方案的設(shè)計與論證</p><p><b>

9、  設(shè)計分析</b></p><p>  步進(jìn)電機(jī)是將電脈沖信號轉(zhuǎn)變?yōu)榻俏灰苹蚓€位移的開環(huán)控制元件。電機(jī)的轉(zhuǎn)速、停止的位置只取決于脈沖信號的頻率和脈沖數(shù),而不受負(fù)載變化的影響,即給電機(jī)加一個脈沖信號,電機(jī)則轉(zhuǎn)過一個步距角。本次課程設(shè)計所設(shè)計的步進(jìn)電機(jī)的控制系統(tǒng)可通過鍵盤設(shè)定轉(zhuǎn)速和方向,并能顯示轉(zhuǎn)速。</p><p><b>  方案論證</b></p

10、><p>  方案一:采用ARM7的脈寬調(diào)制器PWM產(chǎn)生脈沖對步進(jìn)電機(jī)進(jìn)行控制。</p><p>  方案二:利用定時器定時中斷進(jìn)行步進(jìn)電機(jī)的控制。</p><p><b>  方案選擇</b></p><p>  第一種方案中PWM技術(shù)是采用脈寬調(diào)制技術(shù),即占空比不同的方波電壓產(chǎn)生不同的平均電流使步進(jìn)電機(jī)轉(zhuǎn)動,通過調(diào)節(jié)占空

11、比即可調(diào)節(jié)電機(jī)轉(zhuǎn)速。雖然很精確,但設(shè)置較繁瑣。</p><p>  第二種方案中采用定時器定時中斷的方式,只需要幾條簡單的指令就可以產(chǎn)生具有一定</p><p>  頻率和數(shù)目的脈沖信號,而且在整個脈沖產(chǎn)生過程中,CPU 可用來處理其他工作,大大</p><p>  提高了系統(tǒng)的實(shí)時處理能力。</p><p>  考慮到系統(tǒng)的實(shí)時性及程序的繁

12、簡程度我選擇了第二種方案。</p><p><b>  3、硬件電路</b></p><p><b>  硬件結(jié)構(gòu)</b></p><p> ?。?)EasyARM2138開發(fā)板是廣州周立功公司設(shè)計的EasyARM系列開發(fā)套件之一,采用了PHILIPS公司基于ARM7TDMI-S 核、單電源供電、LQFP64封裝的LPC2

13、138,具有JTAG</p><p>  仿真調(diào)試、ISP編程等功能。</p><p>  開發(fā)板上提供了一些鍵盤、LED、蜂鳴器等常用功能部件,還具有RS232接口電路、I2C</p><p>  存儲器電路。另外,用戶也可以更換兼容的CPU進(jìn)行仿真調(diào)試,如LPC2132、LPC2138、</p><p>  LPC2142等。靈活的跳線組

14、合(開發(fā)板內(nèi)使用的所有I/O均可斷開連接),還有用戶I/O接</p><p>  口,極大地方便了用戶進(jìn)行32位ARM嵌入式系統(tǒng)的開發(fā)實(shí)驗(yàn)。</p><p><b> ?。?) 定時器</b></p><p><b> ?。?)中斷</b></p><p>  LPC2138 通過向量中斷控制器(V

15、IC )管理中斷。外設(shè)中斷信號需要經(jīng)過2 個開關(guān)才能 </p><p>  到達(dá)ARM 內(nèi)核,真正產(chǎn)生異常,邏輯示意圖如下圖所示。如果在VIC中使能了相應(yīng)外 </p><p>  設(shè)的中斷,外設(shè)中斷才能到達(dá)VIC并向內(nèi)核發(fā)送中斷請求;只有使能了內(nèi)核中斷IRQ或者 </p><p>  FIQ,內(nèi)核才能真正產(chǎn)生異常。硬件圖如下</p><p>

16、  中斷的過程示意圖如下:</p><p><b>  (4)按鍵的連接圖</b></p><p>  不按下時為高電平,按下時變?yōu)榈碗娖健?lt;/p><p><b>  UART0 </b></p><p><b>  特性:</b></p><p>&

17、lt;b>  管腳描述:</b></p><p><b>  步進(jìn)電機(jī)接口</b></p><p>  由于LPC2138的GPIO驅(qū)動能力有限,必須通過ULN2003達(dá)林頓集成驅(qū)動芯片驅(qū)動步進(jìn)電機(jī),在步進(jìn)電機(jī)和驅(qū)動電路間連接了電阻,防止控制紊亂而造成的電機(jī)損壞。</p><p>  3.2 器件連接說明</p>

18、;<p> ?。?)在EasyARM2138開發(fā)板上,當(dāng)跳線JP6分別選擇TXD0和RXD0端時方可進(jìn)行UART0通信實(shí)驗(yàn)。</p><p> ?。?)KEY1連接P0.16;KEY2連接P0.17;KEY3連接P0.18, KEY4連接P0.19, KEY5連接P0.20,KEY6連接P0.21。</p><p> ?。?)步進(jìn)電機(jī)的四個輸入端口分別接EasyARM2138

19、開發(fā)板上P2.2~P2.5四個端口。</p><p><b>  4、軟件設(shè)計</b></p><p>  系統(tǒng)軟件采用C語言編程,程序詳情請參見附錄。</p><p><b>  程序的流程圖如下:</b></p><p><b>  否</b></p><

20、;p><b>  是</b></p><p><b>  是</b></p><p><b>  否</b></p><p><b>  是</b></p><p><b>  否 </b></p>

21、<p><b>  是</b></p><p><b>  否</b></p><p><b>  是</b></p><p><b>  否</b></p><p><b>  是</b></p><p

22、><b>  否</b></p><p><b>  是</b></p><p><b>  4、調(diào)試</b></p><p>  按照器件連接說明連接好EasyARM2131開發(fā)板上的跳線,然后將步進(jìn)電機(jī)與EasyARM2131開發(fā)板連接上。運(yùn)行程序,開始調(diào)試。在一開始的時候,由于用定時器設(shè)置

23、的中斷時間太長導(dǎo)致看不見電機(jī)有明顯的轉(zhuǎn)動。通過修改定時時間,漸漸地電機(jī)轉(zhuǎn)動變得明顯了。然后測試按鍵功能時發(fā)現(xiàn),案件的檢測不夠靈敏,有時候需要按幾下才能檢測到,后來經(jīng)過修改延時消抖的時間,將其變短且在每次按下按鍵時不急于松開而保持一會兒,這樣按鍵檢測變得較為靈敏了。在調(diào)試中發(fā)現(xiàn):單雙八拍和雙四拍要比單四拍的轉(zhuǎn)動更加有效。單四拍模式的時候電機(jī)只是震動并沒有轉(zhuǎn)動,用肉眼觀察不到轉(zhuǎn)速的快慢,故最后舍棄了這種模式。</p><

24、p>  調(diào)試的最終結(jié)果是:程序開始時電機(jī)進(jìn)入模式0,如果沒有按鍵按下則一直保持模式0。當(dāng)有按鍵按下時,且按鍵為KEY1~KEY4則電機(jī)根據(jù)不同按鍵的按下進(jìn)入不同的轉(zhuǎn)動模式(KEY1對應(yīng)模式0:八拍正轉(zhuǎn),KEY2對應(yīng)模式1:八拍反轉(zhuǎn),KEY3對應(yīng)模式2:雙四拍正轉(zhuǎn),KEY4對應(yīng)模式3:雙四拍反轉(zhuǎn))。當(dāng)按鍵KEY5按下時,電機(jī)轉(zhuǎn)速變慢,且隨著KEY5按下次數(shù)的增多電機(jī)逐漸變慢直至停止;當(dāng)按鍵KEY6按下時,電機(jī)轉(zhuǎn)速變快,且隨著KEY5

25、按下次數(shù)的增多電機(jī)逐漸變快。同時在上位機(jī)上可以看見當(dāng)前的轉(zhuǎn)速。</p><p><b>  5、課程設(shè)計體會</b></p><p>  一方面,通過這一周的課程設(shè)計,我對課本上關(guān)于LPC2138的硬件結(jié)構(gòu)的知識有了更加深刻的理解,而且對其用法掌握得更加熟練。在課程設(shè)計過程中,能夠不斷地發(fā)現(xiàn)問題,并想辦法解決,如此提高了我自己解決問題的能力。在編寫程序方面,我對ARM

26、7編程結(jié)構(gòu)和技巧也有了深刻的理解和領(lǐng)會。此次課程設(shè)計還讓我知道什么是實(shí)時系統(tǒng)以及如何構(gòu)建一個簡單的實(shí)時系統(tǒng)?,F(xiàn)在我已經(jīng)基本掌握了構(gòu)建實(shí)時系統(tǒng)的方法。還有我明白了流程圖的重要性,以前在編程的時候,我從不寫流程圖,直接開始寫程序,這樣出現(xiàn)了不該出現(xiàn)的問題。但這次課程設(shè)計時,我試著先寫出流程圖然后按照流程圖編寫程序,結(jié)果錯誤少了很多,即使有錯誤只要根據(jù)流程圖一查就知道錯在哪里,這讓我節(jié)省了大量的時間和精力。所以我認(rèn)識到,以后要編寫程序時,先寫

27、流程圖是很有必要的。</p><p>  另一方面,我感覺這一周的課程設(shè)計我自己的效率太低。有時候被一些問題困惑了很久,但經(jīng)過老師的指點(diǎn),我才恍然大悟,原來只要換個方式思考問題就能想到很好的方法。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1] 周立功.《深入淺出ARM7——LPC213X/214X(上冊)》[M].北

28、京:北京航空航天大學(xué)出版社,2008:146-175,226-240,275-286.</p><p>  [2] 周立功.《ARM嵌入式系統(tǒng)實(shí)驗(yàn)教程(三)》[M].北京:北京航空航天大學(xué)出版社,</p><p>  2005:134-140.</p><p>  [3] 冷洪濱,鄔義杰.基于計數(shù)器/定時器的步進(jìn)電機(jī)可編程控制接口電路設(shè)計[J]北京:組合機(jī)床與自動化

29、加工技術(shù),2004.</p><p>  [4 ] 周明德.微型計算機(jī)硬件軟件及其應(yīng)用.北京:清華大學(xué)出版社 ,1993.</p><p><b>  附錄:</b></p><p><b>  實(shí)訓(xùn)程序</b></p><p>  #include "config.h"<

30、/p><p>  #define HC595_CS (1 << 29) // P0.29口為74HC595的片選</p><p>  #define LED1 1<<18 //P1.18</p><p>  #define LED2 1<<19 //P1.19</p><p&g

31、t;  #define LED3 1<<20 //P1.20</p><p>  #define LED4 1<<21 //P1.21</p><p>  #define bj_qd 0x0f << 22 //步進(jìn)電機(jī)驅(qū)動腳p1.22~p1.25</p><p>  uint32 bj[8]={1<<

32、 22,3<< 22,1<< 23,3<< 23,1<< 24,3<< 24,1<< 25,9<< 22};</p><p>  //0A, 1AB 2B3BC4C 5CD 6D7DA</p><p>  const uint32 KEY1 = 1 << 16;

33、// P0.16連接KEY1</p><p>  const uint32 KEY2 = 1 << 17;// P0.17連接KEY1</p><p>  const uint32 KEY3 = 1 << 18;// P0.18連接KEY1</p><p>  const uint32 KEY4 = 1 << 19;

34、// P0.19連接KEY1</p><p>  const uint32 KEY5 = 1 << 20;// P0.20連接KEY1</p><p>  const uint32 KEY6 = 1 << 21;// P0.21連接KEY1</p><p>  uint8 i, n=0,t=0,m=20,cnt=0;</p&

35、gt;<p>  uint8 bj_mod=0;//0-八拍zh正轉(zhuǎn),1-八拍反轉(zhuǎn),2-雙四拍正轉(zhuǎn),3-雙四拍反轉(zhuǎn)/********************************************************************</p><p>  ** 函數(shù)名稱:DelayNS()</p><p>  ** 函數(shù)功能:長軟件延時</p>

36、<p>  ** 入口參數(shù):dly延時參數(shù),值越大,延時越久</p><p><b>  ** 出口參數(shù):無</b></p><p>  ********************************************************************/</p><p>  void DelayNS(ui

37、nt32 dly)</p><p><b>  { </b></p><p>  uint32 i;</p><p>  for(; dly>0; dly--) </p><p>  for(i=0; i<50000; i++);</p><p><b>  }<

38、/b></p><p>  #defineUART_BPS115200// 通訊波特率115200</p><p>  /********************************************************************</p><p>  ** 函數(shù)名稱 :UART0_Init()</p><p

39、>  ** 函數(shù)功能 :初始化串口0:波特率115200,8位數(shù)據(jù)位,1位停止位,無奇偶校驗(yàn)。</p><p>  ** 入口參數(shù) :無</p><p>  ** 出口參數(shù) :無</p><p>  *******************************************************************/</p>&

40、lt;p>  void UART0_Init (void)</p><p><b>  {</b></p><p>  uint16 Fdiv;</p><p>  U0LCR = 0x83; // DLAB = 1</p><p>  Fdiv = (Fpclk / 16) / UART

41、_BPS;</p><p>  U0DLM = Fdiv / 256;</p><p>  U0DLL = Fdiv % 256;</p><p>  U0LCR = 0x03;</p><p><b>  }</b></p><p>  /****************************

42、****************************************</p><p>  ** 函數(shù)名稱 :UART0_SendByte()</p><p>  ** 函數(shù)功能 :向串口發(fā)送字節(jié)數(shù)據(jù),并等待數(shù)據(jù)發(fā)送完畢。</p><p>  ** 入口參數(shù) :data要發(fā)送的數(shù)據(jù)</p><p>  ** 出口參數(shù) :無<

43、;/p><p>  *******************************************************************/</p><p>  void UART0_SendByte (uint8 data)</p><p><b>  {</b></p><p>  U0THR = dat

44、a;</p><p>  while ((U0LSR & 0x40) == 0);// 等待數(shù)據(jù)發(fā)送完畢</p><p><b>  }</b></p><p>  /********************************************************************</p><

45、p>  ** 函數(shù)名稱 :PC_DispChar()</p><p>  ** 函數(shù)功能 :向PC機(jī)發(fā)送顯示字符。</p><p>  ** 入口參數(shù) :x顯示字符的橫坐標(biāo)</p><p>  ** y顯示字符的縱坐標(biāo)</p><p>  ** chr顯示的字符,不能為ff</p><p&g

46、t;  ** color顯示的狀態(tài),包括前景色、背景色、閃爍位。與DOS字符顯示一樣:0~3,前景色,4~6,背景色,7,閃爍位。</p><p>  ** 出口參數(shù) :無</p><p>  ********************************************************************/</p><p>  v

47、oid PC_DispChar (uint8 x, uint8 y, uint8 chr, uint8 color)</p><p><b>  {</b></p><p>  UART0_SendByte(0xff);// 起始字符</p><p>  UART0_SendByte(x);</p><p>  UAR

48、T0_SendByte(y);</p><p>  UART0_SendByte(chr);</p><p>  UART0_SendByte(color);</p><p><b>  }</b></p><p>  /**************************************************

49、******************</p><p>  ** 函數(shù)名稱 :ISendStr()</p><p>  ** 函數(shù)功能 :向上位機(jī)發(fā)送字符串。</p><p>  ** 入口參數(shù) :x顯示字符的橫坐標(biāo)</p><p>  ** y顯示字符的縱坐標(biāo)</p><p>  ** colo

50、r顯示的狀態(tài),包括前景色、背景色、閃爍位。</p><p>  **與DOS字符顯示一樣:0~3,前景色,4~6,背景色,7,閃爍位。</p><p>  ** str要發(fā)送的字符串,以'\0'結(jié)束</p><p>  ** 出口參數(shù) :無</p><p>  *********************

51、***********************************************/</p><p>  void ISendStr (uint8 x, uint8 y, uint8 color, char *str)</p><p><b>  {</b></p><p><b>  while (1)</b>

52、;</p><p><b>  {</b></p><p>  if (*str == '\0')break;// 結(jié)束字符</p><p>  PC_DispChar(x++, y, *str++, color);</p><p>  if (x >= 80)</p><p

53、><b>  {</b></p><p><b>  x = 0;</b></p><p><b>  y++;</b></p><p><b>  }</b></p><p><b>  }</b></p>&l

54、t;p><b>  }</b></p><p>  /********************************************************************** 函數(shù)名稱:MSPI_Init()</p><p>  ** 函數(shù)功能:初始化SPI接口,設(shè)置為主機(jī)。</p><p><b>  **

55、 入口參數(shù):無</b></p><p><b>  ** 出口參數(shù):無</b></p><p>  ********************************************************************/</p><p>  void MSPI_Init(void)</p><

56、p><b>  { </b></p><p>  PINSEL0 = (PINSEL0 & (~(0xFF << 8))) | (0x55 << 8) ;</p><p>  SPCCR = 0x52; // 設(shè)置SPI時鐘分頻</p><p>  SPCR = (0 <

57、< 3) |// CPHA = 0, 數(shù)據(jù)在SCK 的第一個時鐘沿采樣</p><p>  (1 << 4) |// CPOL = 1, SCK 為低有效</p><p>  (1 << 5) |// MSTR = 1, SPI 處于主模式</p><p>  (0 << 6) |// LSBF

58、 = 0, SPI 數(shù)據(jù)傳輸MSB (位7)在先</p><p>  (0 << 7);// SPIE = 0, SPI 中斷被禁止</p><p><b>  }</b></p><p>  /*****************************************************************

59、**</p><p>  ** 函數(shù)名稱:MSPI_SendData()</p><p>  ** 函數(shù)功能:向SPI總線發(fā)送數(shù)據(jù)</p><p>  ** 入口參數(shù):data待發(fā)送的數(shù)據(jù)</p><p>  ** 出口參數(shù):返回值為讀取的數(shù)據(jù)</p><p>  **************************

60、*****************************************/</p><p>  uint8 MSPI_SendData(uint8 data)</p><p><b>  { </b></p><p>  IOCLR = HC595_CS; // 片選74HC595</p><

61、;p>  SPI_SPDR = data;</p><p>  while( 0 == (SPI_SPSR & 0x80));// 等待SPIF置位,即等待數(shù)據(jù)發(fā)送完畢</p><p>  IOSET = HC595_CS;</p><p>  return(SPI_SPDR);}</p><p>  /* 此表為LED0~F

62、以及L、P的字模 */</p><p>  uint8 const DISP_TAB[10] = {</p><p>  // 0 1 2 3 4 5 6 7 8 9 </p><p>  0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8, 0x80,0x90 };&l

63、t;/p><p>  /*******************************************************************</p><p>  ** 函數(shù)名稱:qudong()</p><p>  ** 函數(shù)功能:驅(qū)動步進(jìn)電機(jī)轉(zhuǎn)動</p><p><b>  ** 入口參數(shù):無</b>&l

64、t;/p><p><b>  ** 出口參數(shù):無</b></p><p>  ********************************************************************/</p><p>  void qudong()</p><p><b>  {</b>

65、</p><p>  IO1SET=0x0f<<22;//不輸出</p><p>  switch ( bj_mod)</p><p><b>  {</b></p><p>  case 0: //八拍正轉(zhuǎn)</p><p>  IO1CLR=bj[c

66、nt%8];</p><p><b>  break;</b></p><p>  case 1://八拍反轉(zhuǎn)</p><p>  IO1CLR=bj[7-(cnt%8)];</p><p><b>  break;</b></p><p>  case 2://雙四拍正

67、轉(zhuǎn)</p><p>  IO1CLR=bj[(cnt%4)*2+1];</p><p><b>  break;</b></p><p>  case 3://雙四拍反轉(zhuǎn)</p><p>  IO1CLR=bj[7-(cnt%4)*2];</p><p><b>  break;<

68、;/b></p><p>  default:break;</p><p><b>  }</b></p><p>  T0IR = 0x01;/* 清除中斷標(biāo)志*/</p><p>  VICVectAddr = 0x00;/* 通知VIC中斷處理結(jié)束*/</p><p

69、><b>  }</b></p><p>  /********************************************************************</p><p>  ** 函數(shù)名稱 :IRQ_Timer0()</p><p>  ** 函數(shù)功能 :定時器0中斷服務(wù)程序,定時調(diào)用qudong()程序,

70、使步進(jìn)電機(jī)按節(jié)拍轉(zhuǎn)動。</p><p>  ** 入口參數(shù) :無</p><p>  ** 出口參數(shù) :無</p><p>  ********************************************************************/</p><p>  void __irq IRQ_Timer0 (void)

71、</p><p><b>  {</b></p><p><b>  t++;</b></p><p><b>  cnt++;</b></p><p><b>  qudong();</b></p><p>  MSPI_Send

72、Data(DISP_TAB[i]);// 發(fā)送顯示</p><p>  T0IR = 0x01;/* 清除中斷標(biāo)志*/</p><p>  VICVectAddr = 0x00;/* 通知VIC中斷處理結(jié)束*/</p><p><b>  }</b></p><p>  /***********

73、*********************************************************</p><p>  ** 函數(shù)名稱 :main()</p><p>  ** 函數(shù)功能 :程序初始化,AD采樣和按鍵調(diào)節(jié)電機(jī)轉(zhuǎn)速,通過串口向上位機(jī)發(fā)送顯示數(shù)據(jù)。</p><p>  ** 調(diào)試說明 :需要將跳線JP6分別選擇TXD0和RXD0端<

74、/p><p>  ** KEY1~KEY6連接P0.16~P0.21,步進(jìn)電機(jī)四個輸入端分別接P1.22~P1.25。</p><p>  ********************************************************************/</p><p>  uint8 rcv_data; </p&g

75、t;<p>  int main (void)</p><p><b>  {</b></p><p>  uint32 ADC_Data,temp,zhuansu=100,zhuansu1=100,zhuansu2=200;</p><p>  uint32 bapaizhengzhuan,bapaifanzhuan,shsip

76、aizhengzhuan,shsipaifanzhuan;</p><p>  char str[20];</p><p>  PINSEL0 = 0x00005505; // 設(shè)置SPI管腳連接</p><p>  PINSEL1 = 0x10000000;</p><p>  //PINSEL1 = 1 << 28;

77、// P0.30連接到AD0.3</p><p>  IODIR = HC595_CS;</p><p>  PINSEL2 = PINSEL2 & (~0x08);// P1[25:16]連接GPIO</p><p>  IO1DIR =bj_qd;// 設(shè)置bjdj_qd控制口為輸出</p><p>  UART0_In

78、it();</p><p>  MSPI_Init();// 初始化SPI</p><p>  IRQEnable();/* IRQ中斷使能*/</p><p>  /* 定時器0初始化 */</p><p>  T0TC = 0;/* 定時器設(shè)置為0*/</p><p>  T0

79、PR = 0;/* 時鐘不分頻*/</p><p>  T0MCR = 0x03; /* 設(shè)置T0MR0匹配后復(fù)位T0TC,并產(chǎn)生中斷標(biāo)志*/</p><p>  T0MR0 = Fpclk /zhuansu;/* 0.5秒鐘定時*/</p><p>  T0TCR = 0x01;/* 啟動定時器*/</p>&

80、lt;p>  /* 設(shè)置定時器0中斷IRQ */</p><p>  VICIntSelect = 0x00;/* 所有中斷通道設(shè)置為IRQ中斷*/</p><p>  VICVectCntl0 = 0x20 | 0x04;/* 設(shè)置定時器0中斷通道分配最高優(yōu)先級*/</p><p>  VICVectAddr0 = (uint32)IRQ_Ti

81、mer0;/* 設(shè)置中斷服務(wù)程序地址*/</p><p>  VICIntEnable = 1 << 0x04;/* 使能定時器0中斷*/</p><p><b>  while (1)</b></p><p><b>  { </b></p><p>  if

82、((IO0PIN & KEY1) == 0) //KEY1 MIDE0</p><p><b>  { </b></p><p>  DelayNS(10);</p><p>  if((IO0PIN & KEY1) == 0)</p><p><b>  { <

83、/b></p><p><b>  bj_mod=0;</b></p><p><b>  i=0;</b></p><p>  MSPI_SendData(DISP_TAB[0]);// 發(fā)送到數(shù)碼管顯示</p><p>  bapaizhengzhuan = 3*zhuansu/20;&

84、lt;/p><p>  sprintf(str, "bapaizhengzhuan:%4d",bapaizhengzhuan);// 發(fā)送到上位機(jī)顯示</p><p>  ISendStr(0,4,0x30,str);</p><p>  while((IO0PIN & KEY1) == 0); </p><p&g

85、t;<b>  }</b></p><p><b>  }</b></p><p>  if((IO0PIN & KEY2) == 0) //KEY2 MODE1</p><p><b>  { </b></p><p>  DelayNS(10);<

86、/p><p>  if((IO0PIN & KEY2) == 0)</p><p><b>  {</b></p><p><b>  bj_mod=1;</b></p><p><b>  i=2;</b></p><p>  MSPI_SendD

87、ata(DISP_TAB[i]);// 發(fā)送到數(shù)碼管顯示</p><p>  bapaifanzhuan=3*zhuansu/20;</p><p>  sprintf(str, "bapaifanzhuan:%4d",bapaifanzhuan);// 發(fā)送到上位機(jī)顯示</p><p>  ISendStr(0,6,0x30,str);<

88、;/p><p>  while((IO0PIN & KEY2) == 0); </p><p><b>  } </b></p><p><b>  }</b></p><p>  if((IO0PIN & KEY3) == 0) //KEY3 MODE2<

89、;/p><p><b>  { </b></p><p>  DelayNS(10);</p><p>  if((IO0PIN & KEY3) == 0)</p><p><b>  {</b></p><p><b>  bj_mod=2;</b>

90、;</p><p><b>  i=3;</b></p><p>  MSPI_SendData(DISP_TAB[i]);// 發(fā)送到數(shù)碼管顯示</p><p>  shsipaizhengzhuan=3*zhuansu/10;</p><p>  sprintf(str, "shsipaizhengzhu

91、an:%4d",shsipaizhengzhuan);// 發(fā)送到上位機(jī)顯示</p><p>  ISendStr(0,8,0x30,str);</p><p>  while((IO0PIN & KEY3) == 0); </p><p><b>  } </b></p><p&g

92、t;<b>  }</b></p><p>  if((IO0PIN & KEY4) == 0) //KEY3 MODE3</p><p><b>  { </b></p><p>  DelayNS(10); </p><p>  if((IO0PIN

93、 & KEY4) == 0)</p><p><b>  {</b></p><p><b>  bj_mod=3;</b></p><p>  i=4; </p><p>  MSPI_SendData(DISP_TAB[i]);// 發(fā)送到數(shù)碼管顯示</p>&

94、lt;p>  shsipaifanzhuan=3*zhuansu/10;</p><p>  sprintf(str, "shsipaifanzhuan:%4d",shsipaifanzhuan);// 發(fā)送到上位機(jī)顯示</p><p>  ISendStr(0,10,0x30,str);</p><p>  while((IO0PIN &

95、amp; KEY4) == 0); </p><p><b>  } </b></p><p><b>  }</b></p><p>  if((IO0PIN & KEY5) == 0)</p><p><b>  { </b></p>&l

96、t;p>  DelayNS(10);</p><p>  if((IO0PIN & KEY5) == 0)</p><p><b>  {</b></p><p><b>  i=5;</b></p><p>  zhuansu2+=20;zhuansu1=zhuansu; //

97、按鍵KEY5減速</p><p>  MSPI_SendData(DISP_TAB[i]);// 發(fā)送到數(shù)碼管顯示</p><p>  if(zhuansu2!=zhuansu1)zhuansu=zhuansu2; // 發(fā)送到上位機(jī)顯示</p><p>  while((IO0PIN & KEY5) == 0); <

98、/p><p><b>  } </b></p><p><b>  }</b></p><p>  if((IO0PIN & KEY6) == 0)</p><p><b>  { </b></p><p>  DelayNS(10);</

99、p><p>  if((IO0PIN & KEY6) == 0)</p><p><b>  {</b></p><p><b>  i=6;</b></p><p>  zhuansu2-=20; // 按鍵KEY6加速</p><p>

100、;  zhuansu1=zhuansu;</p><p>  MSPI_SendData(DISP_TAB[i]);// 發(fā)送到數(shù)碼管顯示</p><p>  if(zhuansu2!=zhuansu1)zhuansu=zhuansu2; // 發(fā)送到上位機(jī)顯示</p><p>  while((IO0PIN & KEY6) == 0);&

101、lt;/p><p><b>  } </b></p><p><b>  }</b></p><p>  sprintf(str, "ADC_Data:%4d",ADC_Data);</p><p>  ISendStr(0,0,0x30,str);</p>

102、<p>  sprintf(str, "zhuansu:%4d",zhuansu); // 發(fā)送到上位機(jī)顯示</p><p>  ISendStr(0,2,0x30,str);</p><p><b>  }</b></p><p><b>  return 0;</b></p>

溫馨提示

  • 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

提交評論