4244|4

167

帖子

0

TA的资源

纯净的硅(高级)

楼主
 

OLED_12896_GR_Lib函数一 函数构架 [复制链接]


OLED_12896_GR_Lib函数是用来在开发板上的OLED显示器上绘制基本图形的函数。包括画点、线、圆、矩形框等一系列函数。虽然该函数是以开发板上的OLED显示器为原型设计的,但是其硬件相关的函数只占一小部分,简单修改后可用在其他显示器上。

一  函数构架
开发板上的OLED显示器采用的是采用SPI接口连接的,这种显示器在SPI接口下数据只能单向传输,即只能写数据,不能读数据。而其最小写入单位一个字节控制两个像素。因此,为了在写入新的像素的时候,不影响其他没有用到的像素,我们必须知道当前要改写的字节的值。在无法读取数据的情况下,只能采用在内存中建立显示缓冲区的方式来实现。当然,这需要一定的内存开销,大概是6K多一点。这在微控制器的内存中也算是不小的开销了,不过如果不使用显示器的灰度显示的话用一位来表示一个像素,这个数据就会下降到1.5K,基本上大家都可以接受了吧。
基本绘制方式是,绘制函数先在数据缓冲区模拟绘制图形,然后再将所影响的像素写入OLED显示器(本来我想使用DMA来刷新显示器的,可惜8962好像不带DMA功能)。
好了,现在先说说这个函数的基本构架吧:
1、 基本变量
基本变量是指对几乎所有函数有影响全局变量,现已确定以下几个变量:
 P_Cursor_X 图形模式下光标的横坐标;
 P_Cursor_Y 图形模式下光标的纵坐标;
 T_Cursor_X 文本模式下光标的横坐标;
 T_Cursor_Y 文本模式下光标的纵坐标;

2、 基本函数(硬件相关)
 _PSET(x,y,color) 在x,y坐标位置画一个点,颜色(灰度)由color指定;
 _LINEH(x1,y1,x2,y2,color) 要求y1=y2,绘制一条水平横线,采用水平自动增量写入数据,颜色由color指定;
 _LINEV(x1,y1,x2,y2,color) 要求x1=x2,绘制一条垂直竖线,采用垂直自动增量写入数据,颜色由color指定。

3、 函数介绍及实现方法(以下函数均与硬件无关,调用前面函数来实现)
 PSET函数
函数原型:void PSET(x,y,color);
用来在x,y坐标位置绘制一个点,颜色由color指定;
实现方法:调用_PSET来实现。

 LINE函数
函数原型:void LINE(x1,y1,x2,y2,color);
绘制一条从x1,y1到x2,y2的直线,颜色由color指定;
实现方法:如果y1=y2,则调用_LINEH函数来实现,如果x1=x2,则调用_LINEV函数来实现,其他情况调用_PSET函数逐点绘制。

 BOX函数
函数原型:void BOX(x1,y1,x2,y2,B/F,color);
以x1,y1;x2,y2为对角顶点坐标,绘制一个矩形。
当指定B时绘制矩形外框,当指定F时,填充矩形区域;
实现方法:当指定B时,分别用_LINEH和_LINEV函数来绘制矩形的四条外框线;当指定F时,调用_LINEH函数逐行填充矩形框。

 CIRCLE函数
函数原型:void CIRCLE(x,y,r,s,C/F,color);
以x,y为圆心,r为横向半径,绘制一个纵横比为s的椭圆,当s=1时即为圆。
当指定C时,绘制椭圆外框,当指定F时,填充整个椭圆区域。
实现方法:当指定C时,从0~180°和0~-180°分别绘制上下两个半圆弧,调用_PSET成对画点;当指定F时,从0~180°和0~-180°中每对点用_LINEV函数逐行填充。

 ARC函数
函数原型:void ARC(x,y,r,s,s_d,f_d,color);
函数功能:以x,y为圆心,r为横向半径,s为纵横半径比,绘制一条从s_d角度到f_d角度的椭圆弧,颜色由color指定;
实现方法:调用_PSET函数逐点绘制。

 CLS函数
函数原型:void CLS(color);
函数功能:清屏函数,当然,不仅仅将屏幕清除成黑色,还可以指定清屏后屏幕的颜色。

 

 目前准备实现的函数就这些,字符处理的函数(已确定有locate函数和print函数)稍后实现。

最新回复

很强!顶!  详情 回复 发表于 2011-5-3 15:27
 
点赞 关注

回复
举报

3836

帖子

19

TA的资源

纯净的硅(中级)

沙发
 
关注一下 :)
 
 

回复

918

帖子

0

TA的资源

纯净的硅(中级)

板凳
 

回复 楼主 柳叶舟 的帖子

OLED_12896_GR_Lib 这个函数是哪里的?
 
 
 

回复

167

帖子

0

TA的资源

纯净的硅(高级)

4
 

回复 板凳 academic 的帖子

呵呵,这个是我自己将要写的一个函数库,这是目前已经确定的几个函数的功能定义。目前已经完成了PSET和_PSET函数。其他函数随后会陆续完成。
 
 
 

回复

918

帖子

0

TA的资源

纯净的硅(中级)

5
 

回复 4楼 柳叶舟 的帖子

很强!顶!
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表