⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stepmotor.c

📁 步进电机控制程序
💻 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 + -