12864

2024-08-18

12864(精选4篇)

12864 篇1

随着微电子技术的迅猛发展,各种芯片在体积不断缩小的同时,功能却越来越强大。FPGA芯片也从最初只有几千门,发展到数百万门的规模,I/O口由几十个发展至上千个。在这种资源极其丰富的情况下,FPGA设计者不再满足于仅仅用其来设计简单的应用系统,而开始在一片FPGA上集成一个完整的电子系统,即SOPC(System On Programmble Chip)。它通常包括片内存储器和片内微处理器。Altera公司针对其FPGA芯片推出的Nios系列处理器,就是专为SOPC设计而开发的,它是Altera Excalibur嵌入处理器计划中第一个产品,它成为业界第一款可编程优化的可配置处理器。本文阐述在SOPC中利用Nios处理器实现GDM12864A显示模块控制的方法。

1GDM12864A显示控制器

GDM12864A是带显示存储器的图形液晶显示控制器。它的特点是内置64×64 b的显示存储器,显示屏上各像素点的显示状态与显示存储器的各位数据一一对应,显示存储器的数据直接作为图形显示的驱动信号。显示数据为“1”,相应的像素点显示;显示数据为“0”,相应的像素点就不显示。同时GDM12864A配备了一套显示存储器的管理电路和与计算机接口电路,允许计算机直接访问显示存储器。其具体参数如下:64×64 b(512 B)的显示存储器,其数据直接作为显示驱动信号,8位并行数据接口,64路列驱动输出,低功耗,在显示期间功耗最大为2 mW,较宽的工作电压,VCC=2.7~5.5 V,Vee=0~-10 V。GDM12864A详细指令如表1所示。

2Nios软核

Nios处理器是Altera公司推出的一个具有32/16 b精简指令集的软核(Soft Core)CPU,它是面向用户,可以灵活定制的通用RISC 嵌入式处理器,它以软核的形式交付给用户,并针对Altera公司的FPGA专门进行了优化。用户可以在Altera 公司提供的开发软件中加载Nios 核和相应的外围接口并定义相应的指令,然后对设计进行综合并下载到FPGA 中就可以方便地定制一个具有特定功能的嵌入式处理器。用户可以按照设计的需要选择添加必要的部件,不会出现资源浪费的现象。图1即为一个已经设计完成的基本的Nios系统,它包括了一个嵌入式系统工作所需要的所有基本端口,其中有ROM和 RAM接口,串口 UART,以及系统的时钟Clk,另外还有一些外设接口。

3Nios与显示模块的接口电路

利用Nios对GDM12864A进行控制可以有两种方法:一种方法是将该显示模块的接口作为Nios的存储器或I/O设备直接挂接到Nios的Avalon总线上,Nios以访问I/O设备或读写存储器的方式对其进行控制。另一种方法是将GDM12864A的接口与Nios的并行端口相连接,Nios通过对其端口的操作来完成对显示模块的控制。这种方式具有时序简单,易实现的优点,可以直接利用软件完成所有的控制操作。本文将采用第二种控制方式,其接口电路如图2所示。

图2中DI为寄存器选择信号,高电平时选择数据寄存器,低电平时选择指令寄存器;RW是读写控制信号,RW为高电平时Nios可以从显示模块读取当前状态,为低电平时Nios向显示模块写数据或指令;E为使能信号。由于GDM12864A是128×64像素的显示屏,显示时被分成两个区域分别显示,所以在进行控制时需要进行显示区选择,也就是片选CS1和CS2。DB[7..0]为并行数据接口,发送指令或读取状态都通过对它的操作完成。

4驱动程序设计

液晶显示模块控制需要严格按照其要求的时序进行,如图3所示为GDM12864A的时序图。

GDM12864A显示屏由左右两区组成,进行控制的时候也需要分开控制两区,本文仅给出左区写指令子程序和写数据子程序,其他操作都与其类似或可以在此基础上实现。写指令和数据的程序流程图如图4所示。

写指令子程序:

