📄 lcd.c
字号:
/**********************************
功能:键盘扫描函数
输入:无
输出:键码。0表示无键按下;1~24表示键码
说明:T0、T1、WR为输入端,P1口输出端
***********************************/
char keyenter()
{
int i,flag; //有键按下标志
int scancode; //键码
char test,test1;
P1=0XFF;
tier0 = 0;
tier1 = 0;
tier2 = 0; //输出为0
if (P1!=0xff) //查看输入是否全为高
flag=1; //不全为高, 说明有键按下
else flag=0; //全为高, 说明没有键按下
if (flag==1) //有健按下
{
//delay_50us(); //延时
{
tier0 = 0;
tier1 = 1;
tier2 = 1; //使其中1行为低
test = P1;
test =~test; //P1取非,查看谁为高电平
for (i=0;i<8;i++) //扫描8列,查看那列为低
{
test1 = test & 0x01; //保留D0
if(test1!=0)
{ scancode = i + 1;
break;
}
scancode=0;
test=test>>1;
}
}
if(scancode==0)
{
tier0= 1;
tier1= 0;
tier2= 1; //使其中1行为低
test=P1;
test=~test; //P1取非,查看谁为高电平
for (i=0;i<8;i++) //扫描8列,查看那列为低
{
test1=test&0x01; //保留D0
if(test1!=0)
{ scancode=i+9;
break;
}
scancode=0;
test=test>>1;
}
}
if(scancode==0)
{
tier0= 1;
tier1= 1;
tier2= 0; //使其中1行为低
test=P1;
test=~test; //P1取非,查看谁为高电平
for (i=0;i<8;i++) //扫描8列,查看那列为低
{
test1=test&0x01; //保留D0
if(test1!=0)
{ scancode=i+17;
break;
}
scancode=0;
test=test>>1;
}
}
}
else
{
return(scancode);
}
return(scancode);
}
void main(void) using 0
{
uchar code *p;
uchar data keycode;
initcomm(); //初始化
L_SET = 0; //复位
// for ( j = 0; j != 0xff; j++) ; //起延时作用
L_SET = 1; //复位完毕
// for ( j = 0; j != 0xff; j++) ; //起延时作用
LCD_C_D(1,0X3E); /**/
LCD_C_D(1,0XC0); /**/
LCD_C_D(1,0X3F); /**/
CLRLCD(0);
LED_L = 0x04; //背光电源
LCD_C_D(1,0X3F);
while(1)
{
LED_L = 0x00;
keycode= keyenter();
switch( keycode)
{
case 0 : //
p=X13; dis_one_zi(0,0,p);break ;
/* p=X13; dis_one_zi(1,5,p);break ;
p=X13; dis_one_zi(1,6,p);break ;
p=X13; dis_one_zi(1,7,p);break ;
p=X13; dis_one_zi(2,4,p);break ;
p=X13; dis_one_zi(2,5,p);break ;
p=X13; dis_one_zi(2,6,p);break ;
p=X13; dis_one_zi(2,7,p);break ;*/
case 1 : //
p=X25; dis_one_zi(0,1,p);break ;
case 2 : //
p=X29; dis_one_zi(1,2,p);break ;
case 3 : //
p=X1; dis_one_zi(1,3,p);break ;
case 4 : //
p=X2; dis_one_zi(1,4,p);break ;
case 5 : //
p=X3; dis_one_zi(1,5,p);break ;
case 6 : //
p=X4; dis_one_zi(1,6,p);break ;
case 7 : //
p=X5; dis_one_zi(1,7,p);break ;
case 8 : //
p=X6; dis_one_zi(1,8,p);break ;
case 9 : //
p=X7; dis_one_zi(1,9,p);break ;
case 10 : //
p=X8; dis_one_zi(1,10,p);break ;
case 11 : //
p=X26; dis_one_zi(1,11,p);break ;
case 12 : //
p=X29; dis_one_zi(1,12,p);break ;
case 13 : //
p=X29; dis_one_zi(3,1,p);break ;
case 14 : //
p=X26; dis_one_zi(3,2,p);break ;
case 15 : //
p=X2; dis_one_zi(3,3,p);break ;
case 16 : //
p=X1; dis_one_zi(3,4,p);break ;
case 17 : //
p=X8; dis_one_zi(3,5,p);break ;
case 18 : //
p=X7; dis_one_zi(3,6,p);break ;
case 19 : //
p=X6; dis_one_zi(3,7,p);break ;
case 20 : //
p=X5; dis_one_zi(3,8,p);break ;
case 21 : //
p=X4; dis_one_zi(3,9,p);break ;
case 22 : //
p=X3; dis_one_zi(3,10,p);break ;
case 23 : //
p=X2; dis_one_zi(3,11,p);break ;
case 24 : //
p=X1; dis_one_zi(3,12,p);break ;
default :
//badcommand() ;
break ;
delay(); delay(); delay();
CLRLCD(0);
}
WATCH_DOG = !WATCH_DOG ;
// LCD_C_D(1,0X3F);
/* p=X15;
for (number=0;number<12;number++)
{
dis_one_zi(0,number,p);
}
p=X16;
for (number=0;number<12;number++)
{
dis_one_zi(3,number,p);
}
p=X17;
for (number=0;number<4;number++)
{
dis_one_zi(number,0,p);
}
p=X18;
for (number=0;number<4;number++)
{
dis_one_zi(number,11,p);
}*/
/*p=X19; dis_one_zi(0,0,p);
p=X20; dis_one_zi(0,11,p);
p=X21; dis_one_zi(3,0,p);
p=X22; dis_one_zi(3,11,p);*/
// p=X1; dis_one_zi(1,2,p);
// p=X2; dis_one_zi(1,3,p);
// p=X3; dis_one_zi(2,2,p);
// p=X4; dis_one_zi(2,3,p);
// p=X23; dis_one_zi(1,1,p);
// p=X24; dis_one_zi(1,2,p);
// p=X25; dis_one_zi(1,3,p);
// p=X26; dis_one_zi(1,4,p);
// p=X23; dis_one_zi(2,5,p);
// p=X24; dis_one_zi(2,6,p);
// p=X25; dis_one_zi(2,7,p);
// p=X26; dis_one_zi(2,8,p);
// p=X27; dis_one_zi(3,8,p);
// p=X28; dis_one_zi(3,9,p);
// p=X29; dis_one_zi(0,1,p);
// p=X30; dis_one_zi(1,2,p);
// p=X31; dis_one_zi(2,3,p);
// p=X6; dis_one_zi(1,7,p);
// p=X7; dis_one_zi(1,8,p);
// p=X8; dis_one_zi(1,9,p);
// LCD_C_D(1,0X3F); //显示
// delay(); delay(); delay();
/*LCD_C_D(1,0X3E); //关闭显示
p=X12;
for (number=0;number<4;number++)
{
for (i = 0; i < 12;i++)
{
dis_one_zi(number,i,p);
}
}
LCD_C_D(1,0X3F); //显示
delay(); delay(); delay();
LCD_C_D(1,0X3E); //关闭显示
p=X13;
for (number=0;number<4;number++)
{
for (i = 0; i < 12;i++)
{
dis_one_zi(number,i,p);
}
}
LCD_C_D(1,0X3F); //显示
delay(); delay(); delay();*/
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -