header
×
嵌入式 > 技术百科 > 详情

GXM12864图形液晶显示模块驱动程序

发布时间:2020-06-16 发布时间:
|
GXM12864是一种采用低功耗CMOS技术实现的点阵图形LCD模块,内含KS0108B/HD61202控制器,CSA与KS0108B(1)连通!CSB与KS0108B(2)连通!CSA/CSB为01时选通KS0108B(1);为10时选通CSB与KS0108B(2),为其他值时!禁止选通!总线处于高阻状态!

硬件原理为PO口接DB0-DB7的8位双向数据总线!
KS0108B 指令集
1:显示开关指令: R/W=0;D/I=0; 开:0X3F; 关:0X3E
2:显示起始行指令:R/W=0;D/I=0;8位数据高2位为1 后6位位起始巷(0-63)
3:页设置指令:R/W=0;D/I=0; 前5位恒定为10111!后三位为页号(0-7)
4:列地址设置指令:R/W=0;D/I=0;;高2位为01;后6位为列地址(0-63)
5:读状态指令:R/W=1;D/I=0;DB7:BUZY 1忙 0 正常  DB6:0  DB5: ON/OFF ON 显示打开 OFF 显示关闭  DB4:RESET 1 复位状态 0 正常状态 DB3-DB0 0000
6:写数据指令:R/W=0;D/I=1;DB7-DB0 为要写入的数据
7:读数据指令:R/W=1;D/I=1;DB7-DB0 为要读显示的数据

#define LCD XBYTE[0XFFFF]  //LCD端口
#define CSA    P2_0        //片选1
#define CSB    P2_1        //片选2
#define E      P2_2        //使能信号,高电平有效
#define R/W    P2_3        //读写选择
#define D/I     p2_4        //指令数据通道

sbit busy=ACC^7;          //LCD状态字节第7位

void send_lcd(unsigned char i)  //发命令到主窗口
{
 CSA=1; //选通1
 CSB=0;
 R/W=1;
 D/I=0;//读状态
 do(ACC=LCD)
 while(busy)  //等待空闲
 R/W=0;
 LCD=i;
}

void wrie_lcd(unsigned char i)  //写命令到主窗口
{
 CSA=1; //选通1
 CSB=0;
 R/W=1;
 D/I=0;//读状态
 do(ACC=LCD)
 while(busy)  //等待空闲
 R/W=0;
 D/I=1;  //写数据状态
 LCD=i;
}
unsigned char read_lcd(void) //读数据
{
 unsigned char i;
 P0=0xff;
 CSA=1; //选通1
 CSB=0;
 R/W=1;
 D/I=0;//读状态
 do(ACC=LCD)
 while(busy)  //等待空闲
 D/I=1;  //读数据状态
 i=P0&0xff;
 return i;
}

void clr_lcd(void) //清屏
{
  unsigned char page,i;
  for(page=0xb8;page<0xc0;page++)
   {
     send_lcd(page);
     send_lcd(0x40); //设置显示列地址
       for(i=0;i<64;i++)
       write_lcd(0);
   }
}

void initial(void);
{
  send_lcd(0x3f);  //开显示
  send_lcd(0xc0);  //设置起始行为第一行
}

 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
采用光反馈控制白光LED的降压稳压器
footer