电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

精品资料(2025-2025收藏)单片机产生PWM信号控制直流电机调速的源代码

精品资料(2025-2025收藏)单片机产生PWM信号控制直流电机调速的源代码_第1页
1/5
精品资料(2025-2025收藏)单片机产生PWM信号控制直流电机调速的源代码_第2页
2/5
精品资料(2025-2025收藏)单片机产生PWM信号控制直流电机调速的源代码_第3页
3/5
单片机产生 PWM 信号控制直流电机调速的源代码本例程利用 2051 的 T0 产生双路 PWM 信号,推动 L293D 或 L298N 为直流电机调速,程序已通过调试。接 L298N 时相应的管脚上最好接上 10K 的上拉电阻。 有什么不对的地方欢迎大家批判指正! /* =======直流电机的 PWM 速度控制程序======== */ /* 晶振采纳 11.0592M,产生的 PWM 的频率约为 91Hz */ #include #include #define uchar unsigned char #define uint unsigned int sbit en1=P1^0; /* L298 的 Enable A */ sbit en2=P1^1; /* L298 的 Enable B */ sbit s1=P1^2; /* L298 的 Input 1 */ sbit s2=P1^3; /* L298 的 Input 2 */ sbit s3=P1^4; /* L298 的 Input 3 */ sbit s4=P1^5; /* L298 的 Input 4 */ uchar t=0; /* 中断计数器 */ uchar m1=0; /* 电机 1 速度值 */ uchar m2=0; /* 电机 2 速度值 */ uchar tmp1,tmp2; /* 电机当前速度值 */ /* 电机控制函数 index-电机号(1,2); speed-电机速度(-100—100) */ void motor(uchar index, char speed) { if(speed>=-100 && speed<=100) { if(index==1) /* 电机 1 的处理 */ { m1=abs(speed); /* 取速度的绝对值 */ if(speed<0) /* 速度值为负则反转 */ { s1=0; s2=1; } else /* 不为负数则正转 */ { s1=1; s2=0; } } if(index==2) /* 电机 2 的处理 */ { m2=abs(speed); /* 电机 2 的速度控制 */ if(speed<0) /* 电机 2 的方向控制 */ { s3=0; s4=1; } else { s3=1; s4=0; } } } } void delay(uint j) /* 简易延时函数 */ { for(j;j>0;j--); } void main() { uchar i; TMOD=0x02; /* 设定 T0 的工作模式为 2 */ TH0=0x9B; /* 装入定时器的初值 */ TL0=0x9B; EA=1; /* 开中断 */ ET0=1; /* 定时器 0 允许中断 */ TR0=1; /* 启动定时器 0 */ while(1) /* 电机实际控制演示 */ { for(i=0;i<=100;i++) /* 正转加速 */ { motor(1,i); motor(2,i); delay(5000); } for(i=100;i>0;i--) /* 正转减速 */ { motor(1,i); motor(2,i); delay(5000); } for(i=0;i<=100;i++) /* 反转加速 */ { motor(1,-i); motor(2,-i); delay(5000); } for(i=100;i>0;i--) /*...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

精品资料(2025-2025收藏)单片机产生PWM信号控制直流电机调速的源代码

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部