利用单片机的定时器TIMER_A(TA)中断产生脉冲信号,通过在响应的中断程序中实现步进电机步数和圈数的准确计数,通过PWM实现转速控制。
可以利用P10端口的中断关闭TA中断程序,并推入堆栈,停止电机;P11中断则开启TA中断,堆栈推入程序计器(PC),开启电机。
P31端口输出高电平由PMM8713的U/D端口控制电机的转向;P3.0~P37端口接8279的8个数据接口。
单片机扫描到矩阵键盘有键按下时,利用P2端口的中断设置TA,控制启停、调速和转向等,同时单片机反馈给8279控制LED管显示转速和转向。
扩展资料
1、单片机所接收到控制命令暂存在RXBUFFER中,与存储在片内Flash的中断程序的入口地址相比较,相同就进入中断,实现步进电机的控制。
2、当P1.0中为高电平时,其内部三极管导通,使电机转动。当P1.0为低电平时,内部三极管截止,电路断开,电机停止转动。所以在程序中可以利用P1.0口输出PWM波来控制电机的转速。
参考资料来源:百度百科-单片机
参考资料来源:百度百科-电动机的单片机控制
voiddelayms(int16u
k)
。。。。。。。可以设置一段延时程序这里大约是1ms
{
int16u
a,s
for(a=ka>0a--)
for(s=110s>0s--)
}
void
pwm()
m1,m4为电机的使能端,为1时电机工作,为0时电机不工作,
通过电机导通和不导通的时间的控制就能产生pwm信号,在这
里只要调节speed的变化就可以调节pwm信号的占空比了。
{
m1=1m4=1
delayms(speed)
m1=0m4=0
delayms(30-speed)
}
//你可以在这里加一个键盘检测程序来控制电机的占空比来调节减速还是加速
这是加速程序
{
speed=speed+5
if(speed>=30)
speed=30
}
这是减速程序
{
if(speed!=5)
speed=speed-5
else
speed=5
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)