📄 stepmotor.c
字号:
#include"reg52.h"
#define uint unsigned int
#define uchar unsigned char
sbit rs=P2^4;
sbit lcden=P2^6;
sbit key1=P2^0;
sbit key2=P2^1;
sbit key3=P2^2;
uchar code table0[]=" Mode: ";
uchar code table1[]="Status: ";
uchar code table2[8]={0x08,0x0c,0x04,0x06,
0x02,0x03,0x01,0x09};
uchar code table3[8]={0x09,0x01,0x03,0x02,
0x06,0x04,0x0c,0x08};
uchar code table4[4]={0x4f,0x6e}; //On
uchar code table5[4]={0x53,0x74,0x6f,0x70}; //Stop
uchar code table6[7]={0x46,0x6f,0x72,0x77,0x61,0x72,0x64}; //Forward
uchar code table7[7]={0x52,0x65,0x76,0x65,0x72,0x73,0x65}; //Reverse
uchar code table8[8]={0,0,0,0,0,0,0};
uchar num,status,mode,flag;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=122;y>0;y--);
}
void write_com(uchar com)
{
rs=0;
P0=com;
lcden=1;
delay(5);
lcden=0;
delay(5);
}
void write_data(uchar date)
{
rs=1;
P0=date;
lcden=1;
delay(5);
lcden=0;
delay(5);
}
void init()
{
status=0;
mode=0;
flag=0;
lcden=0;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
write_com(0x80);
for(num=0;num<8;num++)
{
write_data(table0[num]);
delay(20);
}
write_com(0x80+0x40);
for(num=0;num<8;num++)
{
write_data(table1[num]);
delay(20);
}
}
void display()
{
if(status==1)
{
write_com(0x80+0x48);
for(num=0;num<4;num++)
{
write_data(table4[num]);
delay(20);
}
if(mode==1)
{
write_com(0x80+0x08);
for(num=0;num<7;num++)
{
write_data(table6[num]);
delay(20);
}
}
if(mode==0)
{
write_com(0x80+0x08);
for(num=0;num<7;num++)
{
write_data(table7[num]);
delay(20);
}
}
}
if(status==0)
{
write_com(0x80+0x08);
for(num=0;num<8;num++)
{
write_data(table8[num]);
delay(20);
}
write_com(0x80+0x48);
for(num=0;num<4;num++)
{
write_data(table5[num]);
delay(20);
}
}
}
void keyscan()
{
if(key1==0)
{
delay(5);
if(key1==0)
{
while(!key1);
status=1;
mode=1;
}
}
if(key2==0)
{
delay(5);
if(key2==0)
{
while(!key2);
status=1;
mode=0;
}
}
if(key3==0)
{
delay(5);
if(key3==0)
{
while(!key3);
status=0;
mode=0;
}
}
}
void main()
{
init();
while(1)
{
keyscan();
if(mode==1&&status==1)
{
for(num=0;num<8;num++)
{
P1=table2[num];
delay(100);
}
}
if(mode==0&&status==1)
{
for(num=0;num<8;num++)
{
P1=table3[num];
delay(100);
}
}
if(status==0)
{
for(num=0;num<8;num++)
{
P1=table8[num];
delay(100);
}
}
display();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -