基于单片机的图形液晶模块的驱动设计

时间:2009-12-10

  内置T6963C控制器的Y240128A液晶模块双电源(VDD/V0)供电。工作时需要提供一个负电压 (即液晶驱动电压V0/VEE),用以调节对比度,接至液晶模块的V0引脚。基于液晶材料的物理特性,液晶的对比度会随着温度的变化相应变化,因此,所提供的负电压必须随温度变化作相应的调整,大致变换关系是温度变化10℃,电压变化1V左右。此外,液晶模块在正常工作前必须提供驱动电源。由于选用的Y240128A液晶模块中已具备提供负电压的功能,只需接一个可调电位器(阻值20kΩ)就可方便地为液晶提供驱动电源。具体如图1所示。

  引脚1、2:接地;引脚3:接+5V电压为LCD逻辑电源;引脚5~8:液晶控制信号;引脚10~17:液晶数据信号;引脚4和引脚19:引脚4为液晶驱动电源,并可进行对比度调节。液晶驱动电源要求是负电压,将引脚19(VEE)提供的负电压(-23V),和引脚4连接后即可为液晶屏提供负电压。对于在温度变化不大的使用范围内,建议用稳压模块较合适,在设计中也可用稳压芯片输出负压来稳压,同样能使液晶正常驱动。

  SPCE061A单片机配置2个16位的并行I/O口:A口和B口,提供32个I/O线。其中,A口16个(IOA0~IOA15),B口16个(IOB0~IOB15)。它们都是16位可编程,具有位控制结构的I/O端口,每一位都可以被单独定义用于输入或输出数据。对某一位的设定包括以下3个基本项:数据向量Data、属性向量Attribution和方向控制向量Direction。



  因此,在设计中,通过SPCE061A单片机内置的I/O口电路和利用汇编语言对I/O端口的功能设置,就可以很简单的完成液晶模块接口的设置。

  对液晶模块的软件采用三层模式设计:底层程序设计、上层程序设计和应用层程序设计。 底层程序设计完成对液晶模块的底层驱动。主要是编写基于对T6963C指令应用的子函数,从而能够直接调用函数驱动液晶模块,读写液晶屏数据。

  T6963C控制器的指令很丰富,通过分析,建立双参数指令子函数OutCmd2()、单参数指令子函数OutCmd1()和无参数指令子函数OutCmd0()。底层驱动用汇编语言编写,以4个函数作为底层驱动函数:读数据、写数据、读状态、写指令。如对指令写入子函数OutCmd的编写,其底层驱动程序的建立,源代码如下:


  完成了对底层驱动函数的编写,第二步设计就是编写上层驱动函数。上层驱动函数编写的出发点是保证灵活性和可移植性,利用底层的4个驱动子函数,向应用部分提供各种常用操作。上层函数用C语言编写。例如,液晶模块的初始化等。

  上层驱动子函数的建立,源代码如下:


  完成了上层驱动子函数的编写,就可以调用它,建立应用层,编写软件模块。如:显示静态菜单等等。

  应用层的建立,源代码如下:

  从上面的设计可以看到用三层软件模块设计思想,可以很快的在应用层中调用子函数来编写程序,并且编写很简单,如汉字显示等。对于复杂的菜单设计,更能突出这种软件设计思想的优势。

  介绍了SPCE061A单片机驱动内含T6963C控制器的图形液晶模块。它利用丰富的I/O口资源驱动液晶模块,简化了电路设计,并结合T6963C控制器的图形液晶模块的指令特点,设计出液晶模块软件驱动模式,使得在对驱动液晶模块的软件编写上更方便,这一设计思想在实际应用中取得了很好的效果。

参考文献:

[1]. T6963C datasheet https://www.dzsc.com/datasheet/T6963C_635050.html.
[2]. SPCE061A datasheet https://www.dzsc.com/datasheet/SPCE061A_1082153.html.

上一篇:I2C总线在Linux系统中的驱动设计
下一篇:基于单片机实现短距离无线通信设计

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料