📄 lcd.c
字号:
#include <at89x51.h>
#include <lcd.h>
char code int2charLCD[]="0123456789";//感觉code不用的
void write_LCD_command(unsigned command)
{
rw=WRITE;
rs=COMMAND;
enable=ENABLE;
P1=command;
delay100us(20);
enable=DISABLE;
rw=1;
}
void write_LCD_data(unsigned LCDdata)
{
rw=WRITE;
rs=DATA;
enable=ENABLE;
P1=LCDdata;//不管输入什么,他直接编译成二进制
delay100us(20);
enable=DISABLE;
rw=1;
}
void init_LCD(void)
{
write_LCD_command(TwoLine_8bit); //0x38
write_LCD_command(CURSOR_ON); //0x0C
write_LCD_command(CURSOR_RIGHT); //0x06
}
void clear_LCD()
{
write_LCD_command(CLEAR);
write_LCD_command(CURSOR_HOME);
}
void display_LCD_string(char *p)
{
while(*p)
{
write_LCD_data(*p);
p++;
}
}
void display_LCD_number(char number)
{
unsigned char x,y;
x=number/10;
y=number-10*x;
write_LCD_data(int2charLCD[x]);
write_LCD_data(int2charLCD[y]);
}
void gotoxy(unsigned x,unsigned y)
{
if(x==1)
write_LCD_command(GOTO_LINE_1+y);
else
write_LCD_command(GOTO_LINE_2+y);
}
void delay100us(unsigned char i)
{
unsigned char j=0;
/*#pragma asm
more: mov R3,#48
djnz R3,$
djnz R7,more
#pragma endasm*/
for(i;i>0;i--)
for(j=0;j<34;j++);
}
unsigned char scan()//51>1,61>4.71>7,81>0,54>A,64>a,74>up,84>down,72>left,73>right
{
unsigned char z,j,a,b;
for(z=1;z<=4;z++)
{
switch(z){
case 1:a=0xfe;break;
case 2:a=253;break;
case 3:a=0xfb;break;
case 4:a=0xf7;break;
default :break;
}
SNPT=a;
delay100us(1);
delay100us(1);
delay100us(1);
b=SNPT;
delay100us(10);
if(b!=SNPT) return 0;
b=b>>4;
switch(b){
case 0x0e:j=50+z;
break;
case 13:j=60+z;
break;
case 11:j=70+z;
break;
case 7:j=80+z;
break;
default :j=0;break;}
if(j!=0) break;
}
SNPT=0xff;
// P3=j;
return j;
}
unsigned char value(unsigned char i)
{
switch(i){
case 51: return '3';break;
case 52: return '2';break;
case 53: return '1';break;
case 54: return 'A';break;
case 61: return '6';break;
case 62: return '5';break;
case 63: return '4';break;
case 64: return 'V';break;
case 71: return '9';break;
case 72: return '8';break;
case 73: return '7';break;
case 74: return 'U';break;
case 81: return 'E';break;
case 82: return 'B';break;
case 83: return '0';break;
case 84: return 'D';break;
default: return 0;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -