点阵液晶显示屏.ppt
OCMJ15X20D系列中文液晶显示模块 简介lOCMJ15X20D(320 x240 点阵)中文液晶显示模块是一个中英文文字与绘图模式的点矩阵液晶显示模块,内建512KByte 的ROM 字形码,可以显示中文字型、数字符号、英日欧文等字母,并且内建双图层(Two Page)的显示内存。在文字模式中,可接收标准中文文字内码直接显示中文,而不需要进入绘图模式以绘图方式描绘中文,可以节省许多微处理器时间,提升液晶显示中文之处理效率。引脚连接与功能液晶屏的控制l液晶屏的控制,是通过单片机与液晶屏通讯完成的。l其液晶屏内部集成了液晶屏控制部分,所以我们只需要与液晶屏进行通讯,就可以完成对液晶屏的所有操作。l与液晶屏的通讯,主要分为读和写。下面主要介绍写方面的内容。l对液晶屏的写操作,分写寄存器(指令)和写数据(显示的资料)两方面。lvoid reg_write(uchar regname,uchar regdata)/写资料到缓存器 (指令)l void ddr_wr(uchar wrdata)l/写资料到DDRAM*写前判忙单字节写寄存器(写指令)l void reg_wr(uchar regnada)llP0=regnada;ldelay_2us();llcd_cs1=0;/chip enable.ldelay_2us();llcd_rd=1;/ldelay_2us();llcd_rs=0;/rs=0;ldelay_2us();llcd_wr=0;/wr=0;ldelay_2us();ldelay_2us();l;llcd_wr=1;/wr=1;ldelay_2us();llcd_rs=1;/rs=1;ldelay_2us();llcd_cs1=1;/chip disable.ldelay_2us();l写寄存器(写指令)lvoid reg_write(uchar regname,uchar regdata)l/写资料到缓存器llreg_wr(regname);ldelay_2us();ldelay_2us();ldelay_1us();lreg_wr(regdata);ldelay_2us();ldelay_2us();ldelay_2us();l写资料lvoid ddr_wr(uchar wrdata)small/写资料到写资料到DDRAMll uint k=0;lwhile(lcd_busy=1);/写前判忙写前判忙ldelay_2us();lP0=wrdata;ldelay_2us();llcd_cs1=0;/chip enable.ldelay_2us();llcd_rd=1;/ldelay_2us();llcd_rs=1;/rs=1;ldelay_2us();llcd_wr=0;/wr=0;ldelay_2us();llcd_wr=1;/wr=1;ldelay_2us();llcd_rs=1;/rs=1;ldelay_2us();llcd_cs1=1;/chip disable.ldelay_2us();l液晶屏的初始化l1:复位sbit lcd_rst=P17;main()lcd_rst=0;delay_ms(120);lcd_rst=1;delay_ms(120);液晶屏的初始化l2:寄存器初始化l这个过程比较复杂,要了解寄存器初始化具体步骤,需要对液晶屏内部的寄存器有所了解。l下面介绍一些常用的寄存器。REG 00hREG 00h 的bit0lbit0=0l反白显示效果:lreg_write(0 x0,0 xcc);lbit0=1l正常显示效果:lreg_write(0 x0,0 xcd);文字模式设定l全角文字是以16x16的点矩阵组成,半角文字是8x16 的点矩阵组成 全角(中文)及半角(英文)文字的混和显示:l液晶显示模块的中文显示方式则是在文字模式,直接输入中文字码(GB 或BIG5码),就可以在光标所在位置显示中文。因为中文字码占两个Byte,所以如果MCU 接口是8-Bit,则MCU 必须分两次将中文字码的High Byte&Low Byte)写入D 系列中文液晶显示模块l英文或数字码只占一个Byte,因此只要将内码一次写入D 系列中文液晶显示模块既可汉字显示l 写入“中”的字型码High Bytel ddr_wr(0 xd6);l l 写入“中”的字型码Low Bytel ddr_wr(0 xd0);在光标所在位置会显示“中”l 写入“文”的字型码High Bytel ddr_wr(0 xce);l l写入“文”的字型码Low Bytel ddr_wr(0 xc4);在光标所在位置会显示“文”l#include reg52.hl#include delay.hl#include led.hlmain()lllcd_rst=0;ldelay_ms(120);llcd_rst=1;ldelay_ms(120);lP0=0XFF;l lcm_init();/液晶屏初始化液晶屏初始化l lcm_clr();/清屏清屏l ddr_wr(0 xd6);l ddr_wr(0 xd0);l ddr_wr(0 xce);l ddr_wr(0 xc4);l while(1);ll 整体代码注意:delay.h 和led.h 文件应放在工程文件夹中。将汉字放在数组中,显示lmain()ll char chs5=中文;llcd_rst=0;/液晶屏复位ldelay_ms(120);llcd_rst=1;ldelay_ms(120);lP0=0XFF;l lcm_init();/液晶屏初始化l lcm_clr();/清屏l l ddr_wr(chs0);l ddr_wr(chs1);l ddr_wr(chs2);l ddr_wr(chs3);l while(1);l l相比之前的代码,省去了查找相比之前的代码,省去了查找汉字编码的过程。汉字编码的过程。练习l1:将自己的名字显示在液晶屏中。2扩展:粗体字显示功能用粗体字 显示自己学校的名字坐标l寄存器 60H、70H分别为x轴和y轴的坐标。lx轴为6位数据 0 0 x 3f(63)ly轴为8位数据 0 0 x ff (255)l屏幕分辨率为 320 x 240 x轴Y轴坐标设定函数lvoid zuobiao(uchar x,uchar y)l l reg_write(0 x60,x);l delay_100us();l reg_write(0 x70,y);l delay_100us();l lchar chs220=坐标:5,20;l char i;llcd_rst=0;/液晶屏复位ldelay_ms(120);llcd_rst=1;ldelay_ms(120);lP0=0XFF;l lcm_init();/液晶屏初始化l lcm_clr();/清屏l lzuobiao(5,20);l for(i=0;i=9;i+)lddr_wr(chs2i);l while(1);l 程序中使用方法1234l由刚才最后一副图中可以看出lx取值范围为 0 39ly取值范围为 0 240 lX坐标1个点 代表(点阵)8个像素练习 1练习 2l编写数字钟程序,显示在液晶屏上。绘图模式l液晶显示模块的绘图模式是以字符映像(bit map)方式填入图形资料在Display RAM l液晶显示模块在显示图形的时候,是以字符映像(Bit Map)的方式写进DDRAM,l若DDRAM 的某个位置被填满为1 时,相对于LCD 面板的位置会被显示出亮点,l由图可看出,在DDRAM 上所储存之像素资料,会对应到显示屏幕(LCD)上,而构成文字、符号或图形之显示效果。相关寄存器 0 x00、0 x12、0 x10光标自动移位设定 0 x100 x12 图层设置llcd_rst=0;/液晶屏复位ldelay_ms(120);llcd_rst=1;ldelay_ms(120);lP0=0XFF;l lcm_init();/液晶屏初始化l lcm_clr();/清屏 lreg_write(0 x0,0 xc5);/绘图模式lreg_write(0 x10,0 x28);/光标自动移位 lreg_write(0 x12,0 x91);l/单一图层 光标:先水平 再垂直lzuobiao(2,2);lddr_wr(0 x13);lddr_wr(0 x0f);lddr_wr(0 xff);练习1l绘制2个 16x8 像素的长方形 练习2l绘制 16x16 大小的光标自行造字l液晶显示模块内建512Byte SRAM 可支持自行造字功能,最大字数为16 个全角中文字(16x16)。l若用到特殊字,是字库内没有的字型,可利用该项功能,增加内建字库的内容,来提升MCU 的存取效率。自行造字相关寄存器lreg_write(0 x0,0 xc5);/1:设置绘图模式lREG00=0XC5:2:Write to Page0 512Byte SRAMREG0X12=0X10reg_write(0 x12,0 x10);/对中文码”FFF0”进行造字reg_write(0 x60,0 x0);for(i=0;i=15;i+)ddr_wr(chsi);reg_write(0 x60,0 x1);/(每16Byte 要加1)for(i=16;i=31;i+)ddr_wr(chsi);/文字模式reg_write(0 x0,0 xcd);/Page1reg_write(0 x12,0 x91);zuobiao(5,20);l/显示FFF0 自行造字 字符 ddr_wr(0 xff);ddr_wr(0 xf0);l练习将光标(或自己造一图形)放入“自行造字”FFF0 中文码