您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 酒店餐饮 > 由浅入深之8X8,16X16,24X24LED点阵流动显示
由浅入深之8X8,16X16,24X24LED点阵流动显示【转】点阵,流动显示,由浅入深分享到:新浪微博QQ空间开心网人人网一直以来,对LED点阵显示很感兴趣,特别是流动点阵显示。论坛里有不少例子,可是在我的电脑上大多无法正常运行。有的一运行就S机,能运行的,也是字符不清。于是,自己动手。先试作了8X8点阵。8X8的点太少,只适合数字显示,从0~9流动,效果还不错。有了8X8的经验,对流动显示的原理已经了解,又试了16X16的,觉得也不难。但16X16的点仍嫌少了,又做了个24X24的,汉字漂亮。动画可能效果差些,软件运行显示效果好多了。一、8X8初学点阵仿真,常点不亮LED。首先,可能是点阵的极性没有正确的接线。下面的简单方法可判断点阵的逻辑引脚。运行proteus,在编辑区里放上一个8X8LED,如MATRIX-8x8-GREEN。在某些引脚上接上电源和地,试试能不能点亮。8X8默认是上下引脚,按习惯接法,上面接电源,下面接地,不亮(图左)。用左下角垂直翻转工具,垂直翻转.jpg(2.97KB)2007-8-2617:40垂直翻转,再接上电源和地,就可以点亮了(图右)。收藏分享0顶踩有问题?点我哦!CEPARK51单片机学习板V4.0隆重推出,配彩屏电机遥控点阵SD卡,USB下载笔记本也可以用,配套50课精讲课程带你从零开始学习单片机!回复引用报告使用道具yubo20072#发表于2008-6-3014:40|只看该作者如果是做左移显示,可再左旋90°。如图:版主帖子685精华9积分7067在线时间236小时最后登录2011-3-1这里可看到,左边引脚是行控制,右边引脚是列控制。然后就可以画线路图了,点阵就保持上面那个方向。由于点阵引线较多,特别是以后做24X24点阵,所以布线方式不用连线,而用终端加上网络标号,这样可以使画面简洁明了。连续标号的快捷画法,我以前有帖子介绍过。这里还是再啰嗦一下。proteus有一个很好用的PAT(PropertyAssignmentTool),即属性分配工具。PAT工具.jpg(4.08KB)2007-8-2617:40可以用来做快捷标注,当然还可以用作其它操作。有问题?点我哦!CEPARKUSB开发板V2.0隆重推出,能与《圈圈教你玩USB》配套使用,学习USB开发的朋友赶快选购了!回复引用报告使用道具TOPyubo2007版主帖子685精华9积分7067在线时间236小时最后登录2011-3-13#发表于2008-6-3014:41|只看该作者再连上其它接线,一个线路图很快就可以作好。下面,就可以写程序的源文件了。点击菜单\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,$,它就不识别$,还有其它不识别的。不过,不知为什么,现在我编译时很正常,都没没发现什么问题。所以,很久都不用keil了。连调试也不用keil,可参考我以前的帖子。二、16X16有问题?点我哦!CEPARKAVRAtmega128单片机开发板V1.0隆重推出,1块开发板+3种下载器+配套元件+资料DVD光盘+数据下载线,学习电子开发的朋友赶快选购了!回复引用报告使用道具TOPyubo2007版主帖子685精华9积分7067在线时间236小时最后登录4#发表于2008-6-3014:44|只看该作者16X16点阵,是用4个8*8组成。继续画线路。为了实现左移,仍用逐列扫描。与8X8不同的是,16X16点阵是先显示1~8列(左半部上下2个8X8LED)再显示9~16列(右半部上下2个8X8LED),这样,左上下的列接COL0~7,右上下列接COL8~15,即左(右)半上下列的8个引脚并联。而左(右)半的行引脚分别接ROW0~15,即左右行引脚并联。先在编辑区放置一个8X8,加上终端,接好终端和各引脚。再用复制工具复制.jpg(3.52KB)2007-8-2617:40复制3个8X8(包括终端、连线),成16X16点阵。用PAT工具分别给各个终端加上网络标号。动画如下:2011-3-1有问题?点我哦!CEPARKCAN总线开发板B套餐隆重推出,开发主板+串口下载器+配套光盘+配套线,学习CAN总线开发的朋友赶快选购了!回复引用报告使用道具TOPyubo2007版主帖子685精华9积分5#发表于2008-6-3014:47|只看该作者16X16LED点阵做好。程序与8X8不同的是,因为每个显示码只有8位,而点阵是16位,所以先送第1列上半的显示码,取码指针加1,再送第1列下半显示码,取码指针再加1。而一屏(16X16点阵)显示完后,字码表初值应加2,使本屏相当于上一屏左移一列,实现向左流动。程序如下:;16X16LED点阵流动显示;逐列、逆向(低位开始)扫描ORG0000HAJMPMAINORG0030HMAIN:MOVDPTR,#TAB;字码表初址赋值MOVR1,#00H;列控制码MOVR3,#16;列数MOVR4,#96;移动“”及“单片机仿真”6个字符,共96列CM:MOVR5,#5;每屏反复显示5次MOVR3,#16;列数C1:MOVR2,#0;取码指针C16:MOVP0,#00HMOVP2,#00H;关显示CLRP3.0MOVA,R2MOVCA,@A+DPTR;取当前列显示字码的第一个字节MOVP0,A;送1~8行控制口INCR2MOVA,R2MOVCA,@A+DPTR;取当前列的显示字码的第二个字节MOVP2,A;送9~15行控制口INCR2MOVP1,R1;送列控制码INCR1ACALLD1MS;显示1MSACALLD1MSDJNZR3,C16MOVR3,#167067在线时间236小时最后登录2011-3-1DJNZR5,C1;未显示5次,继续INCDPTR;一屏反复显示5次完,字码表初值加2INCDPTRDJNZR4,CM;96列未移动完,继续AJMPMAIN;96列移动完,返回,重新从“”开始显示D1MS:MOVR6,#2MOVR7,#248DJNZR7,$DJNZR6,$-4RETTAB:DB000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H;DB000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H;,DB000H,000H,000H,008H,000H,008H,0E0H,008H,0F4H,00DH,054H,005H,0F4H,07FH,0F8H,07FH;DB01EH,005H,0FEH,005H,0FAH,006H,010H,002H,000H,006H,000H,004H,000H,000H,000H,000H;单,0DB000H,000H,000H,000H,000H,010H,000H,01CH,0FCH,00FH,0FCH,003H,040H,002H,040H,002H;DB07EH,07FH,03EH,07FH,020H,000H,020H,000H,000H,000H,000H,000H,000H,000H,000H,000H;片,1DB000H,008H,040H,00CH,040H,006H,0DCH,03FH,0FEH,03FH,022H,011H,020H,01DH,0F0H,00FH;DB0F0H,003H,0F0H,00FH,0F0H,01FH,010H,010H,000H,01CH,000H,01CH,000H,010H,000H,000H;机,2DB000H,001H,080H,001H,0C0H,000H,0F0H,03FH,0FCH,03FH,04CH,018H,040H,00CH,040H,027H;DB0CCH,063H,0ECH,079H,028H,01FH,020H,007H,020H,000H,020H,000H,000H,000H,000H,000H;仿,3DB000H,000H,000H,010H,000H,098H,000H,0C8H,0E8H,06FH,0E8H,03FH,07CH,01BH,07EH,00AH;DB0E6H,03FH,0E4H,07FH,004H,06CH,000H,004H,000H,004H,000H,000H,000H,000H,000H,000H;真,4END三、24X24有问题?点我哦!CEPARK电子园5
本文标题:由浅入深之8X8,16X16,24X24LED点阵流动显示
链接地址:https://www.777doc.com/doc-6405693 .html