TIMER0控制8×8LED点阵屏显示数字电路如图3-22所示。其中,用8只NPN三极管8050驱动LED点阵屏的列码,行码则由P2端口输出。当程序运行时,8×8 LED点阵屏依次循环显示数字0~9,其刷新过程由T2中断函数控制完成。
图3-22 TIMER0控制8×8LED点阵屏显示数字电路
8×8 LED点阵屏实物引脚顺序、行(ROW/RO)列(CO)内部逻辑结构如图3-23所示,以共阳高亮红色光8×8 LED点阵屏788BS为例,其长、宽、高为20.2mm×20.2mm×5.9mm,点距为1.9mm。此前使用的集成式数码管,均以位引脚为参照标识其是共阳还是共阴。8×8 LED点阵屏则通常以行引脚(行线)为参照来标识其是共阳还是共阴。例如,788BS点阵屏的所有行引脚(行线)均为共阳连接的,故788BS为共阳点阵屏。
判断一个LED点阵屏是共阳还是共阴,通常至少有以下两种方法。
方法一:凡其型号标识中有字符B则表示共阳,而有字符A则表示共阴。这与集成式数码管的标识规则是相同的。例如,788BS、1088BS等均为共阳点阵屏(指其行线为共阳),而788AS、1088AS等均为共阴点阵屏(指其行线为共阴)。
方法二:将实物点阵屏正面朝自己,将印有型号字符串(例如788BS)的一边向下,参照图3-23可知,此时其左下角的1引脚、3引脚,分别对应该LED点阵屏的第5条行线与第2条列线,通过检测1引脚、3引脚的极性,即可知其为共阳还是共阴点阵屏。
图3-23 8×8LED点阵屏实物引脚顺序、行(ROW/RO)列(CO)内部逻辑结构
需要说明的是,如果将一个LED点阵屏旋转90°再观察,会发现其所谓“共阳”“共阴”结构会颠倒。由此可见,LED点阵屏是共阳还是共阴是相对而言的。但在实际应用中,工程技术人员均以其行线为参照,行线为共阳则其为共阳,否则为共阴。在PCB上安装实物点阵屏时,通常都将其标有型号的一边向下安放然后焊接。
LED点阵屏的动态扫描刷新显示与8位集成式数码管的动态扫描刷新显示原理(方法)非常相似。虽然两者外观不同,但其逻辑结构相似,两者的扫描显示程序也非常相似。
在程序中,字符点阵数组DotMatrix存放有通过Zimo软件提取的0~9、A~F共16个字符的点阵,该数组中每行8个字节对应一个字符的8行点阵编码,其中每个字节的8位则对应于某字符某一行中的8个“LED像素点”。
变量Num_Idx标识当前待显示字符的索引,取值范围为0~15(对应0~9,A~F);变量i的取值范围为0~7,表示每个字符共8行,一共要逐一取回8个字节(对应8行LED像素)。从数组中读取对应点阵(LED像素)的语句为:
该语句表示取得第Num_Idx个字符的第i行点阵字节,其中7-i用于上下颠倒行顺序。如果将控制行线扫描的P2接口各引脚连接顺序颠倒,则该语句相应变更为:
所获取的点阵通过语句x=~x进行反相。如果点阵在Zimo取模时已反相,则软件反相语句可省略。另外,语句x>>=2用于将当前行点阵整体右移两列,这样可使字符右移空两列后显示,从而使字符显示整体更趋居中。之所以这样处理是因为所提取的宋体9号字符点阵,其有效宽度多为5~6列像素。对于点阵宽度占满8列的字符显然是不能这样处理的,除非是为了实现滚动显示效果。
① 用数组保存一组自定义数字,逐个发送给LED点阵屏刷新显示。
② 改用非反相驱动器7407驱动点阵屏刷新显示。