12864液晶画点和画任意两点间直线原理.docx

上传人:lao****ou 文档编号:727527 上传时间:2024-04-28 格式:DOCX 页数:3 大小:17.46KB
下载 相关 举报
12864液晶画点和画任意两点间直线原理.docx_第1页
第1页 / 共3页
12864液晶画点和画任意两点间直线原理.docx_第2页
第2页 / 共3页
12864液晶画点和画任意两点间直线原理.docx_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《12864液晶画点和画任意两点间直线原理.docx》由会员分享,可在线阅读,更多相关《12864液晶画点和画任意两点间直线原理.docx(3页珍藏版)》请在第一文库网上搜索。

1、12864液晶画点和画任意两点间直线原理、算法及程序原码笈仃:2009-11-1021:02|作苕:tiankai|来源:电子园电源技术专区12864液晶画点和画任意直线的原理和算法程序原码经验证可行12864实际上是256x64二维显示空间,整个液晶屏分上下两个半屏。整个屏一共有256列,64行。可以把它分成16大列,每一大列包含16歹h图形RAM的起始址址为0x80,设置读或写的地址时,要先写Y坐标,再写X坐标。要使用画图功能,就要设置扩允指令集。画点原理:先确定坐标一读出数据修改数据一数据写回原处。程序原码:画点函数voidDraw_Point(ucharxzucharyzucharco

2、1or)ucharrowztirzrow-bit;ucharReadOIdHzReadOId1;tier=x4;把256列分成16大列,每大列包含16列row_bit=x&0x0f;计算所给坐标在某一大列中的哪-列if(yv32)分上下半屏显示row=y;上半屏e1serow=y-32;下半屏tier+=8;WriteCommand(034);8Bit扩充指令集,即使是36H也要写两次WriteCommand(0x36);绘图ON,基本指令集里面36H不能开绘图WriteCommand(0x80+row);/行位置WriteCommand(080+tier);/歹U位置ReadData();R

3、eadO1dH=ReadData。;某大歹IJ的前8歹IJ数据,低位在前,高位在后ReadOId1=ReadDataO;某大列的后8列数据if(row_bit8)修改读出的数据switch(co1or)case0:ReadOIdH&=(OxO1(7-row_bit);break;case1:ReadOIdH=(OxO1(7-row_bit);break;case2:ReadOIdH=(OxO1(7-row_bit);break;defau1t:break;e1se(SWitch(CoIor)case0:ReadOId1&=(OxO1(15-row_bit);break;case1:ReadOI

4、d1=(OxO1(15-row_bit);break;case2:ReadOId1=(OxO1(15-row_bit);break;defau1t:break;WriteCommand(0x80+row);/行位置WriteCommand(0x80+tier);/列位置WriteData(ReadOIdH);把修改后的数据写回原地址WriteData(ReadOId1);画任意两点间直线的原理和算法:采用Bresenham画线算法。设线段方程:a+by+c=0(x1X0?斜率小于0:同理。斜率=0:即为横线。斜率=1:即为竖线。程序原码:画任意两点间的直线voidDraw1ine(unsign

5、edcharStartXzUnsignedcharStartYzunsignedcharEndXzunsignedcharEndY,unsignedcharCo1or)itI1distance;*根据屏幕大小改变变量类型(如改为int型)*/intX=O,y=O,de1ta_x,de1ta_y;charincxzincy;de1ta_x=EndX-StartX;de1ta_y=EndY-StartY/判断直线的方向if(de1ta_xO)inc=1;画竖线e1seif(de1ta_x=O)if(de1ta_y0)DrawTier1ine(StartXzStartYzEndY-StartYzCo

6、1or);e1seDrawTier1ine(StartXzEndYzStartY-EndYzCo1or);return;e1seincx=-1;if(de1ta_yO)incy=1;画横线e1seif(de1ta_y=O)if(de1ta_x0)DrawRow1ine(StartYzStartX,EndX-StartXzCo1or);e1seDrawRow1ine(StartYzEndXzStartX-EndXzCo1or);return;e1seincy=-1;if(de1ta_x0)de1ta_x=-de1ta_x;if(de1ta_yde1ta_y)distance=de1ta_x;e1sedistance=de1ta_y;DrawPoint(StartXzStartYzCo1or);*Draw1ine*/for(t=0;t=distance+1;t+)0?if(xdistance)-=distance;StartX+=inc;if(ydistance)y-=distance;StartY+=incy;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 应用文档 > 工作总结

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

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

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



客服