#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code smg_dm[]="0123456789ABCDEFG";
void Lcd_Init();
void Write_Dat(uchar dd);
void Write_Cmd(uchar dd);
sbit c_rs=P2^0;
sbit c_rw=P2^1;
sbit c_e=P2^2;
uint i=0;
void Delay(uint tt)
{
while(tt--);
}
delay_50us(uint t)
{
uchar j;
for(; t>0;t--)
for(j=19;j>0;j--);
}
void main()
{
uchar key_l,key_h,key;
P3=0xf0;
key_l=key_l&0xf0;
if(key_l!=0xf0)
{
delay_50us(100);//消抖
if(key_l!=0xf0)
{
key_l=P3&0xf0;
key_l=key_l|0x0f;
P3=key_l;
key_h=P3;
key_h=key_h&0x0f;
key_l=key_l&0xf0;
key=key_l+key_h;
}
}
switch (key)
{
case 0xee: Lcd_Init(); //初始化
Write_Cmd(0x80+0x00+i);
Write_Dat(smg_dm[1]);
break;
case 0xde: Lcd_Init(); //初始化
Write_Cmd(0x80+0x00);
Write_Dat(smg_dm[2]);
break;
case 0xbe: Lcd_Init(); //初始化
Write_Cmd(0x80+0x00);
Write_Dat(smg_dm[3]);
break;
case 0x7e:Lcd_Init(); //初始化
Write_Cmd(0x80+0x00);
Write_Dat(smg_dm[4]);
break;
case 0xed: Lcd_Init(); //初始化
Write_Cmd(0x80+0x00);
Write_Dat(smg_dm[5]);
break;
case 0xdd: Lcd_Init(); //初始化
Write_Cmd(0x80+0x00);
Write_Dat(smg_dm[6]);
break;
case 0xbd: Lcd_Init(); //初始化
Write_Cmd(0x80+0x00);
Write_Dat(smg_dm[7]);
break;
case 0x7d: Lcd_Init(); //初始化
Write_Cmd(0x80+0x00);
Write_Dat(smg_dm[8]);
break;
case 0xeb:Lcd_Init(); //初始化
Write_Cmd(0x80+0x00);
Write_Dat(smg_dm[9]);
break;
case 0xdb: Lcd_Init(); //初始化
Write_Cmd(0x80+0x00);
Write_Dat(smg_dm[10]);
break;
case 0xbb: Lcd_Init(); //初始化
Write_Cmd(0x80+0x00);
Write_Dat(smg_dm[11]);
break;
case 0x7b: Lcd_Init(); //初始化
Write_Cmd(0x80+0x00);
Write_Dat(smg_dm[12]);
break;
case 0xe7:Lcd_Init(); //初始化
Write_Cmd(0x80+0x00);
Write_Dat(smg_dm[13]);
break;
case 0xd7:Lcd_Init(); //初始化
Write_Cmd(0x80+0x00);
Write_Dat(smg_dm[14]);
break;
case 0xb7:Lcd_Init(); //初始化
Write_Cmd(0x80+0x00);
Write_Dat(smg_dm[15]);
break;
case 0x77:Lcd_Init(); //初始化
Write_Cmd(0x80+0x00);
Write_Dat(smg_dm[16]);
break;
}
}
void Write_Cmd(uchar dd)
{
c_rs=0;
c_rw=0;
c_e=0;
Delay(50);
P1=dd;
c_e=1;
Delay(50);
c_e=0;
Delay(50);
}
void Write_Dat(uchar dd)
{
c_rs=1;
c_rw=0;
c_e=0;
Delay(50);
P1=dd;
c_e=1;
Delay(50);
c_e=0;
Delay(50);
}
void Lcd_Init()
{
Delay(200);
Write_Cmd(0x38);
Delay(200);
Write_Cmd(0x38);
Delay(200);
Write_Cmd(0x38);
Delay(200);
Write_Cmd(0x08);
Delay(200);
Write_Cmd(0x01);
Delay(200);
Write_Cmd(0x06);
Delay(200);
Write_Cmd(0x0c);
Delay(200);
}