JLX256128G-929-PL使用心得

一、点阵显示数据如何写入的解释

该lcd出厂时设定左上角为零点,并且把该整个屏幕设定为列(column)和页(page)的概念,列即是每一竖行(每个竖行横着的宽度都是一个像素点),页就是每一横行(每个横行竖着的宽度是8个像素点),所以如图所示,每条红色横线是一页。

JLX256128G-929-PL使用心得

 

 

 

该lcd的写入分为两个函数transfer_command_lcd(int data1) 和transfer_data_lcd(int data1) ,前者写入命令,在官方给的pdf中有各个0x**对应的命令的意思,后者用来写入显示数据,接下来开始解释后者这个显示数据的原理:

 

先说一下,每个8位数据即0x**可以用来表示一个竖着的1*8的长方形的8格点阵亮灭,比如0x01转换成二进制就是0000 0001,表示该1*8的点阵,上面7个点阵是灭的,最后一个点阵是亮的。我们就可以用transfer_data_lcd函数将一个8位数据写入lcd。

JLX256128G-929-PL使用心得

 

 

 

再来说lcd_address函数,lcd_address(int x,int y,int x_total,int y_total) 函数用来设定起始坐标以及你要显示的字符或图像所占据的大小,即长宽。x,y为起始坐标,x_total,y_total是该字符的长宽,其中x_total的一个值相当于一个像素点算,y_total的一个值相当于8个像素点。

 

以下给出几个例子来理解该函数的用法:

 

(1)lcd_address(1,1,8,1);  这里设定初始坐标为1和1, 然后该字符所占用长宽(x_total,y_total)为8和1,又因为每一列包含1个像素点,每一行包含8个像素点,所以该字符在屏幕上的像素点长宽是,8*1=8,1*8=8,所以是一个8x8的字符。

 

 

 

(2)lcd_address(1,1,16,2);    这里设定初始坐标为1和1,然后改字符所占长宽是16和2,又因为每一列包含1个像素点,每一行包含8个像素点,所以该字符在屏幕上的像素点长宽是,16*1=16,2*8=16,所以是一个16x16的字符。这时会遇到跟上面不一样的问题,因为上面的字符是8x8的,所以8位数据刚好对应每一列,但是这个字符是16x16的,一个数据8位不能正好覆盖一列。transfer_data_lcd函数决定这个字符的写入方式是先写一行(1*8个像素点的长方形,写16个),再拐过来写下一行(还是16个长方形)。

 

 

 

(3)同理,写入32x32的字符就要lcd_address(1,1,32,4); 即先写一行:将1*8的长方形写32个,再这样写四行,即32*4个长方形。

 

二、取模软件设置

JLX256128G-929-PL使用心得

 

 

 

 

 

这样取模的话,假设是16x16的汉字,那么这样取模取出来的0x**的顺序是先把每一列从上到下表示完,再表示下一列。即第1、2个0x**表示第一列(因为一列是16个像素点,一个0x**表示8个像素点的亮灭),第3、4个0x**表示第二列,后面以此类推。

 

 

 

 

三、字库使用

我买这款我忽然发现是没带字库的,官方字库是JLX-GB2312芯片,官方给的pdf文档里有例程。话说,这款不带字库的lcd256128买的时候淘宝页面也没写带不带字库,但是淘宝主页下面给的百度网盘资料却是带字库的资料......

 

 

 

 

 

   
上一篇:pins和ports区别


下一篇:【三】ubuntu仓库本地同步