|
左側(cè)開關(guān)減速,右側(cè)加速。l293d芯片驅(qū)動(dòng)直流電機(jī)
KN)Q9CAC4HKWED]K$K2%(YM.png (121.4 KB, 下載次數(shù): 57)
下載附件
2020-3-1 08:21 上傳
W5KVYKO3~136RFXCEED`(SN.png (111.58 KB, 下載次數(shù): 53)
下載附件
2020-3-1 08:21 上傳
單片機(jī)源代碼:
- #include<reg51.h>
- #define Tpwm 0xfc18//PWM周期對(duì)應(yīng)的計(jì)數(shù)值1ms,基于12MHz晶振
- unsigned int duty[]={0,/*0*/
- 0xff9c/*100us*/,0xff38/*200us*/,0xfed4/*300us*/,\
- 0xfe70/*400us*/,0xfe0c/*500us*/,0xfda8/*600us*/,\
- 0xfd44/*700us*/,0xfce0/*800us*/,0xfc7c/*900us*/,\
- 0xfc18/*1000us*/};//PWM高電平時(shí)間
- unsigned char i=0;
- sbit P32 = P3^2;
- sbit P33 = P3^3;
- sbit PWMOUT = P2^0;
- sbit PWMIN1 = P2^1;
- sbit PWMIN2 = P2^2;
- bit flag = 1;//PWM輸出電平狀態(tài),1為輸出高電平時(shí)間,0為輸出低電平時(shí)間
- void delay10ms(int n);
- void main(void)
- {
- PWMOUT = 0;//初始化L293D ,停止電機(jī)
- PWMIN1 = 0;
- PWMIN2 = 1;
- EA = 1; //開總中斷
- IT0 = 1; //中斷方式為跳變
- IT1 = 1;
- EX0 = 1; //打開外部中斷0
- EX1 = 1; //打開外部中斷1
- ET0 = 1; //開定時(shí)器0中斷允許
- TMOD = 0x01; //設(shè)置定時(shí)方式
- while(1) //等待中斷
- {
- /*在此可以實(shí)現(xiàn)其它任務(wù)*/
- }
- }
- //10ms延時(shí)函數(shù)
- void delay10ms(int n)
- {
- int i=0,j;
- while(n--)
- {
- for(i=0;i<10;i++)
- {
- for(j = 0; j < 125; j++);
- }
- }
- }
- void keySpeeddownISR() interrupt 0 //按鍵中斷服務(wù)程序
- {
- EA = 0; //關(guān)中斷
- delay10ms(2); //延時(shí)消抖
- if (!P32) //確認(rèn)按鍵按下,濾除鍵盤抖動(dòng)干擾
- {//減少PWM高電平時(shí)間
- if(i>0)
- i--;
- if((TR0=1) && (i == 0))
- {
- TR0 = 0;
- PWMOUT = 0;
- }
- }
- EA = 1;
- }
- void keySpeedupISR() interrupt 2 //按鍵中斷服務(wù)程序
- {
- EA = 0; //關(guān)中斷
- delay10ms(2); //延時(shí)消抖
- if (!P33) //確認(rèn)按鍵按下,濾除鍵盤抖動(dòng)干擾
- {//增加PWM高電平時(shí)間
- if(i<=10)
- i++;
- if((TR0 == 0) && (i > 0))
- {//啟動(dòng)PWM,電機(jī)順時(shí)針旋轉(zhuǎn)
- PWMIN1 = 0;
- PWMIN2 = 1;
- PWMOUT = 1;
- TH0 = duty[i]>>8;
- TL0 = duty[i]&0xff;
- TR0 = 1;
- flag = 1;
- }
- }
- EA = 1;
- }
- void T0ISR() interrupt 1 //定時(shí)器0中斷服務(wù)程序
- {
- EA = 0; //關(guān)中斷
- if(flag)
- {//高電平時(shí)間結(jié)束,輸出低電平補(bǔ)齊PWM周期
- PWMOUT = 0;
- TH0 = (65535-(duty[i]-Tpwm))>>8;
- TL0 = (65535-(duty[i]-Tpwm))&0xff;
- flag = 0;
- }else
- {//周期結(jié)束
- PWMOUT = 1;
- TH0 = duty[i]>>8;
- TL0 = duty[i]&0xff;
- flag = 1;
- }
- EA = 1;
- }
復(fù)制代碼
全部資料51hei下載地址:
PWM.rar
(54.65 KB, 下載次數(shù): 90)
2020-3-1 08:24 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|