📄 keyc.c
字号:
#include<reg52.h>
#include<absacc.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define COM XBYTE[0x9801]
#define DAT XBYTE[0x9800]
#define W_C_GLCD XBYTE[0xA000]
#define W_D_GLCD XBYTE[0xA001]
#define R_B_GLCD XBYTE[0xA002]
#define R_D_GLCD XBYTE[0xA003]
sbit flag=ACC^7;
uchar TAB[]={0xC5,0xC4,0xC3,0xC2,0xC1,0xC0,0xD5,0xD4,0xD3,0xD2,0xD1,0xD0,0xCD,0xCC,0xCB,0xCA,0xC9,0xC8,0xDA,0xD9,0xD8};
uchar code DHZTAB1[]={"全国大学生电子大"};
uchar code DHZTAB2[]={"赛题目: "};
uchar code DHZTAB3[]={" 信号检测台"};
uchar code DHZTAB4[]={"指导教师: 张勇 "};
uchar code DHZTAB5[]={"学生: 李 超 "};
uchar code DHZTAB6[]={" 李亚光 "};
uchar code DHZTAB7[]={" 周国文 "};
uchar code DHZTAB8[]={" 秒: "};
uchar code DHZTAB9[]={"报警! "};
uchar keyin();
void keygo();
void initial_GLCD();
void command_GLCD(uchar ord);
void chkbusy_GLCD();
void write_GLCD(uchar dat);
void delay();
uint ASCII(uint i);
void display1();
void display2();
void clear_GLCD();
void clock();
void dispclock(unsigned int count);
void clostop() interrupt 3 using 0
{
uchar i,temp,j,k;
unsigned int count;
TMOD=0x01;
TCON=0x10;
count++;
if(count==600)
{
TMOD=0x00;
TCON=0x00;
temp=0x08;
command_GLCD(temp|0x80);
for(j=0;j<8;j++)
{
write_GLCD(DHZTAB9[i]);
i++;
write_GLCD(DHZTAB9[i]);
i++;
}
}
dispclock(count);
k=COM;
k&=0x07;
if(k!=0)
{
COM=0x40;
i=DAT;
if(i==0xDA)
{
TMOD=0x00;
TCON=0x00;
}
}
}
void main()
{
uchar i=0;
initial_GLCD();
COM=0x01;
COM=0x3A;
COM=0xD3;
COM=0x40;
do
{
ACC=COM;
}
while(flag==1);
while(1)
{
keygo();
}
}
void keygo()
{
uint i;
uchar j,k;
k=keyin();
for(i=0;i<21;i++)
if(k==TAB[i])
{
if(i<16)
{
j=(uchar)ASCII(i);
write_GLCD(j);
}
else
switch(i)
{
case 16: //F1
initial_GLCD();//clear_GLCD();
clock();
break;
case 17: //F2
initial_GLCD();//clear_GLCD();
display1();
break;
case 18: //F5
initial_GLCD();//clear_GLCD();
break;
case 19: //F4
initial_GLCD();//clear_GLCD();
break;
case 20: //F3
clear_GLCD();//initial_GLCD();
i=0;
display2();
break;
}
break;
}
}
uchar keyin()
{
uchar i;
uchar k;
do
{
k=COM;
k&=0x07;
}while(k==0);
COM=0x40;
i=DAT;
return i;
}
uint ASCII(uint i)
{
if(i<=9)
i+=0x30;
else
i+=0x37;
return i;
}
void initial_GLCD()
{
command_GLCD(0x30); //功能设定
delay();
command_GLCD(0x30); //功能设定
delay();
command_GLCD(0x30); //功能设定
delay();
command_GLCD(0x06); //显示器控制:游标不显示;
delay();
command_GLCD(0x01); //清屏幕
delay();
command_GLCD(0x0c); //进入模式设定
delay();
}
void command_GLCD(uchar ord)
{
chkbusy_GLCD();
W_C_GLCD=ord;
}
void chkbusy_GLCD()
{
do
{
ACC=R_B_GLCD;
}
while(flag==1);
}
void write_GLCD(uchar dat)
{
chkbusy_GLCD();
W_D_GLCD=dat;
}
void delay()
{
uchar i;
for(i=0;i<25;i++)
{;}
}
void display1()
{
uchar temp,j,i;
temp=0x00;
command_GLCD(temp|0x80);
for(j=0;j<8;j++)
{
write_GLCD(DHZTAB1[i]);
i++;
write_GLCD(DHZTAB1[i]);
i++;
}
i=0;
temp=0x10;
command_GLCD(temp|0x80);
for(j=0;j<8;j++)
{
write_GLCD(DHZTAB2[i]);
i++;
write_GLCD(DHZTAB2[i]);
i++;
}
i=0;
temp=0x08;
command_GLCD(temp|0x80);
for(j=0;j<8;j++)
{
write_GLCD(DHZTAB3[i]);
i++;
write_GLCD(DHZTAB3[i]);
i++;
}
i=0;
}
void display2()
{
uchar temp,j,i;
temp=0x00;
command_GLCD(temp|0x80);
for(j=0;j<8;j++)
{
write_GLCD(DHZTAB4[i]);
i++;
write_GLCD(DHZTAB4[i]);
i++;
}
i=0;
temp=0x10;
command_GLCD(temp|0x80);
for(j=0;j<8;j++)
{
write_GLCD(DHZTAB5[i]);
i++;
write_GLCD(DHZTAB5[i]);
i++;
}
i=0;
temp=0x08;
command_GLCD(temp|0x80);
for(j=0;j<8;j++)
{
write_GLCD(DHZTAB6[i]);
i++;
write_GLCD(DHZTAB6[i]);
i++;
}
i=0;
temp=0x18;
command_GLCD(temp|0x80);
for(j=0;j<8;j++)
{
write_GLCD(DHZTAB7[i]);
i++;
write_GLCD(DHZTAB7[i]);
i++;
}
i=0;
}
void clear_GLCD() //清屏幕
{
command_GLCD(0x01);
}
void clock()
{
uchar i,temp,j;
initial_GLCD();
temp=0x10;
command_GLCD(temp|0x80);
for(j=0;j<8;j++)
{
write_GLCD(DHZTAB8[i]); //秒:
i++;
write_GLCD(DHZTAB8[i]); //
i++;
}
i=0;
TMOD=0x01;
TCON=0x10;
IE=0x88;
while(1)
{
if(TF0==1)
{
TH1=0x97;
TL1=0xFA;
TMOD=0x10;
TCON=0x40;
}
if(TMOD==0)
break;
}
}
void dispclock(unsigned int count)
{
uchar d0,d1,d2,temp,firs;
d0=count/100;
d1=count/10%10;
d2=count%10;
temp=0x10;
command_GLCD(temp|0x80);
firs=0x30+d0;
write_GLCD(firs);
firs=0x30+d1;
write_GLCD(firs);
temp=0x13;
command_GLCD(temp|0x80);
firs=0x30+d2;
write_GLCD(firs);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -