📄 lcd.c
字号:
#define uint unsigned int
#define uchar unsigned char
#define E1 P1_3
#define E2 P1_2
#define RS P3_5
#define RW P3_6
#define E P3_7
#define LED_BUS P2
/************如果忙则等待****************/
void wait_E1( void )
{
E1=0;E2=1;
LED_BUS=0xff;
RW=1;
RS=0; //d0~D7为状态输出
E=1;
while(LED_BUS&0x80);
E=0;
}
void wait_E2( void )
{
E1=1;E2=0;
LED_BUS=0xff;
RW=1;
RS=0;
E=1;
while(LED_BUS&0x80);
E=0;
}
/************写指令代码数据 *********/
void write_code_E1( uchar cod )
{
wait_E1();
LED_BUS=cod;
RW=0;
RS=0;
E1=0;E2=1;
E=1;
E=0;
}
void write_code_E2( uchar cod )
{
wait_E2();
LED_BUS=cod;
RW=0;
RS=0;
E1=1;E2=0;
E=1;
E=0;
}
/*************向DDRAM中写数据 *********/
void write_data_E1( uchar dat )
{
wait_E1();
LED_BUS=dat;
RW=0;
RS=1;
E1=0;E2=1;
E=1;
E=0;
}
void write_data_E2( uchar dat )
{
wait_E2();
LED_BUS=dat;
RW=0;
RS=1;
E1=1;E2=0;
E=1;
E=0;
}
/*******************清屏*******************/
void clear_lcd()
{
uchar page,i;
for(page=0xb8;page<0xc0;page++) //x=0(10111000) y=(10111111);
{
write_code_E1(page); //设置页地址x=page
write_code_E1(0x40); //设置列地址y=0
for(i=0;i<64;i++)
{
write_data_E1(0x00); //写0 每写一次y自动加1
}
}
for(page=0xb8;page<0xc0;page++) //x=0(10111000) y=(10111111);
{
write_code_E2(page); //设置页地址x=page
write_code_E2(0x40); //设置列地址y=0
for(i=0;i<64;i++)
{
write_data_E2(0x00); //写0 每写一次y自动加1
}
}
}
/****************初始化液晶****************/
void init_lcd()
{
write_code_E1(0xc0); //(11 000000) 设置显示起始行z=0
write_code_E2(0xc0); //(11 000000) 设置显示起始行z=0
write_code_E1(0x3f); // ?
write_code_E2(0x3f); // ?
clear_lcd();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -