qdhf 发表于 2019-1-26 15:17:49

关于STM32FSMC驱动液晶屏的问题,弄了很久了始终不理解

是这样的,图片中注释部分是我自己写的,未注释部分是例程中的代码。然后第二个图片呢,是液晶屏驱动芯片手册中关于坐标高位低位的说明。
我的液晶屏是3.6寸的 240*400(例程中最大是这么大)。
问题描述:我自己写的也就是注释部分代码,是液晶屏输入起始坐标X0与终止坐标X1Y轴同理,然后出现颜色矩形窗口的一个子函数。但是我自己写的这个无法全屏显示,最多也就能够将窗口设置成240*250大小,Y轴再继续加大数值的话,窗口会变到最小(就像是超过了250就重头开始的意思)。但是例程的这部分代码做替换后,就可以正常240*400全屏显示。我最想要问的问题是,例程中为什么要/256%256呢,这样是怎么发送0000 0001和1111 1111的呢?诚心的希望了解的人做出一个回答,困扰了好久了

qdhf 发表于 2019-1-26 15:24:21

如果将例程部分的代码用位 & 、| 该怎么表示呢

aiherong 发表于 2019-1-26 21:42:40

取余你的代码可行,但取整你的代码实现有误,之所以要先传整再传余这和显存页段有关,用与非实现取整运算:如X0=0x1234;取高8位,先X0&=0xff00;再X0>>8;得到X0=0x12;
对1111,1111取整时是0,但取余时得到0xff,不存在问题

yubinwu_3004964 发表于 2019-1-26 22:20:48

感觉高位应该类似(x0>>8)&0x01

toofree 发表于 2019-1-27 00:27:06

本帖最后由 toofree 于 2019-1-27 00:31 编辑

你这里的x0、x1等都是16位数据。得分两次发送。
x0/256 等效于x0 >> 8 ,即取高8位(实际用的数有可能就最低一位有效);
x0%256 等效于 x0 & 0xff

你注释掉的程序,是逻辑错误。实在要用的话,应该是 (x0>>8) & 0x01。

aiherong 发表于 2019-1-27 14:07:39

这里正好256等于0xff,实际取整可以任意,比如:5/2取整=2,取余5%2=1,补充说明一下以免误导概念可能不太明朗的坛友,而在这儿的问题恰好就相当于取高8位与低8位之分,取高8位直接右移8位就可以了,不用再"&0x01",否则又变成取高8位的最低位了。
页: [1]
查看完整版本: 关于STM32FSMC驱动液晶屏的问题,弄了很久了始终不理解