单片机产生 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