有的lcm数据是奇偶行交错的,也可以通过使用隔行来改变。模拟显示的源程序主要是采用在画布上画矩形框的方法,语句如下:
image1.canvas.fillrect(rect(16*s_col+4*i,
4*s_row,16*s_col+4*i+3,4*s_row+3));
其中s_col为行坐标(1~64),s_row为列坐标(0~31),每个字节分高4位与低4位分别来画矩形框。当高4位或低4位值为1~f时,对应的i分别如表1所示。
lcd显示控制程序设计
lcm内部带有8k字节的ram缓存区,往ram缓存区写入数据,则在lcd 显示屏上产生显示。通过改变显示缓存区首地址可实现屏幕滚动、屏幕换页等功能。
graphic_disp:
lcall clear_graphic ;清除图形显示ram单元(gdram)
mov g_row, #80h ;设定图形显示起始行单元
mov g_column, #80h ;设定图形显示起始列单元
gra_disp:
mov a, #34h ;选择扩充指令集,关闭图形显示
lcall input
mov a, g_row ;输入图形显示起始行地址
lcall input
mov a, g_column ;输入图形显示起始列地址
lcall input
mov a, #30h ;重新选择基本指令集
lcall input
clr a
movc a, @a+dptr ;输入显示数据(横向高8位数据)
lcall displ
inc dptr
clr a
movc a, @a+dptr ;输入显示数据(横向低8位数据)
lcall displ
inc dptr
inc g_column ;列地址加一
mov a, g_column
cjne a, #90h, gra_disp ;最后一列地址为90h(共计16列)
mov g_column, #80h
inc g_row ;行地址加一
mov a, g_row
cjne a, #0a0h, gra_disp ;最后行地址为0a0h
mov g_column, #80h
mov g_row, #80h
mov a, #36h ;打开图形显示
lcall input
ret
在上面程序中,是与图2所示的gram映射的点阵坐标一样,分成0~15列,每列写2个字节数据,共有32行。clear_graphic为清除图形显示cgram的子程序,input为写指令子程序,displ为写数据子程序,这里不再详细列出。另外硬件设计时,注意空脚(nc)应悬空,不能接地。调试时,适当调整液晶显示偏压信号v0,使之在一合适电压,这一电压若设置不当,lcm 无法正常工作。
结束语
按照上面分析的方法,可以方便的在液晶上显示任意图片。点阵的lcd模块还可实现屏幕合成、滚动、动画、闪烁等功能,正越来越受到广泛的应用和关注。需要指出的是,由点阵液晶显示器件与相应的控制器、驱动器装配成的显示模块的种类较多,其功能、指令、接口定义及引脚并无统一标准,具体使用时应加以选择。