📄 main.c
字号:
//-----------------------------------------------------------------
// 名称: 用L297+L298控制与驱动步进电机
//-----------------------------------------------------------------
// 说明: 本例由L297与L298构成了双极四相步进电机驱动电路,在单片机控制下
// 可实现调速/换向等功能.
//
//-----------------------------------------------------------------
#include <pic.h>
#define INT8U unsigned char
#define INT16U unsigned int
#define _XTAL_FREQ 4000000UL
//按键定义
#define K1_DOWN() RB0 == 0 //K1:正转
#define K2_DOWN() RB1 == 0 //K2:反转
#define K3_DOWN() RB2 == 0 //K3:加速
#define K4_DOWN() RB3 == 0 //K4:减速
#define K5_DOWN() RB4 == 0 //K5:半步/全步模式
#define K6_DOWN() RB5 == 0 //K6:归位
#define K7_DOWN() RB6 == 0 //K7:启/停
//L297控制引脚及状态位定位
#define ENABLE RD0 //L297使能位
#define RESET RD1 //L297复位(回到HOME位置:0101)
#define STEP_MODE RD2 //步进模式控制
#define DIRECTION RD3 //运行方向控制
#define CLOCK RD4 //L297驱动时钟
#define HALF 1 //半步(默认)
#define FULL 0 //全步
#define CW 1 //顺时针
#define CCW 0 //逆时针
volatile int SPEED = 40; //用于延时累加的变量
volatile int T_Count = 0; //延时累加变量
//------------------------------------------------------------------
// 主程序
//------------------------------------------------------------------
void main()
{
INT8U pre_Key = 0xFF;
ADCON1 = 0x06; //RA端口设为数字端口
TRISB = 0xFF; RBPU = 0; //RB端口按键输入,内部弱上拉
PORTD = 0xFF; TRISD = 0x00; //L297驱动端口输出
while(1)
{
}
}
//-----------------------------------------------------------------
// TMR0溢出中断控制步进电机速度
//-----------------------------------------------------------------
void interrupt TMR0_INT()
{
if (T0IF)
{
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -