找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2284|回复: 0
收起左侧

单片机步进电机正反转控制

[复制链接]
ID:944493 发表于 2021-6-25 10:16 | 显示全部楼层 |阅读模式
#include<reg51.h>
sbit S1=P1^4;
sbit S2=P1^5;
sbit S3=P1^7;
unsigned char keyval;
unsigned char ID;
void delay(void)
{
unsigned char i,j;
for(i=0;i<150;i++)
for(j=0;j<150;j++)
;
}
void motor_delay(void)
{
unsigned int i;
for(i=0;i<2000;i++)
;
}
void forward()
{
P2=0xef;
motor_delay();
P2=0xcf;
motor_delay();
P2=0xdf;
motor_delay();
P2=0x9f;
motor_delay();
P2=0xbf;
motor_delay();
P2=0x3f;
motor_delay();
P2=0x7f;
motor_delay();
P2=0x6f;
motor_delay();
}
void backward()
{
P2=0x6f;
motor_delay();
P2=0x7f;
motor_delay();
P2=0x3f;
motor_delay();
P2=0xbf;
motor_delay();
P2=0x9f;
motor_delay();
P2=0xdf;
motor_delay();
P2=0xcf;
motor_delay();
P2=0xef;
motor_delay();
}
void stop(void)
{
P2=0xff;
}
void main(void)
{
TMOD = 0x01;
EA=1;
ET0=1;
TR0=1;
TH0=(65536-500)/256;
TL0=(65536-500)%256;
keyval=0;

ID=0;
while(1)
{
switch(keyval)
{
case 1:forward();
break;
case 2:backward();
break;
case 3:stop();
break;
}
}
}
void Time0_serve(void) interrupt 1 using 1
{
TR0=0;
if((P3&0xf0)!=0xf0)
{
delay();
if((P3&0xf0)!=0xf0)
{
if(S1==0)
keyval=1;
if(S2==0)
keyval=2;
if(S3==0)
keyval=3;
}
}
TH0=(65536-200)/256;
TL0=(65536-200)%256;
TR0=1;
}
I_@$LILCG5XT41KNIEI%$9W.png
I_@$LILCG5XT41KNIEI%$9W.png

评分

参与人数 1黑币 +20 收起 理由
admin + 20 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表