LED点阵显示仿真

369455605   2011-12-18 23:19 楼主

LED点阵显示仿真----由浅入深之8X8,16X16,24X24LED点阵流动显示

一直以来,对LED点阵显示很感兴趣,特别是流动点阵显示。论坛里有不少例子,可是在我的电脑上大多无法正常运行。有的一运行就S机,能运行的,也是字符不清。于是,自己动手。先试作了8X8点阵。8X8的点太少,只适合数字显示, 从0 ~9流动,效果还不错。有了8X8的经验,对流动显示的原理已经了解,又试了16X16的,觉得也不难。但16X16的点仍嫌少了,又做了个24X24的,汉字 漂亮。动画可能效果差些,软件运行显示效果好多了。
    一、8X8

8X8移动.gif (52.72 KB)

2007-8-26 17:40


    初学点阵仿真,常点不亮LED 。首先,可能是点阵的极性没有正确的接线。下面的简单方法可判断点阵的逻辑引脚。
    运行proteus,在编辑区里放上一个8X8LED,如MATRIX-8x8-GREEN。在某些引脚上接上电源和地,试试能不能点亮。8X8默认是上下引脚 ,按习惯接法,上面接电源,下面接地,不亮(图左)。用左下角垂直翻转工具, 

垂直翻转.jpg (2.97 KB)

2007-8-26 17:40

垂直翻转,再接上电源和地,就可以点亮了(图右)。
      

逻辑引脚.jpg (28.51 KB)

2007-8-26 17:40


    如果是做左移显示,可再左旋90°。如图:
    

旋转.gif (44 KB)

2007-8-26 17:40



    

水平.jpg (22.98 KB)

2007-8-26 17:40


    这里可看到,左边引脚是行控制,右边引脚是列控制。
    然后就可以画线路图了,点阵就保持上面那个方向。
    由于点阵引线较多,特别是以后做24X24点阵,所以布线方式不用连线,而用终端加上网络标号,这样可以使画面简洁明了。
    连续标号的快捷画法,我以前有帖子介绍过。这里还是再啰嗦一下。
    proteus有一个很好用的PAT(Property Assignment Tool),即属性分配工具。 

PAT工具.jpg (4.08 KB)

2007-8-26 17:40

可以用来做快捷标注,当然还可以用作其它操作。
    

PAT用法1.gif (26.13 KB)

2007-8-26 17:40



    

PAT用法2.gif (224.62 KB)

2007-8-26 17:40



    
    再连上其它接线,一个线路图很快就可以作好。
    下面,就可以写程序的源文件了。
    点击菜单\Source,下拉菜单第一条Add/Remove Source Files,按键New,在跳出的对话框里写上新文件名,如8X8.asm,打开。提示
这个文件不存在,要创建吗?是。 然后点Code Gereration tool小箭头, 选ASM51 ,点OK。然后,菜单\Source,看到多了个8X8.asm
,点击,出现proteus自带的汇编编辑器,就可以在里面写代码了。如下:
;8X8LED点阵流动显示
;逐列、逆向(低位开始)扫描
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN: MOV DPTR,#TAB ;字码表初址赋值 
MOV R1,#0FEH ;列控制码
MOV R3,#8  ;列数
MOV R4,#88  ;移动“ ”“0~9”11个字符,共88
CM: MOV R5,#10  ;每屏反复显示10
MOV R3,#8  ;列数
C1: MOV R2,#0  ;取码指针
C8: MOV  P3,#0FFH ;关显示
MOV A,R2  ;
MOVC A,@A+DPTR ;取当前列的显示字码的一个字节
MOV P0,A  ;1~8行控制口
INC R2
MOV A,R1
MOV P3,A  ;送列控制码
    ACALL D5MS  ;显示5MS
RL A  ;列控制码左移,显示下一列
MOV R1,A  
DJNZ R3,C8  ;未显示列,继续
DJNZ R5,C1  ;未显示10次,继续
INC DPL  ;一屏反复显示10次完,字码表初值加1
DJNZ R4,CM  ;88列未移动完,继续
AJMP MAIN  ;88列显示完,返回,重新从“  ”开始显示
D5MS: MOV R6,#10
MOV R7,#248
DJNZ R7,$
DJNZ R6,$-4
RET
TAB: DB 00H,00H,00H,00H,00H,00H,00H,00H  ;
DB 00H,00H,00H,7EH,81H,81H,81H,7EH  ;0
DB 00H,00H,00H,00H,00H,82H,0FFH,80H ;1
DB 00h,00h,00h,0C6H,0A1H,91H,89H,0C6H ;2
DB 00H,00H,00H,42H,81H,81H,99H,66H  ;3
DB 00H,00H,00H,1FH,10H,0FFH,10H,10H ;4
DB 00H,00H,00H,4FH,89H,89H,89H,79H  ;5
DB 00H,00H,00H,7EH,89H,89H,89H,72H  ;6
DB 00H,00H,00H,01H,01H,0F9H,05H,03H ;7
DB 00H,00H,00H,76H,89H,89H,89H,76H  ;8
DB 00H,00H,00H,4EH,91H,91H,91H,7EH  ;9

END

   程序的基本原理:P0口送1~8行扫描码,P3口送列控制码。显示完一列,列控制码左移,显示第2列。一直到列显示完,即显示了一屏。重新从1~8列,反复显示10次,以免字符一闪而过。接着显示下屏,下一屏的取字指针的地址加1,(INC DPL)即该屏第列是上屏的第列,也就是相当于左移一列。直到11个字符( 包括“ ”字符)全部显示后,再从新开始。这样,就实现了移动显示。
    接着再继续说说,怎么将ASM文件转换成HEX文件。
    上面在编辑器里写好ASM文件后,菜单\Source\Define Code Gereration Tools,按对话框填写,点OK。菜单\Source\Build All,
击,编译完成。接着,左键再右键,在原理图内的单片机属性里加载HEX文件,。不过也可以不用左键再右键。可以这样,鼠标箭头移
到单片机,按CTRL+E,也会跳出那个对话框的。
    当然proteus自带的编辑器也有不少遗憾,首先它只支持汇编,不支持C。 另外,有朋友发现它不支持一些特殊的指令,象程序中的DJNZ R7,$ ,它就不识别$,还有其它不识别的。不过,不知为什么,现在我编译时很正常,都没没发现什么问题。所以,很久都不用keil了。连调试也不用keil,可参考我以前的帖子。
    二、16X16

    

16X16移动.gif (77.05 KB)

2007-8-26 17:40


    16X16点阵,是用8*8组成。继续画线路。
    为了实现左移,仍用逐列扫描。与8X8 不同的是,16X16点阵是先显示1~8列(左半部上下8X8LED)再显示9~16列(右半部上下28X8LED),这样,左上下的列接COL0~7,右上下列接COL8~15,即左(右)半上下列的个引脚并联。而左(右)半的行引脚分别接ROW0~15,即左右行引脚并联。
    先在编辑区放置一个8X8,加上终端,接好终端和各引脚。再用复制工具 

复制.jpg (3.52 KB)

2007-8-26 17:40



复制8X8(包括终端、连线),成16X16 点阵。用PAT工具分别给各个终端加上网络标号。动画如下:
    

16X16制作.gif (392.27 KB)

2007-8-26 17:40


    16X16LED点阵做好 。
    程序与8X8不同的是,因为每个显示码只有位,而点阵是16位,所以先送第列上半的显示码,取码指针加1,再送第列下半显示码,取码指针再加。而一屏(16X16点阵)显示完后,字码表初值应加2,使本屏相当于上一屏左移一列,实现向左流动。
程序如下 :
;16X16LED点阵流动显示
;逐列、逆向(低位开始)扫描
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN: MOV DPTR,#TAB ;字码表初址赋值 
MOV R1,#00H  ;列控制码
MOV R3,#16  ;列数
MOV R4,#96  ;移动“ ”单片机仿真”6个字符,共96
CM: MOV R5,#5  ;每屏反复显示5
MOV R3,#16  ;列数
C1: MOV R2,#0  ;取码指针
C16: MOV P0,#00H
MOV P2,#00H  ;关显示 
CLR P3.0
MOV A,R2  
MOVC A,@A+DPTR ;取当前列显示字码的第一个字节
MOV P0,A  ;1~8行控制口
INC R2
MOV A,R2
MOVC A,@A+DPTR ;取当前列的显示字码的第二个字节
MOV P2,A  ;9~15行控制口
INC R2
MOV P1,R1  ;送列控制码
INC R1
    ACALL D1MS  ;显示1MS
