📄 ks0107 lcd.h
字号:
void lcd_init(void)
{
GpioDataRegs.GPACLEAR.all =0xffffffff;
LCD_CSA=1;
LCD_CSB=1;
LCD_RST=0;
LCD_RS=1;
LCD_RW=1;
LCD_EN=1;
LCD_RST=1;
delay_loop(20000);
LCD_RST=1;
delay_loop(20000);
LCD_EN=1;
LCD_CSA=0;
LCD_CSB=0;
delay_loop(2000);
LCD_CSA=1;
LCD_CSB=1;
// GpioCtrlRegs.GPADIR.all =0xffffff00;
while ((GpioDataRegs.GPADAT.all&0x80));
// GpioCtrlRegs.GPADIR.all =0xffffffff;
}
void write_command(unsigned char command,unsigned char Lcd_Chip)
{
// GpioCtrlRegs.GPADIR.all =0xffffff00;
// GpioDataRegs.GPACLEAR.all=0xff;
//GpioCtrlRegs.GPADIR.all = 0xffffffff;
// GpioDataRegs.GPACLEAR.all=0xff;
if (Lcd_Chip==1) LCD_CSA=0;
else LCD_CSA=1;
if (Lcd_Chip==2) LCD_CSB=0;
else LCD_CSB=1;
if (Lcd_Chip==3) {LCD_CSA=0;LCD_CSA=0;}
LCD_RW=0; // sure
LCD_RS=0; // sure
// delay_loop(8);
do GpioDataRegs.GPACLEAR.all=0xff;
while((GpioDataRegs.GPADAT.all&0x90));
GpioDataRegs.GPADAT.all |=command;
//delay_loop(8);
LCD_EN=1; // sure
delay_loop(18);
//GpioCtrlRegs.GPADIR.all =0xffffff00;
// GpioDataRegs.GPACLEAR.all=0xff;
// while ((GpioDataRegs.GPADAT.all&0x80));
// GpioCtrlRegs.GPADIR.all =0xffffffff;
// do GpioDataRegs.GPACLEAR.all=0xff;
// while((GpioDataRegs.GPADAT.all&0x90));
LCD_EN=0;
// LCD_RS=1;
// LCD_RW=1;
delay_loop(8);
//do GpioDataRegs.GPACLEAR.all=0xff;
//while((GpioDataRegs.GPADAT.all&0x90));
LCD_RS=1;
// LCD_RW=0;
// GpioDataRegs.GPACLEAR.all=0xff;
// GpioDataRegs.GPADAT.all |=0xff;
}
void write_data( unsigned char data, unsigned char CS1, unsigned char CS2)
{
// GpioDataRegs.GPACLEAR.all=0xff;
// while(!(Chk_Lcd_State()==0x00));
// GpioDataRegs.GPACLEAR.all=0xff;
if ((CS1)) LCD_CSA=1;
else LCD_CSA=0;
if ((CS2)) LCD_CSB=1;
else LCD_CSB=0;
delay_loop(8);
do GpioDataRegs.GPACLEAR.all=0xff;
while((GpioDataRegs.GPADAT.all&0x90));
GpioDataRegs.GPADAT.all|= data;
delay_loop(8);
LCD_RS=1;
LCD_RW=0;
LCD_EN=1;
delay_loop(18);
// GpioCtrlRegs.GPADIR.all =0xffffff00;
// GpioDataRegs.GPACLEAR.all=0xff;
// while ((GpioDataRegs.GPADAT.all&0x80));
// GpioCtrlRegs.GPADIR.all =0xffffffff;
LCD_EN=0;
delay_loop(8);
// GpioDataRegs.GPACLEAR.all=0xff;
//do GpioDataRegs.GPACLEAR.all=0xff;
// while((GpioDataRegs.GPADAT.all&0x90));
LCD_RS=1;
LCD_RW=0;
// GpioDataRegs.GPADAT.all |=0xff;
}
void clear_lcd(unsigned char start_row,unsigned char end_row)
{
unsigned char i,j;
for(i=start_row;i<end_row;i++) {
write_command(SET_X|i,1);
write_command(SET_Y,1);
for(j=0;j<64;j++) { write_data(0x0,0,1); }
write_command(SET_X|i,2);
write_command(SET_Y,2);
for(j=0;j<64;j++) { write_data(0x0,1,0);}
} }
void display( unsigned char *chr, unsigned char nRow, unsigned char nCol,
unsigned char highth,unsigned char wideth,unsigned char com_reg)
//*chr 显示数据的地址,nRow 在显示屏上第几行,nCol 在显示屏上第几列
//highth 字体的高度,wideth 字体的宽度
//128*64有8行,128列
{
unsigned char i,tmpCol,tmpRow,h,m,data;
unsigned int j=0;
tmpRow = nRow;
m=0;
for(h=0;h<highth;h=h+8) {
write_command(SET_X|tmpRow,1);
write_command(SET_X|tmpRow,2);
tmpCol=nCol;
for(i=0;i<wideth;i++)
{ data=chr[i+j];
// delay_loop(8);
//write_command(SET_X|tmpRow,1);
//write_command(SET_X|tmpRow,2);
if(tmpCol<64) { //write_command(SET_X|tmpRow,2);
write_command(SET_Y|tmpCol,1);
if (com_reg==0) write_data(data,0,1);
// { while(read_data(0,1)!=data) write_data(data,0,1);}
else write_data(0xff-data,0,1);
//{ while(read_data(0,1)!=data) write_data(0xff-data,0,1); }
}
else {// delay_loop(8);
// write_command(SET_X|tmpRow,1);
write_command(SET_Y|(tmpCol-64),2);
if (com_reg==0) write_data(data,1,0);
/// { while(read_data(1,0)!=data) write_data(data,1,0);}
else write_data(0xff-data,1,0);
/// { while(read_data(1,0)!=data) write_data(0xff-data,1,0); }
}
tmpCol++;
}
m++;
j=m*wideth;
tmpRow++;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -