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

下載本文檔

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

文檔簡介

1、<p>  基于TMS320F2812步進(jìn)電機控制系統(tǒng)</p><p>  【摘要】設(shè)計基于DSP芯片TMS320F2812控制步進(jìn)電機運轉(zhuǎn)。TMS320F281x系列處理器是基于TMS320C2xx內(nèi)核的32位定點數(shù)字信號處理器,器件上集成了多種先進(jìn)的外設(shè),為電機及其他運動控制領(lǐng)域應(yīng)用提供了良好的平臺。設(shè)計實現(xiàn)對步進(jìn)電機調(diào)速、定時、定步、正反轉(zhuǎn)以及勵磁方式控制,并通過TMS320F2812片內(nèi)集成AD

2、C模塊獲取電機電流。LCD12864結(jié)合四個按鍵以菜單模式選擇各項功能,人機交換界面友好。該設(shè)計可精確控制步進(jìn)電機運轉(zhuǎn),按鍵控制靈敏,能實現(xiàn)步進(jìn)電機長時間工作。</p><p>  關(guān)鍵詞:DSP;步進(jìn)電機;精確控制;ADC;菜單模式</p><p><b>  電子系統(tǒng)設(shè)計任務(wù)書</b></p><p>  本次設(shè)計以TMS320F2812

3、DSP芯片為核心控制步進(jìn)電機運轉(zhuǎn),并通過LCD12864顯示相關(guān)參數(shù)。</p><p>  (1)設(shè)計實現(xiàn)基于TMS320F2812的最小控制系統(tǒng);</p><p> ?。?)能利用TMS320F2812控制步進(jìn)電機轉(zhuǎn)向、轉(zhuǎn)速等;</p><p>  (3)用12864液晶顯示轉(zhuǎn)向、轉(zhuǎn)速、操作模式等狀態(tài)信息參數(shù);</p><p> ?。?)實

4、現(xiàn)其他外加功能。</p><p>  2011年9月29日</p><p><b>  目錄 </b></p><p>  1 系統(tǒng)方案 …………………………………………………………………………………… 1</p><p>  1.1 設(shè)計要求……………………………………………………………………………………1</p

5、><p>  1.2 系統(tǒng)總體框圖………………………………………………………………………………1</p><p>  1.3系統(tǒng)方案論證………………………………………………………………………………1</p><p>  1.3.1控制器的論證與選擇……………………………………………………………………1</p><p>  1.3.2電源模塊的論證

6、與選擇…………………………………………………………………2</p><p>  1.3.3電機驅(qū)動模塊選擇…………………………………………………………… 3</p><p>  2. 系統(tǒng)理論分析與計算………………………………………………………………………3</p><p>  2.1 步進(jìn)電機轉(zhuǎn)速計算……………………………………………………………………… 3<

7、;/p><p>  2.2 TMS320F2812的AD校正…………………………………………………………………3</p><p>  3. 硬件電路與軟件設(shè)計………………………………………………………………………4</p><p>  3.1各模塊電路設(shè)計……………………………………………………………………………4</p><p>  3.1.

8、1 電源模塊…………………………………………………………………………………4</p><p>  3.1.2步進(jìn)電機模塊……………………………………………………………………………4</p><p>  3.2程序設(shè)計……………………………………………………………………………………5</p><p>  3.2.1程序功能描述與設(shè)計思路…………………………………………

9、……………………5</p><p>  3.2.2程序流程圖………………………………………………………………………………6</p><p>  3.2.2.1 主程序流程圖…………………………………………………………………………6</p><p>  3.2.2.2 定時模式狀態(tài)流程圖…………………………………………………………………7</p><

10、;p>  3.2.2.3 定步模式狀態(tài)流程圖…………………………………………………………………8</p><p>  3.2.2.4 勵磁方式選擇流程圖…………………………………………………………………8</p><p>  3.2.2.5 按鍵實時消抖流程圖…………………………………………………………………9</p><p>  4.總結(jié)與心得…………………

11、…………………………………………………………………9</p><p>  5.參考文獻(xiàn)………………………………………………………………………………………10</p><p>  附錄………………………………………………………………………………………………11</p><p>  1.設(shè)計PCB圖……………………………………………………………………………………11&l

12、t;/p><p>  2.相關(guān)程序………………………………………………………………………………………11</p><p><b>  1. 系統(tǒng)方案</b></p><p><b>  1.1 設(shè)計要求</b></p><p>  設(shè)計并制作一個基于TMS320F2812步進(jìn)電機控制系統(tǒng),能控制步進(jìn)電機

13、各種狀態(tài),并用LCD12864顯示,按鍵控制靈敏,能夠長時間工作。</p><p>  1.2 系統(tǒng)總體框圖</p><p>  本系統(tǒng)主要由TMS320F2812模塊、電源模塊、液晶顯示模塊、電機驅(qū)動模塊組成,系統(tǒng)框圖如圖1。 </p><p><b>  圖1 系統(tǒng)總體框圖</b></p><p>  1. 3系統(tǒng)方

14、案論證</p><p>  1. 3. 1控制器的論證與選擇</p><p>  方案一:采用STC89C52單片機芯片控制系統(tǒng)。STC89C52是一種低功耗、高性能CMOS8位微控制器,最高運作頻率35Mhz,具有 8K 在系統(tǒng)可編程Flash 存儲器,價格便宜。但其RAM只有512Byte空間,不能用于在線調(diào)試。且芯片沒有集成AD模塊,需要另外搭建AD電路,增加了電路的復(fù)雜性。<

15、/p><p>  方案二:采用TMS320F2812DSP處理芯片控制系統(tǒng)。TMS320F2812具有32位的運算精度,采用增強的哈佛總線結(jié)構(gòu)能夠完成指令的并行處理,在單周期內(nèi)通過流水線完成指令和數(shù)據(jù)的同時提取,處理能力可達(dá)150MIPS。支持JTAG邊界掃描接口,可實現(xiàn)在線調(diào)試。其片上具有128K*16位的Flash存儲器和18K*16位的SRAM,可存儲龐大的程序。TMS320F2812器件上還集成了多種先進(jìn)的外

16、設(shè)(如AD模塊),為電機及其他運動控制領(lǐng)域應(yīng)用提供了良好的平臺。</p><p>  基于TMS320F2812上述諸多優(yōu)點,本次設(shè)計采用其作為系統(tǒng)控制芯片。</p><p>  1. 3. 2電源模塊的論證與選擇</p><p>  由于采用SANYODENKI 103-770-1三洋步進(jìn)電機,其工作電流最大達(dá)到1A,可通過7812和7805兩級穩(wěn)壓實現(xiàn)1A大電流

17、輸出。但由于穩(wěn)壓芯片壓降大,導(dǎo)致大電流輸出時耗散功率(P=(Vi-Vo)Io)很大,需要解決發(fā)熱問題。</p><p>  方案一:采用7809在中間過渡,通過這樣兩級的調(diào)整,壓差分別是降為3V和4V,兩塊電源芯片耗散功率及溫度隨之降低。這樣固然對避免發(fā)燙有一定的幫助,但是我們注意到,電源芯片78XX的效率只有60%到75%,通過這么多的環(huán)節(jié)到5V的時候功率已經(jīng)比較小了。沒有負(fù)載的時候電源芯片的輸出是5V,加上負(fù)

18、載后輸出容易被拉低,特別是大負(fù)載大電流時。</p><p>  方案二:采用降壓功耗電阻(串接在12V與7805的輸入端之間),來降低7805的耗散功率,電阻取值可用電阻壓降(取3~4V)除以7805的最大輸出電流Iom求得。但是加個功耗電阻,由于系統(tǒng)的電流是變化的,那么功耗電阻上的電壓會很不穩(wěn)定的變化,這樣7805的輸入端電壓也會不穩(wěn)定。而且長時間大電流工作時,如果電阻發(fā)熱嚴(yán)重,電阻阻值會增大,而7805輸入電

19、壓不能低于8V,否則7805工作不正常,這樣做容易使系統(tǒng)供電不穩(wěn)定。</p><p>  方案三:采用大面積的散熱器進(jìn)行散熱。78XX最大輸出電流可達(dá)1.5A,只要散熱快,就能長時間驅(qū)動最大1A的電機。 實驗證明,使用大面積散熱片后穩(wěn)壓芯片長時間大電流輸出都不會很燙,系統(tǒng)能穩(wěn)定工作。</p><p>  方案四:用PNP管擴流,這樣的話可以把7805的負(fù)載能力提高,還在大電流的時候提高效率

20、,從而降低功耗。但其電路相對復(fù)雜,而且對擴流PNP管要求高。</p><p>  綜上所述,選擇方案三解決發(fā)熱問題,同時簡化了電路,提高了電路的穩(wěn)定性。</p><p>  1.3.3電機驅(qū)動模塊選擇</p><p>  方案一:三極管搭建驅(qū)動電路,不過比較復(fù)雜,可靠性也會降低。</p><p>  方案二:選用專用的電機驅(qū)動芯片L298N,

21、接口簡單,操作方便,且輸出電流可達(dá)2.5 A,能實現(xiàn)對1A電機的驅(qū)動。</p><p>  方案三:使用達(dá)林頓驅(qū)動器ULN2003。該芯片可最多驅(qū)動八線步進(jìn)電機。但是ULN2003最大灌電流只有500mA,不能滿足該控制系統(tǒng)大電流驅(qū)動的要求。</p><p>  綜上,選擇L298N作為電機驅(qū)動。</p><p>  2. 系統(tǒng)理論分析與計算</p>

