内容正文:
任务一 用点阵LED实现移动字符显示
任务二 字符液晶LCD1602显示应用
任务三 点阵液晶LCD12864显示应用
课题十 移动字幕的制作
使用单个LED或7段LED数码管作为显示器件,能显示有限的简易字符,对于复杂的字符(包括汉字)及复杂的图形信息等是无法显示的。单色LED点阵则将很多单个的LED按矩阵的方式排列在一起,通过控制每个LED发光或熄灭,完成各种复杂字符或图形的显示。
任务提出
任务一 用点阵LED实现移动字符显示
在电子设备中,通常图像由很多细小的“像素”组合而成,通过LED点阵显示这些像素点,就构成了整个图像。汉字在显示时,可以被认为是一种规格化的特殊图像。
本任务的内容是在16×16点阵LED上实现汉字的滚动显示。
根据任务目标,单片机必须控制16×16点阵LED中每一只LED的显示状态,才能将这些LED构成相应的汉字图形。
移动字幕,实际上就是被显示的点阵(在程序中是一批数据)随时间在显示的位置上不断发生变化的结果。从程序的角度出发,是将一批数据送到LED点阵的不同位置,控制了LED点阵的亮灭,就实现了显示字符的移动效果。
任务分析
一、点阵显示原理
在显示各种信息时,不管是规范的数字、字符、汉字,或者是图片,均可以看成是一幅图像。数字化处理图像时,将图像分为若干区域,用每个区域的平均亮度(或颜色深度)来表示该区域的信息。在还原图像时,按区域的平均值进行显示,这种方式损失了一定的图像细节。单位面积划分的采样区域越多,对应的数据也越多,硬件成本越高,还原的图像越逼真。在实践中,往往根据系统需求,在分辨率和成本上折中处理。
相关知识
在各种字符的处理过程中,分辨率低的直接采用点阵存储,分辨率高的往往采用曲线描述字符的笔画边沿。前者数据量小,强行放大时,笔画的边沿出现锯齿状;后者在理论上可以被无限地放大,笔画轮廓仍然能保持圆滑。
不同规格的点阵示例
a)8×8点阵 b)8×16点阵 c)16×16点阵的结构图
在对各种点阵进行存储等处理时,描述每一个点都需要一个二进制位,故不同规格的点阵占用的存储空间也不相同。对于同一个字符,8×8点阵只需要8个字节,8×16点阵需要16个字节,16×16点阵则需要32个字节。
二、LED点阵
从理论上说,不论显示图形还是文字,只要控制组成这些图形或文字的各个点所在位置的LED器件的发光状态,就可以得到想要的显示结果,这种同时控制各个发光点亮灭的方法称为静态驱动显示方式。16×16的点阵共有256个发光二极管,显然单片机没有这么多端口,如果采用锁存器来扩展端口,按8位锁存器来计算,16×16的点阵需要256/8=32个锁存器。这个数字很庞大,因为这仅仅是按16×16的点阵计算得到,在实际应用中的显示屏往往要大得多,这样锁存器的成本将是一个很庞大的数字。一般来说,需要高亮度显示的各类点阵显示屏是采用静态显示的驱动方式,为了降低成本,点阵显示往往采用动态显示的方式。
根据市场需要,动态显示的LED点阵往往以标准点阵模块方式生产。最常见的LED点阵显示模块有5×7、7×9、8×8等各种结构,前两种主要用于显示各种西文字符,后一种可多模块组合用于汉字、图形的显示,并且可组建大型电子显示屏。
8×8LED点阵模块
a)原理图 b)实物图
单个8×8 LED点阵显示原理电路图
数字“0”的8×8点阵示意图
数字0~9的8×8点阵
其他字符和汉字的代码可以从计算机显示字库中获得,也可用软件转换而来。对于特殊符号或图案,也常采用先绘出图形后再根据图形写出对应代码的方法。
一个8×8点阵在同一时间只能显示其中一个数字,为了显示数字0~9,设定每隔1 s变换一个显示数字,即每个数字将连续显示1 s,然后再换为下一个数字显示。
由于8行8列的LED点阵引线的公共端是连接在一起的,所以不能同时将这些LED都加以控制,只能按行或者按列分别控制显示,以小于人眼视觉暂留时间的间隔重复显示,也就是要求每秒至少显示50次以上,要求一个字符一次显示的时间小于2 ms,显示一列(或一行)的时间小于250 μs。而具体的显示过程与数码管的动态显示过程相似。以按列显示为例,首先显示一列,延迟一段时间,再显示下一列,再延迟……直到显示完全部列后再重复进行显示。
如字符“0”的显示过程如下:
首先在P0口送出第一个行控制码00H,在P2口送出一个列控制码01111111;
再在P0口送出第二个行控制码00H,在P2口送出一个列控制码10111111;
再在P0口送出第三个行控制码3EH,在P2口送出一个列控制码11011111;
再在P0口送出第四个行控制码41H,在P2口送出一个列控制码11101111;
……
送完8个行控制和8个列控制信号,这样一个“0”字就被显示了一遍,接着