void lcd_cmdwrite_L(uchar command)

{

Delay(DL1); //延时

na_LCD->np_piodirection=0xff; //数据总线模式为输出

na_lcd_cs1->np_piodata=0;

na_lcd_cs2->np_piodata=1; //选择左区

na_lcd_DI->np_piodata=0; //对指令寄存器进行操作

na_lcd_RW->np_piodata=0; //写操作

na_lcd_E->np_piodata=1; //写信号有效

lcd_busytest(); //判别显示模块状态

na_LCD->np_piodata=command; //写指令

na_lcd_E->np_piodata=0; //写信号无效

na_lcd_cs2->np_piodata=0; //片选无效

}

写数据子程序:

void lcd_datawrite_L(uchar dat)

{

Delay(DL2); //延时

na_LCD->np_piodirection=0xff; //数据总线:输出

na_lcd_cs1->np_piodata=0;

na_lcd_cs2->np_piodata=1; //选择左区

na_lcd_DI->np_piodata=1; //对数据寄存器进行操作

na_lcd_RW->np_piodata=0; //写操作

na_lcd_E->np_piodata=1; //写信号有效

lcd_busytest(); //判别显示模块状态

na_LCD->np_piodata=dat; //写数据

na_lcd_E->np_piodata=0; //写信号无效

na_lcd_cs2->np_piodata=0; //片选无效

}

上述程序完成了LCD控制中最基本的写命令和写数据的操作,其他的操作都可以依据他们来完成。其中Delay()函数是延时子程序,lcd_busytest()是液晶控制器状态查询子程序。

5结语

本文介绍了一种利用嵌入式软核处理器控制LCD的方法,并给出了硬件接口电路和软件设计实例,从而将整个电子系统包括显示控制完全用一块FPGA芯片实现。Nios系列嵌入式软核处理器具有性价比高,简单灵活的特点,非常适合于SOPC系统设计,市场应用前景广阔。

参考文献

[1]Nios 32-Bit Programmer′s Reference Manual[Z].AlteraCorporation.

[2]郭书军,侯文杰,张延华.基于SOPC的液晶屏接口组件设计[J].微计算机信息,2006,22(11Z):115-116,129.

[3]邓彬伟,皮大能.嵌入式系统中LCD控制器通用驱动程序的设计和实现[J].微计算机信息,2007,23(17):27-29,49.

[4]姚胜兴.基于PXA255微处理器的液晶显示驱动设计[J].计算机工程与应用,2007,43(7):101-103.

[5]占荣,康勇.基于Nios嵌入式软核处理器的液晶显示屏控制[J].计算机应用,2005,24(4):52-54,58.

[6]李长娥.SED1520与PIC单片机的接口设计[J].微计算机信息,2007,23(32):143-144.

[7]圣应山,鲁斌,王晓蕾.一种实用的LCD驱动电路的硬件设计[J].微计算机信息,2006,22(7Z):282-284.

[8]刘树中,孙书鹰,王春平.单片机和液晶显示驱动器串行接口的实现[J].单片机开发与应用,2007,23(1Z):137-138,290.

[9]潘松,黄继业,曾毓.SOPC技术实用教程[M].北京:清华大学出版社,2005.

[10]赵亮,侯国锐.单片机C语言编程与实例[M].北京:人民邮电出版社,2003.

12864 篇2

在嵌入式系统开发过程中,显示输出控制是一项重要的研究内容。常用的显示输出器件有发光二极管(LED)、数码管及液晶显示器等。LED及数码管的显示输出控制相对比较简单,相关文献介绍的也比较详细。在液晶显示器中,图形点阵形液晶显示器的硬件结构比较复杂,显示输出控制也不太容易掌握,虽然部分文献进行了一定介绍[1,2,3],但面向的对象往往是已有一定开发经验的使用人员,而针对初学者进行专题论述的文献却不多。鉴于此,文章以基于ST7920控制器的128×64中文字库点阵屏为例,进行了开发应用研究分析,以便初学者进行参考学习。

