(51 单片机)关于 12864 区域 绘图,即 任意起始位置,绘任意太小的图片 ????????
(51单片机)关于12864区域绘图,即任意起始位置,绘任意太小的图片????????有搞过的高手没1:怎样在0,0位置开始,绘任意大小的图???????2,怎样在不是0...
(51 单片机)关于 12864 区域 绘图,即 任意起始位置,绘任意太小的图片 ????????
有搞过的高手没
1:怎样在0,0位置开始,绘任意大小的图???????
2,怎样在不是0,0位置,绘任意大小的图???????、
1-1:在0,0位置开始,绘任意大小的图,未写数据区域花屏怎样处理?????
1-2:下半屏按常规法绘图完全花屏,怎样处理????
麻烦高手赐教 展开
有搞过的高手没
1:怎样在0,0位置开始,绘任意大小的图???????
2,怎样在不是0,0位置,绘任意大小的图???????、
1-1:在0,0位置开始,绘任意大小的图,未写数据区域花屏怎样处理?????
1-2:下半屏按常规法绘图完全花屏,怎样处理????
麻烦高手赐教 展开
1个回答
展开全部
下面论述的前提:LZ 得清楚,12864 实际上是 256*32 点,把后面的 一半 搬到 第三行、第四行进行显示的。(这也是为什么 反白显示 只能是 1、3同步、2、4同步的原因)
首先得了解 绘图区 的结构:12864 这个屏的 绘图区,分有 16大列,每大列 有 16小列(点),16*16=256,于是 它分成了 前 8大列 放在 第一、二行,后8 大列放在 第三、四行。告诉你这个结构,是想说:12864 的绘图区,是以 大列(16小列) 为单位进行 数据输入 显示的。现在来说题目:
1、从 0,0开始,这个最简单,由于从原点开始,可以直接输入数据。但要注意:
①输入的 横向长度,必须是 大列(16点)的整数倍,也就是说,你输入的数据,必须是 2Byte 的整数倍。如不足 长度,应自行补充。比如输入的 图片长度 为 35×16,横向35,不是 16的整数倍,那么输完 前面的 32 点后,横向还有 3个点,要补0 扩展成 16位 再输入。也就是说,你补充了0(图片显示为空白)后,实际数据为 48×16。
②因12864 不支持 自动换行,数据输入时,要自行在 图片 横向结束时,进行换行(不是 12864 的四个行,而是每个 小点行)。
2,不从 0,0开始,这个比较繁琐。如果 起点的 横坐标的是 16的整数倍,可以直接通过 绘图 大列定位。如果起点坐标不是 16 的整数倍,那么要 先在图片每横向数据 的前面进行 填0 补充,虚构一个 16的整数倍。比如,起点在 18,0,那就需要在前面补 2个0,虚构起点在 16,0 的位置。这只是困难的开头,2个0 补充在数据头后,数据的低 2位就得 往 下一个数据 推了。这就是 连续数据 移位,一直移动到 横向长度 的结尾,再根据 LZ 上一个问题的方法处理结尾。连续数据 移位,比如:11100001 ,00011110,01111000,10000111,连续右移2位后,是 00111000,01000111,10011110,00100001, 11(000000,00000000),括号部分为12864补充 的长度,让数据为 16点 的整数倍。
1-1,图片尺寸不足 12864,就会导致其他区域数据的不定性(为上次图片的遗留),如果只需这个图片,那就应该在 绘图之前,进行 绘图区清0,也就是 输入 12864 点 的 0数据。
1-2,下半屏的坐标,参考 了解的 屏结构。
首先得了解 绘图区 的结构:12864 这个屏的 绘图区,分有 16大列,每大列 有 16小列(点),16*16=256,于是 它分成了 前 8大列 放在 第一、二行,后8 大列放在 第三、四行。告诉你这个结构,是想说:12864 的绘图区,是以 大列(16小列) 为单位进行 数据输入 显示的。现在来说题目:
1、从 0,0开始,这个最简单,由于从原点开始,可以直接输入数据。但要注意:
①输入的 横向长度,必须是 大列(16点)的整数倍,也就是说,你输入的数据,必须是 2Byte 的整数倍。如不足 长度,应自行补充。比如输入的 图片长度 为 35×16,横向35,不是 16的整数倍,那么输完 前面的 32 点后,横向还有 3个点,要补0 扩展成 16位 再输入。也就是说,你补充了0(图片显示为空白)后,实际数据为 48×16。
②因12864 不支持 自动换行,数据输入时,要自行在 图片 横向结束时,进行换行(不是 12864 的四个行,而是每个 小点行)。
2,不从 0,0开始,这个比较繁琐。如果 起点的 横坐标的是 16的整数倍,可以直接通过 绘图 大列定位。如果起点坐标不是 16 的整数倍,那么要 先在图片每横向数据 的前面进行 填0 补充,虚构一个 16的整数倍。比如,起点在 18,0,那就需要在前面补 2个0,虚构起点在 16,0 的位置。这只是困难的开头,2个0 补充在数据头后,数据的低 2位就得 往 下一个数据 推了。这就是 连续数据 移位,一直移动到 横向长度 的结尾,再根据 LZ 上一个问题的方法处理结尾。连续数据 移位,比如:11100001 ,00011110,01111000,10000111,连续右移2位后,是 00111000,01000111,10011110,00100001, 11(000000,00000000),括号部分为12864补充 的长度,让数据为 16点 的整数倍。
1-1,图片尺寸不足 12864,就会导致其他区域数据的不定性(为上次图片的遗留),如果只需这个图片,那就应该在 绘图之前,进行 绘图区清0,也就是 输入 12864 点 的 0数据。
1-2,下半屏的坐标,参考 了解的 屏结构。
更多追问追答
追问
纠正下12864是8位数据,由于是8位数据,横向X不可能少于8位,1:解码数据不可能最右边的数据,不是8位。2:就算可能,没有的会自动作0处理。(如有语气不合理,请谅解,谢谢)
但图片右边并未写数据啦,怎么就会花屏,还有下半屏写了数据也花屏,这个不解
还有不从0,0开始,会无法识别。如0,0横向起始是(0X80);下半屏是(0X88),但用(0X80+I)或(0X88+I),就不识别,又怎么解
追答
那可能咱们的沟通有出入。至于LZ说的语气不合理的,技术探讨面红耳赤的都有,这不为过。况且LZ并没有什么不得体的语气。
12864 所谓 8位数据,那是指它的通讯总线宽度(还有4位数据的)。而直接采用8位数据进行显示的是 12864 的CGROM(中文字ROM)、HCGROM(字符ROM),以及CGRAM(字符产生RAM,即自定义字符)。
而12864 的绘图内容,存在 GDRAM(绘图RAM)中,其大小如我前面所说256点×32点。输入数据 以 16点 为单位,无法只输入 8个点。而且它的地址分块,也是以 横向16点为一个水平地址。这也是为什么无法只输入8个点的另一个原因。
至于我前面所说的,绘图区 256×32,后半边 放到 第三、四行进行显示,是因为:12864 的DDRAM(显示区RAM)地址映射的结果。
另外,LZ追问的“自动作0处理”,想来你是理解错了,我说的是:(程序员)自行补0处理。这要靠程序去判断补充,不是12864补充的。
而非0,0坐标无法识别的图片,就是因为,上面说的CGRAM地址,并不是按1个点计算的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询