一直以来,对LED点阵显示很感兴趣,特别是流动点阵显示。论坛里有不少例子,可是在我的电脑上大多无法正常运行。有的一运行就S机,能运行的,也是字符不清。于是,自己动手。先试作了8X8点阵。8X8的点太少,只适合数字显示,从0~9流动,效果还不错。有了8X8的经验,对流动显示的原理已经了解,又试了16X16的,觉得也不难。但16X16的点仍嫌少了,又做了个24X24的,汉字漂亮。动画可能效果差些,软件运行显示效果好多了。一、8X8初学点阵仿真,常点不亮LED。首先,可能是点阵的极性没有正确的接线。下面的简单方法可判断点阵的逻辑引脚。运行proteus,在编辑区里放上一个8X8LED,如MATRIX-8x8-GREEN。在某些引脚上接上电源和地,试试能不能点亮。8X8默认是上下引脚,按习惯接法,上面接电源,下面接地,不亮(图左)。用左下角垂直翻转工具,垂直翻转,再接上电源和地,就可以点亮了(图右)。如果是做左移显示,可再左旋90°这里可看到,左边引脚是行控制,右边引脚是列控制。然后就可以画线路图了,点阵就保持上面那个方向。由于点阵引线较多,特别是以后做24X24点阵,所以布线方式不用连线,而用终端加上网络标号,这样可以使画面简洁明了。连续标号的快捷画法,我以前有帖子介绍过。这里还是再啰嗦一下。proteus有一个很好用的PAT(PropertyAssignmentTool),即属性分配工具。可以用来做快捷标注,当然还可以用作其它操作。再连上其它接线,一个线路图很快就可以作好。下面,就可以写程序的源文件了。点击菜单\Source,下拉菜单第一条Add/RemoveSourceFiles,按键New,在跳出的对话框里写上新文件名,如8X8.asm,打开。提示这个文件不存在,要创建吗?是。然后点CodeGererationtool小箭头,选ASM51,点OK。然后,菜单\Source,看到多了个8X8.asm,点击,出现proteus自带的汇编编辑器,就可以在里面写代码了。如下:;8X8LED点阵流动显示;逐列、逆向(低位开始)扫描ORG0000HAJMPMAINORG0030HMAIN:MOVDPTR,#TAB;字码表初址赋值MOVR1,#0FEH;列控制码MOVR3,#8;列数MOVR4,#88;移动“”及“0~9”11个字符,共88列CM:MOVR5,#10;每屏反复显示10次MOVR3,#8;列数C1:MOVR2,#0;取码指针C8:MOVP3,#0FFH;关显示MOVA,R2;MOVCA,@A+DPTR;取当前列的显示字码的一个字节MOVP0,A;送1~8行控制口INCR2MOVA,R1MOVP3,A;送列控制码ACALLD5MS;显示5MSRLA;列控制码左移,显示下一列MOVR1,ADJNZR3,C8;未显示8列,继续DJNZR5,C1;未显示10次,继续INCDPL;一屏反复显示10次完,字码表初值加1DJNZR4,CM;88列未移动完,继续AJMPMAIN;88列显示完,返回,重新从“”开始显示D5MS:MOVR6,#10MOVR7,#248DJNZR7,$DJNZR6,$-4RETTAB:DB00H,00H,00H,00H,00H,00H,00H,00H;DB00H,00H,00H,7EH,81H,81H,81H,7EH;0DB00H,00H,00H,00H,00H,82H,0FFH,80H;1DB00h,00h,00h,0C6H,0A1H,91H,89H,0C6H;2DB00H,00H,00H,42H,81H,81H,99H,66H;3DB00H,00H,00H,1FH,10H,0FFH,10H,10H;4DB00H,00H,00H,4FH,89H,89H,89H,79H;5DB00H,00H,00H,7EH,89H,89H,89H,72H;6DB00H,00H,00H,01H,01H,0F9H,05H,03H;7DB00H,00H,00H,76H,89H,89H,89H,76H;8DB00H,00H,00H,4EH,91H,91H,91H,7EH;9END程序的基本原理:P0口送1~8行扫描码,P3口送列控制码。显示完一列,列控制码左移,显示第2列。一直到8列显示完,即显示了一屏。重新从1~8列,反复显示10次,以免字符一闪而过。接着显示下屏,下一屏的取字指针的地址加1,(INCDPL)即该屏第1列是上屏的第2列,也就是相当于左移一列。直到11个字符(包括“”字符)全部显示后,再从新开始。这样,就实现了移动显示。接着再继续说说,怎么将ASM文件转换成HEX文件。上面在编辑器里写好ASM文件后,菜单\Source\DefineCodeGererationTools,按对话框填写,点OK。菜单\Source\BuildAll,点击,编译完成。接着,左键再右键,在原理图内的单片机属性里加载HEX文件,。不过也可以不用左键再右键。可以这样,鼠标箭头移到单片机,按CTRL+E,也会跳出那个对话框的。当然proteus自带的编辑器也有不少遗憾,首先它只支持汇编,不支持C。另外,有朋友发现它不支持一些特殊的指令,象程序中的DJNZR7,$,它就不识别$,还有其它不识别的。不过,...