LCM12864ZS系列液晶模块使用手册及例程.docx
- 文档编号:27977175
- 上传时间:2023-07-07
- 格式:DOCX
- 页数:36
- 大小:228.36KB
LCM12864ZS系列液晶模块使用手册及例程.docx
《LCM12864ZS系列液晶模块使用手册及例程.docx》由会员分享,可在线阅读,更多相关《LCM12864ZS系列液晶模块使用手册及例程.docx(36页珍藏版)》请在冰豆网上搜索。
LCM12864ZS系列液晶模块使用手册及例程
LCM12864系列液晶模块使用手册
●特点:
1.SPI串行接口
2.自带12*12和16*16点阵一、二级汉字库
3.自带6*10、8*16、12*24、16*32点阵英文点阵字库
4.内置基本绘图指令,绘制直线、圆框、实芯圆、矩形框、实芯矩形、棒状条、点,只需要输入起始、终点坐标等参数即可完成绘图功能
5.任意位置填充图片功能
6.指令控制背光的开和关
7.任意位置字符反白功能
8.供电电压:
3.3V
9.功耗:
不开背光3mA,开背光10mA
●引脚接口
序号
引脚
功能
序号
引脚
功能
1
3.3V
电源正
6
RST
模块复位
2
SS
从机选择
7
BS
模块忙检测
3
SDA
串行数据输入
8
NC
未用
4
TS
未用
9
NC
未用
5
SCK
串行时钟
10
GND
电源负
●控制信号时序图
上电后,首先将RST线拉低5ms,然后才能对模块进行操作。
●控制指令表
指令
功能
函数
说明
0x01
绘制一个点
voidpoint(unsignedcharx,unsignedchary)
在x,y坐标绘制一个点,颜色由设置绘图色指令决定
0x02
绘制一条直线
voidline(unsignedcharx1,unsignedchary1,unsignedcharx2,unsignedchary2)
X1,y1:
直线的起点坐标,x2,y2直线的终点坐标,颜色由设置绘图色指令决定
0x03
绘制一个矩形框
voidrectangle(unsignedcharx1,unsignedchary1,unsignedcharx2,unsignedchary2)
x1,y1:
左上角点坐标
x2,y2,右下角点坐标,颜色由设置绘图色指令决定
0x04
绘制一个实心矩形
voidSolidRectangle(unsignedcharx1,unsignedchary1,unsignedcharx2,unsignedchary2)
x1,y1:
左上角点坐标
x2,y2,右下角点坐标,颜色由设置绘图色指令决定
0x05
绘制一个圆
voidcircular(unsignedcharx0,unsignedchary0,unsignedcharr)
x0,y0:
圆心坐标
r:
圆半径,颜色由设置绘图色指令决定
0x06
绘制一个实心圆
voidSolidCircular(unsignedcharx0,unsignedchary0,unsignedcharr)
x0,y0:
圆心坐标
r:
圆半径,颜色由设置绘图色指令决定
0x07
显示ASCII字符
voidPutChar(unsignedcharx,unsignedchary,unsignedcharASCII)
x,y:
字符左上角坐标
c:
ASCII码,0~31无效
0x08
显示汉字
voidPutHZ(unsignedcharx,unsignedchary,unsignedchar__flash*pHZ)
x,y:
字符左上角坐标
*pHZ:
待显示的字符串指针
0x09
在指定位置填充图片
voidfill_bmp(unsignedcharx,unsignedchary,
unsignedcharpixel_x,unsignedcharpixel_y,unsignedchar__flash*pb)
图片取模方式:
从上向下,低位在上,从左往右
x:
图片左上角横向坐标
y:
图片左上角纵向坐标
pixel_x:
图片横向点数
pixel_y:
图片纵向点数
*pb:
图片地址
0x0a
背光控制
voidBackLight(unsignedchars)
S=1:
开
S=0:
关
0x0b
绘制一条棒状条
voidbar(unsignedcharx1,unsignedchary1,unsignedcharx2,unsignedchary2,unsignedcharw)
x1,y1:
起点坐标
x2,y2:
终点坐标
w:
宽度
0x80
清屏
voidclear(unsignedcharxx)
xx:
可为任意数,但必需有
0x81
ASCII字符设置
voidFontASCII(unsignedchardata)
Data取值:
b7~b4:
字符大小选择
0000---8*16字体
0001---6*10字体
0002---12*24字体
0003---16*32字体
b3~b0:
字符颜色选择
0000---白色
0001---黑色
0x82
汉字设置
voidFontHZ(unsignedchardata)
Data取值:
b7~b4:
字符大小选择
0000---16*16字体
0001---12*12字体
b3~b0:
字符颜色选择
0000---白色
0001---黑色
0x83
设置绘图颜色
voidPaintColor(unsignedcharcolor)
color:
为0时以白色进行绘制
非0时以黑色进行绘制
LCM12864-05液晶屏外形尺寸:
40*40mm
短接箭头所指电阻,接通电源,进入模块测试功能,正常时会显示不同点阵的字符
LCM12864-05
将箭头所指的晶振的一个脚对地短接,再接通电源,进入模块测试功能,正常时会显示不同点阵的字符
//液晶模块测试程序
//MCU:
ATmega128
//晶振:
11.0592
//编译器:
IARAVR5.3
#include
#definetestbit(var,bit)((var)&(1<<(bit)))//测试位
#definesetbit(var,bit)((var)|=(1<<(bit)))//位置1
#defineclrbit(var,bit)((var)&=~(1<<(bit)))//位清0
#defineLCD_BUSY5
#defineLCD_BUSY_PORTPORTA
#defineLCD_BUSY_DDRDDRA
#defineLCD_BUSY_PINPINA
#defineLCD_RST6
#defineLCD_RST_PORTPORTA
#defineLCD_RST_DDRDDRA
#defineLCD_RST_PINPINA
#defineLCD_SS0
#defineLCD_SS_PORTPORTB
#defineLCD_SS_DDRDDRB
#defineLCD_SS_PINPINB
#defineSPI_MODE3()setbit(SPCR,CPOL);setbit(SPCR,CPHA)
#defineSPI_MODE0()clrbit(SPCR,CPOL);clrbit(SPCR,CPHA)
#defineEN_LCD()Delayus(10);clrbit(LCD_SS_PORT,LCD_SS);SPI_MODE3();setbit(SPCR,SPR0);setbit(SPCR,SPR1)
#defineDS_LCD()Delayus(10);setbit(LCD_SS_PORT,LCD_SS);SPI_MODE0();clrbit(SPCR,SPR0);clrbit(SPCR,SPR1)
#defineCS_DDRDDRB
#defineCS_PORTPORTB
#defineCS_BIT0
#defineSCK_DDRDDRB
#defineSCK_PORTPORTB
#defineSCK_BIT1
#defineMOSI_DDRDDRB
#defineMOSI_PORTPORTB
#defineMOSI_BIT2
#defineMISO_DDRDDRB
#defineMISO_PORTPORTB
#defineMISO_BIT3
voidclear(unsignedcharxx);
voidLcdOn(unsignedchardata);
voidFontASCII(unsignedchardata);
voidSPI_Low(void)//低速模式
{
setbit(SPCR,SPE);//SPI使能
setbit(SPCR,MSTR);//SPI主机
setbit(SPCR,SPR1);//SCK=fosc/128
setbit(SPCR,SPR0);
clrbit(SPSR,SPI2X);
//setbit(SPCR,CPOL);//模式2,空闲时高电平
}
/*spihighspeed,notexceed25MHz*/
voidSPI_High(void)//高速模式
{
setbit(SPCR,SPE);
setbit(SPCR,MSTR);
setbit(SPSR,SPI2X);//SCK=fosc/2
}
//SPIinterfaceinitializer
voidspiInit(void)
{
//setbit(CS_PORT,CS_BIT);
setbit(SCK_PORT,SCK_BIT);
setbit(MOSI_PORT,MOSI_BIT);
setbit(MISO_PORT,MISO_BIT);
//setbit(CS_DDR,CS_BIT);
setbit(SCK_DDR,SCK_BIT);
setbit(MOSI_DDR,MOSI_BIT);
clrbit(MISO_DDR,MISO_BIT);
SPI_Low();
//SPI_High();
}
//-------------------------------------------------------------------------
unsignedcharspiWriteByte(unsignedchardata)
{
unsignedchari;
SPDR=data;/*启动数据传输*/
while(!
testbit(SPSR,SPIF));/*等待传输结束*/
i=SPSR;/*中断标志清零*/
setbit(SPCR,MSTR);//主机模式
returnSPDR;
}
voidDelayms(unsignedcharms)
{
unsignedinti,j;
for(i=0;i { for(j=0;j<8000;j++) { ; } } } voidDelayus(unsignedcharus) { unsignedchari,j; for(i=0;i { for(j=0;j<8;j++) { ; } } } /****************LCD初始化*************** ****************************************/ voidLcdInit(void) { clrbit(LCD_BUSY_DDR,LCD_BUSY);//忙信号检测输入 setbit(LCD_BUSY_PORT,LCD_BUSY);//上拉开 setbit(LCD_RST_DDR,LCD_RST);//复位信号输出 setbit(LCD_RST_PORT,LCD_RST); setbit(LCD_SS_DDR,LCD_SS);//片选信号为输出 setbit(LCD_SS_PORT,LCD_SS); clrbit(LCD_RST_PORT,LCD_RST); Delayms(5); setbit(LCD_RST_PORT,LCD_RST); Delayms(50); //clear (1); //LcdOn (1); } /****************清屏************** xx: 可为任意数,但必需有 **********************************/ voidclear(unsignedcharxx) { EN_LCD(); while(testbit(LCD_BUSY_PIN,LCD_BUSY)){;} spiWriteByte(0x80); while(testbit(LCD_BUSY_PIN,LCD_BUSY)){;} spiWriteByte(xx); while(testbit(LCD_BUSY_PIN,LCD_BUSY)){;} DS_LCD(); } /*****************画点*************** x: 横向坐标(x=0~127) y: 纵向坐标(y=0~63) ************************************/ voidpoint(unsignedcharx,unsignedchary) { EN_LCD(); while(testbit(LCD_BUSY_PIN,LCD_BUSY)){;} spiWriteByte(0x01); while(testbit(LCD_BUSY_PIN,LCD_BUSY)){;} spiWriteByte(x); while(testbit(LCD_BUSY_PIN,LCD_BUSY)){;} spiWriteByte(y); while(testbit(LCD_BUSY_PIN,LCD_BUSY)){;} DS_LCD(); } /*****************画直线***************** x1,y1: 起点坐标 x2,y2: 终点坐标 ****************************************/ voidline(unsignedcharx1,unsignedchary1,unsignedcharx2,unsignedchary2) { EN_LCD(); while(testbit(LCD_BUSY_PIN,LCD_BUSY)){;} spiWriteByte(0x02); while(testbit(LCD_BUSY_PIN,LCD_BUSY)){;} spiWriteByte(x1); while(testbit(LCD_BUSY_PIN,LCD_BUSY)){;} spiWriteByte(y1); while(testbit(LCD_BUSY_PIN,LCD_BUSY)){;} spiWriteByte(x2); while(testbit(LCD_BUSY_PIN,LCD_BUSY)){;} spiWriteByte(y2); while(testbit(LCD_BUSY_PIN,LCD_BUSY)){;} DS_LCD(); } /*****************画棒状条***************** x1,y1: 起点坐标 x2,y2: 终点坐标 w: 宽度 ****************************************/ voidbar(unsignedcharx1,unsignedchary1,unsignedcharx2,unsignedchary2,unsignedcharw) { EN_LCD(); while(testbit(LCD_BUSY_PIN,LCD_BUSY)){;} spiWriteByte(0x0b); while(testbit(LCD_BUSY_PIN,LCD_BUSY)){;} spiWriteByte(x1); while(testbit(LCD_BUSY_PIN,LCD_BUSY)){;} spiWriteByte(y1); while(testbit(LCD_BUSY_PIN,LCD_BUSY)){;} spiWriteByte(x2); while(testbit(LCD_BUSY_PIN,LCD_BUSY)){;} spiWriteByte(y2); while(testbit(LCD_BUSY_PIN,LCD_BUSY)){;} spiWriteByte(w); while(testbit(LCD_BUSY_PIN,LCD_BUSY)){;} DS_LCD(); } /*****************背光控制***************** s=1,开 s=0,关 ****************************************/ voidBackLight(unsignedchars) { EN_LCD(); while(testbit(LCD_BUSY_PIN,LCD_BUSY)){;} spiWriteByte(0x0a); while(testbit(LCD_BUSY_PIN,LCD_BUSY)){;} spiWriteByte(s); while(testbit(LCD_BUSY_PIN,LCD_BUSY)){;} DS_LCD(); } /*****************画矩形框**************** x1,y1: 左上角点坐标 x2,y2,右下角点坐标 *****************************************/ voidrectangle(unsignedcharx1,unsignedchary1,unsignedcharx2,unsignedchary2) { EN_LCD(); while(testbit(LCD_BUSY_PIN,LCD_BUSY)){;} spiWriteByte(0x03); while(testbit(LCD_BUSY_PIN,LCD_BUSY)){;} spiWriteByte(x1); while(testbit(LCD_BUSY_PIN,LCD_BUSY)){;} spiWriteByte(y1); while(testbit(LCD_BUSY_PIN,LCD_BUSY)){;} spiWriteByte(x2); while(testbit(LCD_BUSY_PIN,LCD_BUSY)){;} spiWriteByte(y2); while(testbit(LCD_BUSY_PIN,LCD_BUSY)){;} DS_LCD(); } /*****************画实心矩形**************** x1,y1: 左上角点坐标 x2,y2,右下角点坐标 *****************************************/ voidSolidRectangle(unsignedcharx1,unsignedchary1,unsignedcharx2,unsignedchary2) { EN_LCD(); while(testbit(LCD_BUSY_PIN,LCD_BUSY)){;} spiWriteByte(0x04); while(testbit(LCD_BUSY_PIN,LCD_BUSY)){;} spiWriteByte(x1); while(testbit(LCD_BUSY_PIN,LCD_BUSY)){;} spiWriteByte(y1); while(testbit(LCD_BUSY_PIN,LCD_BUSY)){;} spiWriteByte(x2); while(testbit(LCD_BUSY_PIN,LCD_BUSY)){;} spiWriteByte(y2); while(testbit(LCD_BUSY_PIN,LCD_BUSY)){;} Delayus(100); DS_LCD(); } /******************画圆框*************** x0,y0: 圆心坐标 r: 圆半径 **************************************/ voidcircular(unsignedcharx0,unsignedchary0,unsignedcharr) { EN_LCD(); while(testbit(LCD_BUSY_PIN,LCD_BUSY)){;} spiWriteByte(0x05); while(testbit(LCD_BUSY_PIN,LCD_BUSY)){;} spiWriteByte(x0); while(testbit(LCD_BUSY_PIN,LCD_BUSY)){;} spiWriteByte(y0); while(testbit(LCD_BUSY_PIN,LCD_BUSY)){;} spiWriteByte(r); while(testbit(LCD_BUSY_PIN,LCD_BUSY)){;} DS_LCD(); } /******************画实心圆***************** x0,y0: 圆心坐标 r: 圆半径 *******************************************/ voidSolidCircular(unsignedcharx0,unsignedchary0,unsignedcharr) { EN_LCD(); while(testbit(LCD_BUSY_PIN,LCD_BUSY)){;} spiWriteByte(0x06); while(testbit(LCD_BUSY_PIN,LCD_BUSY)){;} spiWriteByte(x0); while(testbit(LCD_BUSY_PIN,LCD_BUSY)){;} spiWriteByte(y0); while(testbit(LCD_BUSY_PIN,LCD_BUSY)){;} spiWriteByte(r); while(testbit(LCD_BUSY_PIN,LCD_BUSY)){;} Delayus(100); DS_LCD(); } /*****************显示ASCII字符**************** x,y: 字符左上角坐标 c: ASC
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- LCM12864ZS 系列 液晶模块 使用手册 例程