- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
HD系列机型中图片显示原理及应用
原理
在机具屏幕上,是以点阵像素的形式显示图形,每个像素点以一个二进制位来表示,例如,如果该像素显示,则值为1,否则为0,8个二进制位形成一个字节,一个32×32的图形则需要128个字节来表示,显示图形时,则按图片大小,进行循环描点。
技巧
根据显示原理,一般的编程思路就是根据点阵模板,进行描点,如果图片比较大,例如32×32的图形,则需要描点1024次,这样大大的浪费了CPU的时间,鉴于此,我们又通过了另一种手段来实现显示图形,采用图片一次性显示的方式,即块显方式。
示例
1.循环描点方式
unsigned char buffer [] =
{
8, 64, 11, 248, 16, 64, 39, 248, 10, 168, 27, 248, 40, 0, 13, 64, 11, 40, 13, 24, 9, 240, 0, 0
};
int i, j, k;
int r1, r2;
r1 = 1; //描黑点
r2 = 0; //描白点
for(i = 0; i 12; i ++)
for(j = 0; j 2; j++)
for(k = 0; k 8; k ++)
if((buffer[ i * 2 + j] (7 - k)) 0x1)
put_pixel(x + 8 * j + k, y + i, r1, DISP_PUT_MODE_PUT);
else
put_pixel(x + 8 * j + k, y + i, r2, DISP_PUT_MODE_PUT);
2.块显方式
unsigned char buffer []
{
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1, 255, 255, 240, 1, 0, 0, 16, 1, 62, 0, 16, 1, 250, 0, 16,
1, 250, 127, 208, 7, 251, 255, 208, 7, 217, 144, 208, 7, 128, 20, 208,
3, 194, 40, 208, 1, 229, 36, 208, 1, 231, 250, 208, 15, 8, 4, 208,
15, 8, 7, 208, 15, 8, 4, 16, 15, 200, 4, 16, 1, 231, 255, 240,
1, 229, 63, 240, 3, 194, 160, 0, 7, 129, 80, 0, 7, 219, 176, 0,
3, 251, 224, 0, 0, 254, 0, 0, 0, 126, 0, 0, 0, 60, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
},
char dispbuffer[2048];
memset(dispbuffer, 0, 2048);
memcpy(dispbuffer + 4, buffer, 128);
dispbuffer [0] = 0;
dispbuffer [1] = 12;
dispbuffer [2] = 32;
dispbuffer [3] = 32;
Disp_put_bmp((typ_BMP_rec * ) dispbuffer);
从以上代码可以看出,块显方式要绝对优于循环方式,从实用性方面来说,都差不多,主要的难点都是位图图片转模板,在我们的IDE开发环境里,我们提供了这一功能。
首先,要准备好单色位图文件,位图必须为单色,大小不能大于 128*64;
然后再位图文件加入到工程中,编译,就会在临时目录里生成idebmp.h,idebmp.c,idebmp.o 文件;
位图被转换为字符数组,数组名为bmp 加上位图的文件名,例如1.bmp 对应的数组名为bmp1,
文件名的字符要求与C 的变量名要求相同,只能是下划线、数字和大小写字母,位图文件不能重名。
位图数组数据结构:前4个字节为位图的位置,长宽,紧接着就是位图数据。
菜单
从以上内容我们就可以利用这一块显的特性,专门将文字菜单改变成图形菜单,将每个菜单给出一个特定的单色图片,然后按照以上步聚转为位图数组,进行菜单的显示编程。
#define MENUITEMCOUNT 4
static char menubuffer[2048];
char MENUPIXEL[MENUITEMCOUNT][128] =
{
{
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1, 255, 255, 240, 1, 0, 0, 16, 1, 62, 0, 16, 1, 250, 0,
您可能关注的文档
最近下载
- 2025年出境竹木草制品台帐表单各种表格.pdf VIP
- DB34T 4822-2024 地下水监测井建设技术规范.pdf
- 中国热射病诊断与治疗指南(2025版).pptx
- 第19课社会生活的变迁(课件)-八年级历史下册教学无忧备课课件(统编版).pptx VIP
- 铁路预应力混凝土桥梁智能张拉与压浆施工技术规程.pdf VIP
- DL∕T 1685-2017 油浸式变压器(电抗器)状态评价导则.pdf
- 2025春人教鄂教版(2024)小学科学一年级下册《纸制品》教案及反思.docx VIP
- 建设工程标准化协会标准:TCECS 717-2020 城镇排水管道非开挖修复工程施工及验收规程.pdf
- XX县压缩天然气城市气化工程初步设计说明书.doc
- 调 式 中 的 音 程.pptx VIP
文档评论(0)