完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
看了好多例程,对于地址始终不理解,
void DisplayImage (unsigned char code *DData){ unsigned char x,y,i; unsigned int tmp=0; for(i=0;i<9;){ //分两屏,上半屏和下半屏,因为起始地址不同,需要分开 for(x=0;x<32;x++){ //32行 WriteCommandLCD(0x34,1); WriteCommandLCD((0x80+x),1);//列地址 WriteCommandLCD((0x80+i),1); //行地址,下半屏,即第三行地址0X88 WriteCommandLCD(0x30,1); for(y=0;y<16;y++) WriteDataLCD(DData[tmp+y]);//读取数据写入LCD tmp+=16; } i+=8; } WriteCommandLCD(0x36,1); //扩充功能设定 WriteCommandLCD(0x30,1); } 对于这个程序,为什么那么确定0x80+x为列地址,?当x=8时,那么地址不是为0x88了吗?0x88不就是第三行首地址吗?怎么回事? 还有为什么y要循环16次? for(y=0;y<16;y++) ??? CGRAM有什么用?看使用手册说当0x40时将CGRAM地址传给计数器AC,但是不显示啊,只有设0X80才好使,那么将CGRAM传递给AC还有什么用? 麻烦大神们耐心解答,谢谢; |
|
相关推荐
10个回答
|
|
经过了两日的研究和实践,终于想明白了,
当往cgram中存图片时,液晶屏默认先定义的地址为列坐标,后定义的地址为横坐标,由于12864每行有128个点,正好是16*8,每个十六进制代码(0xab)代表八个点,每存进两个个十六进制后,横坐标就会自动加一,(每十六个点共用一个横坐标,但列坐标每个点一个坐标,分为上下两个屏幕,上屏幕是0到31,下屏幕也是0到31),所以当存进16个十六进制(这就是为什么y要循环16次)时,正好是128个点,此时横坐标已经是0x87了,这时将列坐标加一开始扫描第二行,就这样一直扫描31行,将上半屏幕扫描完毕,开始扫描下半屏幕,但是下半屏幕横坐标以0x88开始,这样 i 就加 8;然后再重复上半屏幕的扫描。直至把扫描完全部。 |
|
|
|
楼主解释的不完全。首先0x34使用了扩充指令,然后0x80是在设定绘图RAM地址,在说明书里有,1000XXXX后四位写列起始地址,前四位固定,所以转换成16进制就是0X80开始累加。接下来设定横坐标为1XXXXXXX,后七位为横坐标的起始位所以为0X80开始,由于每写输入2个16进制数据,内部横坐标自动加一,所以就不用像列那样设置累加循环了。
|
|
|
|
我也是不懂,看了楼主的的解释,感觉还是迷惑,再自己研究了半天,才顿悟的。
|
|
|
|
您所说的 1000****和1********我在说明书里面没有看见啊,我完全是看代码,还有一张坐标图然后自己推断的,其实这么说我只是看表象推论而已,具体内部情况是否这样也无从验证,请指导 |
|
|
|
![]() 在扩充指令的设定绘图RAM地址中,你的说明书里应该有,只是说的不详细 |
|
|
|
上次说错了,列坐标设定是1XXXXXXX,因为列有32个,横坐标为1000XXXX,横坐标只有8个。
|
|
|
|
|
|
|
|
加油,,我也在学呢
|
|
|
|
呵~我也正在学,不懂~
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
693 浏览 0 评论
483 浏览 0 评论
嵌入式学习-搭建自己的ubuntu系统之ubuntu网络设置
598 浏览 0 评论
龙芯中科胡伟武:3B6600 八核桌面 CPU 性能将达到英特尔中高端酷睿 12~13 代水平
665 浏览 0 评论
树莓派Pico 2发布,搭载RP2350双核RISC-V和Arm Cortex-M33微控制器!
618 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
10712 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-17 10:13 , Processed in 0.669679 second(s), Total 91, Slave 72 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191