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