打印
[牛人杂谈]

【转】OCMJ8X15B金鹏液晶屏驱动程序+字库规律

[复制链接]
752|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
   笔者最近在弄金鹏的液晶屏,现在这个年代了,不跑点液晶屏程序实在是说不过去,如果能上3G模块,wifi模块那就更加好了。

    这个液晶屏相对于其它液晶屏,它没有什么特别特殊的地方,前段时间,笔者用了一个不带字库的液晶屏,那叫一个痛苦,每次显示字符或者汉字还要算出它的字符码,而且它的逻辑比较难懂,不过最后写了一个函数,即在横坐标,纵坐标确定的后,写一个字符,液晶屏程序的封装就应该这样简单!

   这个液晶屏的时序相信大家都看过,也都有自己的程序,笔者这次用的是LPC1700系列中的LPC1766,但是根据自己的程序结合着PDF上的时序,对照了很长时间,觉得一点问题都没有,最后还是出不来一个汉字,无奈之下,只能求助自己的导师,导师说,这个液晶屏许多人都做不出来,不是没有理解时序,而是时序对的情况下,写的代码也要匹配,否则看似时序对,其实也不能运行。

   时序的问题,大家看pdf就一目了然了,pdf连接如下:http://wenku.baidu.com/view/789a261ca300a6c30c229ff7.html

   下面附上LPC1766的初始化和时序代码,希望对大家有帮助:

[cpp] view plain copy


  • #define LCD_REQ     (1 << 28)                    
  • #define LCD_BUSY    (1 << 27)  


[html] view plain copy


  • void LCDInit(void)  
  • {  
  •     FIO1CLR |= LCD_REQ;                //REQ置为低电平  
  •     myDelay(10);                       //延迟,等待信号稳定  
  •     FIO1CLR |= (0xff << 18);             //将输出数据端口置为0  
  • }  


[html] view plain copy


  • void sendOneByte(uint8_t dat)  
  • {  
  •     while(FIO1PIN & LCD_BUSY);              //如果忙就一直等待,后期需要加延迟  
  •         FIO1SET |=  (dat <<18);               //在P1.18~P1.25上输出为1的数据  
  •     myDelay(10);                        //延迟等待数据稳定  
  •     FIO1SET |=  LCD_REQ;                //REQ置为高,告诉LCD可以取数据  
  •   
  •     while((FIO1PIN & LCD_BUSY )== 0);               //等待LCD响应接收数据  
  •     FIO1CLR |=  LCD_REQ;                //REQ置为低,撤销请求信号  
  •   
  •     myDelay(200);  
  •     FIO1CLR |=  (0xff << 18);  
  • }  


  笔者用的是P1.18~P1.26表示DB0~DB7,P1.27为BUSY端,设置为输入,P1.28为REQ端

  而这个字库也有一定的规律,比如“分“这个字,程序会解释为两个字节是183,,214(一个汉字为两个字节,高字节为183,低字节为214),而在字库的区位表中,它对应的是(23,54)聪明的你或许已经看出来它的规律了,没错它就是把汉字被程序解释后,高字节和低字节都减去160,就可以得到你输入的汉字,这是非常方便的

  这里真是要给NXP一点建议,一个引脚输出高低,你至于每次都要用IOSET和IOCLR吗?这样很不方便,不如P1.18=1 就输出高电平这样来的直接,这虽然是51单片机的方法,但是是一个可取的方法,是值得学习的,

  而且一个引脚难道不是输出就是输入码?难道它不能双端的,能输出能输入吗?在通讯中,这个是很重要的,能够大大减少负担,不然每次都要来回切换输入输出的方向,真的很烦人,编程应该方便程序员,而程序员编写的产品应该来方便大众!


沙发
zhuotuzi| | 2017-2-23 20:09 | 只看该作者
也可以直接通过宏,让一条指令代替好几条指令。

使用特权

评论回复
板凳
643757107| | 2017-2-23 23:28 | 只看该作者
谁知道字库文件是怎么调用的?字库是怎么根据昂ASCII编码识别的?

使用特权

评论回复
地板
598330983| | 2017-2-24 13:47 | 只看该作者
根据屏幕的手册来写就写了,有时候可以用外设操作。有时候就要用IO来做。

使用特权

评论回复
5
734774645| | 2017-2-24 19:52 | 只看该作者
没看出来字库在哪儿,代码里没体现啊。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

60

主题

116

帖子

0

粉丝