数码之家

 找回密码
 立即注册
搜索
查看: 2033|回复: 17

[Arduino] 发现这屏画垂直竖线比较难

[复制链接]
发表于 2020-3-17 08:59:43 | 显示全部楼层 |阅读模式
还是那个屏,没驱动,就是有驱动也用不了,因为接口让我改成
自己做的了,没有专门配合我这接口的驱动

上下的屏


先下半屏,后上半屏


这个屏画点,画水平线还是容易的,就是画垂直线
稍微难点,因为不能通过简单的画点循环来画,这样会擦去前面画的




再有就是不会画斜线,没仔细研究算法,因为我暂时也不需要斜线


靠画点来大致模拟斜线吧,效果自然差点了,
数学不好,不会做这些计算:titter:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

打赏

参与人数 3家元 +60 收起 理由
有点不烧 + 20 謝謝分享
阳光使者 + 20 是点阵像素的原因。
中心小学 + 20 認真發帖

查看全部打赏

发表于 2020-3-17 09:28:11 | 显示全部楼层
上下半屏吗?

打赏

参与人数 1家元 +5 收起 理由
人艰不拆了 + 5

查看全部打赏

回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-17 10:07:37 | 显示全部楼层

是的,哈哈哈:loveliness:
回复 支持 反对

使用道具 举报

发表于 2020-3-17 11:08:06 | 显示全部楼层
楼主这是要扔?
让我来帮你处理吧

打赏

参与人数 2家元 +30 收起 理由
阳光使者 + 20 这方法多多益善啊!
人艰不拆了 + 10

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2020-3-17 20:54:38 | 显示全部楼层
是点阵像素的原因。

打赏

参与人数 1家元 +15 收起 理由
人艰不拆了 + 15 我很贊同

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2020-3-18 08:04:09 | 显示全部楼层
单片机划1kB内存当显存

打赏

参与人数 1家元 +5 收起 理由
人艰不拆了 + 5

查看全部打赏

回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-18 08:54:36 | 显示全部楼层
cbcb4cb 发表于 2020-3-18 08:04
单片机划1kB内存当显存

哈哈,一共2k啊:titter:
回复 支持 反对

使用道具 举报

发表于 2020-3-18 10:01:46 | 显示全部楼层
这类的屏幕要想跨行或者跨列访问比较麻烦,非对齐填充更麻烦:
如果想批量修改某行或者某列,根据屏幕的读写方式,你需要计算该行或者列的每个像素点对应的位在字节中的位置,修改完第一个后,偏移128字节再修改下一个,一直到修改玩全部为止;
非对齐填充是我遇到的大麻烦,对齐填充一般就是在一字节对应的段或者页,一次修改8行n列或者n行8列最简单,不断地送n次一字节数据就行,期间简单设置写入地址就好。但是非对齐填充就不是这样了,它的修改位数不是正好是字节的倍数,而且跨段或者跨页修改,处理起来非常难。

12864,我记得是128行对应8个字节,64个行。但是有些屏幕是64列对应8个字节,128个列。

打赏

参与人数 1家元 +10 收起 理由
人艰不拆了 + 10

查看全部打赏

回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-18 10:04:53 | 显示全部楼层
la45088d1 发表于 2020-3-18 10:01
这类的屏幕要想跨行或者跨列访问比较麻烦,非对齐填充更麻烦:
如果想批量修改某行或者某列,根据屏幕的读 ...

这个是后一种,似乎还好些,我是不善于处理这些,绕的头疼:titter:
回复 支持 反对

使用道具 举报

发表于 2020-3-18 11:24:27 | 显示全部楼层
人艰不拆了 发表于 2020-3-18 10:04
这个是后一种,似乎还好些,我是不善于处理这些,绕的头疼

看来我比你强一点,我用汇编写出来了,就在之前发出的DDS蜂鸣器驱动程序里,我打算搞个显示。但是没有测试,没时间没硬件啊。
昨天今天都在处理音调合成的切换噪声问题,终于处理差不多了吧。现在这玩意发出的声音跟劣质的玩具电子琴几乎一样。:titter:
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-18 11:51:59 | 显示全部楼层
la45088d1 发表于 2020-3-18 11:24
看来我比你强一点,我用汇编写出来了,就在之前发出的DDS蜂鸣器驱动程序里,我打算搞个显示。但是没有测 ...

你比我强多了:titter:
回复 支持 反对

使用道具 举报

发表于 2020-3-18 12:55:54 | 显示全部楼层
先读出来,再按位或,然后写回去,就不会擦除了
回复 支持 反对

使用道具 举报

发表于 2020-3-18 14:05:11 | 显示全部楼层

void dot(uint8_t x,y)
{
lcd_temp[7-(y>>3)][x]|=1<<(y&7);
}
左下角是dot(0,0);
右上角是dot(127,63);
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-18 14:09:35 | 显示全部楼层
cbcb4cb 发表于 2020-3-18 14:05
void dot(uint8_t x,y)
{
lcd_temp[7-(y>>3)][x]|=1

啥意思啊,这是?:mad:
回复 支持 反对

使用道具 举报

发表于 2020-3-18 14:13:32 | 显示全部楼层

对应这屏幕描点函数,显存:uint8_t lcd_temp[8][128];
我以前1.25k内存的单片机也划1k内存当显存,一想到内存占用率这么高就快乐:lol:

打赏

参与人数 1家元 +10 收起 理由
人艰不拆了 + 10

查看全部打赏

回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-18 15:40:05 | 显示全部楼层
cbcb4cb 发表于 2020-3-18 14:13
对应这屏幕描点函数,显存:uint8_t lcd_temp[8][128];
我以前1.25k内存的单片机也划1k内存当显存,一想 ...

哈哈,我不喜欢你这种语法,看不懂,我喜欢最简单的句式:titter:
回复 支持 反对

使用道具 举报

发表于 2020-3-18 21:27:11 | 显示全部楼层
@la45088d1 大哥,能讲讲你处理音调合成的事情么?我记得立式空调的开关机都有清脆悦耳的和弦音,那是咋搞出来的?
回复 支持 反对

使用道具 举报

发表于 2020-3-19 09:27:31 | 显示全部楼层
恕我直言,旋转90度来操作屏不能解决吗....把竖线转换成横线..
回复 支持 反对

使用道具 举报

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

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-5-14 19:16 , Processed in 0.249600 second(s), 12 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

快速回复 返回顶部 返回列表