22、<p>  2.1 步進(jìn)電機轉(zhuǎn)速計算</p><p>  不同的勵磁方式電機有不同的步距角。全步(一相、二相)勵磁方式步距角為1.8°,令步進(jìn)時間為T(s),則每1s步進(jìn)度數(shù)為 ,每分鐘的轉(zhuǎn)數(shù)為,即轉(zhuǎn)速V=0.3/T;同理,半步(一二相)勵磁方式步距角為0.9°,轉(zhuǎn)速V=0.15/T。</p><p>  2.2 TMS320F2812的AD校正</p

23、><p>  ADC的轉(zhuǎn)換結(jié)果和實際值相比,誤差比較大,最大可達(dá)到9%左右。通過AD校正,可將誤差控制在1%左右。2812的ADC轉(zhuǎn)換精度較差的主要原因是存在增益誤差和偏移誤差,要提高轉(zhuǎn)換精度必須對這兩種誤差進(jìn)行補償。</p><p>  理想的12位ADC轉(zhuǎn)換模擬量輸入X和數(shù)字量輸出Y關(guān)系為:Y=mi*X (mi=4095/3=1365); 設(shè)實際增益為ma,實際偏移為b,則Y=ma*X+

24、b. 通過對開發(fā)板上3.3V和1.8V兩路精準(zhǔn)電壓的測量,解二元一次方程可得ma 和 b 。只要知道數(shù)字量轉(zhuǎn)換結(jié)果Y,就可以得到實際的輸入量.通過計算得ma=1290/1289, b=35 ; 故取ma=1;b=35;由于AD轉(zhuǎn)換結(jié)果數(shù)據(jù)時刻變化,因此無法精確獲得ma 和 b 值,但可通過平均值法求得ma 和 b ,使AD轉(zhuǎn)換誤差控制在1%左右。</p><p>  3. 硬件電路與軟件設(shè)計</p>

25、<p>  3. 1各模塊電路設(shè)計</p><p>  3.1.1 電源模塊</p><p>  220V交流市電通過電源變壓器變換成交流低壓15V,再經(jīng)過橋式整流電路D6~D9和濾波電容C2的整流和濾波,在固定式三端穩(wěn)壓器LM7812的Vin和GND兩端形成一個并不十分穩(wěn)定的直流電壓(該電壓常常會因為市電電壓的波動或負(fù)載的變化等原因而發(fā)生變化)。此直流電壓經(jīng)過7812和78

26、05的穩(wěn)壓和C3~C9的濾波便在穩(wěn)壓電源的輸出端產(chǎn)生了精度高、穩(wěn)定度好的直流輸出電壓。</p><p>  D2、D3、D4二極管起保護(hù)作用。</p><p>  3. 1. 2步進(jìn)電機模塊</p><p>  圖5 步進(jìn)電機模塊原理圖</p><p>  圖中左邊光電耦合器起電氣隔離和電平轉(zhuǎn)換作用,中間為L298N驅(qū)動芯片,D12~D1

27、9二極管起保護(hù)和續(xù)流作用。右邊10個10電阻(0.25W)并聯(lián)得到1(2.5W)采樣電阻進(jìn)行AD采樣。</p><p><b>  3. 2程序設(shè)計</b></p><p>  3. 2. 1程序功能描述與設(shè)計思路</p><p>  設(shè)計實現(xiàn)對步進(jìn)電機調(diào)速、定時、定步、正反轉(zhuǎn)以及勵磁方式控制,并通過TMS320F2812片內(nèi)集成ADC模塊獲取

28、電機電流。LCD12864結(jié)合四個按鍵以菜單模式選擇各項功能。</p><p>  (1)為防止功能的沖突,程序中應(yīng)用大量標(biāo)志來記錄各種功能狀態(tài),同一狀態(tài)下可有顯示標(biāo)志和功能執(zhí)行標(biāo)志。顯示標(biāo)志用來顯示液晶,顯示完成后標(biāo)志立即清零,避免液晶一直刷新影響顯示效果;功能執(zhí)行標(biāo)志能夠保持功能狀態(tài)信息,等待功能選擇,在功能執(zhí)行完成(一般在返回上級操作時)后清零標(biāo)志。</p><p> ?。?)利用定

29、時器進(jìn)行按鍵實時消抖。利用定時器可對按鍵進(jìn)入和退出都進(jìn)行實時消抖,這樣不需等待按鍵釋放就能保證每次按下按鍵為單次觸發(fā),避免了延時按鍵消抖占時、要等待的弊端,極大地提高了CPU工作效率,實時性好。由于按鍵消抖不需要很高的優(yōu)先級,故程序中使用EVA通用定時器1進(jìn)行按鍵消抖。同時該定時器也用作時鐘計數(shù),這樣共用可減少定時器的使用,提高程序的運行效率。</p><p>  (3)CPU定時器0用作步進(jìn)脈沖延時來控制電機轉(zhuǎn)

30、速。由于電機轉(zhuǎn)速要求精度高,故使用優(yōu)先級最高的定時器—CPU定時器0作為步進(jìn)延時。</p><p> ?。?)過采樣法進(jìn)行AD轉(zhuǎn)換。程序?qū)我煌ǖ蓝啻尾蓸樱ㄟ^取平均值法提高采樣精度,同時可以減慢AD轉(zhuǎn)換結(jié)果的變化,有利于LCD12864液晶顯示。</p><p>  3. 2. 2程序流程圖</p><p>  3.2.2.1 主程序流程圖</p>

31、<p>  3.2.2.2 定時模式狀態(tài)流程圖 </p><p>  3.2.2.3 定步模式狀態(tài)流程圖</p><p>  3.2.2.4 勵磁方式選擇流程圖</p><p>  3.2.2.5 按鍵實時消抖流程圖</p><p><b>  4.總結(jié)與心得</b></p>

32、<p>  通過本次系統(tǒng)設(shè)計,收獲了許多。</p><p> ?。?)學(xué)會對DSP芯片TMS320F2812的初步控制應(yīng)用。設(shè)計過程中,通過老師課堂講解《DSP控制器原理及應(yīng)用》以及課后學(xué)習(xí)各種參考書籍,對TMS320F2812理論知識有了較深入的了解,然后通過對SR-DSP2812V20開發(fā)板的實驗調(diào)試,掌握了對SR-DSP2812V20開發(fā)板的基本應(yīng)用。</p><p>  

33、(2)在程序應(yīng)用方面,掌握了按鍵實時消抖原理及其編程應(yīng)用,懂得了應(yīng)用標(biāo)志來規(guī)劃功能狀態(tài)的思想。這兩點能夠極大地優(yōu)化程序設(shè)計,為以后的程序設(shè)計提供了很好的方案。同時,通過對上千行程序的編寫,提高了程序調(diào)試分析能力。</p><p>  (3)硬件設(shè)計方面。為了實現(xiàn)1A電流輸出的電源設(shè)計,通過相關(guān)書籍和互聯(lián)網(wǎng)查閱了大量資料,從中學(xué)到了關(guān)于電源方面的許多知識,特別是懂得了從阻抗匹配和功率去分析問題的思想。設(shè)計中通過分析

34、并解決步進(jìn)電機控制中出現(xiàn)的現(xiàn)象及問題,加深了對步進(jìn)電機的控制應(yīng)用。</p><p>  (4)本次電子系統(tǒng)設(shè)計是畢業(yè)設(shè)計前的最后一次系統(tǒng)設(shè)計,通過認(rèn)真完成設(shè)計任務(wù)將更好的為畢業(yè)設(shè)計做準(zhǔn)備。</p><p><b>  5.參考文獻(xiàn)</b></p><p>  (1)郭天祥.《新概念51單片機C語言教程》.電子工業(yè)出版社.</p>

35、<p> ?。?)嚴(yán)桂蘭.《C語言程序設(shè)計與應(yīng)用教程》.廈門大學(xué)出版社.</p><p> ?。?)馬建國.《電子系統(tǒng)設(shè)計教程》.高等教育出版社.</p><p> ?。?)蘇奎峰、呂強、陳圣儉.《TMS320F2812原理與開發(fā)》.電子工業(yè)出版社.</p><p><b>  附錄</b></p><p>&

36、lt;b>  設(shè)計PCB圖</b></p><p><b>  相關(guān)程序</b></p><p><b>  //AD轉(zhuǎn)換</b></p><p>  if(AdcRegs.ADC_ST_FLAG.bit.SEQ1_BSY==0&&1==zhujiemian)</p><

37、;p><b>  {</b></p><p>  if(1==adfinish)</p><p><b>  {</b></p><p>  a1[m]=AdcRegs.RESULT0>>4; </p><p>  adresult+=a1[m];</p>

38、;<p><b>  m++;</b></p><p><b>  if(50==m)</b></p><p><b>  {</b></p><p><b>  m=0;</b></p><p>  if(adresult*300/2047

39、5<=35)adresult=0;</p><p>  else adresult=adresult*300/20475-35;//adresult=adresult*3*1000/4095/200;</p><p>  AdcRegs.ADCTRL2.bit.RST_SEQ1=1;</p><p>  AdcRegs.ADCTRL2.bit.SOC_SEQ1

40、=1;</p><p>  adfinish=1;</p><p><b>  } </b></p><p><b>  }</b></p><p><b>  } </b></p><p>  interrupt void ISRTimer0(

41、void)</p><p><b>  {</b></p><p>  PieCtrl.PIEACK.bit.ACK7=1;</p><p><b>  //電機驅(qū)動</b></p><p>  if(1==yixianglici)</p><p><b>  {

42、 </b></p><p>  if(0==time)</p><p><b>  {</b></p><p>  switch(MotorStep)</p><p><b>  {</b></p><p><b>  case 0:</b>

43、</p><p>  ClrF1;//0010</p><p><b>  SetF2;</b></p><p><b>  SetF3;</b></p><p><b>  SetF4;</b></p><p>  MotorStep = 1;<

44、/p><p><b>  break;</b></p><p><b>  case 1:</b></p><p>  SetF1;//0011</p><p><b>  SetF2;</b></p><p><b>  ClrF3;</b

45、></p><p><b>  SetF4;</b></p><p>  MotorStep = 2;</p><p><b>  break;</b></p><p><b>  case 2: </b></p><p>  SetF1;//0

46、001</p><p><b>  ClrF2;</b></p><p><b>  SetF3;</b></p><p>  SetF4; </p><p>  MotorStep = 3;</p><p><b>  break;</b

47、></p><p><b>  case 3:</b></p><p>  SetF1;//1001</p><p><b>  SetF2;</b></p><p><b>  SetF3;</b></p><p><b>  ClrF

48、4;</b></p><p>  MotorStep = 0;</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  else if(1==tim

49、e)</p><p><b>  {</b></p><p>  switch(MotorStep)</p><p><b>  {</b></p><p><b>  case 0:</b></p><p>  SetF1;//1001</p&g

50、t;<p><b>  SetF2;</b></p><p><b>  SetF3;</b></p><p><b>  ClrF4;</b></p><p>  MotorStep = 1;</p><p><b>  break;</b>

51、;</p><p><b>  case 1:</b></p><p>  SetF1;//0001</p><p><b>  ClrF2;</b></p><p><b>  SetF3;</b></p><p><b>  SetF4;&

52、lt;/b></p><p>  MotorStep = 2;</p><p><b>  break;</b></p><p>  case 2: </p><p>  SetF1;//0011</p><p><b>  SetF2;</b>&l

53、t;/p><p><b>  ClrF3;</b></p><p>  SetF4; </p><p>  MotorStep = 3;</p><p><b>  break;</b></p><p><b>  case 3:</b>

54、;</p><p>  ClrF1;//0010</p><p><b>  SetF2;</b></p><p><b>  SetF3;</b></p><p><b>  SetF4;</b></p><p>  MotorStep = 0;<

55、;/p><p><b>  break;</b></p><p><b>  } </b></p><p><b>  }</b></p><p><b>  }</b></p><p>  if(1==erxianglici)&

56、lt;/p><p><b>  {</b></p><p>  if(0==time)</p><p><b>  {</b></p><p>  switch(MotorStep)</p><p><b>  {</b></p><p&

57、gt;<b>  case 0:</b></p><p>  ClrF1;//0010</p><p><b>  SetF2;</b></p><p><b>  ClrF3;</b></p><p><b>  SetF4;</b></p>

58、<p>  MotorStep = 1;</p><p><b>  break;</b></p><p><b>  case 1:</b></p><p>  SetF1;//0011</p><p><b>  ClrF2;</b></p>&

59、lt;p><b>  ClrF3;</b></p><p><b>  SetF4;</b></p><p>  MotorStep = 2;</p><p><b>  break;</b></p><p><b>  case 2: </b>&

60、lt;/p><p>  SetF1;//0001</p><p><b>  ClrF2;</b></p><p><b>  SetF3;</b></p><p>  ClrF4; </p><p>  MotorStep = 3;</p>&

61、lt;p><b>  break;</b></p><p><b>  case 3:</b></p><p>  ClrF1;//1001</p><p><b>  SetF2;</b></p><p><b>  SetF3;</b></

62、p><p><b>  ClrF4;</b></p><p>  MotorStep = 0;</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p

63、><p>  else if(1==time)</p><p><b>  {</b></p><p>  switch(MotorStep)</p><p><b>  {</b></p><p><b>  case 0:</b></p>

64、<p>  ClrF1;//1001</p><p><b>  SetF2;</b></p><p><b>  SetF3;</b></p><p><b>  ClrF4;</b></p><p>  MotorStep = 1;</p><

65、p><b>  break;</b></p><p><b>  case 1:</b></p><p>  SetF1;//0001</p><p><b>  ClrF2;</b></p><p><b>  SetF3;</b></p&g

66、t;<p><b>  ClrF4;</b></p><p>  MotorStep = 2;</p><p><b>  break;</b></p><p>  case 2: </p><p>  SetF1;//0011</p><p&g

67、t;<b>  ClrF2;</b></p><p><b>  ClrF3;</b></p><p>  SetF4; </p><p>  MotorStep = 3;</p><p><b>  break;</b></p><p

68、><b>  case 3:</b></p><p>  ClrF1;//0010</p><p><b>  SetF2;</b></p><p><b>  ClrF3;</b></p><p><b>  SetF4;</b></p>

69、;<p>  MotorStep = 0;</p><p><b>  break;</b></p><p><b>  } </b></p><p><b>  }</b></p><p><b>  }</b></p>

70、<p>  if(1==yierxianglici)</p><p><b>  {</b></p><p>  if(0==time)</p><p><b>  {</b></p><p>  switch(MotorStep)</p><p><b&g

71、t;  {</b></p><p><b>  case 0:</b></p><p>  ClrF1;//0010</p><p><b>  SetF2;</b></p><p><b>  SetF3;</b></p><p><

72、b>  SetF4;</b></p><p>  MotorStep = 1;</p><p><b>  break;</b></p><p><b>  case 1:</b></p><p>  ClrF1;//0011</p><p><b&g

73、t;  SetF2;</b></p><p><b>  ClrF3;</b></p><p><b>  SetF4;</b></p><p>  MotorStep = 2;</p><p><b>  break;</b></p><p&g

74、t;<b>  case 2: </b></p><p>  SetF1;//0001</p><p><b>  SetF2;</b></p><p><b>  ClrF3;</b></p><p>  SetF4; </p><p

75、>  MotorStep = 3;</p><p><b>  break;</b></p><p><b>  case 3:</b></p><p>  SetF1;//1001</p><p><b>  ClrF2;</b></p><p>

76、;<b>  ClrF3;</b></p><p><b>  SetF4;</b></p><p>  MotorStep = 4;</p><p><b>  break;</b></p><p><b>  case 4:</b></p>

77、<p>  SetF1;//0010</p><p><b>  ClrF2;</b></p><p><b>  SetF3;</b></p><p><b>  SetF4;</b></p><p>  MotorStep = 5;</p>&l

78、t;p><b>  break;</b></p><p><b>  case 5:</b></p><p>  SetF1;//0011</p><p><b>  ClrF2;</b></p><p><b>  SetF3;</b></p

79、><p><b>  ClrF4;</b></p><p>  MotorStep = 6;</p><p><b>  break;</b></p><p><b>  case 6: </b></p><p>  SetF1;//0001</p&

80、gt;<p><b>  SetF2;</b></p><p><b>  SetF3;</b></p><p>  ClrF4; </p><p>  MotorStep = 7;</p><p><b>  break;</b></p

81、><p><b>  case 7:</b></p><p>  ClrF1;//1001</p><p><b>  SetF2;</b></p><p><b>  SetF3;</b></p><p><b>  ClrF4;</b&g

82、t;</p><p>  MotorStep = 0;</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  else if(1==time)</p&g

83、t;<p><b>  {</b></p><p>  switch(MotorStep)</p><p><b>  {</b></p><p><b>  case 0:</b></p><p>  ClrF1;//0010</p><p&

84、gt;<b>  SetF2;</b></p><p><b>  SetF3;</b></p><p><b>  ClrF4;</b></p><p>  MotorStep = 1;</p><p><b>  break;</b></p>

85、;<p><b>  case 1:</b></p><p>  SetF1;//0011</p><p><b>  SetF2;</b></p><p><b>  SetF3;</b></p><p><b>  ClrF4;</b>&

86、lt;/p><p>  MotorStep = 2;</p><p><b>  break;</b></p><p><b>  case 2: </b></p><p>  SetF1;//0001</p><p><b>  ClrF2;</b>&l

87、t;/p><p><b>  SetF3;</b></p><p>  ClrF4; </p><p>  MotorStep = 3;</p><p><b>  break;</b></p><p><b>  case 3:</b>

88、</p><p>  SetF1;//1001</p><p><b>  ClrF2;</b></p><p><b>  SetF3;</b></p><p><b>  SetF4;</b></p><p>  MotorStep = 4;<

89、/p><p><b>  break;</b></p><p><b>  case 4:</b></p><p>  SetF1;//0010</p><p><b>  ClrF2;</b></p><p><b>  ClrF3;</b

90、></p><p><b>  SetF4;</b></p><p>  MotorStep = 5;</p><p><b>  break;</b></p><p><b>  case 5:</b></p><p>  SetF1;//001

91、1</p><p><b>  SetF2;</b></p><p><b>  ClrF3;</b></p><p><b>  SetF4;</b></p><p>  MotorStep = 6;</p><p><b>  break;

92、</b></p><p><b>  case 6: </b></p><p>  ClrF1;//0001</p><p><b>  SetF2;</b></p><p><b>  ClrF3;</b></p><p>  SetF4

93、; </p><p>  MotorStep = 7;</p><p><b>  break;</b></p><p><b>  case 7:</b></p><p>  ClrF1;//1001</p><p><b>  SetF2;&

94、lt;/b></p><p><b>  SetF3;</b></p><p><b>  SetF4;</b></p><p>  MotorStep = 0;</p><p><b>  break;</b></p><p><b>

95、  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  if(1==dingbustart)</p><p><b>  {</b></p><p>  dingbucount++;

96、</p><p><b>  //多一步,需減一</b></p><p>  dingbuhaisheng=dingbupreset-dingbucount;</p><p>  if(dingbucount==dingbupreset)</p><p><b>  {</b></p>

97、<p>  dingbustart=0;</p><p>  dingbucount=0;</p><p>  StopCpuTimer0();</p><p><b>  } </b></p><p><b>  }</b></p><p><b> 

98、 }</b></p><p>  //EVA定時器1程序,實現(xiàn)按鍵消抖,時鐘計數(shù)</p><p>  interrupt void eva_timer1_isr(void)</p><p><b>  { </b></p><p>  keynow=GpioDataRegs.GPADAT.bit.GPIOA

99、0 & GpioDataRegs.GPADAT.bit.GPIOA2 & GpioDataRegs.GPBDAT.bit.GPIOB11 & GpioDataRegs.GPBDAT.bit.GPIOB14;</p><p>  if(flag==0)</p><p><b>  {</b></p><p>  if(ke

100、ynow!=keylast)</p><p><b>  {</b></p><p>  keylast=keynow;</p><p><b>  flag=1;</b></p><p><b>  }</b></p><p><b>  }

101、</b></p><p>  else if(flag==1)</p><p><b>  {</b></p><p>  if(keynow==keylast)</p><p><b>  {</b></p><p>  if(keyvalue!=keynow)

102、</p><p><b>  {</b></p><p><b>  flag=0;</b></p><p>  keyvalue=keynow;</p><p>  if(1==zhujiemian)</p><p><b>  {</b></p

103、><p>  if(0==GpioDataRegs.GPBDAT.bit.GPIOB11)</p><p><b>  {</b></p><p><b>  time++;</b></p><p>  if(2==time)time=0;</p><p><b>  

104、}</b></p><p>  else if(0==GpioDataRegs.GPBDAT.bit.GPIOB14)</p><p><b>  {</b></p><p>  moshixuanze=1;</p><p>  moshixuanzexianshi=1;</p><p&g

105、t;  zhujiemian=0;</p><p>  shijianshuaxin1=0;</p><p><b>  }</b></p><p>  else if(0==GpioDataRegs.GPADAT.bit.GPIOA0)</p><p><b>  {</b></p>

106、<p>  if(50>speed)</p><p><b>  {</b></p><p><b>  speed++;</b></p><p>  ConfigCpuTimer(&CpuTimer0,80,speed*5000);</p><p>  StartC

107、puTimer0();</p><p>  zhuansushuaxin=1;</p><p><b>  }</b></p><p><b>  }</b></p><p>  else if(0==GpioDataRegs.GPADAT.bit.GPIOA2)</p><p&

108、gt;<b>  {</b></p><p>  if(1<speed)</p><p><b>  {</b></p><p><b>  speed--;</b></p><p>  ConfigCpuTimer(&CpuTimer0,80,speed*500

109、0);</p><p>  StartCpuTimer0();</p><p>  zhuansushuaxin=1;</p><p><b>  } </b></p><p><b>  }</b></p><p><b>  }</b>

110、</p><p>  else if(1==moshixuanze)</p><p><b>  {</b></p><p>  if(0==GpioDataRegs.GPBDAT.bit.GPIOB11)//右上</p><p><b>  {</b></p><p>  

111、licifangshi=1;</p><p>  licifangshixianshi=1;</p><p>  if(0==licikeyflag)yixianglicixianshi=1;</p><p>  else if(1==licikeyflag)yixianglicixianshi=1;</p><p>  else if(2=

112、=licikeyflag)yierxianglicixianshi=1;</p><p>  else if(3==licikeyflag)erxianglicixianshi=1;</p><p>  moshixuanze=0;</p><p><b>  }</b></p><p>  else if(0==Gpi

113、oDataRegs.GPBDAT.bit.GPIOB14)//右下</p><p><b>  {</b></p><p>  zhujiemian=1;</p><p>  zhujiemianxianshi=1;</p><p>  moshixuanze=0;</p><p>  shiji

114、anshuaxin1=1;</p><p><b>  }</b></p><p>  else if(0==GpioDataRegs.GPADAT.bit.GPIOA0)//左下</p><p><b>  {</b></p><p>  dingbumoshi=1;</p><

115、;p>  dingbumoshixianshi=1;</p><p>  moshixuanze=0;</p><p><b>  }</b></p><p>  else if(0==GpioDataRegs.GPADAT.bit.GPIOA2)//左上</p><p><b>  {</b>

116、;</p><p>  dingshimoshi=1;</p><p>  dingshimoshixianshi=1;</p><p>  moshixuanze=0;</p><p><b>  } </b></p><p><b>  }</b></p&g

117、t;<p>  else if(1==dingshimoshi)</p><p><b>  {</b></p><p>  if(0==GpioDataRegs.GPBDAT.bit.GPIOB14)//右下</p><p><b>  {</b></p><p>  if(1==

118、dingshixuanze)</p><p><b>  {</b></p><p>  dingshixuanze=0;</p><p>  dingshimoshixianshi=1;</p><p>  if(0==dingshiset)flag1=0;</p><p><b> 

119、 }</b></p><p>  else if(1==dingshikaiqi||1==dingshiguangbi||1==dingshiready||1==dingshistart)</p><p><b>  {</b></p><p>  dingshikaiqi=dingshiguangbi=dingshiready=d

120、ingshistart=0;</p><p>  dingshixuanze=1;</p><p>  dingshixuanzexianshi=1;</p><p>  dingshikaiqiflag=dingshiguangbiflag=0;</p><p>  resetstart=0;</p><p>  

121、StartCpuTimer0();</p><p><b>  }</b></p><p><b>  else </b></p><p><b>  {</b></p><p>  dingshimoshi=0;</p><p>  moshixu

122、anze=1;</p><p>  moshixuanzexianshi=1;</p><p>  dingshishijianxianshi=0;</p><p><b>  } </b></p><p><b>  }</b></p><p>  else if(0

123、==GpioDataRegs.GPBDAT.bit.GPIOB11)//右上</p><p><b>  {</b></p><p>  if(0==flag1)</p><p>  { </p><p><b>  flag1=0;</b></p><p&

124、gt;  dingshixuanze=1;</p><p>  dingshixuanzexianshi=1;</p><p><b>  }</b></p><p>  else if(1==dingshikaiqi||1==dingshiguangbi)</p><p><b>  {</b>&

125、lt;/p><p>  dingshiset++;</p><p>  if(3==dingshiset)</p><p><b>  {</b></p><p>  dingshiready=1;</p><p>  dingshireadyxianshi=1;</p><p&g

126、t;  dingshikaiqi=dingshiguangbi=0;</p><p>  dingshiset=0;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>

127、  else if(0==GpioDataRegs.GPADAT.bit.GPIOA2)//左上</p><p>  { </p><p>  if(1==dingshixuanze)</p><p><b>  {</b></p><p>  dingshikaiqi=1;</p>&l

128、t;p>  dingshikaiqiflag=1;</p><p>  dingshiguangbiflag=0;</p><p>  dingshikaiqixianshi=1;</p><p>  dingshixuanze=0;</p><p>  StopCpuTimer0();</p><p><

129、b>  }</b></p><p>  else if(1==dingshikaiqi||1==dingshiguangbi)</p><p><b>  {</b></p><p>  shijianshuaxin3=1;</p><p>  if(2==dingshiset)</p>

130、<p><b>  {</b></p><p>  if(23==hour2)hour2=0;</p><p>  else hour2++;</p><p><b>  }</b></p><p>  else if(1==dingshiset)</p><p>

131、<b>  {</b></p><p>  if(59==min2)min2=0;</p><p>  else min2++; </p><p><b>  }</b></p><p>  else if(0==dingshiset)</p><p><b

132、>  {</b></p><p>  if(59==sec2)sec2=0;</p><p>  else sec2++; </p><p><b>  }</b></p><p><b>  }</b></p><p>  else if(1=

133、=dingshiready)</p><p><b>  {</b></p><p><b>  start++;</b></p><p>  if(1==start)</p><p><b>  {</b></p><p>  if(0==hour2&

134、amp;&0==min2&&0==sec2)</p><p><b>  {</b></p><p>  StartCpuTimer0();</p><p><b>  }</b></p><p>  else if(1==dingshikaiqiflag)</p>

135、;<p><b>  {</b></p><p>  StopCpuTimer0();</p><p>  if(1==resetstart)</p><p><b>  {</b></p><p>  StartCpuTimer0();</p><p><

136、;b>  }</b></p><p><b>  }</b></p><p>  else if(1==dingshiguangbiflag)</p><p><b>  {</b></p><p>  StartCpuTimer0();</p><p>&

137、lt;b>  }</b></p><p><b>  }</b></p><p>  if(2==start)</p><p><b>  {</b></p><p><b>  start=0;</b></p><p>  StopC

138、puTimer0(); </p><p><b>  }</b></p><p>  } </p><p><b>  } </b></p><p>  else if(0==GpioDataRegs.GPADAT.bit.GPIOA0)//左下</

139、p><p><b>  {</b></p><p>  if(1==dingshixuanze)</p><p><b>  {</b></p><p>  dingshiguangbi=1;</p><p>  dingshiguangbiflag=1;</p>

140、<p>  dingshikaiqiflag=0;</p><p>  dingshiguangbixianshi=1;</p><p>  dingshixuanze=0;</p><p>  dingshishijianxianshi=1;</p><p>  shijianshuaxin2=shijianshuaxin3=1;

141、</p><p>  StopCpuTimer0();</p><p><b>  }</b></p><p>  else if(1==dingshikaiqi||1==dingshiguangbi)</p><p><b>  {</b></p><p>  shijia

142、nshuaxin3=1;</p><p>  if(2==dingshiset)</p><p><b>  {</b></p><p>  if(0==hour2)hour2=23;</p><p>  else hour2--;</p><p><b>  }</b>&l

143、t;/p><p>  else if(1==dingshiset)</p><p><b>  {</b></p><p>  if(0==min2)min2=59;</p><p>  else min2--; </p><p><b>  }</b></p&

144、gt;<p>  else if(0==dingshiset)</p><p><b>  {</b></p><p>  if(0==sec2)sec2=59;</p><p>  else sec2--; </p><p><b>  }</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

提交評論