用51单片机代码实现遥控小车怎么pwm调速
时间: 2023-12-01 15:40:05 浏览: 117
51单片机实现pwm调速
可以使用以下代码实现用51单片机代码实现遥控小车的PWM调速:
```
#include <REGX52.H>
#include "Delay.h"
#include "Key.h"
#include "Timer0.h"
#include "NixieTube.h"
sbit motor=P1^0; //电机端口
unsigned char Counter,Compare; //counter 0-100 指的是频率 comapre 指的是占空比 高电平时间 Compare 最大值为100us
unsigned char KeyNum,Speed;
void main() {
Timer0Init();
Compare=5;
while(1) {
KeyNum=Key();
if(KeyNum==1) {
Speed++;
if(Speed>3){Speed=0;}
if(Speed==0){Compare=0;} //compare 指的就是占空比
if(Speed==1){Compare=50;} //5%的占空比
if(Speed==2){Compare=75;}
if(Speed==3){Compare=100;}
}
NixieTube(8,Speed);
}
}
void Timer0_Rourine() interrupt 1 //每隔100us进来一次
{
TL0 = 0xA4; //设置定时初值
TH0 = 0xFF; //设置定时初值
Counter++;
if(Counter>=100){Counter=0;}
if(Counter<Compare) {
motor=1;
} else {
motor=0;
}
}
```
其中,使用定时器0来产生PWM波形,通过按键控制电机的速度,将速度在数码管上显示。在Timer0_Routine()中,每隔100us进来一次,通过Counter和Compare来控制占空比,从而实现PWM调速。
阅读全文