当前位置:首页 > 单片机 > 单片机
[导读]12864点阵液晶显示模块(LCM)就是由128*64个液晶显示点组成的一个128列*64行的阵列。每个显示点对应一位二进制数,1表示亮,0表示灭。存储这些点阵信息的RAM称为显示数据存储器。要显示某个图形或汉字就是将相应的点

12864点阵液晶显示模块(LCM)就是由128*64个液晶显示点组成的一个128列*64行的阵列。每个显示点对应一位二进制数,1表示亮,0表示灭。存储这些点阵信息的RAM称为显示数据存储器。要显示某个图形或汉字就是将相应的点阵信息写入到相应的存储单元中。图形或汉字的点阵信息当然由自己设计,问题的关键就是显示点在液晶屏上的位置(行和列)与其在存储器中的地址之间的关系。

由于多数液晶显示模块的驱动电路是由一片行驱动器和两片列驱动器构成,所以12864液晶屏实际上是由左右两块独立的64*64液晶屏拼接而成,每半屏有一个512*8 bits显示数据RAM。左右半屏驱动电路及存储器分别由片选信号CS1和CS2选择。(少数厂商为了简化用户设计,在模块中增加译码电路,使得128*64液晶屏就是一个整屏,只需一个片选信号。)

显示点在64*64液晶屏上的位置由行号(line,0~63)与列号(column,0~63)确定。512*8 bits RAM中某个存储单元的地址由页地址(Xpage,0~7)和列地址(Yaddress,0~63)确定。每个存储单元存储8个液晶点的显示信息。

为了使液晶点位置信息与存储地址的对应关系更直观关,将64*64液晶屏从上至下8等分为8个显示块,每块包括8行*64列个点阵。每列中的8行点阵信息构成一个8bits二进制数,存储在一个存储单元中。(需要注意:二进制的高低有效位顺序与行号对应关系因不同商家而不同)存放一个显示块的RAM区称为存储页。即64*64液晶屏的点阵信息存储在8个存储页中,每页64个字节,每个字节存储一列(8行)点阵信息。因此存储单元地址包括页地址(Xpage,0~7)和列地址(Yaddress,0~63)。

例如点亮128*64的屏中(20,30)位置上的液晶点,因列地址30小于64,该点在左半屏第29列,所以CS1有效;行地址20除以8取整得2,取余得4,该点在RAM中页地址为2,在字节中的序号为4;所以将二进制数据00010000(也可能是00001000,高低顺序取决于制造商)写入Xpage=2,Yaddress=29的存储单元中即点亮(20,30)上的液晶点。


/////LCD12864液晶屏测试程序(已通过)//////

////////液晶屏型号:HJ12864M-1//////////

///////////////////////////////////////

#include

#define uchar unsigned char

#define uint unsigned int

//8bit数据接入IO口

#define Part P0 //P0接8位数据线

//控制数据端

sbit LCD_RS=P2^5; //定义12864液晶RS端,寄存器选择信号 H:数据寄存器 L:指令寄存器

sbit LCD_RW=P2^6; //定义12864液晶RW端,读/写信号 H:读 L:写

sbit LCD_EN=P2^7; //定义12864液晶LCDEN端, 片选信号 下降沿触发,锁存数据

//

sbit LCD_PSB=P3^2; //定义12864液晶PSB端, H:并行 L:串行

sbit LCD_RST=P3^4; //定义12864液晶RST端, H:不复位 L:复位

uchar code dis1[]={"床前明月光"};

uchar code dis2[]={"疑是地上霜"};

uchar code dis3[]={"举头望明月"};

uchar code dis4[]={"低头思故乡"};

//=====================================

//毫秒延时函数

void delay(uint xms)

