完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
这个是在网上找的打点函数,其中有几点不太懂,希望有经验的指点一下,万分感谢!
void draw_dot(uchar x,uchar y) { uchar x_byte,x_bit; //确定dot在横轴上的哪个字节内的哪个位 uchar y_byte,y_bit; //确定dot在竖轴上的哪个字节内的哪个位 uchar TempH,TempL; //用来存放读出来的原始数据的高8位和低8位, //目的是为了避免新的数据点写进去后覆盖掉前面的点 x=x&0x7f; //限制横坐标所在范围,为0-127 y=y&0x3f; //限制纵坐标所在范围,为0-31(上半屏) 0-31(下半屏) x_byte=x/16; //确定该dot在哪一个字节 x_bit=x%16; //确定该dot在哪一个点 y_byte=y/32; //确定该dot在那个半屏,0:上半屏 1:下半屏 y_bit=y%32; //确定该dot在第几行(因为到了下半屏也是从0行开始到31行) wr_cmd(0x34); //打开扩展指令集,关闭基本功能模式,绘图显示关闭 set_col(y_bit); //先将光标纵坐标写到指定行 set_row(x_byte+8*y_byte); //再将光标横坐标写到指定位置,若y_byte为1,则说明大于了31行(从0行算起) //则需将AC指针写到0x88处即ST7920控制下的第3行 Read_data(); //当下设定AC地址指令后,若要读取数据需要预先dummy read一次,才会读到正确数据 //第2次读取时不需要dummy read,除非又重新设定AC位置才需再次dummy read TempH=Read_data(); //读取高8位数据 TempL=Read_data(); //读取低8位数据 set_col(y_bit); //读操作会改变AC位置,所以需要重新写入1次 set_row(x_byte+8*y_byte); if(x_bit<8) { wr_data(1,TempH|(0x01<<(7-x_bit))); //如果要写的dot在高8位,则这样写利用or运算避免新数据覆盖原先数据 wr_data(1,TempL); //原先的低8位数据照常写入 } else { wr_data(1,TempH); //如果要写的dot在低8位,原先的高8位数据照常写入 wr_data(1,TempL|(0x01<<(15-x_bit))); //低8位则这样写利用or运算避免新数据覆盖原先数据 } wr_cmd(0x36); //开绘图显示 wr_cmd(0x30); //回到GDRAM显示模式 } 主要是这里有些疑问 uchar TempH,TempL; //用来存放读出来的原始数据的高8位和低8位, //目的是为了避免新的数据点写进去后覆盖掉前面的点 1。为什么要设置两个变量,个人解释为要读两次值,并储存起来 Read_data(); //当下设定AC地址指令后,若要读取数据需要预先dummy read一次,才会读到正确数据 2.这个读取,可能是硬件问题,也可以理解 TempH=Read_data(); //读取高8位数据 TempL=Read_data(); //读取低8位数据 33.这里为什么要读取两次啊????十分不理解,解释说两次一次读取高位,一个读取低位,具体不太清除,希望能详解一下,也可以举下例子,比如说 draw_dot(0,0) ,个人认为,读取一次不就可以了么,为什么还有读取两次啊,》》》
|
|
相关推荐
6个回答
|
|
|
|
|
|
1。为什么要设置两个变量,个人解释为要读两次值,并储存起来
因为读取的数据时16位,而LCD只能单次发送8位,所以需要分两次发送,合并为一个16位数据。 2.的问题同一 |
|
|
|
谢谢啦,这个我下去有查了一下资料,确实是十六位数据, 由于我对扩展指令理解有点误解,导致我很多东西理解错误,走了很多弯路, 最后还是谢谢版主! |
|
|
|
本帖最后由 gao5613786 于 2012-8-28 22:10 编辑
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.jpg 这个是我找到的坐标表,仔细看的话可以发现存取的数据是十六位的,我是按照以往的模式理解的,结果走了弯路,哈哈, |
|
|
|
MARK。。。。。。
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
464 浏览 0 评论
478 浏览 1 评论
基于瑞萨FPB-RA4E2智能床头灯项目——1编译环境搭建与点亮驱动ws2812全彩LED
439 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
994 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
1056 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11783 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 11:29 , Processed in 0.543578 second(s), Total 51, Slave 43 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号