一.LCD显示模块LM6029BCW
1.LCD显示模块LM6029BCW介绍
深圳市拓普微科技开发有限公司生产的 LM6029 点阵图形式液晶显示模块,采用 S6B0724 控制器,模块大小 57.6 x42.0x2.0mm,点阵数 128x64dot。轻薄设计。适配 Intel8080 操作时序电路。8 bits 并口数据传输方式,软件调节对比度等功能。
以下是其主要特性和规格:
类型:液晶,图像,单色。
格式:128 x 64。
应用:主要用于工业、控制、信息等领域。
接口:并行。
电压:3.3V。
温度范围:-30℃~85℃。
2.6800 模式系统总线时序
3.内存map
4.电路图
采用 AT89LV52 单片机同 LM6029 液晶模块通过 I/0 口相连为例。采用间接控制方式。
二.代码实现
显示设置:横屏显示
1.lcd.c
#define MAX_X 16
#define MAX_Y 8
uchar LcdRAM[MAX_Y][MAX_X*8];
const uchar charzk[][16]={
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},/*" ",0*/
{0x00,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x00,0x00,0x00,},/*"!",1*/
{0x00,0x00,0x80,0x40,0x00,0x80,0x40,0x00,0x00,0x02,0x01,0x00,0x02,0x01,0x00,0x00,},/*""",2*/
{0x00,0x40,0xC0,0x78,0x40,0xC0,0x78,0x00,0x00,0x04,0x3F,0x04,0x04,0x3F,0x04,0x00,},/*"#",3*/
{0x00,0x38,0x44,0x44,0xFE,0x84,0x18,0x00,0x00,0x0C,0x10,0x10,0x7F,0x10,0x0F,0x00,},/*"$",4*/
{0x00,0xF0,0x08,0xF0,0x80,0x60,0x18,0x00,0x00,0x00,0x31,0x0C,0x03,0x1E,0x21,0x1E,},/*"%",5*/
{0x00,0xF0,0x08,0x88,0x70,0x00,0x00,0x00,0x1E,0x21,0x23,0x2C,0x19,0x27,0x21,0x10,},/*"&",6*/
{0x00,0x00,0x00,0x40,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x01,0x00,0x00,0x00,},/*"'",7*/
{0x00,0x00,0xE0,0x18,0x04,0x02,0x00,0x00,0x00,0x00,0x07,0x18,0x20,0x40,0x00,0x00,},/*"(",8*/
{0x00,0x00,0x02,0x04,0x18,0xE0,0x00,0x00,0x00,0x00,0x40,0x20,0x18,0x07,0x00,0x00,},/*")",9*/
{0x00,0x40,0x40,0x80,0xF0,0x80,0x40,0x40,0x00,0x02,0x02,0x01,0x0F,0x01,0x02,0x02,},/*"*",10*/
{0x00,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x0F,0x01,0x01,0x01,},/*"+",11*/
{0x00,0x00,0x00,0x40,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x01,0x00,0x00,0x00,},/*",",12*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x00,},/*"-",13*/
{0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00,},/*".",14*/
{0x00,0x00,0x00,0x00,0xC0,0x38,0x04,0x00,0x00,0x60,0x18,0x07,0x00,0x00,0x00,0x00,},/*"/",15*/
{0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,},/*"0",16*/
{0x00,0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,},/*"1",17*/
{0x00,0x70,0x08,0x08,0x08,0x08,0xF0,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,},/*"2",18*/
{0x00,0x30,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x18,0x20,0x21,0x21,0x22,0x1C,0x00,},/*"3",19*/
{0x00,0x00,0x80,0x40,0x30,0xF8,0x00,0x00,0x00,0x06,0x05,0x24,0x24,0x3F,0x24,0x24,},/*"4",20*/
{0x00,0xF8,0x88,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x20,0x20,0x20,0x11,0x0E,0x00,},/*"5",21*/
{0x00,0xE0,0x10,0x88,0x88,0x90,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x20,0x1F,0x00,},/*"6",22*/
{0x00,0x18,0x08,0x08,0x88,0x68,0x18,0x00,0x00,0x00,0x00,0x3E,0x01,0x00,0x00,0x00,},/*"7",23*/
{0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,},/*"8",24*/
{0x00,0xF0,0x08,0x08,0x08,0x10,0xE0,0x00,0x00,0x01,0x12,0x22,0x22,0x11,0x0F,0x00,},/*"9",25*/
{0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x0C,0x00,0x00,0x00,},/*":",26*/
{0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,},/*";",27*/
{0x00,0x00,0x80,0x40,0x20,0x10,0x08,0x00,0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x00,},/*"<",28*/
{0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x00,0x00,0x02,0x02,0x02,0x02,0x02,0x02,0x00,},/*"=",29*/
{0x00,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x20,0x10,0x08,0x04,0x02,0x01,0x00,},/*">",30*/
{0x00,0x70,0x48,0x08,0x08,0x88,0x70,0x00,0x00,0x00,0x00,0x30,0x37,0x00,0x00,0x00,},/*"?",31*/
{0x00,0xC0,0x30,0xC8,0x28,0xE8,0x10,0xE0,0x00,0x07,0x18,0x27,0x28,0x2F,0x28,0x17,},/*"@",32*/
{0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20,},/*"A",33*/
{0x00,0x08,0xF8,0x88,0x88,0x88,0x70,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x11,0x0E,},/*"B",34*/
{0x00,0xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00,0x07,0x18,0x20,0x20,0x20,0x10,0x08,},/*"C",35*/
{0x00,0x08,0xF8,0x08,0x08,0x08,0x10,0xE0,0x00,0x20,0x3F,0x20,0x20,0x20,0x10,0x0F,},/*"D",36*/
{0x00,0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x20,0x23,0x20,0x18,},/*"E",37*/
{0x00,0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x00,0x03,0x00,0x00,},/*"F",38*/
{0x00,0xC0,0x30,0x08,0x08,0x08,0x38,0x00,0x00,0x07,0x18,0x20,0x20,0x22,0x1E,0x02,},/*"G",39*/
{0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x20,0x3F,0x21,0x01,0x01,0x21,0x3F,0x20,},/*"H",40*/
{0x00,0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,},/*"I",41*/
{0x00,0x00,0x00,0x04,0x04,0xFC,0x04,0x04,0x00,0x60,0x40,0x40,0x40,0x3F,0x00,0x00,},/*"J",42*/
{0x00,0x08,0xF8,0x88,0xC0,0x28,0x18,0x08,0x00,0x20,0x3F,0x20,0x01,0x26,0x38,0x20,},/*"K",43*/
{0x00,0x08,0xF8,0x08,0x00,0x00,0x00,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x20,0x30,},/*"L",44*/
{0x00,0x08,0xF8,0xF8,0x00,0xF8,0xF8,0x08,0x00,0x20,0x3F,0x01,0x3E,0x01,0x3F,0x20,},/*"M",45*/
{0x08,0xF8,0x30,0xC0,0x00,0x08,0xF8,0x08,0x20,0x3F,0x20,0x00,0x07,0x18,0x3F,0x00,},/*"N",46*/
{0x00,0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x10,0x20,0x20,0x20,0x10,0x0F,},/*"O",47*/
{0x00,0x08,0xF8,0x08,0x08,0x08,0x08,0xF0,0x00,0x20,0x3F,0x21,0x01,0x01,0x01,0x00,},/*"P",48*/
{0x00,0xF0,0x08,0x04,0x04,0x04,0x08,0xF0,0x00,0x07,0x08,0x14,0x14,0x18,0x28,0x27,},/*"Q",49*/
{0x08,0xF8,0x88,0x88,0x88,0x88,0x70,0x00,0x20,0x3F,0x20,0x00,0x03,0x0C,0x30,0x20,},/*"R",50*/
{0x00,0x70,0x88,0x08,0x08,0x08,0x38,0x00,0x00,0x38,0x20,0x21,0x21,0x22,0x1C,0x00,},/*"S",51*/
{0x00,0x18,0x08,0x08,0xF8,0x08,0x08,0x18,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,},/*"T",52*/
{0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,},/*"U",53*/
{0x08,0x78,0x88,0x00,0x00,0xC8,0x38,0x08,0x00,0x00,0x07,0x38,0x0E,0x01,0x00,0x00,},/*"V",54*/
{0x00,0x08,0xF8,0x00,0xF8,0x00,0xF8,0x08,0x00,0x00,0x03,0x3E,0x01,0x3E,0x03,0x00,},/*"W",55*/
{0x08,0x18,0x68,0x80,0x80,0x68,0x18,0x08,0x20,0x30,0x2C,0x03,0x03,0x2C,0x30,0x20,},/*"X",56*/
{0x00,0x08,0x38,0xC8,0x00,0xC8,0x38,0x08,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,},/*"Y",57*/
{0x00,0x10,0x08,0x08,0x08,0xC8,0x38,0x08,0x00,0x20,0x38,0x26,0x21,0x20,0x20,0x18,},/*"Z",58*/
{0x00,0x00,0xFE,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x7F,0x40,0x40,0x40,0x00,0x00,},/*"[",59*/
{0x00,0x02,0x1C,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x1C,0x60,0x00,},/*"\",60*/
{0x00,0x00,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,0x00,0x40,0x40,0x40,0x7F,0x00,0x00,},/*"]",61*/
{0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x00,},/*"^",62*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,},/*"_",63*/
{0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,},/*"`",64*/
{0x00,0x40,0x20,0x20,0xA0,0xC0,0x00,0x00,0x00,0x06,0x09,0x09,0x04,0x0F,0x08,0x00,},/*"a",65*/
{0x00,0x08,0xF8,0x80,0x40,0x40,0x80,0x00,0x00,0x00,0x1F,0x08,0x10,0x10,0x08,0x07,},/*"b",66*/
{0x00,0x80,0x40,0x20,0x20,0x20,0x40,0x00,0x00,0x03,0x04,0x08,0x08,0x08,0x04,0x00,},/*"c",67*/
{0x00,0x80,0x40,0x40,0x40,0x48,0xF8,0x00,0x00,0x0F,0x10,0x10,0x10,0x08,0x1F,0x10,},/*"d",68*/
{0x00,0xC0,0x20,0x20,0x20,0x20,0xC0,0x00,0x00,0x07,0x09,0x09,0x09,0x09,0x05,0x00,},/*"e",69*/
{0x00,0x40,0x40,0xF0,0x48,0x48,0x10,0x00,0x00,0x10,0x10,0x1F,0x10,0x10,0x00,0x00,},/*"f",70*/
{0x00,0x60,0x90,0x90,0x90,0x70,0x10,0x00,0x00,0x0D,0x12,0x12,0x12,0x12,0x0C,0x00,},/*"g",71*/
{0x08,0xF8,0x80,0x40,0x40,0x40,0x80,0x00,0x10,0x1F,0x10,0x00,0x00,0x10,0x1F,0x10,},/*"h",72*/
{0x00,0x00,0x80,0x98,0x98,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,},/*"i",73*/
{0x00,0x00,0x00,0x00,0x40,0x4C,0xCC,0x00,0x00,0x00,0x60,0x40,0x40,0x40,0x3F,0x00,},/*"j",74*/
{0x00,0x08,0xF8,0x00,0x00,0xC0,0x40,0x40,0x00,0x10,0x1F,0x12,0x03,0x14,0x18,0x10,},/*"k",75*/
{0x00,0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,},/*"l",76*/
{0x20,0xE0,0x20,0x20,0xE0,0x20,0x20,0xC0,0x08,0x0F,0x08,0x00,0x0F,0x08,0x00,0x0F,},/*"m",77*/
{0x20,0xE0,0x40,0x20,0x20,0x20,0xC0,0x00,0x08,0x0F,0x08,0x00,0x00,0x08,0x0F,0x08,},/*"n",78*/
{0x00,0xC0,0x20,0x20,0x20,0x20,0xC0,0x00,0x00,0x07,0x08,0x08,0x08,0x08,0x07,0x00,},/*"o",79*/
{0x00,0x10,0xF0,0x20,0x10,0x10,0x20,0xC0,0x00,0x10,0x1F,0x12,0x04,0x04,0x02,0x01,},/*"p",80*/
{0x00,0xC0,0x20,0x10,0x10,0x20,0xF0,0x00,0x00,0x01,0x02,0x04,0x04,0x12,0x1F,0x10,},/*"q",81*/
{0x00,0x20,0x20,0xE0,0x40,0x20,0x20,0x60,0x00,0x08,0x08,0x0F,0x08,0x08,0x00,0x00,},/*"r",82*/
{0x00,0xC0,0x20,0x20,0x20,0x20,0x60,0x00,0x00,0x0C,0x09,0x09,0x09,0x09,0x06,0x00,},/*"s",83*/
{0x00,0x40,0x40,0xF0,0x40,0x40,0x00,0x00,0x00,0x00,0x00,0x0F,0x10,0x10,0x08,0x00,},/*"t",84*/
{0x20,0xE0,0x00,0x00,0x00,0x20,0xE0,0x00,0x00,0x07,0x08,0x08,0x08,0x04,0x0F,0x08,},/*"u",85*/
{0x00,0x20,0xE0,0x20,0x00,0x20,0xE0,0x20,0x00,0x00,0x00,0x03,0x0C,0x03,0x00,0x00,},/*"v",86*/
{0x60,0xA0,0x00,0x20,0xE0,0x00,0xA0,0x60,0x00,0x03,0x0C,0x03,0x01,0x0E,0x01,0x00,},/*"w",87*/
{0x00,0x20,0x60,0xA0,0x80,0x60,0x20,0x00,0x00,0x08,0x0C,0x03,0x0B,0x0C,0x08,0x00,},/*"x",88*/
{0x10,0x30,0xD0,0x00,0x00,0xD0,0x30,0x10,0x00,0x10,0x10,0x0F,0x03,0x00,0x00,0x00,},/*"y",89*/
{0x00,0x60,0x20,0x20,0xA0,0x60,0x20,0x00,0x00,0x08,0x0C,0x0B,0x08,0x08,0x0C,0x00,},/*"z",90*/
};
static void WriteData(unsigned char DATA)
{
//CheckBusy();
CS_L();
E_H();
A0_H();
DBOUT(DATA);
RW_L();
delay(1);
RW_H();
CS_H();
}
static void WriteCommand(unsigned char command)
{
//CheckBusy();
CS_L();
E_H();
A0_L();
DBOUT(command);
RW_L();
delay(1);
RW_H();
CS_H();
}
void Lcd_Init(void)
{
WriteCommand(0xaf); //开显示
WriteCommand(0x40); //显示RAM的行地址 0x40为第0行
WriteCommand(0xa0); //0xa0正向显示 0xa1反向显示
WriteCommand(0xa6); //0xa6正常显示 0xa7反白显示
WriteCommand(0xa4);
WriteCommand(0xa2); //偏压比设定
WriteCommand(0xc8); //第0行在屏幕上方
WriteCommand(0x2f); //开关内部电源
WriteCommand(0x26); //调节对比度
}
void Lcd_Clear(void)
{
uchar page, j;
for(page=0; page<8; page++)
{
for(j=0;j<128;j++)
{
LcdRAM[page][j] = 0;
}
}
}
void Lcd_Update(void)
{
uchar page, j;
SPI_WCOM(0xc8);
for(page=0; page<8; page++)
{
SPI_WCOM(0xb0 | page); //select page 0~7
SPI_WCOM(0x10); //start form column 0
SPI_WCOM(0x00); //(2byte command)
for(j=0;j<128;j++)
{
SPI_WData(LcdRAM[page][j]);
}
}
}
void DisChar(int x, int y, char c, int fb) //16*16 两行
{
int i,k;
char Data;
if( (x >= MAX_X) || (y > MAX_Y) ) return;
x <<= 3;
if(c>=0x20) c = c - 0x20;
else c = 0;
for(i=0; i<8; i++)
{
if(fb)
{
LcdRAM[y][x+i] = 0xFF - charzk[c][i];
LcdRAM[y+1][x+i] = 0xFF - charzk[c][i+8];
}
else
{
LcdRAM[y][x+i] = charzk[c][i];
LcdRAM[y+1][x+i] = charzk[c][i+8];
}
}
}
void Lcd_DisChar(int x, int y, char c)
{
DisChar(x, y, c, 0);
}
void Lcd_DisChar_Not(int x, int y, char c)
{
DisChar(x, y, c, 1);
}
void Lcd_DisString(int x,int y,const char *pstr)
{
while(*pstr)
{
if(*pstr & 0x80)
{
if(pstr[1])
{
x++;
x++;
pstr++;
pstr++;
}
else
{
Lcd_DisChar(x,y,pstr[0]);
x++;
pstr++;
}
}
else
{
Lcd_DisChar(x,y,pstr[0]);
x++;
pstr++;
}
}
}
void Lcd_DisString_Not(int x,int y,const char *pstr) //黑底白字
{
while(*pstr)
{
if(*pstr & 0x80)
{
if(pstr[1])
{
x++;
x++;
pstr++;
pstr++;
}
else
{
Lcd_DisChar_Not(x,y,pstr[0]);
x++;
pstr++;
}
}
else
{
Lcd_DisChar_Not(x,y,pstr[0]);
x++;
pstr++;
}
}
}
void Lcd_DisMultiString(int x, int y, const char *pstr) //支持换行
{
while(*pstr)
{
if(*pstr & 0x80)
{
if(pstr[1])
{
if((x+2) > MAX_X)
{
x=0;
y++;
y++;
}
x++;
x++;
pstr++;
pstr++;
}
else
{
if((x+1) > MAX_X)
{
x=0;
y++;
y++;
}
Lcd_DisChar(x,y,pstr[0]);
x++;
pstr++;
}
}
else
{
if((x+1) > MAX_X)
{
x=0;
y++;
y++;
}
Lcd_DisChar(x,y,pstr[0]);
x++;
pstr++;
}
}
}
int main(void)
{
/* Configure RCC */
Lcd_Init();
Lcd_Clear();
Lcd_DisString(0, 0, "hello");
Lcd_DisString(0, 2, "1235");
Lcd_Update();
while (1)
{}
}
2.显示结果