青山电子

19264和12864图形点阵液晶(KS0108控制器)的显示驱动程序

0
阅读(6155)

19264图形点阵液晶显示器(KS0108控制器)的显示驱动程序,程序兼容12864图形点阵液晶(KS0108控制器)显示
/*
以下为博主设计的硬件地址,该地址与实际设计相关
  R/W  D/I  /CS1  /CS2  /CS3    E
  A15  A14   A13   A12   A11  与A10有关

                                   A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
LCD_CON                  0      0     0      0     0      1    0    0   0   0    0   0   0    0   0   0
LCD_R_CON             0      0     1      1     0      1    0    0   0   0    0   0   0    0   0   0
LCD_M_CON             0      0     1      0     1      1    0    0   0   0    0   0   0    0   0   0
LCD_L_CON              0      0     0      1     1      1    0    0   0   0    0   0   0    0   0   0
LCD_STATUS            1      0     0      0     0      1     0    0   0   0    0   0   0    0   0  0
LCD_WR                     0      1     1      1     1      1     0    0   0   0    0   0   0    0   0  0
LCD_R_WR               0      1      1      1     0      1     0    0   0   0    0   0   0    0   0  0
LCD_M_WR                0     1      1      0     1      1     0    0   0   0    0   0   0    0   0  0
LCD_L_WR                 0     1      0      1     1      1     0    0   0   0    0   0   0    0   0  0
LCD_R_RD                 1     1      1      1      0     1     0    0   0   0    0   0   0    0   0  0
LCD_M_RD                 1     1      1      0      1     1     0    0   0   0    0   0   0    0   0  0
LCD_L_RD                 1      1      0      1      1     1     0    0   0   0    0   0   0    0   0  0
*/

/*--------------------------------------------
 19264图形点阵液晶显示器(KS0108控制器)自定义寄存器
--------------------------------------------*/
#define  LCD_CON          XBYTE[0x0400]
#define  LCD_R_CON        XBYTE[0x3400]
#define  LCD_M_CON        XBYTE[0x2C00]
#define  LCD_L_CON        XBYTE[0x1C00]
#define  LCD_STATUS       XBYTE[0x8400]
#define  LCD_WR           XBYTE[0x7C00]
#define  LCD_R_WR         XBYTE[0x7400]
#define  LCD_M_WR         XBYTE[0x6C00]
#define  LCD_L_WR         XBYTE[0x5C00]
#define  LCD_R_RD         XBYTE[0xF400]
#define  LCD_M_RD         XBYTE[0xEC00]
#define  LCD_L_RD         XBYTE[0xDC00]

/*
LCD_CON=0x3E(全屏关显示)
LCD_R_CON=0x3E(右屏关显示)
LCD_M_CON=0x3E(中屏关显示)
LCD_L_CON=0x3E(左屏关显示)
LCD_CON=0x3F(全屏开显示)
LCD_R_CON=0x3F(右屏开显示)
LCD_M_CON=0x3F(中屏开显示)
LCD_L_CON=0x3F(左屏开显示)
LCD_CON=11******(全屏设置显示起始行)
LCD_R_CON=11******(右屏设置显示起始行)
LCD_M_CON=11******(中屏设置显示起始行)
LCD_L_CON=11******(左屏设置显示起始行)
LCD_CON=10111***(设置页地址)
LCD_CON=01******(设置列地址)
LCD_R_CON=10111***(设置右屏页地址)
LCD_R_CON=01******(设置右屏列地址)
LCD_M_CON=10111***(设置中屏页地址)
LCD_M_CON=01******(设置中屏列地址)
LCD_L_CON=10111***(设置左屏页地址)
LCD_L_CON=01******(设置左屏列地址)
A=LCD_STATUS(读状态:BUSY,0,ON/OFF,RST,0,0,0,0)
LCD_WR=********(写数据)
LCD_R_WR=********(右屏写数据)
LCD_M_WR=********(中屏写数据)
LCD_L_WR=********(左屏写数据)
A=LCD_R_RD(右屏读数据)
A=LCD_M_RD(中屏读数据)
A=LCD_L_RD(左屏读数据)
*/
KS0108控制器指令说明:


以下为驱动函数声明,源代码见附件。

/****************************************************************************************
 *NAME:       void LCDDisplay(unsigned char x0,unsigned char y0,unsigned char x1,unsigned char y1,unsigned char code *data_adr,unsigned char Overlap)
 *FUNCTION:   LCD显示函数,适用于19264图形点阵液晶(KS0108控制器)显示,兼容12864图形点阵液晶(KS0108控制器)显示
 *Parameter:  x0,y0,x1,y1分别为方块左上角和右下角的点阵坐标,*data_adr为图形方块数据存储地址,Overlap为是否进行写覆盖操作标志,1为重叠,0为覆盖
 *RETURN:     无返回值
 *CREATED BY: 青山Blog
 *CREATED DATE:2011.05.23
 *****************************************************************************************/

void LCDDisplay(unsigned char x0,unsigned char y0,unsigned char x1,unsigned char y1,unsigned char code *data_adr,unsigned char Overlap);


只 要确保y向即列向坐标值不超过128,该驱动函数完全兼容12864图形点阵液晶(KS0108控制器)显示,当然若觉得驱动函数中多了19264液晶得 显示代码,下面附件中的驱动显示函数即为12864图形点阵液晶(KS0108控制器)的驱动函数,只要液晶寄存器地址定义根据实际硬件设计做相应修改即 可。