📄 备份电机转速.c
字号:
/*************k1冷风,k2热风,k3低速,k4中速,k5高速,k6确认******************
**************当复位时,显0000***********************************************
**************当红外被挡时,初始显示H002,热风,中速,电热灯亮****************
**************进入设置程序,长按k6,首先设置冷热风,风档,k6确认*************
**************换档按冷风键退后,重新选择调节*********************************
**************设置结束,长按k6保存设置值,并退出****************************/
#include <reg51.h>
#include "EEPROM.c"
#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 d1=P3^4;
sbit d2=P3^5;
sbit d3=P3^6;
sbit d4=P3^7;
bit flag3;
bit flag4;
bit flag5;
bit set1;
bit set2;
uint code table[]={0x3f,0x06,0x5b,0x4f,0x38,0x76};
uchar code tacle[]={0,1,2,3,10,20,30};
uchar key,key1,key2,key3,key4,key5,key6,a,b,tem,dis,step;
uchar flag,flag1,flag2;
void xianshi(uchar,uchar,uchar,uchar);
void break_init();
void dj_sence(uchar,uchar,uchar,uchar);
void dj_ISP_store(uchar,uchar,uchar,uchar);
void dj_key();
uchar dj_setup();
delayms(uint z)
{
uchar x;
while(z--)
for(x=0;x<110;x++);
}
//功能: 默认状态
void chushi(uchar tem,uchar dis,uchar step)
{
if(tem==1)
xianshi(4,0,0,dis);
else
{
xianshi(5,0,0,dis);
jr=1;
d2=0;
}
if(tacle[step]==2)
fk=1;
else
fk=0;
}
//功能: 中断初始
void break_init()
{
TMOD=0x01;
TH0=(65535-500)/256;
TL0=(65535-500)%256;
IE=0X87;
TR0=1;
TR1=1;
fk=0;
jr=0;
set1=0;
set2=0;
tem=2;
dis=2;
step=2;
}
main()
{
break_init();
while(1)
{
if((set1==1)&(set2==1))
{
flag3=dj_setup(); //未进入功能设置,执行初始阶段
if(flag3==0)
{
flag4=ISP_read(14); //读取各设置数据
while(flag4==1)
{
tem=ISP_read(11);
dis=ISP_read(12);
step=ISP_read(13);
}
chushi(tem,dis,step);
}
else
{
d2=1;
d3=0;
fk=0;
jr=0;
flag4=0;
while(flag3==1) //进入功能设置阶段
{
xianshi(1,1,1,1);
dj_key();
}
}
}
else
xianshi(0,0,0,0);
}
}
//功能: 按键功能目录
void dj_key()
{
while(k1==0)
{
a=1;
d1=0;
d2=1;
jr=0;
b=0;
}
while(k2==0)
{
jr=1;
d1=1;
d2=0;
b=2;
a=0;
}
while(k3==0)
{
delayms(5);
key3=1;
while(k3==0);
}
while(k4==0)
{
delayms(5);
key4=1;
while(k4==0);
}
while(k5==0)
{
delayms(5);
key5=1;
while(k5==0);
}
while(key3==1)
{
dj_sence(key3,a,1,flag);
key3=0;
}
while(key4==1)
{
dj_sence(key4,a,2,flag1);
key4=0;
}
while(key5==1)
{
dj_sence(key5,a,3,flag2);
key5=0;
}
}
//功能: 功能设定
void dj_sence(uchar k,uchar h,uchar i,uchar j)
{
if(flag4==0)
{
while(k==1)
{
while(k6!=0);
while(k6!=1);
while(k==1)
{
if(h==1)
xianshi(4,0,0,i);
else
xianshi(5,0,0,i);
if(j==tacle[j])
fk=1;
else
fk=0;
while(k1==0)
k=0;
flag4=dj_setup();
if(flag4==1)
{
flag5=1;
k=0;
dj_ISP_store(h,i,j,flag4);
}
}
}
}
if(flag4==1)
{
while(flag5==1)
{
flag3=0;
xianshi(0,0,0,0);
}
}
}
//功能: 将各数据存入EEPROM
void dj_ISP_store(uchar h,uchar i,uchar j,uchar flag4)
{
ISP_write(11,h);
delayms(1);
ISP_write(12,i);
delayms(1);
ISP_write(13,j);
delayms(1);
ISP_write(14,flag4);
delayms(1);
}
//功能: 设置功能启始按键
uchar dj_setup()
{
uchar d;
while(k6==0)
{
delayms(100);
while(k6==0)
{
delayms(100);
while(k6==0)
{
d=1;
}
}
}
return d;
}
//功能: 数码显示
void xianshi(uchar a,uchar b,uchar c,uchar d)
{
P2=0x01;
P0=table[a];
delayms(1);
P2=0x02;
P0=table[b];
delayms(1);
P2=0x04;
P0=table[c];
delayms(1);
P2=0x08;
P0=table[d];
delayms(1);
}
//功能: 设置三种风速
void time0() interrupt 1
{
uint t0,t1,t2;
TH0=(65535-500)/256;
TL0=(65535-500)%256;
t0++;
t1++;
t2++;
if(t0<=100)
flag=1;
else
{
flag=0;
if(t0==1000)
{
t0=0;
flag=1;
}
}
if(t1<=500)
flag1=2;
else
{
flag1=0;
if(t1==1000)
{
t1=0;
flag1=2;
}
}
if(t2<=900)
flag2=3;
else
{
flag2=0;
if(t2==1000)
{
t2=0;
flag2=3;
}
}
}
//功能:释放感应
init0() interrupt 0
{
set1=1;
}
//功能:红外感应
init1() interrupt 2
{
set2=1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -