AT89C51单片机,步进电机驱动器L298N驱动,实现单片机识别并输出显示键盘输入的数据信息(转角)并产生连续脉冲控制步进电机转动,电机型号是两相步进电动机42BYG121,其步进角为1.8度,通过半步驱动方式进行细分可获得0.9度的步进角;环形分配器和电机驱动器...
控制器接收到上位机的命令后,首先获取需要转动的步数,然后根据相应命令打开相应定时器的计数功能。控制程序中用定时器1控制二路脉冲输出,定时器2控制一路脉冲输出,从而完成3路电机的控制。 定时器2使用CTC模式,匹配中断使能。通过匹配中断,在OCR2端口可以输出脉冲,通过设定寄存器OCR2寄存器的值可以改变输山脉冲频率。定时器1使用相位与频率修正模式...
键则反向转1~9圈;左键固定正转90度,右键固定反转90;Esc 键终止转动。通过这个程序,我们也可以进一步体会到如何用按键来控制程序完成复杂的功能,以及控制和执行模块之间如何协调工作,而你的编程水平也可以在这样的实践练习中得到锻炼和提升。#include <reg52.h>sbit KEY_IN_1 = P2...
内容:1、本程序用于测试4相步进电机常规驱动2、需要用跳帽或者杜邦线把信号输出端和对应的步进电机信号输入端连接起来
3、速度不可以调节的过快,不然就没有力矩转动了
4、按s4(设置成独立按键模式)可以控制正反转
------------------------------------------------*/
#include
bit Flag//定义正反转标志位
unsigned char code F_Rotation[4]={0xf1,0xf2,0xf4,0xf8}//正转表格
unsigned char code B_Rotation[4]={0xf8,0xf4,0xf2,0xf1}//反转表格
/******************************************************************/
/*延时函数*/
/******************************************************************/
void Delay(unsigned int i)//延时
{
while(--i)
}
/******************************************************************/
/* 主函数 */
/******************************************************************/
main()
{
unsigned char i
EX1=1//外部中断0开
IT1=1//边沿触发
EA=1 //全局中断开
while(!Flag)
{
P0=0x71//显示 F 标示正转
for(i=0i<4i++) //4相
{
P1=F_Rotation[i] //输出对应的相 可以自行换成反转表格
Delay(500) //改变这个参数可以调整电机转速 ,数字越小,转速越大
}
}
while(Flag)
{
P0=0x7C//显示 b 标示反转
for(i=0i<4i++) //4相
{
P1=B_Rotation[i] //输出对应的相
Delay(500) //改变这个参数可以调整电机转速 ,数字越小,转速越大
}
}
}
/******************************************************************/
/* 中断入口函数 */
/******************************************************************/
void ISR_Key(void) interrupt 2 using 1
{
Delay(300)
Flag=!Flag//s3按下触发一次,标志位取反
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)