1 图形点阵显示控制原理

图1为12864液晶屏图形点阵显示原理的示意图。由图可见,液晶屏在x方向有128列,在y方向有64行,因此整个液晶屏有128×64个像素。每个像素有亮与灭两种状态,以黄绿屏黑字为例,若某个像素亮则该像素被黑色填充,这样不同像素的亮与灭的组合就可显示不同的点阵型字符或图案。如图1中的黑色像素组合就可显示一个汉字“十”字。

对于字符显示来说,可以分为16×8像素半宽字符和16×16像素中文字符两种点阵显示。在液晶显示屏上一个半宽字符占据的像素点数为16×8个,中文字符的像素点数为16×16个。12864点阵液晶屏能显示32×8个半宽字符或16×4个中文字符。在显示缓存中有一种叫绘图RAM的缓存来对点阵型字符进行控制,该RAM简写为GDRAM。GDRAM维护了一个和液晶屏像素相对应的二维绘图缓冲空间,该表的水平地址为0至16,垂直地址为0至64。GDRAM的每一个水平地址对应了图1中的16个列,每一个垂直地址对应图1中的一行。

在更改绘图RAM时,由扩充指令设置GDRAM地址,先垂直地址后水平地址(连续2个字节的数据来定义垂直和水平地址),再2个字节的数据给绘图RAM(先高8位后低8位)。图1中的汉字“十”字在GDRAM中的编码如表1所示。

2 液晶显示控制指令

编程人员在向液晶显示缓存写入要显示的编码数据时,须在一系列液晶显示控制指令的控制下才能完成。表2是基于ST7920控制器的128×64中文字库点阵屏液晶显示控制的主要指令表。由该表可以看出,显示控制指令要受到控制信号RS、R/W的控制。D0至D7为外部CPU与液晶内部处理器之间交互数据的总线,交互的数据包括上述指令及显示数据。对于各指令的详细描述在相关数据手册中都有具体介绍,在进行液晶驱动开发之前要进行认真学习研究,只有熟悉了各指令的意义及取值后才能进行程序的编写。

3 液晶显示控制时序

进行液晶驱动开发就象利用英语与外宾交流。要想与外宾交流就必须先熟悉英语的词组,不同的词组代表了不同的意思。而只熟悉相关词组,但不能将其按着英语的词组先后搭配顺序进行表达,则外宾也不能理解我们要表达的意思。这里词组就类似于上述的显示控制指令,外宾就类似于液晶显示屏,而词组的先后搭配顺序则指的是液晶显示控制的时序。简单来说,控制时序就是为了使液晶单元能够正常工作,相应的控制信号取值高低的先后搭配顺序。

图2是ST7920控制的128×64液晶的8位并口写操作时序图。由图2可见,如果想通过8位并口DB0~DB7进行写操作,需要RS、R/W、E三种控制信号的联合控制,首先RS根据并口上的数据是指令还是显示数据置0或置1,其次,由于是写数据R/W要置0,之后使能信号E要置1,当上述三种控制信号置位稳定后,8位并口DB0~DB7总线上的信息就可写入液晶屏,写入完毕后要将使能信号E置0。需要说明的是在处理相关时序时要注意各控制信号高低电平变换期间的不稳定期,写操作要尽量避开这段时间。

4 液晶使用举例

4.1 MCU接口

下面以89C52单片机控制液晶显示屏为例,介绍一下MCU与液晶的连接方法及主要的程序代码。该程序运行后会在液晶屏上显示“ST7920显示控制”等字符。

图3为8位并口MCU控制接口图。由图3可见,MCU的P1口与液晶的DB0至DB7相连,作为指令与显示数据的总线通道;P3.0、P3.1、P3.2分别与液晶的RS、R/W、E相连,构成液晶显示控制信号的通道。

4.2 程序主要代码

(1) 定义

//并口定义:DB0~DB7<=>P0.0~P0.7

//控制信号定义

sbit RS=P3^0;

sbit RW=P3^1;

sbit E= P3^2;

//液晶忙标志

sbit BUSY=P1^7;

(2) 忙检测函数

void Parallel_Check_Busy(void) //并行方式检查忙状态并等待

{ unsigned char temp;

P0 = 0xff; //输入前置1作为输入口

RS = 0; //指令

RW=1; //读模式

do

{E=1;//使能

temp=P0&0x80; //忙状态检测(b7)

E=0;

}

while(temp);//忙等待

}

(3) 写操作函数

void Parallel_Write_LCD(unsigned char A0, unsigned char ud8)

{ Parallel_Check_Busy();

RS=A0 1:0;//数据或指令

RW = 0; //写模式

P0=ud8; //数据放到P0口上

E=1;

//P2=0;

_nop_();

_nop_();

_nop_();

E=0;

}

(4) 初始化

void Parallel_Init_LCD(void) //LCD并行初始化

{ //unsigned char i;

//RST = 0;

//for(i=0;i<10;i++);

RST=1;

Parallel_Write_LCD(0,0x30); //基本指令动作

Parallel_Write_LCD(0,0x01); //清屏

Parallel_Write_LCD(0,0x06); //光标的移动方向

Parallel_Write_LCD(0,0x0c); //开显示,关游标

}

(5) DDRAM地址设定函数

void Parallel_DDRAM_Address_Set(uchar ucDDramAdd)

{ Parallel_Write_LCD(COMMAND,BASIC_FUNCTION); //基本指令集

Parallel_Write_LCD(COMMAND,ucDDramAdd); //设定DDRAM地址

}

(6) 字符串显示函数

void Parallel_DisplayStrings(unsigned char ucAdd,unsigned char code *p)

{ unsigned char i;

i=strlen(p);

Parallel_Write_LCD(0,0x30); //基本指令动作

Parallel_DDRAM_Address_Set(ucAdd);

for(;i;i--)

{ Parallel_Write_LCD(1, *p++);

}

}

(7) 主函数

void main(void)

{

Parallel_Init_LCD();

while(1)

{

Parallel_DisplayStrings(0x80, "ST7920显示控制");

while(1);

}

}

5 结束语

文章主要从图形点阵显示控制原理、液晶显示控制指令、液晶显示控制时序几个方面进行了分析,主要围绕基于ST7920控制器的128×64中文字库点阵屏的开发使用方法而展开研究,并以该型液晶为例给出了嵌入式液晶显示应用的开发使用步骤:第一步,理解图形点阵显示控制原理;第二步,熟悉液晶显示控制指令;第三步,分析液晶显示控制时序;第四步,应用程序编写。

参考文献

[1]蔡天艳,姚萌.点阵式液晶字符反白和图形显示研究[J].单片机与嵌入式系统应用,2010(5):40-42.

[2]舒鑫,郭其一.ST7920点阵式液晶显示模块的应用研究和编程[J].液晶与显示,2007(2):192-196.

12864 篇3

通过设计与制作用单片机驱动LCD12864显示的科学计算器, 可以帮助单片机初学者很好地了解单片机的使用, 这主要表现在以下两个方面:1) 计算器的结构简单, 并且具备最小单片机系统的基本构成。通过计算器的实例, 可以明白构成一个最简单, 同时也具备实用性的单片机系统需要哪些外围设备的基本电路。2) 计算器电路中使用了单片机系统中最为常用的输入输出设备, 通过此作品的设计, 可以明确单片机系统最简单的用途和控制方法, 同时通过软件编程可以进一步提升程序设计能力。

一、系统结构及硬件电路设计

此作品的系统结构包括:单片机系统、键盘模块和液晶显示单元, 原理图如图1所示, 系统结构如图2所示, 作品实物图如图3所示。单片机系统主要由单片机、时钟电路和复位电路构成。时钟电路相当于单片机系统的心脏, 它是系统必不可少的部分。作品选用STC89C58RD单片机, 该单片机具有4个8位I/O口P0~P3口, 2个16位定时器/计数器T0和T1。通过程序设计使单片机处理键盘输入的数据、驱动液晶显示等。键盘用作数据输入接在单片机的P1和部分P3口, 设计使用4×6的矩阵键盘, 相对于独立按键, 矩阵键盘大大节省了单片机的I/O口, 扩大了按键功能, 同时也节省了硬件资源。每按下一个键, 同时让蜂鸣器发声, 这样设计便于判断按键是否真正按下。LCD12864作为人机交互界面, 显示计算结果和计算的信息。

二、系统软件设计

软件设计是计算器能正确进行计算的核心。单片机的应用系统程序设计时, 常用的是汇编语言和C语言。相对于汇编语言, C语言简洁, 使用方便、灵活, 可移植性强, 所以此设计采用C语言编写程序。作品程序主要由3部分组成, 分别是显示程序、计算程序和键盘扫描程序, 程序主流程如图4所示。

1. 计算模块的程序设计思路及原理

在计算式中运算符分单目运算符和双目运算符两类, 单目运算符例如:sin (三角函数) 、开方、求倒数等, 双目运算符例如:加、减、乘、除。单目运算符的运算比双目运算符的运算简单, 它一般参杂在四则混合运算中。单目运算符一旦按下相应的数据直接做出反应得到结果, 而双目运算符则需要考虑优先级运算。程序关键是对双目运算符运算的设计, 设计每按下一个按键单片机做出一个反应。如果不考虑优先级运算, 运算过程可以设计为不断地对以下对象进行操作如图5所示, 对于含优先级的运算, 基于普通运算设计的思想, 设计运算不断地对三个数和两个符号进行操作。运算时不停地判断两个运算符 (符号1和符号2是指加、减、乘、除双目运算符) , 如果符号1是加减号而符号2是乘除号则计算过程如图6所示, 否则计算的过程如图7所示。

在程序设计中用3个变量h1、h3、h6存放输入的数, 其中h1存放算式的第一个数 (数1) , h3存放加减号后面的数 (数2或数3) , h6存放乘除号后面的数 (数2或数3) ;2个变量存放输入的符号, h2存放加减号, h5存放乘除号;变量h4存放最终结果。最后一个运算结果很特殊, 与算式中每一步运算结果是用不同的变量来存放的, 在算式中的结果存放在h1、h3、h6三个变量中的任意一个中, 按了等号之后是存在h5中, 并清零h1、h2、h3、h5、h6的值等待再一次全新的运算。把其中输入的每一个数用一个数组存放起来, 通过sprintf () 函数转换为字符串, 最后显示在LCD12864上, 从而达到了显示算式的目的。例如算式:2+5×2-8=4实现运算的过程如图8所示。

2. 矩阵键盘程序设计

4×6的矩阵键盘程序设计采用的是扫描法, 程序比较精简, 定义行值为i (0~3) , 列值为j (0~5) , 当有键按下时返回按键位置 (j-4) +6×i, 当没有键按下时返回32, 程序如下。

3. 显示部分程序设计

这部分主要是设计程序驱动液晶显示。怎样把一串很长并且会随着按键变化的数字通过液晶显示出来以及怎样显示计算式是显示部分程序设计的关键。在此设计中用到了sprintf () 函数, 它用作格式化的输出函数, 将一个格式化的字符串输出到一个目的字符串中, 从而可以把数字转化为字符串输出。函数调用方式为int sprintf (char*string, char*format, arg_list) , 其中第一个参数是目的字符串。sprintf () 函数共有五大功能:将整数转化为字符串, 如sprintf (s, "%8d%8d", 123, 4567) , 产生"123 4567"。将浮点数转化为字符串, 如sprintf (s, "%10.3f", 3.1415626) , 产生"3.142"。连接字符串, 如char a1[]={'A', 'B', 'C', 'D', 'E', 'F', 'G'}, char a2[]={'H', 'I', 'J', 'K', 'L', 'M', 'N'}, sprintf (s, "%.7s%.7s", a1, a2) , 产生"ABCDEFGHIJKLMN"。打印变量地址。sprintf () 函数的返回值是结果字符串的长度, 相当于strlen () 函数, 如int len=sprintf (s, "%d", i) 。显示设计的部分程序如下所示。

