LCM点亮测试程序规范

LCM点亮测试程序规范
LCM点亮测试程序规范

一、目的

确保测试程序规范易懂,使工程师在程序修改时能够做到便捷有效。

二、使用范围

组件研发部电子设计人员。

三、测试程序规范化硬件及软件平台

硬件平台:51单片机测试板,目前使用裕廊、高峰两套51测试板。

TP测试板,可单独制板或集合在51单片机测试板上。

烧录器,目前使用Easy PRO 80B烧录器。

软件平台:单片机程序编译软件,目前使用Keil uVision3编译软件。

1、单片机简介

单片机亦称微控制器,顾名思义,这种计算机的最小系统只用了一片集成电路,即可进行简单运算和控制。

单片机主要特点有:受集成度限制,片内存储器容量较小;有内置RAM;可靠性高;易扩展;控制功能强;易于开发,只需编译程序就能实现所需简单功能。

针对我司目前使用的51单片机进行简单介绍,如下图80C51系列的引脚定义图。

图1 80C51引脚定义图

40个引脚按功能可分为4个种类:电源、时钟、控制、IO引脚。

(1)电源:VDD,芯片电源供应,建议电压+5V。为适用LCM驱动电压可使用+2.8V。

VSS,接地端,与系统地相连。

(2)时钟:XTAL1、XTAL2晶体振荡电路的反向输入端和输出端,为单片机提供工作所需的时钟信号。

(3)控制:单片机控制线共有4根。

1)ALE/PROG:地址锁存允许/片内EPROM编程脉冲。

<1>ALE功能:用来锁存P0口送出的低8位地址。

<2>PROG功能:片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。

2)PSEN:外ROM读选通信号。

3)RST/VPD:复位/备用电源。

<1>RST(Reset)功能:复位信号输入端。

<2>VPD功能:在Vcc掉电情况下,接备用电源。

4)EA/Vpp:内外ROM选择/片内EPROM编程电源。

<1>EA功能:内外ROM选择端。51系列单片机中,EA=0时,访问外部ROM;EA=1时,CPU

访问内部存储器或访问地址超过存储容量时自动执行外部程序存储器的程序。

<2>Vpp功能:片内有EPROM的芯片,在EPROM编程期间,施加编程电源Vpp。

(4)IO引脚:80C51共有4个8位并行I/O端口:P0、P1、P2、P3口,共32个引脚。P0口为地址数据总线,P2口为地址总线。P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线)。单片机的应用主要就是IO口的控制与实现。

(5

具体的单片机控制及使用请参考单片机相关书籍进行深入、系统的了解学习。

2、硬件平台说明

51单片机测试板常用的可大致分为:电源模块、单片机、信号输入输出口、辅助存储模块四个部分,各家的51单片机测试板均存在差异,以裕廊LCM测试板为例做简单说明。

(1)裕廊LCM测试板

图2 裕廊LCM 测试板外观图

1) 电源模块:外部电源供应输入口、LCM 驱动电源控制、LED 背光电源控制。

图3 电源模块 其中LED 背光电源控制和LCM 驱动电源控制是可以调整的,分别通过变阻器RW1、变阻器RW2进行控制。RW1控制LCM 驱动电源电压(一般设置为2.8V ),RW2控制LED 背光电源电压(一般设置为3.0V)。 外部电源供应电压范围为5V-8V 。

2) 单片机:目前我司使用的是华邦的W78E516B 单片机,可视情况选择相同PIN 脚定义 的其他型号单片机。 根据应用需求在硬件上连接单片机各管脚,其中控制线、电源线、时钟线均根据实际需求进行硬件设置。

RST/VPD 因其RESET 复位功能将其连接到按键开关上,使测试板能够进行手动复位,方便测试板使用。另外VPD 功能很少用到,目前暂未使用过此功能。如下图即为复位键按键, 单

信号输入输出口 分为CON1,CON2两组 辅助存储模块 电源模块

外部电源供应输入口 LED 背光电源控制 LCM 驱动电源控制 变阻器

RW2 变阻器RW1

图4 复位按键

EA/VP的EA内外ROM选择功能,为实现两个固定程序之间的切换而不用重新烧录程序,在硬件上设计使EA/VP处于一个电平可选状态,根据实际需要选择其高低电平,如下图即为EA/VP的硬件设计。短接EA和VSS即为低电平选择外部ROM;短接EA和VDD即为高电平选择内部存储器。

图5 EA/VP电平可选硬件设计

其他控制脚位在硬件上固定使用,操作过程中不做任何改动,在此不详细说明,如有需要可参考单片机说明文档及测试板电路原理图。

电源接口与时钟接口,按照单片机管脚定义分别接入电源及时钟信号。

4组IO口分别与测试板上的信号输入输出口相连,硬件上分别用CON1、CON2命名两组接口定义(其命名与实际单片机使用脚位一一对应),具体每个脚位的定义如下图所示:

图6 输入输出口脚位定义

根据脚位定义图可以看出,单片机的IO接口全部用作信号控制使用,在编写程序时可直接对脚位进行即时控制。其中DB8-DB15为P0口通过74HC373锁存器扩展后输出的信号,在使用中可根据具体情况进行控制利用。

3)辅助存储模块:因为单片机存储容量有限,所以增加一些外设EPROM进行辅助存储,裕廊测试板中包含了27C512和27E040两个EPROM。两个EPROM中的数据都需要通过烧录器将所需资料烧录到EPROM中。

27E040作为外设图片存储工具,在LCM需要显示图片的时候调用27E040中存储的图片资

料进行显示。27E040的地址线、数据线分别于单片机的地址总线、数据总线进行连接(27E040引脚定义如下图7所示),其中27E040的地址线为19位,而单片机的地址线为16位需要用3个IO口进行充当地址线使用,在硬件上设计用P3.4、P3.5、P3.6分别于27E040地址高位A16、A17、A18相连,在调用图片资料时需使其短接,如下图8所示。

图7 27E040引脚定义图

图8 27E040地址高位连线示意图

27C512作为外设程序存储工具,是为方便程序切换而设计的EPROM,通过EA/VP管脚的高低位进行选择切换。在控制线描述中已做介绍,不再累述。

(2)烧录器

在程序编译完成后,需要将程序烧录到单片机中,这个过程就需要使用烧录器来完成(可烧录EPROM)。我们目前使用的烧录器型号为Easy PRO 80B,如图所示:

图9 Easy PRO 80B烧录器

烧录器可以烧录多种类型存储器件,器件类型如下图所示:

图9 Easy PRO 80B可烧录资源

烧录器不能烧录市面上所使用的所有器件,选择器件时需进行确认。

烧录步骤:

1)连接烧录器:将烧录器电源、USB线分别接于电源及电脑USB接口上。

2)打开烧录软件:打开EasyPRO Programmer软件(需要安装),如果烧录器接触不良,打开软件时会提示警告。

3)选择器件:

点击选择,进行

烧录器件选择。

图10 器件选择

4)打开所需烧录文件资料:

点击打开,选择

烧录文件资料。

图11 烧录文件选择

5)进行烧录:

图12 烧录界面进行烧录

(3) TP 测试板

LCM 产品可分有TP 和无TP 两种,有TP 的则需要进行TP 测试,那就要求我们具有测试TP 的测试板。一些LCM 测试板是综合TP 测试功能的,一些LCM 测试板是需要外接TP 测试板的,裕廊工厂的测试板即需外接TP 测试板。我们目前使用的TP 测试芯片是TSC2046,下图即为TSC2046的引脚定义,

图13 TSC2046引脚定义图 其X+、X-、Y+、Y-为TP 触点信号输入端,与LCM 的TP 线连接;DCLK 、CS/、DIN 、BUSY 、DOUT 、PENIRQ/为芯片控制线,与单片机IO 口连接;其他线路在硬件上固定使用。各引脚含义可参照TSC2046芯片说明书,TSC2046即为一个AD 转换器件。

对TSC2046的操作就使用单片机控制其控制线读取TP 触点位置信号,将其模拟信号转换为数字信号进行计算并输出相应的数据给LCM 进行显示。下图14为TP 测试板的实物图,导线部分即为引出的各脚位,将相应的引脚跳接到电源、LCM 端口和LCM 测试板端口,与LCM 测试板连线的控制线需根据程序对单片机使用的定义进行操作。详细介绍请参照后续程序部分讲解。

点击操作一键通,

进入烧录界面,点

击运行进行烧录。

图14 TP 测试板

3、 软件平台说明

Keil C51是美国Keil Software 公司出品的51系列兼容单片机C

语言软件开发系统,是目前单片机C 语言使用最广的编译软件之一。目前keil 的版本已经出到keil uVision4,本人使用的是keil uVision3版本。

Keil C51的使用说明请参照Keil uVision3使用说明(基础使用说明)。 四、测试程序规范化说明

LCM 测试程序规划化的目的是使LCM 测试程序架构规整、含义明确、功能细化,让使用者能方便快捷的找到需要进行修改的函数或程序段。

依据这个目标并跟据LCM 测试程序中不同功能将LCM 测试程序划分为3个模块:主程序模块(main.c )、初始化代码模块(cpu.c )、TP 测试功能模块(TP.c )。如下图程序目录栏: 图15 LCM 测试程序模块目录 每个功能模块(.c 文件)均包含多个头文件(.h 文件),头文件的主要作用在于调用库

TP 测试板接线引脚

功能,对各个被调用函数给出一个描述,其本身不包含程序的逻辑实现代码,它只起描述性作用,告诉应用程序通过相应途径寻找相应功能函数的真正逻辑实现代码。其中一些需要经常改动的变量或者不做变化的常量也可以作为一个头文件,方便设计者做统一设计变更。

(1)主程序模块

在主程序模块中包含了延迟函数、显示区域设置函数、TP测点显示函数、画面显示函数和main()函数。

1)延迟函数使用的是最简单的while循环函数,如图所示:

图16 延迟函数

2)显示区域设置函数,是根据驱动IC的SPEC进行编写的特定函数,以ILI9325D为例,在SPEC中可以查阅到如下资料:、

图17 ILI9325D显示区域设置寄存器

其中50H为水平方向起始设定,51H为水平方向结束设定,52H为竖直方向的起始设定,53H为竖直方向的结束设定。

图18 显示区域设置函数

其中20H、21H为Gram显示起始位置的设定,22H为Gram读写地址,数据写入时必须写

入22H。AreaSet函数中调用函数LCD_WriteCMD()、LCD_WriteAddress()函数,这些函数在cpu.c中进行说明。其中sx、ex、sy、ey为显示区域变量,例如需要在水平方向的80到160,竖直方向的100到280位置显示图面,则在使用中设置为AreaSet(80,160,100,280)即可实现此功能,而其他位置图面信息不做任何变化。当sx=ex,sy=ey时则显示区域即为一点,TP测点显示就是用此方式进行显示的。如下图19所示,即为在240*320的灰阶范围内对一定区域写入黑色,这个区域控制就可用AreaSet()设置。

图19 设定区域显示黑色

3)TP测点显示函数,及void TP_Dot(uint sx,uint ex,uint sy,uint ey,U16 color)函数,sx、ex、sy、ey即为上面提到的AreaSet中的参数值,color为需要显示的颜色代码,下图即为TP_Dot函数,其中for循环是为区域显示时做多次写入数据的作用。

图20 TP_Dot函数

4)显示画面函数因其显示内容不同存在多种显示函数,如纯色画面函数、Crosstalk画面函数、图片画面函数等。其中图片画面函数最为复杂,它可以显示图片也可以显示纯色等画面,前提是需要图片的数据资料。在这些函数中出现的Panel_X、Panel_Y是LCM的解析度,在globel.h中会做介绍。

<1>纯色画面函数最为简单,只需在显示区域内写入特定颜色数据color即可完成,如下图所示:

图21 纯色画面函数

<2>Crosstalk画面函数比纯色画面较为复杂,需要对显示区域进行判断写入不同的颜色数据,如下图所示:

图22 Crosstalk画面函数

If语句即为对显示区域的判断,在满足条件的区域写入不同的颜色数据。

<3>图片显示函数需要大量的图片资料数据,这些资料需要较大存储容量,而单片机存储容量有限不能满足其要求,所以我们LCM测试板外扩了一个辅助存储器件27E040(硬件平台中有介绍)。图片资料通过烧录器写入到27E040中,然后就是通过单片机对27E040进行控制读取其存储资料并传输给驱动IC进行图片显示。

图23 图片画面显示函数

单片机的16位地址线与27E040的低16位地址线一一对应,8位数据线也一一对应,在函数运行时,单片机会自动读取对应地址的数据。另外27E040的高3位地址线与单片机的3个IO口相连,我们需要人为控制这3个地址的数据以正确读取27E040中的图片资料,如图23中所示A16、A17、A18的等式即为按其读取地址的控制方式进行变化的等式。LCD_WriteData_Ntime(*p++)即为对驱动IC写入显示数据。

5)Main()函数是C程序的必要的主体函数,程序的运行都是根据main函数进行的,在LCM测试程序里mian函数就是对LCM点亮步骤的控制,主要可分为:1、RESET驱动IC;2、初始化代码写入;3、显示画面顺序控制;4、TP测试控制。

图24 main函数

<1>驱动IC的RESET是低电平有效,所以将RESET控制信号拉低一定时间后即可达到重启效果,如下图所示,Delay函数作为延迟是为保证低电平时间能够达到驱动IC的设置要求。

图25 RESET设置

<2>初始化代码的写入,RESET驱动IC后写入驱动IC所需的初始化代码,初始化代码的写入是调用初始化函数LCD_InitialSet(),初始化函数在cpu.c中会做讲解。如下图所示:

图26 初始化代码写入

<3>显示画面顺序控制,它是对画面显示函数调用顺序的控制,可按照需要对画面顺序进行相应的变更,目前我司的测试画面可参照LCM测试规范中的画面测试顺序进行排列,特殊情况下可根据实际要求做改动。

图27 画面显示顺序控制

其中Delay(2000)是作为测试画面间的停顿,给测试人员一定时间检阅图面。if(Disp_Mode==0x00)这个语句是用来判断是否进入TP测试函数的代码,Disp_Mode在globel.h中进行说明。当程序满足一定条件进入TP测试函数时会按照下图所示顺序进行程序运作。

图28 TP测试函数调用

其中ScanPanel1()、ScanPanel2()、ScanPanel3()、ScanPanel()分别为TP定位点测试和TP划线显示函数,在TP.c中做讲解。

Main.c中AreaSet()函数是需要根据不同的驱动IC进行设置的,如何设置需要根据驱动IC的显示区域寄存器及代码写入方式来确定的,在cpu.c中会做介绍。

(2)初始化代码模块

初始化代码模块即cpu.c,它是用来控制直接控制驱动IC工作的模块,可以理解为就是将驱动IC工作所需的一切信息按照一定的模式写入到驱动IC里边,让驱动IC实现点亮LCD 的功能。不同的驱动IC代码写入方式不同,且同款IC也有多种接口模式。

不同的接口模式有MCU(CPU)、SPI、RGB、MDDI、MIPI等,目前我司使用的一般都是CPU 接口模式。CPU模式是最常用的接口模式,其数据位传输有8/9/16/18位,控制信号有CS/、RS/、WR/、RD/。它的优点是控制简单方便,无需时钟和同步信号;缺点是耗费Gram,难以做到大屏。3.0(解析度240*400)以上屏多不采用CPU接口模式。

驱动IC的代码写入方式不同也会影响初始化代码函数的使用方式,针对不同的写入方式我们需要及时修改调用的函数,在CPU模式中常遇到的写入方式有一个寄存器一笔数据和一个寄存器多笔数据(0-N笔)两种,这可以在IC的SPEC上确认。

以ILI9325D来说明一个寄存器一笔数据的寄存器控制写入方式。在IC的SPEC中可以查阅Registers Instruction Descriptions,可以很方便的看出其写入方式为一个寄存器一笔数据或多笔数据。

图29 ILI9325D寄存器控制截图

可以看到每个寄存器都只有对应的一笔数据控制含义,针对这种控制方式在程序中可以设置如下所示寄存器控制函数,

图30 一个寄存器一笔数据控制函数

其中LCD_WriteAddress()是地址控制函数,LCD_WriteData()是数据控制函数,LCD_WriteCMD()是为方便调用的综合地址及数据的函数。CSB、RDB、RSB、WRB是对应CPU 模式中的4个控制信号,P_OUT为数据输出信号,其对应单片机脚位控制在globel.h中描述讲解。CSB、RDB、RSB、WRB需要按照SPEC中的控制时序进行输出,时序图如下图所示:

图31 ILI9325D的控制信号时序图(8BIT)

下图为ILI9325D的初始化代码的部分截图,可以更直观的了解其一个寄存器一笔数据的代码控制方式。

图32 ILI9325D的部分代码截图

以ILI9327来说明一个寄存器多笔数据的寄存器控制写入方式,在IC的SPEC中可以查阅Command List来确认其一个寄存器多笔数据的控制方式,如下图所示:

图33 ILI9327寄存器控制截图

其中Number Of Parameter即为数据个数,有0、1、4等多笔数据写入,针对多笔数据的写入方式,程序中进行如下控制:

图34一个寄存器多笔数据控制函数

其中LCD_WriteAddress_Ntime()为地址控制函数,LCD_WriteData_Ntime()为数据控制函数,因其数据个数的不确定性所以没有整合成综合控制函数。CSB、RDB、RSB、WRB同样需要根据SPEC中的控制时序进行输出,时序图如下图所示:

图35 ILI9327控制信号时序图

下图为ILI9327的初始化代码的部分截图,可以更直观的了解其一个寄存器多笔数据的代码控制方式。

图36 ILI9327的部分代码截图

初始化代码由FAE给出或参照驱动IC的SPEC及AN修改得出。

Cpu.c中的函数都是用来服务寄存器控制的,其他程序段中涉及到寄存器控制的函数都需要调用cpu.c中的函数,如main.c中的AreaSet()函数等。

(3)TP测试功能模块(TP.c)

TP测试功能模块中包含TSC2046控制函数、TP定位点控制函数、TP划线显示函数等。

TSC2046芯片就是一个特殊功能的AD转换器件,通过单片机IO口对TSC2046进行控制,读取其在TP触点位置将模拟信号转换为数字信号的数据,控制函数如下图所示:

图37 TSC2046通讯控制函数

TSC2046使用的是SPI模式,下图为其时序图,详细介绍请参照TSC2046的SPEC。

图38 TSC2046控制时序图

其中TP定位点控制函数如下图所示:

图39 TP定位点控制函数

其中if语句作为判断语句判断触点满足触点定位要求,避免定位触点偏差过大造成测试不良。

TP划线显示函数就是在HandShack()函数的基础上做一个数据计算处理并控制驱动IC 显示触点位置的综合函数,其实际就是一个数学计算的过程,具体请参阅函数代码。

TP.c中的函数暂不做改动,如在后续使用中遇到问题时,根据实际情况改善程序。

(4)头文件的使用

