您当前的位置:五五电子网电子知识单片机-工控设备嵌入式系统-技术基于ARM处理器的LCD编程设计 正文
基于ARM处理器的LCD编程设计

基于ARM处理器的LCD编程设计

点击数:7380 次   录入时间:03-04 11:58:09   整理:http://www.55dianzi.com   嵌入式系统-技术

 随着单片机技术的飞速发展,新型的仪器仪表呈现出操作简单、便携化的趋势。LCD模块能够满足嵌入式系统日益增长的要求,它可以显示汉字、字符和图形,同时还具有低压、低功耗、体积小、重量轻等诸多优点,因而应用十分广泛。

       液晶显示模块(LCM)是由控制器、行驱动器、列驱动器、显示存储器和液晶显示屏等器件通过PCB组装成一体的低成本输出设备,被广泛用于各种仪器仪表等设备中。其核心部件LCD控制器是可编程接口芯片,它一方面提供与微控制器(MCU)的接口,一方面连接行/列驱动器。用户对LCD控制器编程就是实现对LCM的操作控制。LCD控制器的功能是接收计算机发来的指令和数据,并向计算机反馈所需的数据信息。

       T6963控制模块

       T6963控制器型液晶显示模块的驱动控制系统由液晶显示控制器T6963及其外围电路、行驱动器组、列驱动器组和液晶驱动偏电压电路组成。T6963C是一种内置控制器的图形LCD,其面向显示存储器的引脚有8根数据线(D7~D0)、16根地址线(AD15~AD0)和4根控制线,最多能管理64KB大小的显示存储器。T6963C将显示存储器分成3个区,分别是文本显示缓冲区、图形显示缓冲区和字符产生器RAM(CGRAM)区。

       采用图形显示方式时,液晶屏显示单元的单位是8×1点阵(称为一个图形显示单位)。每个图形显示单位对应图形显示缓冲区中的一个存储单元。将点阵状态信息写入这个存储单元,则对应的位置就会显示出图形。

       采用文本显示方式时,液晶屏显示信息的单位是8×8点阵(称为一个文本显示单位)。每个文本显示单位对应文本显示缓冲区中的8个连续存储单元。但采用文本显示方式时,写入文本显示缓冲区的不是点阵状态信息,而是字符代码,其点阵状态信息(8×8)(即字模)存放在CGRAM中。当8×8的点阵不足以描述一个符号时,则通常用多个字符的组合来描述。例如,一般采用16×16的点阵来描述汉字,将该点阵分为4个8×8的点阵,用4个字符代码描述一个汉字,根据这4个部分的位置关系将4条代码写入相应的文本显示缓冲区。T6963C片内还包含一个字模库CGROM,固化了数字、英文字母和常用符号等128个字符的点阵状态信息。

       系统硬件结构

       1. 处理器

       本文系统中的处理器选用的是ARM7系列AT91SAM7S64,该器件具有64KB的高速Flash、16KB的SRAM以及丰富的外设资源,因而可以给系统设计提供强大的硬件支持。

       它包含的主要功能单元是:

       PDC(Peripheral Data Controller,外设数据控制器),可以通过该控制器管理SPI接口和串口。串口作为本系统各部分之间通信的主要手段,而SPI接口作为ARM处理器和A/D、D/A模块之间通信和控制的主要手段。

       AIC(Advanced Interrupt Controller,先进中断控制器),可以通过该控制器产生计时器中断和串口中断,计时器中断可作为本系统分时作业编程的主要手段,而串口中断是数据通信的处理手段。

       PIOA(Parallel Input/Output Controller,并行输入/输出控制器),可以通过该控制器管理ARM系统的各个设备,同时本系统也使用PIOA来控制LCD。

       其它功能单元包括看门狗、电源控制器等。可以通过编程对这些控制器进行管理,在IAR开发环境下采用C语言进行编程,并通过JTAG调试接口下载到板上FLASH中运行调试。

       2. 液晶屏连接方式

       T6963液晶显示模块与处理器的连接方式通常有两种:直接访问方式和间接控制方式。直接访问方式是指处理器以访问存储器或I/O设备的方式控制液晶控制模块工作,模块的数据线与处理器的数据总线连接,片选及寄存器选择由处理器的地址总线提供,读和写操作由处理器的读写操作信号控制;而在间接控制方式中,处理器通过自身或系统的并行接口与液晶控制模块相连,处理器通过I/O接口的操作间接实现对模块的控制。

       本系统采用的是直接访问方式,如图1所示。使用ARM处理器AT91SAM7S64的引脚完全可编程和复用功能,以4路模拟显示模块控制信号,8路作为数据线。这样即充分发挥了T91SAM7S64处理器功能强大、资源丰富的优点,又简化了控制并易于实现编程。

