上打点及造字原理st.doc
《上打点及造字原理st.doc》由会员分享,可在线阅读,更多相关《上打点及造字原理st.doc(16页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、转载.教你在12864上打点(基于ST7920控制器) 基于ST7920控制的12864液晶用于字符显示很方便的,但它绘图时先要关闭显示,绘完后又要翻开,速度会较慢,不如不带字库的,但也可用。首先,绘图的根底其实就是画点。ST7920提供了用于绘图的GDRAMgraph display RAM。共 6432 个字节的空间由扩大指令设定绘图 RAM 地址,最多可以控制 25664点阵的二维绘图缓冲空间。在它的Datasheet给出了GDRAM的坐标地址对照表:用坐标表示,就是这样:它的横坐标每一个地址都是16 位的。共16个地址,256位。 很明显,它能控制256*64像素的液晶屏,而我们的只是
2、128*64像素液晶屏,显然只用到它的一局部。 我刚开场以为它对应屏幕的绘图RAM是这样分布的(如红色局部):结果栽了大根头,后来终于弄明白,原来它对应屏幕的GDRAM是这样分布的:只要我们清楚了它的GDRAM与屏幕上像素点的映射(对应)关系,点亮对应的像素点就容易多了。要点亮某一个像素点,就是将这个像素点在GDRAM中对应的位置1打点步骤-给你x,y的坐标,要你点亮一个点,首先,我们要确定这个点是在上半屏还是下半屏,然后确定它是在那一行纵坐标Y,再确定它是在哪一个字节的哪一个位也就是确定它在那一列,即横坐标X,最后,将该位置1下面我们边写代码边讨论。 因为这里仅仅是讨论如何在12864上打点
3、的,而不是给12864写一个驱动,所以对于根本的数据读写函数,我们不做讨论,这里假设已经有了如下根本函数:view sourceprint1void lcd_write_cmd(unsigned char); /lcd 命令写 2void lcd_write_data(unsigned char); /lcd 数据写 3unsigend char lcd_read_data(void); /lcd 数据读 为了方便,我们定义如下宏:1#define BASIC_SET 0x00 /根本指令集, 2#define EXTEND_SET 0x00/扩展指令集 3#define DRAW_ON 0x
4、10/绘图显示开 4#define DRAW_OFF 0x00/绘图显示关点亮某一个点的函数不完善:01void lcd_set_dot(unsigned char x, unsigned char y) 02 03unsigned char x_byet, x_bit; /在横坐标的哪一个字节,哪一个位 04unsigned char y_ping, y_bit; /在纵坐标的哪一屏,哪一行05x_byte = x / 16;/算出它在哪一个字节(地址) 06/注意一个地址是16位的 07x_bit = x % 16; /算出它在哪一个位 08y_ping = y /32;/ 确定在上半屏还
5、是下半屏,0:上半屏 1:下半屏11y_bit = y % 32; /y_bit确定它是在第几行 12lcd_write_cmd(EXTEND_SET); /扩展指令集 13lcd_write_cmd(DRAW_OFF); /绘图显示关闭,绘图前要先关闭 14lcd_write_cmd(0x80 + y_bit); /先写垂直地址第几行,绘图要先写垂直地址 16lcd_write_cmd(0x80 + x_byte + 8 * y_ping); /再写水平地址,下半屏的水平坐标起始地址为0x88 ,(+8*y_byte)就是用来确定在上半屏还是下半屏19if (x_bit 8) /如果x_bi
6、t位数小于8 20 21lcd_write_data(0x01 (7 - x_bit); /写高字节。因为坐标是从左向右的 22/GDRAM高位在左,底位在右23lcd_write_data(0x00); /低字节全部填0 24 25else26 27lcd_write_data(0x00); /高字节全部填0低字节打入相应的点 28lcd_write_data(0x01 (15 - x_bit); 29 30lcd_write_cmd(DRAW_ON); /翻开绘图显示 31lcd_write_cmd(BASIC_SET); /回到根本指令集,毕竟ST7920是以字符为主的不回也行 32re
7、turn ; 33 上面的程序会出现问题,原因是因为我们画点时对其余的位全部填0处理了,造成对原来的信息的破坏。所以我们要读出要写的那个地址原来的数据,再进展加工,写回去就可以解决问题了。 改良后的代码:01void lcd_set_dot(unsigned char x, unsigned char y) 02 03unsigned char x_byet, x_bit; /在横坐标的哪一个字节,哪一个位 04unsigned char y_ping, y_bit; /在纵坐标的哪一屏,哪一行05unsigned char tmph, tmpl; / /定义两个临时变量,用于存放读出来的数据
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 打点 造字 原理 st
限制150内