3.15 TIMER0控制8×8LED点阵屏显示数字 |
|
图3-18所示电路中用8只NPN三极管8050驱动LED点阵屏的列码,行码则由P2端口输出,程序运行时,8×8 LED点阵屏依次循环显示数字0~9,刷新过程由T0定时器控制完成。
图3-18 TIMER0控制8×8LED点阵屏显示数字电路
(1)单色点阵屏的结构特点与扫描显示原理
点阵显示屏的动态刷新显示与8位集成式数码管的动态刷新显示非常相似,8位数码管中的一只相当于点阵屏中的一列,数码管的段码类似于点阵屏的行码,位码则类似于点阵屏的列码,两者逻辑结构相同,只是外观不一样,故二者的扫描显示源程序非常相似。
如果点阵屏中每一行LED是共阳连接,那么每一列必为共阴连接;如果将其旋转90°,则行是共阴连接,列是共阳连接。如果将其旋转180°,则逻辑结构没有改变,但在编程控制显示时,点阵的取法或行码与列码字节的发送顺序需要相应调整。显然,点阵屏的共阴或共阳是相对的,这一点不同于数码管。不过,对于8×8点阵屏实物,通常将四边中印有型号的一边朝下,从正面看点阵屏,此时每列为共阳则称其为共阳点阵屏,反之则称为共阴点阵屏。
图3-19给出了8×8LED点阵屏正面视图及焊接面(背面)引脚。
图3-19 8×8LED点阵屏正面视图及焊接面引脚
(2)仿真电路中点阵屏的扫描显示程序设计
程序中数字点阵数组DotMatrix共有80字节,每行8字节为一个数字的点阵编码,其中每个字节的8位对应于一列中的8“像素点”。例如,数组中第0行的8字节0x00,0x3E,0x41,0x41,0x41,0x3E,0x00,0x00,其中第0字节0x00就是数字0第0列8只LED的编码,这类似于数码管一个数字的段码,在点阵屏中就是行码,它们与点阵屏第0~7行一一对应。各行码字节的高位对应于列中上面的还是下面的LED,这由P2端口与点阵屏8只LED行引脚的连接顺序决定。
变量Num_Idx标识了将要显示的数字,取值范围为0~9,变量i的取值范围为0~7,表达式~DotMatrix [Num_Idx * 8 + i]使程序取得第Num_Idx个数字的第i字节。因为每个数字的点阵编码由8字节构成,每次取得0~7字节中的1字节,通过P2端口发送到点阵屏的行引脚上,在发送行码之前,P3端口先发送相应的列码选通对应列。由语句P3 = 1<<i可以看出,在本例点阵屏的连接方式下,各列中的LED是共阳的,1<<i总是使第i列变为高电平,其他列为低电平,这时发送的行码将仅仅显示在第i列,这类似于当前发送给8位集成式数码管中的段码将仅仅显示在第i位上。
待显示字符的点阵数据可通过Zimo软件取得,取本例字模时要注意仿真电路中的LED屏旋转了-90°。
本例中点阵显示屏的动态刷新显示与上一案例中集成式8位数码管的动态刷新显示非常相似,8位数码管中的一只相当于点阵屏中的一列,数码管的段码相当于点阵屏的行码,位码则相当于点阵屏的列码,而且也都分为共阳与共阴两种,可见两者逻辑结构是完全一样,只是外观不同。因为逻辑结构相似,因此本例点阵屏的中断刷新显示代码与上一案例中的代码也非常相似。
① 用数组保存一组自定义数字,逐个发送LED点阵屏刷新显示。
② 改用非反向驱动器7407驱动点阵屏刷新显示。