{

uint i,j;

for(j=0;i

for(i=0;i<110;i++);

}

//====================================

//LCD忙检测函数

bit lcd_busy()

{

bit result;

LCD_RS=0;

LCD_RW=1;

LCD_EN= 1;

result=(bit)(Part & 0x80);

LCD_EN=0;

return result;

}

//=====================================

//液晶写命令函数

void lcd_write_cmd(uchar com)

{

while(lcd_busy());

LCD_RS=0; //选择指令寄存器

LCD_RW=0; //写

LCD_EN=0;

Part=com; //指令值赋给P0口

delay(5);

LCD_EN=1;

delay(5);

LCD_EN=0;

}

//=====================================

//液晶写一个字符数据函数

void lcd_write_dat(uchar date)

{

while(lcd_busy());

LCD_RS=1; //选择数据寄存器

LCD_RW=0; //写

LCD_EN=0;

P0=date; //数据值赋给P0口

delay(5);

LCD_EN=1;

delay(5);

LCD_EN=0;

}

//=====================================

//液晶写一个字符串函数

void lcd_write_string(uchar *str)

{

while(*str!='') //未结束

{

lcd_write_dat(*str++);

delay(5);

}

}

//=====================================

//液晶显示位置函数

void lcd_pos(uchar x,uchar y) //从第X行的第Y位置开始显示

{

uchar pos;

if(x==1) //第一行

{ x=0x80;}

else if(x==2) //第二行

{ x=0x90;}

else if(x==3) //第三行

{ x=0x88;}

else if(x==4) //第四行

{ x=0x98;}

pos=x+y-1; //首地址为0X80

lcd_write_cmd(pos);

}

//=====================================

//液晶初始化函数

void lcd_init()

{

LCD_PSB=1; //并行方式

LCD_RST=1; //不复位

lcd_write_cmd(0x30);

delay(5);

lcd_write_cmd(0x0c); //开显示,不显示光标

delay(5);

lcd_write_cmd(0x06); //写一个字符后地址指针自动加1

delay(5);

lcd_write_cmd(0x01); //清屏

delay(5);

}

//=====================================

//主函数函数

void main()

{

// uchar i;

lcd_init();

while(1)

{

lcd_pos(1,1);

// lcd_write_string(dis1);

lcd_write_string("床前明月光");

delay(5);

lcd_pos(2,1);

// lcd_write_string(dis2);

lcd_write_string("疑是地上霜");

delay(5);

lcd_pos(3,1);

// lcd_write_string(dis3);

lcd_write_string("举头望明月");

delay(5);

lcd_pos(4,1);

// lcd_write_string(dis4);

lcd_write_string("低头思故乡");

delay(500);

}

}


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

摘 要 :为解决使用传统测量方法测溶液浓度时得到结果较慢、过程繁琐等问题,考虑利用电容传感器间接测量溶液作为电介质时得到的电容值,再通过浓度与电容值的对应关系,计算出溶液相应的浓度值,达到对乙醇浓度的快速、非接触、无污染...

关键字: 溶液浓度 电容传感器 非接触 单片机 I2C 显示模块

TM1637四位数码管模块是一个带时钟点的4位共阳数码管(0.36英寸)的显示模块,驱动芯片为TM1637,驱动方式为IIC,因此只需2根信号线即可使单片机控制4位8段数码管(数码管8级亮度可调)。 模块特点如下: 显示...

关键字: 显示模块 数码管显示

跨阻抗或光电二极管配置的运算放大器(运算放大器)经常用于整个汽车的背光控制,以便为驾驶员提供舒适的观看体验并节省电力。使用运算放大器代替更复杂的光传感器可带来更大的灵活性和定制。汽车显示系统 -

关键字: 控制 汽车 显示模块 光控

近日,国星光电收到美国专利商标局颁发1项发明专利证书,专利名称为LED支架、LED器件和LED显示屏,专利号为10,290,783,专利权有限期为20年。 国星光电表示,该发明

关键字: 光电 显示模块 COB LED显示屏

据报道,现任职于Oculus/Facebook AR/VR 产品设计经理的Chelsea Klukas还是一位擅于结合LED科技与时尚的服装设计师,她将发光的LED照明组件缝进雪纺上衣或是薄纱长

关键字: LED LED显示 手机 显示模块

现在大街上随处可见的LED显示屏,还有装饰用的LED彩灯以及LED车灯,处处可见LED灯的身影,LED已经融入到生活中的每一个角落。日本显示公司(JDI)本周宣布了首个 Micro LED 模块的开发,作为下一代显示器和...

关键字: LED micro 显示模块 电源资讯

12864液晶的驱动和1602的类似,只不过是多了几个扩展的功能,不如画图功能

关键字: 12864 单片机

Ds3231+12864液晶显示AT89C51带温度功能的时钟程序。

关键字: 12864 at89c51 ds3231 时钟程序 液晶显示

void curve(unsigned char xlable,unsigned char ylable,bit dot){unsigned char H[1]={0};//读RAM寄存unsigned char L[1...

关键字: 12864 51单片机 打点程序

;模 块 名:ST7920 控制器 NS12864R;功能描述:库内汉字的显示;***************************; ; NS12864显示程序(库内汉字) ; ;****************...

关键字: 12864 LCD 显示
关闭
关闭