12864上打点及造字原理(st7920) - 图文

2020-05-01 13:31

[转载].教你在12864上打点(基于ST7920控制器)

基于ST7920控制的12864液晶用于字符显示很方便的,但它绘图时先要关闭显示,绘完后又要打开,速度会较慢,不如不带字库的,但也可用。 首先,绘图的基础其实就是画点。ST7920提供了用于绘图的GDRAM(graph display RAM)。共 64×32 个字节的空间(由扩充指令设定绘图 RAM 地址),最多可以控制 256×64点阵的二维绘图缓冲空间。在它的Datasheet给出了GDRAM的坐标地址对照表:

用坐标表示,就是这样:

它的横坐标每一个地址都是16 位的。共16个地址,256位。

很明显,它能控制256*64像素的液晶屏,而我们的只是128*64像素液晶屏,显然只用到它的一部分。

我刚开始以为它对应屏幕的绘图RAM是这样分布的(如红色部分):

结果栽了大根头,后来终于弄明白,原来它对应屏幕的GDRAM是这样分布的:

只要我们清楚了它的GDRAM和屏幕上像素点的映射(对应)关系,点亮对应的像素点就容易多了。要点亮某一个像素点,就是将这个像素点在GDRAM中对应的位置1

打点步骤---------给你x,y的坐标,要你点亮一个点,首先,我们要确定这个点是在上半屏还是下半屏,然后确定它是在那一行(纵坐标Y),再确定它是在哪一个字节的哪一个位(也就是确定它在那一列,即横坐标X),最后,将该位置1 下面我们边写代码边讨论。

因为这里仅仅是讨论如何在12864上打点的,而不是给12864写一个驱动,所以对于基本的数据读写函数,我们不做讨论,这里假设已经有了如下基本函数: view sourceprint?

1 void lcd_write_cmd(unsigned char); //lcd 命令写 2

3 unsigend char lcd_read_data(void); //lcd 数据读

为了方便,我们定义如下宏:

1 #define BASIC_SET 0x00 //基本指令集, 2 #define EXTEND_SET 0x00 //扩展指令集

3 #define DRAW_ON 0x10 //绘图显示开 4 #define DRAW_OFF 0x00 //绘图显示关 点亮某一个点的函数(不完善):

01 void lcd_set_dot(unsigned char x, unsigned char y) 02 {

03 unsigned char x_byet, x_bit; //在横坐标的哪一个字节,哪一个位 void lcd_write_data(unsigned char); //lcd 数据写

04 unsigned char y_ping, y_bit; //在纵坐标的哪一屏,哪一行

05 x_byte = x / 16; //算出它在哪一个字节(地址) 06 //注意一个地址是16位的

07 x_bit = x % 16; //算出它在哪一个位

08 y_ping = y /32; // 确定在上半屏还是下半屏,0:上半屏 1:下半屏

11 y_bit = y % 32; //y_bit确定它是在第几行 12 lcd_write_cmd(EXTEND_SET); //扩展指令集

13 lcd_write_cmd(DRAW_OFF); //绘图显示关闭,绘图前要先关闭

14 lcd_write_cmd(0x80 + y_bit); //先写垂直地址(第几行),绘图要先写垂直地址 16

19 if (x_bit < 8) //如果x_bit位数小于8 20 {

21 lcd_write_data(0x01 << (7 - x_bit)); //写高字节。因为坐标是从左向右的 22 //GDRAM高位在左,底位在右

23 lcd_write_data(0x00); //低字节全部填0 24 } 25 else 26 {

27 lcd_write_data(0x00); //高字节全部填0低字节打入相应的点 28 lcd_write_data(0x01 << (15 - x_bit)); 29 }

30 lcd_write_cmd(DRAW_ON); //打开绘图显示 31

lcd_write_cmd(BASIC_SET); //回到基本指令集,毕竟ST7920是以字符为主的(不回也行)

lcd_write_cmd(0x80 + x_byte + 8 * y_ping); //再写水平地址,下半屏的水平坐标起始地址为0x88 ,(+8*y_byte)就是用来确定在上半屏还是下半屏

32 return ;


12864上打点及造字原理(st7920) - 图文.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:医学寄生虫 - 复习重点汇总

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: