1.编程思路和步骤
(1)对要显示的字符取模。LED点阵可显示汉字、ASCII码字符和符号(如箭头、几何图形等)。显示什么内容是由加在行线或列线上的数据决定的,这种数据叫做字模。显示不同的字符其字模是不同的。用人工方法取模很费时,通常可使用取模软件来取出字模。常用的取模软件有“LCMzimo.exe”和“zimo.exe”,其使用方法很简单,详见本书教学资源。
注意:对点阵屏编程必须理解横向取模和纵向取模。
1)横向取模纵向扫描。所谓纵向扫描,就是按从上到下的顺序,依次点亮1、2、3、4行、…、直至点亮最后一行,并不断循环,这样人眼看起来各行都处于点亮状态。每一行的哪些LED被点亮哪些LED处于熄灭状态,是由这一行的字模决定的。采用纵向扫描时,就需横向取模,如图6-8a所示。对于YL-236点阵,由硬件决定了采用横向取模纵向扫描的方式时亮度更高一些,所以本书中的点阵我们都采用横向取模纵向扫描的方式。
图6-8中欲显示“E”,扫描过程是:扫描第1行时(第1行置为低电平),第1行没有LED点亮,其字模数据为00000000即0x00→扫描第2行时(第2行置为低电平),有4个LED点亮,其字模数据为00111100即0x3C→扫描第3行时,只有1个LED点亮,其字模数据为00000100即0x04(注意:为了和YL-236实训台点阵屏硬件相一致,横向取模时需采用“右高位”……。
2)纵向取模横向扫描。就是从左到右依次扫描各列,如图6-8b所示。读者可自行分析。
图6-8 点阵的横向取模和纵向取模
(3)选中给欲显示字符的点阵屏送数据的锁存器(含行数据和列数据的锁存器)。
(4)编写扫描各行(纵向扫描)的语句并从字模数组中调用字模数据,送到点阵列线上。
2.8×8字符的显示示例
(1)任务书:在图6-7虚线框所在的8×8点阵内依次显示0、1、2、3。
(2)硬件接线。在图6-6中,D0~D7接单片机的P0口,row0、row1、col0~col3分别接单片机的P1.0~P1.5,详见程序中的端口声明。
(3)参考程序代码
说明:①如果要分别依次循环显示0~9,调用次数太多,较麻烦,可这样写:
②如果要在其他的8×8点阵上显示,则需改变27、28、30、31、35的锁存信号控制脚即可。
3.8×16字符的显示示例(www.xing528.com)
每一个8×16字符的字模共有16个字节,需用两个8×8的屏进行显示,上屏显示第0~7字节,下屏显示第8~15字节。可按该思路编程,具体方法见本节自动恒温箱中点阵的显示函数。
4.显示一个16×16字符的显示示例
(1)任务书:在YL-236单片机实训台上点阵屏显示16×16的汉字“长”,如图6-9所示。
图6-9 YL-236单片机实训台上点阵屏显
(2)编程分析:1个16×16的汉字要占4个8×8的点阵屏(图中编号为0、1、2、3)。采用横向取模纵向扫描,根据取模方法决定的扫描顺序是:0号屏第0行、1号屏第0行→0号屏的第1行、1号示16×16的汉字“长”屏的第1行→0号屏的第2行、1号屏的第2行→……→0号屏的第7行、1号屏的第7行→2号屏的第0行(即总第8行)、3号屏的第0行(即总第8行)→……2号屏的第7行(即总第15行)、3号屏的第7行(即总第15行),至此扫描了一遍,然后再按照这个顺序循环扫描。
编程的关键:可用变量i自加来表示扫描的行数的变化,当i小于16时要选择上屏,当i大于16时要选择下屏(通过控制锁存器的row0、row1的值来选择)ꎻ要按照扫描顺序将字模数组内的数据依次送到各扫描行的列线上。
(3)程序示例:
5.在屏上固定位置显示多个16×16的汉字的典型示例
(1)任务书:在图6-9所示的屏的左半部依次显示“长”、“阳”、“职”、“教”。
(2)编程分析:取出的字模数据放在二维数组里,用前一个下标表示各个汉字在数组内的排序编号,在显示某个汉字调用显示函数时,显示函数的实参值等于该汉字的编号即可。
“长”、“阳”、“职”、“教”的字模如下:
16×16汉字的显示函数如下:
主函数如下:
这是多个汉字的显示函数,采用了二维数组,调用很方便,可作为一个范例。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。