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

📄 简易电机转速.c

📁 按键接高电平
💻 C
字号:
/*************k1冷风,k2热风,k3低速,k4中速,k5高速,k6确认******************
**************当复位时,显0000***********************************************
**************当红外被挡时,初始显示H002,热风,中速,电热灯亮**************** 		
**************进入设置程序,长按k6,首先设置冷热风,风档,k6确认*************
**************换档按冷风键退后,重新选择调节*********************************
**************设置结束,长按k6保存设置值,并退出****************************/  	  

#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit k1=P1^0;
sbit k2=P1^1;
sbit k3=P1^2;
sbit k4=P1^3;
sbit k5=P1^4;
sbit k6=P1^5;
sbit fk=P1^6;				//控制电机信号	
sbit jr=P1^7;				//控制继电器,加热
sbit set1=P3^2;
sbit set2=P3^3;
sbit d1=P3^4;
sbit d2=P3^5;				
sbit d3=P3^6;
sbit d4=P3^7;

uchar code table[]={0xc0,0xf9,0xa4,0xb0,0xc7,0x89,0xff};
uchar key1,key2,flag;
void xianshi(uchar,uchar,uchar,uchar);
void break_init();
void dj_sence(uchar,uchar,uchar,uchar);
void dj_key();

delayms(uint z)
{
	uchar x;
	while(z--)
		for(x=0;x<110;x++);
}
//功能: 默认状态
void chushi()				 
{	
	xianshi(5,0,0,2);
		jr=1;
		d2=0;
	if(flag==2)
		fk=1;
	else
		fk=0;
}
//功能: 中断初始	
void break_init()										 
{
	TMOD=0x01;
	TH0=(65535-5000)/256;
	TL0=(65535-5000)%256;	
	IE=0X82;
	TR0=1;
	P1=0;	
	set1=0;
}
main()
{
	break_init();
	while(set1==0);
	while(1)
	{		
		xianshi(0,0,0,0);
		while(set2==0)		
				chushi();		
		d2=1;
		jr=0;
		fk=0;
		dj_key();
	}	
}
//功能: 按键功能目录 
void dj_key()											
{
	uchar key3,key4,key5;	
		
	while(k1==1)
	{	
		key1=1;
		jr=0;
		d1=0;
		d2=1;
		fk=1;
		key2=0;
		while(k1==1);
	}
	while(k2==1)
	{	
		key2=1;
		jr=1;
		d1=1;
		d2=0;
	    fk=1;
		key1=0;	
		while(k2==1);
	}
	while((key1==1)|(key2==1)==1)
	{	
		xianshi(1,1,1,1);
		while(k3==1)
		{	
			delayms(5);
			key3=1;
			while(k3==1);			
		}
		while(k4==1)
		{
			delayms(5);
			key4=1;
			while(k4==1);
		}
		while(k5==1)
		{
			delayms(5);
			key5=1;
			while(k5==1);
		}
		while(key3==1)
		{
			xianshi(0,0,0,1);			
			dj_sence(key3,key1,1,1);	
			key3=0;
		}
		while(key4==1)
		{
			xianshi(0,0,0,2);
			dj_sence(key4,key1,2,2);	
			key4=0;
		}
		while(key5==1)
		{
			xianshi(0,0,0,3);						
			dj_sence(key5,key1,3,3);	
			key5=0;
		}
	}
}
//功能: 功能设定
void dj_sence(uchar k,uchar h,uchar i,uchar j)				 
{	
	uchar key6;			
	while(k==1)
	{	
		while(k6!=1);
		key6=1;
		d3=0;
		while(k==1)
		{	
			while((set2==0)|(key6==1)==1)
			{	
				if(h==1)
					xianshi(4,0,0,i);
				else
					xianshi(5,0,0,i);
				if(flag==j)
					fk=1;
				else
					fk=0;
				while((set2==1)&(key6==1)==1)
				{
					xianshi(0,0,0,0);
					fk=0;
					jr=0;
					while((set1==0)&(set2==1)&(key6==1)==1)
					{
						delayms(200);
						while((set1==0)&(set2==1)&(key6==1)==1)
						{
							delayms(200);
							while((set1==0)&(set2==1)&(key6==1)==1)
							{
								d1=1;
								d2=1;
								d3=1;
								xianshi(6,6,6,6);
							}
						}
					}
					while(k1==1)				
					{
						k=0;
						d1=1;
						d2=1;
						d3=1;
						key1=0;
						key2=0;
						key6=0;
					}					
				}				
			}										
		}
	}					
}

//功能: 数码显示
void xianshi(uchar a,uchar b,uchar c,uchar d)			 
{	
	P2=0xfe;	
	P0=table[a];
	delayms(5);

	P2=0xfd;
	P0=table[b];
	delayms(5);

	P2=0xfb;	
	P0=table[c];
	delayms(5);

	P2=0xf7;	
	P0=table[d];
	delayms(5);
}
//功能: 设置三种风速
void time0() interrupt 1								 
{
	uint t0;
	TH0=(65535-50000)/256;
	TL0=(65535-50000)%256;
	t0++;
	
	if(t0==100)
		flag=1;
	if(t0==600)
		flag=2;
	if(t0==1600)
		flag=3;
	if(t0==3600)
	{
		t0=0;
		flag=0;		
	}
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -