📄 设计.txt
字号:
快速复位可由单片机的复位引脚实现。
输入:
P3_0接注射结束提示信号
P3_1接按键1,表示正转 key=1
P3_2接按键2,表示反转 key=2
P3_3接按键3,表示加速 jiasu=1
P3_4接按键4,表示减速 jiansu=1
输出:
P3_5正转灯,正常工作时正转亮
P3_6反转灯,正常工作时反转亮
P3_7报警灯,当速度超出规定范围时,即速度过快或过慢时灯亮。
输出:
P1控制步进电机的信号
输出:
P2接8位数码管,注射时显示速度 接到注射结束信号时显示C
说明:对应的硬件设计有5个按键,一个复位,一个正转,一个反转,一个加速,一个减速
有一个注射结束信号的电路连接到单片机上
有电路连接单片机与步进电机
有3个LED灯,一个表正转,一个表反转,一个表报警
有1个8位数码管
#include<AT89X51.h>
unsigned char code F_Rotation[4]={0x02,0x04,0x08,0x10};//正转表格
unsigned char code B_Rotation[4]={0x10,0x08,0x040,0x02};//反转表格
unsigned char const xianshi[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//数码管显示表
sbit key1=P3^1;//定义正转按键
sbit key2=P3^2;//定义反转按键
sbit key_jiasu=P3^3;//定义加速按键
sbit key_jiansu=P3^4;//定义减速按键
unsigned int key=0;
unsigned int jiasu=0,jiansu=0;
unsigned int t1=10000;
void delay(unsigned int i);
void Delay(unsigned int i)//延时
{
while(--i);
}
void main()
{unsigned int i;
while(1)
{ if(!key1)//以下为判断正转按键的程序段
{
delay(200);
while(!key1);
if(key1)
{
delay(200);
if(key1)
{key=1;P3_5=0;P3_6=1;}
}
}
if(!key2) //以下为判断反转按键的程序段
{
delay(200);
while(!key2);
if(key2)
{
delay(200);
if(key2)
{key=2;P3_5=1;P3_6=0;}
}
}
if(!key_jiasu)//以下为判断加速按键的程序段
{
delay(200);
while(!key_jiasu);
if(key_jiasu)
{
delay(200);
if(key_jiasu)
{jiasu=1;}
}
}
if(!key_jiansu)//一下为判断减速按键的程序段
{
delay(200);
while(!key_jiansu);
if(key_jiansu)
{
delay(200);
if(key_jiansu)
{jiansu=1;}
}
}
//如果接到注射结束信号,则执行下面的程序段
if(P3_0==1) //注射结束信号
{P1=0;//停电机
P2=0x39; //结束信号
break;//停止注射,到下次复位后再启动
}
//没有接到注射结束信号,即正常运行时执行的程序段
if(P3_0==0)
{
//正转时执行下面的程序段
if(key==1)
{ P3_5=0;//正转灯亮
P3_6=1;
for(i=0;i<4;i++) //4相
{
P1=F_Rotation[i]; //输出对应的相
//下面是速度控制程序段
if(jiasu==1)
{jiasu=0;
if(t1>=60000)//如果速度超过最大值
{P1_7=0;}//报警灯亮
else{t1=t1+10000;P1_7=1;}
}
if(jiansu==1)
{jiansu=0;
if(t1<=10000)//如果速度低于最小值
{P1_7=0;}//报警灯亮
else{t1=t1-10000;P1_7=1;}
}
Delay(t1); //改变这个参数可以调整电机转速
}
P2=xianshi[t1/10000];//显示注射速度的档次,本设计共有1~6档
}
//反转时执行下面的程序段,其他与正转类似
if(key==2)
{ P3_5=1;
P3_6=0;
for(i=0;i<4;i++) //4相
{
P1=B_Rotation[i]; //输出对应的相
if(jiasu==1)
{jiasu=0;
if(t1>=60000){P1_7=0;}
else{t1=t1+10000;P1_7=1;}
}
if(jiansu==1)
{jiansu=0;
if(t1<=10000){P1_7=0;}
else{t1=t1-10000;P1_7=1;}
}
Delay(t1); //改变这个参数可以调整电机转速
}
P2=xianshi[t1/10000];
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -