点阵式液晶字符反白和图形显示研究

分享到:

引  言

  实验动物独立通气笼盒(Individual Ventilated Cages,IVC)(闭环)监控系统,由微控制器实现对笼盒风扇的通气量、笼盒内部的氨含量等参数采集,并根据这些参数来调整通气风扇转速,以调整笼盒的换气率,从而确保笼盒内部的空气质量。同时,根据相关参数指标发出警报以提醒更换过滤膜等,实现对小动物生长环境的过程控制。

  在整个监控系统中,人机交互界面部分用于显示整个实验动物生长环境过程中的控制历史数据、实时控制参数和环境温度参数等。

  本文采用以ST7920为控制器的YMl2864R点阵式液晶显示模块(LCD Module,LCM)构成了整个IVC监控系统的人机界面部分。YM12864R点阵式液晶显示模块具有灵活的接口方式和简单的操作指令,构成的全中文人机交互图形界面既可以显示8×4行16×16点阵的汉字,也可以显示图形。模块内部设有2MB的中文字型CGROM和64×256点阵的GDRAM绘图区域;同时,提供4组可编程控制的16×16点阵造字空间。

1 点阵式液晶硬件接口设计

  以ST7920为控制器的YM12864R点阵式液晶显示模块和单片机之间的接口方式有并行和串行两种。本文采用串行接口方式,单片机选用AVR公司的ATmega16。接口电路如图1所示。其中,PC4控制串行的片选信号(CS),低电平有效;PC5控制串行的数据线(SID);PC6控制串行的时钟输入(CLK)。ST7920通过VCC(+5 V)和GND之间串联一个10 kΩ的电阻来控制背光强度。如果不需要调节对比度,可以直接将VLCD引脚接VCC(+5 V),此时对比度最大。

2 文本显示及绘图显示

  2.1 文本显示

  ST7920可以显示半宽的HCGROM字型、CGRAM字型以及中文CGROM三种字型,通过在DDRAM中写入的编码选择。文本显示DDRAM提供8个×4行的汉字空间,如下所示:

  字型编码如下:

  ①显示半宽HCGROM字型。将1字节写入DDRAM中,范围为02H~7FH的编码。

  ②显示半宽CGRAM字型。将2字节编码写入DDRAM中,总共有0000H、0002H、0004H、0006H四种编码。

  ③显示中文CGROM字型。将2字节编码写入DDRAM中,范围为A1AOH~FTFFH(GB码)或A140H~D75FH(BIG5码)的编码。

  2.2  绘图显示

  绘图显示GDRAM提供128×8字节的记忆空间。在更改绘图RAM时,先连续写入水平与垂直的坐标值,再写入2个字节的数据到绘图RAM中,而地址计数器(AC)会自动加1。在写入绘图显示RAM的期间,绘图显示功能必须关闭。整个写入绘图RAM的步骤如下:

  ①关闭绘图显示功能;

  ②先将水平的位元组坐标(X)写入绘图RAM地址,再将垂直的坐标(Y)写入绘图RAM地址;

  ③依次将D15~D8和D7~D0写入RAM中;

  ④打开绘图显示功能。

  图形显示坐标如图2所示。其中,水平方向X以字节单位,垂直方向Y以位为单位。

3 字符反白

  在实现人机交互界面菜单时,字符反白可以表示菜单中不同选项被选中的状态。液晶显示模块YM12864R的使用手册中提供了对应行的反白指令,但在原理上ST7920控制器的128×64点阵液晶等同于256×32点阵,第3行对应的文本显示(DDRAM)地址紧接着第1行,第4行对应的文本显示(DDRAM)地址紧接第2行。因此,用户对第1行执行反白显示操作时,第3行必然也反白显示;对第2行执行反白操作时,第4行也必然反白。可见,使用手册中自带的反白指令不能实现任意字符的反白。

  为了解决上述问题,可以将图形显示和字符显示结合起来使用。在ST7920控制器中,文本显示的DDRAM和图形显示的GDRAM是相互独立的,而最后显示到液晶上的结果则是,文本显示DDRAM中数据和图形显示GDRAM中数据的异或结果。

  如果要在液晶显示模块的某个点上呈现反白显示,那么就在该点绘图并且显示文本;如果要取消反白,只需用全“0”擦掉该点的绘图。这样,就可以实现YM12864R的任意字符的反白。

  字符反白程序流程如图3所示。其中,base_x表示绘图起始的行地址;Y_Pos表示绘图起始的列地址;第1行至第4行的起始地址分别是(0x80,0x80),(0xS0,0xg0),(0x88,0xS0)和(0x88,0x90)。

  反白就是在需要反白的区域进行绘图,即在这个区域写进0xff。清除一个区域的反白,就是对需要清除反白的区域清除绘图,即在这个区域写进0x00。

  在整个绘图的过程中,横向地址指针是自动进行加1运算的,所以只需要确定这一行的首地址横坐标;而纵坐标的地址不进行自动加1运算,需要在程序中修正,每次修正是以像素为基本单位的。

  字符反白显示实例如图4所示。

4 任意位置显示任意大小图形

  在实现人机交互界面时,图文结合是常见的一种方式。本文尝试一种任意位置显示任意大小图形(横向尺寸以字节为基本单位,纵向尺寸以位为基本单位)的方法,为人机交互界面的图形结合设计提供了捷径。

  4.1 任意位置显示任意大小图形程序

  任意位置显示任意大小图形程序流程如图5所示。其中,x1和y1表示所画图的起始点相对于液晶屏幕左上角起始点(0xS0,0x80)的距离(横向x1以字节为基本单位,纵向y1以位为基本单位);x表示所画图的起始横坐标地址;y表示所画图的起始纵坐标地址;Write_command()函数用于向液晶中写命令;templ表示图形的纵向尺寸(以像素为单位)。

  绘图时,如果所画的图形只涉及上半屏(或下半屏),那么在写地址时可以不考虑地址跨越上下半屏的调整,只需要在所画图形的初始处写好行地址和列地址:

  Write_command(y+templ);

  Write_command(x);

  在绘图过程中,横坐标地址指针会在写数据的过程中自动加1,因此只需要写出这一行的首地址;但纵坐标地址指针不会自动加1,需要在程序中修正。

  4.2  任意位置显示任意大小图形实例   

  任意位置显示任意大小图形实例如图6(a)~(c) 所示。

结  语

  ST7920因内置字库而被广泛应用,其图形显示的关键点是熟练掌握图形显示坐标。在笔者所参与的独立通气笼盒监控系统设计过程中,利用以ST7920为控制器的液晶显示模块构建良好的人机交互界面,以曲线和直方图的方式显示实时温度。系统可由用户设定开启密码,可以查看相关历史数据、实现实验动物生长环境及生长过程的控制,以及回溯历史数据、实时控制参数和环境温度等参数。该设计对优化控制实验动物生长环境、稳定实验动物生活习性、动物形态十分有益。

继续阅读
基于Atmega16的电流采样电路设计

文中研制了一套模拟并网发电系统,实现了频率跟踪、最大功率跟踪、相位跟踪、输入欠压保护、输出过流保护、反孤岛效应等功能

AVR中断优先级

AVR单片机在同一个优先级中,中断向量入口地址越低,其优先级越高。AVR单片机在响应中断以后,会禁止系统响应其余中断。如果程序需要在某个中断服务程序中响应其它中断事件,可以在该中断服务程序中用SEI指令或_SEI()(IAR)、 SEI()(ICCAVR)重新使能全局中断即可。否则,AVR单片机只有在退出中断进程时,才重新使能全局中断。

基于ATmega16单片机的简易多通道虚拟示波器的设计

虚拟仪器是基于PC技术发展起来的,所以完全"继承"了以现成即用的PC技术为主导的最新商业技术的优点,包括功能超卓的处理器和文件I/O,使在数据导入磁盘的同时就能实时地进行复杂的分析。为了实时、准确地测量输入波形的参数,本文采用自带8路10位ADC的单片机ATmega16,结合简单的外围电路,即可将输入波形实时传送给PC机进行处理。

便携式生命体征动态监测仪设计

生命体征监测仪是医院不可缺少的重要设备,它实时、连续、长时间地监测病人的重要医学生理参数,并将获得的数据传送给医护人员,以供医护人员进行分析,使得医护人员能够对病人当前的状态做出正确判断,从而做出正确的处理。

基于单片机的智能学习型红外空调遥控器

为了解决空调遥控器不兼容问题,设计了一款基于Atmega16单片机的智能空调遥控器。该遥控器采用测量脉冲宽度的方法学习红外信号,同时使用游程编码算法对数据进行压缩后存储,并利用单片机内部定时器PWM模式产生红外载波,成功实现了对红外遥控的学习与再现,并可通过上位机进行控制。

©2018 Microchip Corporation
facebook google plus twitter linkedin youku weibo rss