欢迎来到第一文库网! | 帮助中心 第一文库网-每个人都是第一
第一文库网
全部分类
  • 研究报告>
  • 学术论文>
  • 全科教育>
  • 应用文档>
  • 行业资料>
  • 企业管理>
  • 技术资料>
  • 生活休闲>
  • ImageVerifierCode 换一换
    首页 第一文库网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    12864画点教程(保留).docx

    • 资源ID:727590       资源大小:60.89KB        全文页数:7页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: QQ登录 微博登录
    二维码
    扫码关注公众号登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    12864画点教程(保留).docx

    基于ST7920控制的12864液晶用于字符显示很方便的,但网友说用它显示图形并不合适,原因就是它绘图时先要关闭显示,绘完后又要打开,速度会较慢。我没有用过别的液晶,手中只有这一款,摆弄了儿天,掌握了一点东西,写出来共享。首先,我们知道,图形都是由像素点组成的,绘图的基础其实就是画点。只要我们能点亮液晶的任意一个像素点,那么绘图就不是什么难事了。万丈高楼平地起嘛,先要做的,当然是要打好基础。5T7920提供了用于绘图的GDRAM(graphdisp1ayRAM)。共64X32个字节的空间(由扩充指令设定绘图RAM地址),最多可以控制256X64点阵的二维绘图缓冲空间。在它的DataSheet给出了GDRAM的坐标地址对照表:GDRAM水(X)(原文件名:图片1Png)引用图片用坐标表示,就是这样:256像素(1616<i)2:像*M64位)(原文件名:图片2.png)引用图片它的横坐标每一个地址都是16位的。共16个地址,256位。很明显,它能控制256*64像素的液晶屏,而我们的只是128*64像素液晶屏,显然只用到它的一部分。我刚开始以为它对应屏幕的绘图RAM是这样分布的(如红色部分):x128像素(原文件名:图片3.png)引用图片结果栽了大根头,后来终于弄明白,原来它对应屏幕的GDRAM是这样分布的:汗,发了一半不小心提交了,继续256«(原文件名:图片4.png)引用图片只要我们清楚了它的GDRAM和屏幕上像素点的映射(对应)关系,点亮对应的像素点就容易多了。要点亮某一个像素点,就是将这个像素点在GDRAM中对应的位置1,这个相信没人会不知道吧?我们先讨论一下思路,再一步步写代码。我觉得,思路要比代码重要的多,只要你的思路通了,正确了,那么写出代码肯定会很容易。首先,给你X,y的坐标,要你点亮一个点,要怎么做呢?从上面的图我们知道,它是分为两个半屏的,首先,我们要确定这个点是在上半屏还是下半屏,然后确定它是在那一行(纵坐标Y),再确定它是在哪一个字节的哪一个位(也就是确定它在那一列,即横坐标X)o这些都确定后我们就定位到某一个具体的位上了,只就将这个位置1,就OK了。下面我们边写代码边讨论。因为这里仅仅是讨论如何在12864上打点的,而不是给12864写一个驱动,所以对于基本的数据读写函数,我们不做讨论,这里假设已经有了如下基本函数:void1cd_write_cmd(UnSignedchar);/1ed命令写void1edWTitedata(unsignedchar);/1ed数据写UnSigendchar1edreaddata(void):/1ed数据读好了,就这些了。为了方便,我们定义如下宏:SdefineBASIJSET0x30基本指令集,后面的数字查数据手册,下同。0x30SdefineEXTEND_SET0x34扩展指令集0x34SdefineDRW-0N0x36绘图显示开0x36SdefineDRAW_OFF0x34绘图显示关0x34我们现在开始写点亮某一个点的函数:void1edsetdot(unsignedcharx,unsignedchary)unsignedcharxbyet,xbit;unsignedcharybyte,ybit;在横坐标的哪一个字节,哪一个位Xbyte=X/16;是16位的x_bit=X%16;ybyte=y/32;y_bit=y%32;IC(1write_Cmd(EXTEND_SET);1cd_UTite_cmd(DRAW_OFF):1edwitecmd(0x80+ybit);1eduitecmd(0x80+xbyte+8算出它在哪一个字节(地址)注意一个地址算出它在哪一个位/y是没在哪个字节这个说法例识顺定加泮屏还居用福/0:上半屏1:下半屏y_bit确定它是在第几行扩展指令集绘图显示关闭先写垂直地址具体参照数据手册y_byte);水平坐标/电硼照确班册还固的if(x_bit<8)xbit位数小于8(1edwrite_data(0x01«(7-xbit);1edwritedata(0x00):)e1se(1edwritedata(0x00):1eduitedata(0x01«(15-xbit);)如果写高字节。因为坐标是从左向右的ZMn闾站左底期右低字节全部填0高字节全部填01eduitecmd(DRAW0N);1edWTitecmd(BASICSET);ST7920是以字符为主的打开绘图显示回到基本指令集,毕竟return)基本画点函数算是完成了,但是我们如果使用这个函数,就会发现问题。你且用它沿横坐标画几个连续的点试试,肯定不是你想要的结果。出现问题的原因是因为我们画点时对其余的位全部填0处理了,造成对原来的信息的破坏。所以我们要读出要写的那个地址原来的数据,再进行加工,写回去就可以解决问题了。改进后的代码:X&=0x7F;yS1=0x3F;Xbyte=X/16;Xbit=x&OxOF;ybyte=y/32;y_bit=y&0x3F;1cd_write_cmd(EXTEND_SET);1cd_HTite_cmd(DRAW_OFF);算出它在哪一个字节(地址)注意一个地址是16位的算出它在哪一个位/y是没在哪个字节这个说法WbWi下的/0:上半屏1:下半屏/y.bit确定它是在第几行扩展指令集绘图显示关闭1cdwitecmd(0x80+ybit);读操作会改变AC,所以重新设置一次1edWTitecmd(0x80Xbyte+8*ybyte);if(x_bit<8)/如果Xbit位数小于8(1edwritedata(tmph(0x01«(7-xbit);写高字节。因为坐标是从左向右的曲加尚君iJ用曲右1edwritedata(tmp1);原数据送回)e1se原数据送回1cdwritedata(tmph);1cdwitedata(tmp1(0x01«(15-xbit);)1cdwitecmd(DRAWON);打开绘图显示return)画点函数到此就完成了,剩下的事情就是对函数的优化了。例如对入口参数的检查,对乘除法的优化等等。voidCirc1e(ucharX,ucharY,ucharR)/Bresenham算法(uchara,b;intc;a=0;b=R;c=3-2*R;whi1e(a<b)(Dot(X+a,Y÷b);H1Dot(X-a,Y+b);/6Dot(X+a,Y-b);/2Dot(X-a,Y-b);/3Dot(X+b,Y+a);/8Dot(X-b,Y+a);/5Dot(X+b,Y-a);/1Dot(X-b,Y-a);/4if(c<O)c=c+4*a+6;e1se(c=c+4*(a-b)+10;b-=1;a÷=1;if(a=b)(Dot(X+a,Y+b);Dot(X+a,Y÷b);Dot(X+a,Y-b);Dot(X-a,Y-b);Dot(X+b,Y÷a);Dot(X-b,Y+a);Dot(X+b,Y-a);Dot(X-b,Y-a);

    注意事项

    本文(12864画点教程(保留).docx)为本站会员(lao****ou)主动上传,第一文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知第一文库网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 001doc.com网站版权所有   

    经营许可证编号:宁ICP备2022001085号

    本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有,必要时第一文库网拥有上传用户文档的转载和下载权。第一文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第一文库网,我们立即给予删除!



    收起
    展开