📄 lcd12864.c
字号:
//*************************************************//
//********* Point LCD Read&Write Function *********//
//*************LCD Mode: CGS12864 *****************//
//******** -------------------------------- *******//
//******** | | *******//
//******** | 128*64 | *******//
//******** | | *******//
//******** -------------------------------- *******//
//*************************************************//
//+++++ left_command() -> write left lcd command //
//+++++ right_command() -> write right lcd command//
//+++++ left_data() -> write left lcd data //
//+++++ right_data() -> write right lcd data //
//+++++ lcd_left_clear() -> clear left lcd //
//+++++ lcd_right_clear()-> clear right lcd //
//+++++ left_read() -> read left lcd data //
//+++++ right_read() -> read right lcd data //
//+++++ display_ascii() -> write ascii at x,y //
//*************************************************//
//****************** Port Define ******************//
sbit DD0 = P0^0;
sbit DD1 = P0^1;
sbit DD2 = P0^2;
sbit DD3 = P0^3;
sbit DD4 = P0^4;
sbit DD5 = P0^5;
sbit DD6 = P0^6;
sbit DD7 = P0^7;
#define lcd_dd P0
sbit lcd_en = P2^3;
sbit lcd_csa = P2^4;
sbit lcd_csb = P2^5;
sbit lcd_di = P2^6;
// h=data, l=command//
sbit lcd_rw = P2^7;
// h=read, l=write//
#define lcd_on 0x3f
#define lcd_off 0x3e
#define lcd_xrow 0xc0
#define lcd_page 0xb8
#define lcd_y 0x40
//************* Write Command Left Part **********************//
void left_command(char cmd)
{
lcd_en=0;
lcd_csa=0;
lcd_csb=1;
lcd_di=0;
lcd_rw=1;
lcd_dd=0xff;
lcd_en=1;
while(DD7==1)
{
lcd_en=0;
lcd_dd=0xff;
lcd_en=1;
}
lcd_en=0;
lcd_dd=cmd;
lcd_rw=0;
lcd_en=1;
lcd_en=0;
}
//***************** write command right ********************//
void right_command(char cmd)
{
lcd_en=0;
lcd_csa=1;
lcd_csb=0;
lcd_di=0;
lcd_rw=1;
lcd_dd=0xff;
lcd_en=1;
while(DD7==1)
{
lcd_en=0;
lcd_dd=0xff;
lcd_en=1;
}
lcd_en=0;
lcd_dd=cmd;
lcd_rw=0;
lcd_en=1;
lcd_en=0;
}
// ******************** write data left ************************//
void left_data(char lcd_data)
{
lcd_en=0;
lcd_csa=0;
lcd_csb=1;
lcd_di=0;
lcd_rw=1;
lcd_dd=0xff;
lcd_en=1;
while(DD7==1)
{
lcd_en=0;
lcd_dd=0xff;
lcd_en=1;
}
lcd_en=0;
lcd_dd=lcd_data;
lcd_di=1;
lcd_rw=0;
lcd_en=1;
lcd_en=0;
}
// ******************** write data left ************************//
void right_data(char lcd_data)
{
lcd_en=0;
lcd_csa=1;
lcd_csb=0;
lcd_di=0;
lcd_rw=1;
lcd_dd=0xff;
lcd_en=1;
while(DD7==1)
{
lcd_en=0;
lcd_dd=0xff;
lcd_en=1;
}
lcd_en=0;
lcd_dd=lcd_data;
lcd_di=1;
lcd_rw=0;
lcd_en=1;
lcd_en=0;
}
//******************* clear left lcd ***************************//
void lcd_left_clear()
{
char i;
int j;
left_command(lcd_xrow);
for(i=0;i<=7;i++)
{
left_command(lcd_page|i);
left_command(lcd_y);
for(j=0;j<=63;j++)
{
left_data(0x00);
}
}
}
//********************** clear right lcd **********************//
void lcd_right_clear()
{
char i;
int j;
right_command(lcd_xrow);
for(i=0;i<=7;i++)
{
right_command(lcd_page|i);
right_command(lcd_y);
for(j=0;j<=63;j++)
{
right_data(0x00);
}
}
}
//***************** left_read data **********************//
unsigned char left_read()
{
char reddd;
lcd_en=0;
lcd_csa=0;
lcd_csb=1;
lcd_di=0;
lcd_rw=1;
lcd_dd=0xff;
lcd_en=1;
while(DD7==1)
{
lcd_en=0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -