版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于TMS320F2812的步進(jìn)電機控制系統(tǒng)研究.pdf
- 基于TMS320F2812的平動電機的控制系統(tǒng)設(shè)計.pdf
- 基于tms320f2812的交流電機控制系統(tǒng)的設(shè)計
- 基于tms320f2812的小型充電系統(tǒng)
- 基于TMS320F2812的異步電機矢量控制系統(tǒng)的研究.pdf
- 基于TMS320F2812的交流伺服電機控制器.pdf
- 基于TMS320F2812的永磁同步電機伺服控制系統(tǒng)研究.pdf
- 基于TMS320F2812的開關(guān)磁阻電機控制策略研究.pdf
- 基于TMS320F2812的多軸運動控制系統(tǒng)研究.pdf
- 基于TMS320F2812的無刷直流電機控制系統(tǒng)設(shè)計.pdf
- 基于TMS320F2812的異步電機空間矢量控制系統(tǒng)的研究.pdf
- 基于TMS320F2812的小型無人機控制系統(tǒng)設(shè)計.pdf
- 基于DSP TMS320F2812多軸運動控制系統(tǒng)的設(shè)計.pdf
- 基于TMS320F2812的同步高速攝影控制系統(tǒng)的研究.pdf
- 基于TMS320F2812直線超聲電機驅(qū)動控制平臺的研究.pdf
- 基于TMS320F2812的感應(yīng)電機直接轉(zhuǎn)矩控制研究.pdf
- 基于TMS320F2812的異步電機直接轉(zhuǎn)矩控制系統(tǒng)研究與實踐.pdf
- 基于TMS320F2812的永磁同步電機交流調(diào)速系統(tǒng).pdf
- 基于TMS320F2812的開關(guān)磁阻電機調(diào)速系統(tǒng)的研究.pdf
- 基于tms320f2812的無刷直流電機控制
評論
0/150
提交評論