图1:ARM与LCD的接口示意图

      软件实现

      本系统对图形显示方式进行编程。图形显示方式可显示任何形状的图形(包括字符),在该方式下,T6963C还可以提供对“位”的操作,即通过命令控制液晶屏上的任意一点是否显示。每个点的显示状态用一位二进制信息表示,当这一位信息为“1”时显示屏上相应的点就显示,为“0”时则不显示。

      但由于本设计中采用的是32位ARM处理器,而不是8位的51系列,因此在直接控制方式下的编程过程中,应注意数据的对应关系。

      1. T6963指令集及时序

      T6963拥有一系列操作指令,通过这些指令可以实现对显示屏的控制。在设计过程中,根据T6963的指令系统以及时序信号波形图等进行编程。T6963指令系统见表1。液晶显示模块的控制引脚和读写信号的控制关系如图2所示。

表1:T6963指令表。

 图2:T6963信号时序图。

      2. 程序流程图

       通常液晶显示编程的过程是:首先编写状态查询、写指令、写数据、读数据等子程序;然后编写清屏、画点等基本子程序;在此基础上编写程序以显示字符、数字、汉字及复杂的图形等。每条指令的执行都是先送入参数,再送入指令代码,因此每次操作之前最好先进行状态字检测。

       通过对内置T6963点阵式液晶显示的软件设计,可以发现该液晶显示控制模块的控制语句简单、调试方便。T6963C内部通过一根地址线来确定两个寄存器,当地址线为低电平,选择DATA寄存器;当地址线为高电平,则选择COMMAND/STATUS寄存器。在对T6963C发送每条指令或参数前,必须先读取COMMAND/STATUS寄存器以检查T6963C的状态字。状态字节的含义如下:

       STA0:1/0,指令读写状态为准备好/忙;

       STA1:1/0,数据读写状态为准备好/忙;

       STA2:1/0,数据自动读状态为准备好/忙;

       STA3:1/0,数据自动写状态为准备好/忙;

       STA4:未用;

       STA5:1/0,控制器运行检测可能/不能;

       STA6:1/0,屏读/拷贝状态为出错/正确;

       STA7:1/0,闪烁状态检测为正常显示/关显示。

       由于各状态位的含义不同,因此在不同的场合应检测不同的状态位。在CPU对T6963C中每一字节的指令或数据进行读写前,应先将STA0和STA1同时置为“准备好”状态。T6963C模块的控制指令可带有0个、1个或2个参数。在执行每条指令时都是先送入参数(如果有的话),再送入指令代码。当向T6963C读、写数据或写入命令时,必须严格遵循T6963C的时序。如果送入的参数多于规定个数,则认为最后一次送入的有效。每次操作之前必须先进行状态字检测。图3a给出了显示操作的流程框图。

图3:(a) 显示操作流程框图;(b) 双参数指令传输过程。

       以上每个步骤又需要完成以下流程:对于无参数或自动指令,以上过程仅执行1次,单参数指令需执行2次,而双参数指令则需执行3次(前2次传参数,最后1次传指令)。图3b以双参数指令为例给出了指令传输过程。

       检测程序如下:

       //指令、数据读写状态检查

void RWCheck()

{

unsigned int dat = 0;

do

{

*AT91C_PIOB_CODR=CS;

*AT91C_PIOA_ODSR = DATA_BUS;

*AT91C_PIOB_SODR = A0;

*AT91C_PIOB_CODR = RD;

delay_bus();

dat=*AT91C_PIOA_PDSR;//读出当前PIO管脚状态

[1] [2]  下一页


本文关键字:处理器  嵌入式系统-技术单片机-工控设备 - 嵌入式系统-技术