• 全国客户服务热线:4006-054-001 疑难解答:173-0411-9111(7X24受理投诉、建议、合作、售前咨询),155-4267-2990(售前),传真:0411-83767788,微信:543646
当前位置:主页 > 技术方案 > 工控技术

基于单片机的LCD时序图的底层驱动编写

时间:2023-09-29 10:33来源: 作者: 点击:
>基于单片机的LCD时序图的底层驱动编写

  一般来说, 模块的控制都是通过 MCU 对 模块的内部寄存器、显存进行操作来最终完成的;在此我们设计了三个基本的控制程序,分别是:

  写寄存器函数(_RegWrite)

  数据写函数(LCD_DataWrite)

  数据读函数(LCD_DataRead)

  这三个函数需要严格的按照 LCD 所要求的来,下面可以看看 MzL02 模块图:

  


  图 3.2 MzL02 模块的 6800 时序示意

  注意:上图是该模块的控制 IC 资料中的原版时序图,其实有些示意不是太稳妥(少标出了RW 线信号的要求),或者说是不太严谨,不过这些不作讨论,请看分析即可;而 EP 的有效触发沿在图中很有可能示意有误,实测为上升沿。图中 CS1B(CS2)的信号即为片选 CS,RS 即为数据/寄存器的选择端口 A0 信号,E 为 EP;当作写入寄存器数据操作时,首先要将 A0 置低,以通知 LCD 模块即将进行的是对寄存器的操作;而 RW 线需要置低,以示即将要进行的是写入的操作;然后片选 CS 信号置低,装载数据至总线,然后在 EP 线上产生一个上升沿以触发 LCD 模块将总线上的数据最终载入;在前面的操作完成后一般都会将各个信号线的状态恢复。而数据(显存)写入、数据读出的操作时序也比较类似,这里就不多作介绍,直接参考例程即可。

  //======================================================

  // 函数: void LCD_RegWrite(unsigned char Command)

  // 描述: 写一个字节的数据至 LCD 中的控制寄存器当中

  // 参数: Command 写入的数据,低八位有效(byte)

  // 返回: 无

  //=====================================================

  void LCD_RegWrite(unsigned char Command)

  {

  LCD_A0 = 0; //A0 置低,示意进行寄存器操作

  LCD_RW = 0; //RW 置低,示意进行写入操作

  LCD_EP = 0; //EP 先置低,以便后面产生跳变沿

  LCD_CS = 0; //片选 CS 置低

  DAT_PORT = Command; //装载数据置总线

  LCD_EP = 1; //产生有效的跳变沿

  LCD_CS = 1; //片选置高

  }

  数据写入以及读出的函数源码如下:

  //=======================================================

  // 函数: void LCD_DataWrite(unsigned char Dat)

  // 描述: 写一个字节的显示数据至 LCD 中的显示缓冲 RAM 当中

  // 参数: Data 写入的数据

  // 返回: 无



>基于单片机的LCD时序图的底层驱动编写
热门服务和内容