📄 机械a型液晶显示.c
字号:
connum=1;
dismark(2);
}
else if(keychoose==5)
{clearmark(1);
bellnum=1;
dismark(2);
}
if(specur==0 && (keychoose==6 || keychoose==7))
{ if(sdspeed>0)sdspeed--;
send(0xf4);
dispwy(0);
delay200();
SERCONTROL=1;
sendspeed();
SERCONTROL=0;
if(keychoose==6)dis_test();
else if(keychoose==7)disdt();
}
else if(specur==1 && (keychoose==6 || keychoose==7))
{ if(sdlc>0)sdlc--;
send(0xf4);
dispwy(1);
delay200();
SERCONTROL=1;
sendlc();
SERCONTROL=0;
if(keychoose==6)dis_test();
else if(keychoose==7)disdt();
}
}break;
case 51:
{send(0xf4);
dispwy(0);
delay200();
delay200();
delay200();
if(keychoose==6)
{dis_test();
}
else if(keychoose==7)
{ disdt();
}
}break;
case 52:
{send(0xf4);
dispwy(1);
delay200();
delay200();
delay200();
if(keychoose==6)
{dis_test();
}
else if(keychoose==7)
{ disdt();
}
}break;
}
EA=1;
}
}
}
/*按键处理程序*/
void keydown(void) interrupt 0 using 1
{
uchar keyvalue;
delays(); //延时去抖
delays();
delays();
EA=0;
DOG=~DOG;
if (IN1==1) goto outin1;
SERCONTROL=1;
DOG=~DOG;
delay200();
DOG=~DOG;
delay(10000);
bell=bellvalue;
delay(2000);
DOG=~DOG;
delay(5000);
bell=0;
keydd=1;
switch (keychoose)
{case 1:
{if(menunum==0)
{keydownnum=1;
keychoose=2;
}
else if(menunum==1)
{ keychoose=3;
keydownnum=2;
}
else if(menunum==2)
{keychoose=4;
keydownnum=3;
}
else if(menunum==3)
{keychoose=5;
keydownnum=4;
}
}break;
case 2:
{
sdspeed=sw[0]*10+sw[1];
if(sdspeed>80)sdspeed=80;
sendspeed();//发速度指令
keychoose=1;
keydownnum=5;
}break;
case 3:
{ sdlc=lc[0]*100+lc[1]*10+lc[2];
if(sdlc>100)sdlc=100;
sendlc();//发励磁指令
keychoose=1; //return to menu
keydownnum=5;
}break;
case 4:
{if(connum==0) {keychoose=6;keydownnum=6;controlstyle=0xe3;}
else{keychoose=7;keydownnum=7;controlstyle=0x2a;}
consend(); //发实验项目指令
}break;
case 5:
{if(bellnum==0)bellvalue=1;
else bellvalue=0;
keychoose=1;
keydownnum=5;
}break;
}
outin1:
keyvalue=keyscan();
P1=0xf0;
if(shake==1)goto outkey;
SERCONTROL=1;
DOG=~DOG;
delay(10000);
DOG=~DOG;
delay(30000);
bell=bellvalue;
delay(2000);
DOG=~DOG;
delay(5000);
bell=0;
switch (keyvalue)
{ case 0xe1: //key1 数字1
{ if(keychoose==2 || keychoose==3)
{ keydownnum=8;
keydd=1;//digkey(1);
}
else if(keychoose==6 || keychoose==7)
{keydownnum=51;
specur=0;
keydd=1;
}
}break;
case 0xd1://key2,数字2
{ if(keychoose==2 || keychoose==3)
{ keydownnum=9;
keydd=1;//digkey(2);
}
else if(keychoose==6 || keychoose==7)
{keydownnum=52;
specur=1;
keydd=1;
}
}break;
case 0xb1://key3,数字3
{ if(keychoose==2 || keychoose==3)
{ keydownnum=10;
keydd=1;//digkey(3);
}
else if(keychoose==6 || keychoose==7)
{sendzero();
}
}break;
case 0x71://key4,符号∧
{keydownnum=21;
keydd=1;
}break;
case 0xe2://key5 数字4
{if(keychoose==2 || keychoose==3)
{ keydownnum=11;
keydd=1;//digkey(4);
}
else if(keychoose==6 || keychoose==7)
{sendrnew();
}
}break;
case 0xd2://key6, 数字5
{if(keychoose==2 || keychoose==3)
{keydownnum=12;
keydd=1;//digkey(5);
}
else if(keychoose==7)
{pause=~pause;
}
}break;
case 0xb2://key7, 数字6
{if(keychoose==2 || keychoose==3)
{ keydownnum=13;
keydd=1;//digkey(6);
}
}break;
case 0x72://key8, 符号∨
{keydownnum=22;
keydd=1;
}break;
case 0xe8://key9, Menu
{keychoose=1;
keydd=1;
keydownnum=18;
}break;
case 0xd8://key10, 数字0
{if(keychoose==2 || keychoose==3)
{ keydownnum=17;
keydd=1;//digkey(0);
}
/* else if(keychoose==3)
{keydownnum=50;
keydd=1;
}*/
else if(keychoose==6 || keychoose==7 || keychoose==1)
{sdlc=0;
lc[0]=0;
lc[1]=0;
lc[2]=0;
sendlc();
}
}break;
case 0xb8://key11,符号⊙
{sdspeed=0;
sw[0]=0;
sw[1]=0;
sendspeed();
}break;
case 0x78://key12,符号>
{ keydd=1;
keydownnum=20;
}break;
case 0xe4://key13,数字7
{if(keychoose==2 || keychoose==3)
{ keydownnum=14;
keydd=1;//digkey(7);
}
}break;
case 0xd4://key14,数字8
{if(keychoose==2 || keychoose==3)
{ keydownnum=15;
keydd=1;//digkey(8);
}
}break;
case 0xb4: //key15,数字9
{if(keychoose==2 || keychoose==3)
{ keydownnum=16;
keydd=1;//digkey(9);
}
}break;
case 0x74: //key16,符号<
{ keydd=1;
keydownnum=19;
}break;
}
DOG=~DOG;
outkey:
EA=1;
EX0=1;
SERCONTROL=0;//关串口发送功能,恢复为默认的接受状态
DOG=~DOG;
}
/*----------------串口中断程序-----------------------*/
void seria(void) interrupt 4 using 2
{
uchar cnum;
float summi;
float summo;
uchar h;
uchar i;
uchar k;
summi=0;
summo=0;
h=0;
DOG=~DOG;
EX1=0;
EX0=0;
ES=0;
EA=0;
RI=0;
i=SBUF;
if(i==0xfa)//端口采集数据
{
while(RI==0 && h<80)
{h=h+1;}
if(h==80)
{goto out10;}
RI=0;
h=0;
k=SBUF;
if(k==0xaf)
{while(RI==0 && h<80)
{h=h+1;}
if(h==80)
{goto out10;}
RI=0;
h=0;
ana1[num]=SBUF;
while(RI==0 && h<80)
{h=h+1;}
if(h==80)
{goto out10;}
RI=0;
h=0;
ana2[num]=SBUF;
while(RI==0 && h<80)
{h=h+1;}
if(h==80)
{goto out10;}
RI=0;
h=0;
digl1=SBUF;
while(RI==0 && h<80)
{h=h+1;}
if(h==80)
{goto out10;}
RI=0;
h=0;
digh1=SBUF;
while(RI==0 && h<80)
{h=h+1;}
if(h==80)
{goto out10;}
RI=0;
h=0;
digl2=SBUF;
while(RI==0 && h<80)
{h=h+1;}
if(h==80)
{goto out10;}
RI=0;
h=0;
digh2=SBUF;
dig1=digh1*256+digl1;
dig1=dig1*3;//200;
dig1=dig1/25;
dig2=digh2*256+digl2;
dig2=dig2*3;//200;
dig2=dig2/25;
num=num+1;
if(num==N)
num=0;
for(cnum=0;cnum<N;cnum++)
{
summi += ana1[cnum];
summo += ana2[cnum];
}
analog1=summi/N;
analog1=analog1/49;
analog2=summo/N;
analog2=analog2*1/10;
altra=1;
}
}
else if(i==0xfc)//
{
while(RI==0 && h<80)
{h=h+1;}
if(h==80)
{goto out10;}
RI=0;
h=0;
k=SBUF;
if(k==0xcf)
{while(RI==0 && h<80)
{h=h+1;}
if(h==80)
{goto out10;}
RI=0;
h=0;
sdspeed=SBUF;
}
}
else if(i==0xab)//
{
while(RI==0 && h<80)
{h=h+1;}
if(h==80)
{goto out10;}
RI=0;
h=0;
k=SBUF;
if(k==0xba)
{while(RI==0 && h<80)
{h=h+1;}
if(h==80)
{goto out10;}
RI=0;
h=0;
sdlc=SBUF;
}
}
out10: ES=1;
EX1=1;
EX0=1;
EA=1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -