直流電機(jī)驅(qū)動程序_第1頁
直流電機(jī)驅(qū)動程序_第2頁
直流電機(jī)驅(qū)動程序_第3頁
直流電機(jī)驅(qū)動程序_第4頁
直流電機(jī)驅(qū)動程序_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、用S51單片機(jī)控制驅(qū)動芯片L298驅(qū)動1路直流電機(jī)程序(C語言) */#mclude #define umt unsigned mt#define uchai unsigned char#define MAX_TIMER_COUNTOxffff#define TIMER_PERIOD_VALUEOxfc 18/PWM 周期,1ms#define KEY_0 OxOl#define KEY_1 0 x02#define KEY_2 0 x04#define KEY_3 0 x08鍵值#define ForWard 0 正向#define Reverse 1 反向#define True 1#de

2、fine False 0/電機(jī)驅(qū)動引腳定義sbit MA=P1A4; /sbit MB=P1A5;sbit MC=P1Z6;sbit MD=P1A7;sbit LED = P0A0;測試LEDsbit EN1_PVM = P3A5; /PWM 使能輸出腳uchai STHO = 0;/TO 計數(shù)緩存uchai STLO = 0:uchai STH1 = 0;/Tl 計數(shù)緩存uchai STL1 = 0;bit Breaked = False;剎車停止標(biāo)志bit Running = False;運(yùn)行標(biāo)志bit Duection = ForWard;/ 方向標(biāo)志umt MaxPenodCNT =

3、MAX_TIMER_COUNT - TIMER.PERIOD.VALUE;/PWM 周期,1ms/static int spcount = 0: 步進(jìn)電機(jī)轉(zhuǎn)速參數(shù)計數(shù),,:$:*:$:*:$:*:$:*:$:*:$:*:$:*:$:*發(fā)送數(shù)據(jù)子函數(shù)*:$:*:$:*:$:*:$:*/*void txdata(uchar dat)SBUF = dat; /發(fā)送數(shù)據(jù)while (!TI);等待數(shù)據(jù)發(fā)送完中斷TI = 0; 清中斷標(biāo)志void delay(unsigned int N)mt i;fbr(i=0;i THiVbt)/高電平時間計數(shù)要比周期值計數(shù)值大ITLoVbt = tmp;/這里計算

4、PWM占空比對應(yīng)的高電平)/setMotorA_FieeStop();高電時間STH0 = THiVbt/256;STL0 = THiVbt%256;低電時間STH1 = TLoVbt/256;STL1 = TLoVbt%256;TR0=l;void setMotorA_Start() 啟動直流電機(jī)if (Breaked)己快速制動(剎車)setMotoiA_Reveise();Breaked = False;TRl=0 ;/關(guān)定時器1TH0 = STH0;TL0 = STLO;重新加載定時器0初值TR0=l;TR0=l ;開定時器0Running = True;己運(yùn)行void system_

5、uiit(void)TMOD=Oxll;EA=1;ETO=1;斷。ET1=1;禁止T1中斷。全局中斷開/ETO : TO的溢出中斷允許位。ETO=1,允許TO中斷;ETO=O禁ll: TO中/ET1 :定時/計數(shù)器T1的溢出中斷允許位。ET1=I,允許T1中斷:ET1=O,setMotorA_FreeStopQ; 開機(jī)停轉(zhuǎn) ,存 * *左* * *:$:* * 左* */ /定時器0中斷服務(wù)程序.作為PWM周期定時*左 * *左*左* *;$:*/void timeiOQ mtemipt 1/TRO = 0 ;THO = STHO;TLO = STLO;/TRO = 1 ;EN1_PWM= 1

6、;關(guān)定時器0/把新的脈寬值給定時器1把新的脈寬值給定時器1開定時器0/PWM輸出高電平TH1 =STH1;TL1 = STL1;TRI = 1 ;把新的脈寬值給定時器1把新的脈寬值給定時器1開定時器1,存 * *左* * *:$:* * 左* */ /定時器1中斷服務(wù)程序.作為PWM高電平定時*左 * *左*左* *;$:*/void timer IQ mtemipt 3TR1=O;EN1_PWM = O;關(guān)定時器1/PWM輸出低電平/THO = STHO;/TLO = STLO:,TRO=1;重新加載定時器0初值取反鍵值,方便鍵值占空比值前一時刻的鍵值初始化,,存*:$:* *:$:*:$:

7、*:$:*:$:*:$:* *:*:$:*:$:*the ftinction:轉(zhuǎn)換鍵值,將硬件鍵值轉(zhuǎn)換成邏輯鍵值。*:$:*:$:*:$:*:$:*:$:* *;$:* *:$:*:$:*:$:*:$:*:$:*:$:*:$:*:$:*/uchai getKeyValue(uchar i)uchar kewalue = Oxff;switch(i)fcase KEY.O: kewalue = 0 x00; break; case KEY_1: kewalue = 0 x01; break; case KEY_2: kewalue = 0 x02; break; case KEY_3: kewa

8、lue = 0 x03; break; default: kewalue = Oxff;retuin keyvahie;,,存* *:$:*:$:*:$:*:$:*:$:*:$:* *;$:* *:$:*:$:*the hmction:獨(dú)立鍵盤,由于本版開發(fā)板刪除了矩陣鍵盤,只保4個獨(dú)立鍵盤,所以本實(shí)驗(yàn)僅作為原理演示之用。* *#*:$:* *:*:$:* * :*:$:*:$:*:$:*:$:* *4:*;$:*:$:*:$:*:$:*:$:*/ uchar checklnput(void)Pl |= OxOf;retuin (Pl | OxfO); void mam(void)uchar

9、i = 0;uchar duty = 10;uchar pieKey = Oxff;system_init();/Uart_Iiiit_T2UsedO; setMotorA_FoiWaidO; 設(shè)為正轉(zhuǎn)方向while(l)i = checkliiputQ;i = getKeyValue(i);if (preKey = Oxff)有按鍵(switch(i)(case 0: if (duty0)占空比大于 0duty=5;setMotorA_Speed(duty);break:case 2: if (Duection = ForWaid) 更改方向setMotoiA_Reverse();elsesetMotoiA_ForWaidQ;

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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

提交評論