三、关于程序设计中的变量

1. 不同类型变量的区别

作品设计使用的是STC89C58单片机, STC89C58单片机中的float型和double型变量取值范围是一样的, 有效数字都是6~7位。程序设计中联系到许多不同类型的变量, 在定义变量的时候注意变量的类型和取值范围, 程序设计中用到的变量如表1所示。

2. 变量的不同定义方式

(1) 对于变量存放不同位置时, STC89C58单片机内带有片内的ROM和RAM以及片外RAM, 在程序设计时变量可以存放不同位置。例如一个变量可以定义为unsigned int code a、unsigned int data a、unsigned int xdata a, 它们所表示的含义:code型是指把变量a存放在ROM中, 一般为固定的值;data型是指把变量a存放在RAM中, 一般为可变动的值;xdata型是指把变量a存放在外部RAM中, 一般为可变动的值, 在58单片机内部带有外部数据存储器, 所以可以不外接, 但是指针变量不可以定义为xdata型。

(2) 对于变量作用域角度不同时, 可分为局部变量和全局变量。对于局部变量每调用一次重新赋一次初值, 而全局变量每调用一次不再重新赋初值, 只是保留上一次函数调用结束时的值。

四、关于程序设计的注意点

作品核心部分是程序的设计, 程序设计前一定要明确设计思路。先搭建起程序总的框架, 再考虑细节, 可以利用自顶向下的思想设计, 所谓自上而下就是先明确整体, 再明确各部分, 再到各个部分的细节, 例如对于计算机的程序设计, 自顶向下的框架如图9所示。写程序前最好画流程图, 流程图很重要, 它可以理清设计思路, 可以提示设计的每一步。程序设计不能只看现象, 在设计过程中脑海里要时刻想像程序的运行过程。注意程序的每一个细节, 有时一个很小的细节却会造成很大的影响, 要特别注意变量的定义。对于函数的头文件, 它在主函数里的顺序不同也会影响程序的执行, 先运行的头文件一定要放在前面。关于延时, 用延时一定要慎重, 并不是延时越久越好, 一定要考虑单片机的效率。一些底层函数不需要很长时间的延时, 比如LCD12864、DS1302的驱动函数, 通常只要加几个_nop_ () 就可以了。越是底层函数就越要考虑是不是效率最高的, 底层函数延时越短越好。

五、结语

12864 篇4

一般的点阵图形显示器提供有位点阵和字节点阵两种图形显示功能,用户可在指定的屏幕位置上以点为单位或以字节为单位进行图形显示,这种显示器可以实现汉字、ASCII码、点阵图形和变化曲线的同屏显示,但对于复杂的像素较多的图形,显示时间会很长。由于笔者公司产品控制面板为图形显示,且利用可视化菜单调整参数,使用一般的液晶显示模块不能满足产品需要,所以选用可视化编程液晶显示模块VLCM12864B。这种模块的特点是:将LCD控制的底层操作软件集成于VLCM内的MCU中,用户可将显示界面中所用到的各种图样和标准汉字库预先录入VLCM模块中,通过串口调用显示界面,保证了图案的实时显示。

本文通过VLCM12864B在产品设计中的应用,详细阐述了VLCM12864B液晶显示模块与89C55单片机的接口方法与编程方法。在产品设计中采用CPLD模块XC95108取代89C55单片机外围电路的地址锁存器、译码器及片选芯片等电路,大大减小了产品体积。

2 VLCM12864B结构、性能与指令说明

VLCM12864B为128(W)×64(H)液晶显示模块,显示器大小:78mm×70mm;显示屏尺寸:62mm×44mm;采用单5V供电,带LED背光可控开关。国标GB-2312二级字库,127个半角ASCII码,编码调用。512kB_FLASH显示资料闪存,最多可存放200幅整屏资料。它通过RS232串口下载显示资料、仿真,利用单片机串行控制。

使用VLCM12864B可视化编程液晶显示模块,可先在电脑上利用所配电脑仿真软件Visual LCM1.3(For12864),通过所配的电脑下载线,将已有的图案资料下载到VL-CM12864B可视化编程液晶显示模块,再用所提供的命令由电脑串口模拟控制器控制LCD显示。下载的图案必须是黑白两色(图象->属性)并旋转(图象->翻转)270°后的BMP文档资料,且大小不超过128X64像素。VL-CM12864B命令说明见表1,命令参数见表2。

3 硬件设计

本产品由于要完成复杂的算法控制,程序设计比较复杂,加上要为以后的功能扩展留有足够的程序存储空间,所以选用89C55单片机芯片。由于控制箱内空间有限,必须尽量减少单片机控制单元空间,所以在设计单片机外围接口电路时,选用CPLD模块XC95108。由于电路需要采集电机工作电流和工作电压,需要对泵站工作压力进行采样,所以选用AD转换模块MAX1247[1]。MAX1247是4通道模拟输入12位串行输出A/D转换模块,完全可以满足数据通道采样要求。同时MAX1247采用串行输入、串行输出,也缓解了单片机口线资源不足的矛盾。由于产品使用控制面板,有较多的控制按钮和指示灯,菜单参数的更改也需要按钮或拨码开关,仅仅依靠单片机的I/O口不能满足要求,所以采用可编程外围并行接口芯片82C55A[2],可为外设提供3个8位I/O端口。产品硬件结构如图1所示,CPLD接口电路见图2。

本产品单片机控制单元在箱体控制面板按钮的操作下,完成产品液压单元驱动的同时,要求用图案实时显示产品运行信息,如:设备运行时间、箱满显示、故障显示等。选用可视化编程液晶显示模块VLCM12864B保证了产品控制信息的实时显示。显示模块VLCM12864B引脚如下:

PIN1:模块背光电极1,LED背光时为负极;

PIN2:模块背光电极2,LED背光时为直流5V;

PIN3:模块逻辑电源地;

PIN4:模块逻辑电源直流5V;

PIN5:空接;

PIN6:模块内MCU外部复位,高有效,防止死机时用;

PIN7:模块忙信号,TTL电平时低为忙,高为闲;

PIN8:模块显示控制命令串行输入,通讯协议(9600,n,8,1),即:波特率为9600bit/s,无校验位,8个数据位,1个停止位。

4 软件设计

表1、表2列出了可视化编程液晶显示模块VL-CM12864B的命令和命令参数说明,下面为根据表1、表2编写的实现其相应功能的子程序,通过这些子程序,就可以对需要显示的图案进行实时显示。对于汉字,如需显示的汉字较多,如菜单,本产品将菜单中无需变更的汉字部分制成位图文件,对需要调整的参数将空间留出,在调试时通过ASCII字符输入子程序输入合适的参数,方便了参数的修改。

子程序变量定义:

5 结语

以上电路硬件部分和软件程序均经调试通过,图形显示效果清晰、直观。由于它可以直接与8位微处理器相连,电路简单,因此可广泛应用于系统终端显示、人机接口和智能仪器仪表领域。特别是对于那些想用液晶显示来提高自己产品的竞争力,而又不想花费太多时间开发液晶显示的广大用户,该设计在其所设计的单片机与液晶显示器接口设计中具有一定的参考价值。

摘要:系统地介绍了基于CPLD模块XC95108和可视化编程液晶显示模块VLCM12864B与单片机89C55的产品设计,提供了CPLD接口电路,编写了软件控制程序。

关键词:单片机,CPLD模块,可视化编程液晶显示模块

参考文献

[1]赵亮,侯国锐.单片机C语言编程与实例[M].北京:人民邮电出版社,2004.

【12864】推荐阅读:

上一篇:电子胎心监护异常下一篇:渔舟唱晚

本站热搜

    相关推荐