每个c 文件模块都包含多个头文件(.h 文件),它作为函数调用的一个描述说明,起到类似目录向导的作用。如果一个c 文件的程序需要调用另一个c 文件中的函数,则必须有一个.h 文件对被调用函数进行描述,否则函数调用失败,程序编译错误。

为方便程序修改将一些常用的需改动的全局变量集中在.h 文件中定义,globel.h 就是一个全局变量的集中定义。在globel.h 里包含的变量参数为输出信号对应的单片机IO 口、LCM 产品解析度、TP 测试程序选择常量,如下图所示即为globel.h 参数设置。

图40 globel.h 文件截图

其中RESET 、

CSB 、RSB

、WRB 、RDB 为LCM 控制信号的脚位定义,如图它们分别对应P3.0、P3.1、P3.2、P3.3、P3.7,在LCM 连线时只需将测试板的信号输出口对应的脚位与LCM 控制线一一对应连接。A16、A17、A18为27E040的地址高3位,在辅助存储模块中有介绍,此处即为在程序中对其脚位选择相应的单片机引脚(硬件固定,必须选择对应引脚)。Tsc2046_??为TSC2046的控制引脚定义,因裕廊测试板与TP 测试板分开,所以这些脚位可根据实际情况进行改变(在不影响其他脚位正常工作的情况下),在程序中定义单片机脚位后将信号输出口对应的脚位连接到TP 测试板的相应控制脚位上即可使用,如图即将TP 测试板的脚位用导线连接到测试板CON2中的P2.2-P2.7(对应程序设置)。

图41 TP 控制线与测试板IO 口

解析度在LCM测试程序中是常量,可将其定义为宏。这样的方便之处在于:如果未定义宏而直接在程序中使用,而这个常量被N个位置使用,那么后续要改变这个常量时则需要对应修改这N个位置;如果定义了这个宏,那么后续需要修改常量时只需修改宏定义这一个地方即可。

Panel_X、Panel_Y分别是LCM的x、y方向的解析度宏定义,涉及到解析度的改变就只需要更改此处对应的数值即可,如图40中表示即为解析度=128*128。

Disp_Mode的值的设定是控制mian.c中是否进入TP测试程序。Disp_Mode的值设为两个选择Disp_YTP、Disp_NTP,当Disp_Mode选择不同值时,在mian.c中程序会自动运行相应函数。Disp_YTP表示带TP测试函数,Disp_NTP表示不带TP测试函数。

另外一些头文件都是对.c文件包含的一些函数进行描述以及单片机自带的头文件,方便不同模块的函数调用。

(5)程序修改总结

对于程序需要进行修改的地方做一个简单的总结。程序需要修改的地方可分大致分为四个地方:

1)main.c:AreaSet()函数,需要针对不同的驱动IC设置其寄存器控制代码,画面显示顺序针对特别情况也可以做改动。

2)cpu.c:根据不同驱动IC设置寄存器控制函数,并更新初始化代码。

3)globel.h:控制信号线的单片机IO口设定,解析度修改及TP测试判断代码。

五、LCM测试板使用步骤

针对LCM测试板的使用步骤做一个简单的介绍。

(1)测试程序编译:根据LCM的资料进行修改编译测试程序。LCM的资料包括:驱动IC 型号、驱动IC初始化代码(SPEC和AN)、FPC接口定义(最好为LCM的FPC原理图)。参照IC资料修改程序中参数以满足点亮LCM的要求。

(2)测试板治具准备:调节测试板上的背光电源电源、LCM电源电压。导线连接,将测试板的信号输出口与LCM的接口按照顺序一一对应连接,即根据程序中定义的引脚进行接线。

测试引脚与LCM之间使用转接板进行连接,转接板如下所示:

转接板接线脚位

转接板金手指

图42 测试转接板

按照LCM的接口定义连接导线,然后通过压合治具将LCM压接到转接板对应PIN距的金手指上,如下图即为LCM压接后的截图,请参考。

相关主题
相关文档
最新文档