ACALL D1MS
DJNZ R3,C16
MOV R3,#16
DJNZ R5,C1  ;未显示5次,继续
INC DPTR  ;一屏反复显示5次完,字码表初值加2
INC DPTR
DJNZ R4,CM  ;96列未移动完,继续
AJMP MAIN  ;96列移动完,返回,重新从“  ”开始显示
D1MS: MOV R6,#2
MOV R7,#248
DJNZ R7,$
DJNZ R6,$-4
RET
TAB: DB 000H ,000H ,000H ,000H ,000H ,000H ,000H ,000H ,000H ,000H ,000H ,000H ,000H ,000H ,000H ,000H ;
DB 000H ,000H ,000H ,000H ,000H ,000H ,000H ,000H ,000H ,000H ,000H ,000H ,000H ,000H ,000H ,000H ;" ", 
DB 000H ,000H ,000H ,008H ,000H ,008H ,0E0H ,008H ,0F4H ,00DH ,054H ,005H ,0F4H ,07FH ,0F8H ,07FH ;
DB 01EH ,005H ,0FEH ,005H ,0FAH ,006H ,010H ,002H ,000H ,006H ,000H ,004H ,000H ,000H ,000H ,000H ;"",0
DB 000H ,000H ,000H ,000H ,000H ,010H ,000H ,01CH ,0FCH ,00FH ,0FCH ,003H ,040H ,002H ,040H ,002H ;
DB 07EH ,07FH ,03EH ,07FH ,020H ,000H ,020H ,000H ,000H ,000H ,000H ,000H ,000H ,000H ,000H ,000H ;"",1
DB 000H ,008H ,040H ,00CH ,040H ,006H ,0DCH ,03FH ,0FEH ,03FH ,022H ,011H ,020H ,01DH ,0F0H ,00FH ;
DB 0F0H ,003H ,0F0H ,00FH ,0F0H ,01FH ,010H ,010H ,000H ,01CH ,000H ,01CH ,000H ,010H ,000H ,000H ;"",2
DB 000H ,001H ,080H ,001H ,0C0H ,000H ,0F0H ,03FH ,0FCH ,03FH ,04CH ,018H ,040H ,00CH ,040H ,027H ;
DB 0CCH ,063H ,0ECH ,079H ,028H ,01FH ,020H ,007H ,020H ,000H ,020H ,000H ,000H ,000H ,000H ,000H ;"仿",3
DB 000H ,000H ,000H ,010H ,000H ,098H ,000H ,0C8H ,0E8H ,06FH ,0E8H ,03FH ,07CH ,01BH ,07EH ,00AH ;
DB 0E6H ,03FH ,0E4H ,07FH ,004H ,06CH ,000H ,004H ,000H ,004H ,000H ,000H ,000H ,000H ,000H ,000H ;"",4
END
    
    三、24X24 

       

24X24移动.gif (132.36 KB)

2007-8-26 17:40


       24X24点阵是由98X8LED点阵组成,组成方法同16点阵。  
       扫描原理仍采用逐列扫描。由于24行、24列,硬件有所不同。为了方便,由P0P2P3口逐列输出本列的行扫描控制码,共24位。列控制由138三八译码器输出。具体如何实现,这里就不再赘述,大家可参考上传附件中的设计文件和汇编文件。
    文中三个点阵仿真均由proteus6.9SP4通过,上传附件包括三个仿真的DSNASMHEX文件。
    另外,说明一点,8X8点阵字模是我自己作的。而汉字字模是根据 sxjwqx 朋友的帖子《迄今用过的最好的字模提取软件》
http://www.proteus.com.cn/viewthread.php?tid=10535&page=1#pid116090    里下载的软件作成。点阵格式:阴码,取模方式:逐列式,取模走向:逆向。软件非常好用, 这里再次感谢sxjwqx   的提供。

回复评论 (7)

楼主说的很详细,谢谢楼主!
点赞  2011-12-19 09:25
为什么 我的图片都不显示呢
楼主要以附件上传的啊
不会是我电脑问题把
点赞  2011-12-19 10:09
没有图!
新人上道,努力学习!
点赞  2012-8-20 10:43
看不到图啊 好可惜哦!
点赞  2012-8-24 17:48
楼主说的很详细,谢谢楼主
点赞  2014-5-17 08:08
引用: 风格热锅上 发表于 2014-5-17 08:08
楼主说的很详细,谢谢楼主

奇了怪了,没有图也看清啦,,哪里好不妨说说
点赞  2014-5-17 08:59
很不错
点赞  2014-7-21 11:27
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复