📄 text5.c
字号:
#include <reg51.h>
sfr ldata=0x90;
sbit rs=P2^6;
sbit rw=P2^5;
sbit en=P2^4;
sbit busy=P1^7;
void lcdready();
void lcddata(unsigned char value);
void lcdcmd(unsigned char value);
void countprint(void);
void doublekey(void);
void clear(void);
void MSDelay(unsigned int value);
unsigned char keypad[18]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','&',0x20};
unsigned char jishu[19]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
unsigned char store[18];
unsigned char colloc,rowloc;
unsigned char n;
unsigned char i=0;
unsigned char count;
unsigned char b;
unsigned char c;
unsigned char g,s;
unsigned char ge=0,shi=0,bai=0;
void KEYread(void);
void LCDprint(unsigned char row ,unsigned char col);
void main(void)
{
lcdcmd(0x38);
lcdcmd(0x0E);
lcdcmd(0x01);
lcdcmd(0x80);
while(1)
{
KEYread();
LCDprint(rowloc,colloc);
//doublekey();
count=10;
while(1)
{
if((P0==n)&&(count!=0))
{
MSDelay(18);
count--;
}
else
break;
}
}
}
void lcdcmd(unsigned char value)
{
lcdready();
ldata=value;
rs=0;
rw=0;
en=1;
MSDelay(1);
en=0;
return;
}
void lcdready()
{
busy=1;
rs=0;
rw=1;
while(busy==1)
{
en=0;
MSDelay(1);
en=1;
}
return;
}
void KEYread(void)
{
P0=0xFF;
P0=0xF0;
do
{
do
{
MSDelay(1);
colloc=P0;
//colloc &=0xF0;
}while(colloc ==0xF0);
MSDelay(1);
colloc=P0;
//colloc &=0xF0;
}while(colloc ==0xF0);
n=P0;
while(1)
{
P0|=0x0E;
if(P0!=0xFE)
{
rowloc=0;
break;
}
P0&=0xF0;
P0|=0x0D;
if(P0!=0xFD)
{
rowloc=1;
break;
}
P0&=0xF0;
P0|=0x0B;
if(P0 !=0xFB)
{
rowloc=2;
break;
}
P0&=0xF0;
P0|=0x07;
rowloc=3;
break;
}
P0&=0xF0;
//colloc=P0;
}
void LCDprint(unsigned char row,unsigned char col)
{
unsigned char value;
unsigned char no;
if(col==0xE0)
col=0;
else if(col==0xD0)
col=1;
else if(col==0xB0)
col=2;
else if(col==0x70)
col=3;
else if(col==0x60)
col=4;
else if(col==0xA0)
col=5;
else if(col==0xC0)
col=6;
no=col+ row*4;
value=keypad[no];
store[i%18]=value;
if(no==18)
{
clear();
lcdcmd(0x10);
i--;
i--;
i--;
}
/*if(no==16||no==17)
{
i++;
clear();
i--;
i--;
store[i%18]=keypad[no];
}*/
i++;
if( i==17)
{
lcdcmd(0x80);
lcdcmd(0x01);
i=1;
}
lcddata(value);
lcdcmd(0x14);
lcdcmd(0xC0);
jishu[no]++;
g=jishu[no]%10;
s=jishu[no]/10;
lcddata(keypad[s]);
lcddata(keypad[g]);
//lcdcmd(0x14);
//lcdcmd(0xC0);
countprint();
lcdcmd(0x80);
for(b=0;b<i;b++)
{
lcdcmd(0x14);
}
//lcdcmd(0x8i);
}
void countprint(void)
{
ge++;
if(ge==10)
{
shi++;
ge=0;
if(shi==10)
{
bai++;
shi=0;
}
}
lcdcmd(0xC6);
lcddata(keypad[bai]);
lcddata(keypad[shi]);
lcddata(keypad[ge]);
}
void clear(void)
{
//i=i-2;
lcdcmd(0x80);
lcdcmd(0x01);
for(c=0;c<i-2;c++)
lcddata(store[c]);
lcdcmd(0x14);
}
/*void doublekey(void)
{
if(rowloc==3&&colloc==1)
{
MSDelay(10);
if(P0!=0xE0)
switch(P0)
{
case 0xA0:
lcdcmd(0x80);
lcddata(0x20);
//lcdcmd(0xC0);
countprint();
break;
case 0x60:
P0|=0x0E;
if(P0==0x7E)
{
lcdcmd(0x80);
lcddata(0x26);
//lcdcmd(0xC0);
countprint();
break;
}
P0&=0xF0;
P0|=0x0D;
if(P0==0x7D)
{
lcdcmd(0x80);
lcddata(0x7C);
//lcdcmd(0xC0);
countprint();
break;
}
P0&=0xF0;
P0|=0x0B;
if(P0==0x7B)
{
lcdcmd(0x80);
lcddata(0x21);
//lcdcmd(0xC0);
countprint();
break;
}
lcdcmd(0x80);
lcddata(0x5E);
//lcdcmd(0xC0);
countprint();
break;
}
MSDelay(10);
}
}*/
void lcddata(unsigned char value)
{
lcdready();
ldata=value;
rs=1;
rw=0;
en=1;
MSDelay(1);
en=0;
return;
}
void MSDelay(unsigned int value)
{
unsigned int x,y;
for(x=0; x < value; x++)
for(y=0; y< 1275; y++);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -