您的位置 首页 知识

AT89S52操控混合式步进电机 C程序

includeuarth>包含串口通信头文件(里面含有reg52h)includestdioh>包含printf头文件defineuintunsignedintdefineuch

#include<uart.h>//包括串口通讯头文件(里边含有reg52.h)

#include//包括printf头文件
#define uint unsigned int
#define uchar unsigned char

sbit cp = P2^0;//脉冲输入端
sbit dir = P2^1;//方向操控端
sbit free = P2^2;//脱机操控端,一般接高即可

sbit jia_su = P1^0;//加快键key1声明
sbit jian_su = P1^1;//减速键key2声明
sbit fang_xiang = P1^2;//切换方向键key3声明
sbit ting = P1^3;//中止键key4声明
uint num;
void uart_Init();//串口初始化子函数声明

void delay(uint z)//ms子函数
{
uint x,y;
for(x = 0;xfor(y = 0;y<120;y++);
}

void delay1(uint z)//电机延时子函数us级
{
uint x;
for(x = 0;x
}

void init()//初始化电机、串口子函数
{
num = 2;
dir = 1;
free = 1;
uart_Init();
}

void key_scan()//键盘操控子函数
{
if(jia_su == 0)//判别有加快键按下
{
delay(5);//延时消抖
if(jia_su == 0)//再次判别有加快键按下
{
num++;//num(代表电机转速)添加
if(num>4)
{num=4;}
while(!jia_su);//松手检测
delay(5);
while(!jia_su);
printf(“num = %dn”,num);//经过串口检查num值
}
}
if(jian_su == 0)//判别有减速键按下
{
delay(5);//延时消抖
if(jian_su == 0)//再次判别有减速键按下
{
num–;//num(代表电机转速)减小
if(num<1)
{num=0;}
while(!jian_su);//松手检测
delay(5);
while(!jian_su);
printf(“num = %dn”,num);//经过串口检查num值
}
}
if(fang_xiang ==0)//判别是否有方向切换键按下
{
delay(5);//延时消抖
if(fang_xiang == 0)
{
dir =~dir;//方向改动
while(!fang_xiang);//松手检测
delay(5);
while(!fang_xiang);
printf(“dir = %dn”,dir);
}
}
if(ting ==0)//判别是否有中止键按下
{
delay(5);//延时消抖
if(ting == 0)
{
num = 0;//中止
while(!ting);//松手检测
delay(5);
while(!ting);
}
}

switch(num)
{
case 0: cp = 1; break;//电机中止
case 1: //以低速滚动
{


cp = 1;
delay1(20);
cp = 0;
delay1(20);

}
break;

case 2: //以中速滚动
{


cp = 1;
delay1(15);
cp = 0;
delay1(15);

}
break;

case 3: //以高速滚动
{


cp = 1;
delay1(10);
cp = 0;
delay1(10);

}
break;

case 4: //以更高速滚动
{


cp = 1;
delay1(5);
cp = 0;
delay1(5);

}
break;
}

}
void main()
{
init();//调用初始化子函数
while(1)
{
key_scan();//不断键盘扫描
}

}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/zhishi/262506.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部