串口调试助手控制步进电机正反转

串口调试助手控制步进电机正反转

#include

#include

#define uchar unsigned char

#define uint unsigned int

unsigned char table1[8]={0x08,0x0C,0x04,0x06,0x02,0x03,0x01,0x09}; //控制电机正传

unsigned char table2[8]={0x09,0x01,0x03,0x02,0x06,0x04,0x0C,0x08}; //控制电机反转

unsigned char ch,step;

int t1,t2,a,b;

/*------------------------------------------------

串口初始化函数

------------------------------------------------*/

void ckinit()

{

TMOD=0X20;

TH1=0XFD;

TL1=0XFD; //设置波特率为9600 TR1=1; //启动定时器1 SCON=0X50;

PCON=0X00; //设置串口工作方式1 }

/*------------------------------------------------

控制字符接收函数

------------------------------------------------*/

void SCI_Rev() //串口接收数据 {

uint i=0;

while(RI){

ch=SBUF;

a=ch-96;

b=ch-64;

RI=0;

}

}

/*------------------------------------------------

电机延时函数

------------------------------------------------*/

void delay(int n){

int i,j; //延时0.999ms*n 12MHZ 晶振 for(i=0;i

for(j=0;j

;

}

}

/*------------------------------------------------

电机正转函数

------------------------------------------------*/

void forward1(){

for(t1=512*a;t1>0;t1--){

for(step=0;step

P1=table1[step];

delay(2);

if(RI)

t1=0;

}

}

}

/*------------------------------------------------

电机反转函数

------------------------------------------------*/

void backward1(){

for(t2=512*b;t2>0;t2--){

for(step=0;step

P1=table2[step];

delay(2);

if(RI)

t2=0;

}

}

}

/*------------------------------------------------

电机停止函数

------------------------------------------------*/

void stop(){

P1=0xff;

delay(100);

}

/*------------------------------------------------

主函数

------------------------------------------------*/

void main(){

ckinit();

while(1){

SCI_Rev(); switch(ch){ case'a':

forward1(); ch=0; break;

case'b':

forward1(); ch=0; break;

case'c':

forward1(); ch=0; break;

case'd':

forward1(); ch=0; break;

case'A':

backward1(); ch=0; break;

case'B':

backward1(); ch=0; break;

case'C':

backward1(); ch=0; break;

case'D':

backward1(); ch=0; break; //正转1圈 //正转2圈 //正转3圈 //正转4圈 //反转1圈 //反转2圈 //反转3圈 //反转4圈

case'0': stop(); break; default: break; }

P1=0; }

} //停止电机

串口调试助手控制步进电机正反转

#include

#include

#define uchar unsigned char

#define uint unsigned int

unsigned char table1[8]={0x08,0x0C,0x04,0x06,0x02,0x03,0x01,0x09}; //控制电机正传

unsigned char table2[8]={0x09,0x01,0x03,0x02,0x06,0x04,0x0C,0x08}; //控制电机反转

unsigned char ch,step;

int t1,t2,a,b;

/*------------------------------------------------

串口初始化函数

------------------------------------------------*/

void ckinit()

{

TMOD=0X20;

TH1=0XFD;

TL1=0XFD; //设置波特率为9600 TR1=1; //启动定时器1 SCON=0X50;

PCON=0X00; //设置串口工作方式1 }

/*------------------------------------------------

控制字符接收函数

------------------------------------------------*/

void SCI_Rev() //串口接收数据 {

uint i=0;

while(RI){

ch=SBUF;

a=ch-96;

b=ch-64;

RI=0;

}

}

/*------------------------------------------------

电机延时函数

------------------------------------------------*/

void delay(int n){

int i,j; //延时0.999ms*n 12MHZ 晶振 for(i=0;i

for(j=0;j

;

}

}

/*------------------------------------------------

电机正转函数

------------------------------------------------*/

void forward1(){

for(t1=512*a;t1>0;t1--){

for(step=0;step

P1=table1[step];

delay(2);

if(RI)

t1=0;

}

}

}

/*------------------------------------------------

电机反转函数

------------------------------------------------*/

void backward1(){

for(t2=512*b;t2>0;t2--){

for(step=0;step

P1=table2[step];

delay(2);

if(RI)

t2=0;

}

}

}

/*------------------------------------------------

电机停止函数

------------------------------------------------*/

void stop(){

P1=0xff;

delay(100);

}

/*------------------------------------------------

主函数

------------------------------------------------*/

void main(){

ckinit();

while(1){

SCI_Rev(); switch(ch){ case'a':

forward1(); ch=0; break;

case'b':

forward1(); ch=0; break;

case'c':

forward1(); ch=0; break;

case'd':

forward1(); ch=0; break;

case'A':

backward1(); ch=0; break;

case'B':

backward1(); ch=0; break;

case'C':

backward1(); ch=0; break;

case'D':

backward1(); ch=0; break; //正转1圈 //正转2圈 //正转3圈 //正转4圈 //反转1圈 //反转2圈 //反转3圈 //反转4圈

case'0': stop(); break; default: break; }

P1=0; }

} //停止电机


相关文章

  • 变频器应用实训
  • PLC .变频器.触摸屏综合应用技能实训 实训三十五 变频器功能参数设置与操作 一. 实训目的 1. 了解变频器基本操作面板(BOP )的功能. 2. 掌握用操作面板(BOP )改变变频器参数的步骤. 3. 掌握用基本操作面板(BOP )快 ...查看


  • 自动化工程训练报告
  • 自动化工程训练 设计报告 学 院: 信息科学与工程学院 班 级: 姓 名: 学 号: 指导老师: 时间:2011年9月7日 目录 一.设计课题名称及要求 .............................. 2 二.设计思想和实施方 ...查看


  • 循迹小车论文
  • SCIENCE AND TECHNOLOGY 学 士 学 位 论 文 THESIS OF BACHELOR (2010 - 2014年) 题 目 基于单片机的蓝牙循迹小车 目 录 摘要 ........................... ...查看


  • 单片机课程设计
  • 黄山学院 课程设计说明书 专 业: 自 动 化 班 级: 12自动化 卓越班.2班 学生姓名:周 振 刘东风 卢雄建 指导教师:钱 庆 文 成 绩: 2014年 12 月 日 18 课 程 设 计 任 务 书 2014年12月18 日 第一 ...查看


  • 光电循迹小车使用手册
  • 光电循迹小车使用手册 1. 仿真软件介绍 在做实物之前,可以用仿真软件plastid进行在线仿真.这样不仅可以加快设计进度,同时可以减少实际电路的调试,减少出错,节约成本. Plastid是为"飞思卡尔"杯全国大学生智能 ...查看


  • 关于单片机的毕业论文
  • 分 类 号: 单位代码: 临沂大学 业论文(设计) 基于单片机的步进电机控制系统设计 姓 名 ******* 学 号 ************** 年 级 ***** 专 业 ************* 系 (院) ******* 指导教师 ...查看


  • 智慧农业大棚
  • 课程设计说明书 课程名称: 课程设计题目: 专 业: 班 级: 姓 名:学 号: 2016年 7月 日 22 目录 1需求分析说明 ......................................... 1 1.1设计背景 .. ...查看


  • 机器人设计
  • <智能控制与程序设计> -宝贝车机器人 课程报告 班 级: 电信学院13306 人 员: 王丽春 同组人员: 陈天.刘棒锦 时 间: 2015.11.14 指导教师: 杨杰.汤博文 地 点: 工业中心3021 一.课程目的.任务 ...查看


  • 毕业设计论文示范(两万字)
  • 摘 要 随着变频调速技术的发展,变频器调速已成为交流调速的主流,在化纤.纺织.钢铁.机械.造纸等行业得到广泛的应用.变频器控制面板上配有键盘及液晶显示窗口,但只能实现手工操作,为了进行自动化控制,因此引进单片机技术,实现单片机与变频器之间的 ...查看


热门内容