KS0108内核液晶驱动程序介绍.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
直接看指令表: 由以上指令可以得到如下初始化液晶的程序: void vLCDInitialize() { CS1=1; CS2=1; vWriteCMD(0x38); vWriteCMD(0x0F); vWriteCMD(0x01); vWriteCMD(0x06);  //8 位形式,两行字符。 //开显示。 //清屏。 //画面不动,光标右移。 vWriteCMD(LCDSTARTROW); //设置起始行。 } 全屏初始化,不忙?写命令,这里注意,控制显示的指令和 ST7920 相同,这里没有详细列出。 不同的是,起始行,列,和页分别定义如下: #define LCDSTARTROW 0xC0 //设置起始行指令。 #define LCDPAGE 0xB8 //设置页指令。#define LCDLINE 0x40 可以通过上面的指令表查表宏定义。 //在 8×128 的格子里显示自定义长度的一行 void vShowCustomRow(unsigned char ucPage,unsigned ucWidth,unsigned char *ucaRow) { char ucLine,unsigned char unsigned char ucCount; if(ucLine64) { CS1=1; CS2=0; vWriteCMD(LCDPAGE+ucPage); vWriteCMD(LCDLINE+ucLine); if((ucLine+ucWidth)64) { for(ucCount=0;ucCountucWidth;ucCount++) vWriteData(*(ucaRow+ucCount)); else } { for(ucCount=0;ucCount64-ucLine;ucCount++) vWriteData(*(ucaRow+ucCount)); CS1=0; CS2=1; vWriteCMD(LCDPAGE+ucPage); vWriteCMD(LCDLINE); for(ucCount=64-ucLine;ucCountucWidth;ucCount++) vWriteData(*(ucaRow+ucCount)); } } else { CS1=0; CS2=1; vWriteCMD(LCDPAGE+ucPage); vWriteCMD(LCDLINE+ucLine-64); for(ucCount=0;ucCountucWidth;ucCount++) vWriteData(*(ucaRow+ucCount)); } } 1 、 void vShowCustomRow(unsigned char ucPage,unsigned char ucLine,unsigned char ucWidth,unsigned char *ucaRow):四个参数:从那一页开始写,从哪一列开始写,写入多宽数据,写入的数据存放在哪里。 2、如果列小于 64,从第一屏开始写,然后指定页号,和列号。如果列号+宽度不超出 64, 则循环(宽度)次,指针指向数据存放单元,一次写入到液晶。否则:将没超出的部分写入, 超出的部分选中第二屏,从同一页的 0 列开始写入,将剩下没有写完的写完即可。如果列号本来就超出 64,则直接选中第二屏,写入页号和列号-64 后,连续写入即可。 以上程序弄明白以后,写入中文字则很简单了: void vShowOneChin(unsigned char ucPage,unsigned char ucLine,unsigned char *ucaChinMap) { vShowCustomRow(ucPage,ucLine,16,ucaChinMap); vShowCustomRow(ucPage+1,ucLine,16,ucaChinMap+16); } 三个参数:页号,列号,和存放的中文字数组。 在对应的页和列先输入 8 位高,16 位宽的上半段,然后页号+1,输入下半段。这里就明白了,页其实就是半行汉字。一次显示 4 行,则显示 8 页。 字符显示则可如下表示: void vShowOneChar(unsigned char ucPage,unsigned char ucLine,unsigned char *ucaCharMap) { vShowCustomRow(ucPage,ucLine,8,ucaCharMap); vShowCustomRow(ucPage+1,ucLine,8,ucaCharMap+8); } 同汉字显示,只是字符只有半汉字宽而已。 图片显示: void vShowGraph(unsigned char ucPage,unsigned char ucLin

文档评论(0)

hao187 + 关注
官方认证
文档贡献者

该用户很懒,什么也没介绍

认证主体武汉豪锦宏商务信息咨询服务有限公司
IP属地上海
统一社会信用代码/组织机构代码
91420100MA4F3KHG8Q

1亿VIP精品文档

相关文档