我想做个16*16的LED点阵,用51单片机控制,请问是否要外加电压电源已达到亮度,是不是还要加上拉电阻。

我还想问下,怎么才能排除在组成的图形中的“鬼影”,就是排除闪烁的暗灯。请高手详细解答,最好有设计例子。
本人最近做了个模拟实验,用51单片机控制8*8led,用P2端的高电平控制行,用P1端的低电平控制列,并且用了锁存器控制行,但就是在做实验时倒数第2行和倒数第3行,不亮。请高手解答。程序如下:

#include<reg52.h>
#include<intrins.h>
#define unchar unsigned char
#define unint unsigned int
unchar code tab[]={0xf3,0xf1,0xf3,0xf3,0xf3,0xf3,0xe1,0xe1};//为“1”字模图形
unchar code tab1[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//行扫描的数组
unint j,k,i;
sbit kong=P3^6;//锁存器的控制
unchar *p;
void delay(unchar t)
{
while(t--);
}
void main()
{
kong=0;
while(1)
{ for(j=0;j<8;j++)
{

for(k=0;k<200;k++)
{

for(i=0;i<8;i++)
{
*p=_crol_(tab[i],j);
P1=*p;
kong=1;
P2=tab1[i];
kong=0;
delay(100);
P1=0XFF;
P2=0X00;
}
}

}

}

}
P2^5和P2^6控制的行不

16*16点阵用51单片机控制时可以选595或者4094,如果是单个字还可以用三极管作为功率驱动,若是用595的话就不用外加功率驱动电路了,只要在扫描端用三极管隔离154就行(可加限流电阻在三极管基极),同时具有放大作用,若是在数据端用的是三极管作为驱动的话要加上拉电阻才能提高亮度,一般是4.7K或者5.1K的上拉电阻,所加上拉电阻若在4K以上则可以不用基极限流电阻(防止损坏单片机),这样亮度会很高.至于鬼影,我同意一楼,或者在程序中把扫描输出放在数据更新之前,这样也可以消除,用595最容易消除鬼影,对595清零一次就OK,或许关一下595的输出使能就行,希望对你有帮助
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-05-21
16×16点阵的动态显示电流也不过就300-400毫安,一般比比不必另外再加电源.
关于“鬼影”问题有可能是你编写的显示驱动子程序过与简单了.没有考虑扫描换行期间的显示状态问题,就是要在输出第二行显示代码之前要加入关闭显示的指令就不会有“鬼影”了

#include<reg52.h>
#include<intrins.h>
#define unchar unsigned char
#define unint unsigned int……………………
你这个是什么语言啊?最好不用高级语言,直接用汇编语言编写显示驱动程序,这样才可以用debug对每条指令的执行结果进行测试以找出故障点,查找范围能精确到具体某个芯片的某个脚。用高级语言就没法调试了。

启动MCS-51开发系统中的debug程序逐条执行显示驱动程序的每条指令,每当执行完一条端口写入指令后,用万用表测量一下对应端口及其后续电路的输出状态是否与写入的数据相符,如果有某一点不相符就说明那部分电路有故障了。
第2个回答  2009-05-19
鬼影是很好消除的,只要在更新的时候先把所有的端口关闭一下就可以了
第3个回答  2009-05-19
单片机采用MSC-51或其兼容系列芯片,采用24MHZ或更高频率晶振,以获得较高的刷新频率,时期显示更稳定。单片机的串口与列驱动器相连,用来显示数据。P1口低4位与行驱动器相连,送出行选信号;P1.5~P1.7口则用来发送控制信号。P0口和P2口空着,在有必要的时候可以扩展系统的ROM和RAM。
2列驱动电路
列驱动电路有集成电路74HC595构成。它具有一个8位串入并出的移位寄存器和一个8位输出锁存器的结构,而且移位寄存器和输出锁存器的控制是各自独立的,可以实现在显示本行列数据的同时,传送下一行的列数据,既达到重叠处理的目的。
74HC595的外形及内部结构如图3所示。它的输入侧有8个串行移位寄存器,每个移位寄存器的输出都连接一个输出锁存器。引脚SI是串行数据的输入端。引脚SCK是移位寄存器的移位时钟脉冲,在其上升沿发生移位,并将SI的下一个数据打入最低位。
移位后的各位信号出现在各移位寄存器的输出端,也就是输出锁存器的输入端。RCK是输出锁存器的打入信号,其上升沿将移位寄存器的输出打入输出锁存器。引脚G是输出三态门的开放信号,只有当其为低时锁存器的输出才开放,否则为高组态。SCLR信号是移位寄存器清零输入端,当其为低时移位寄存器的输出全部为零。由于SCK和RCK两个信号是互相独立的,所以能够做到输入串行移位与输出锁存互不干扰。芯片的输出端为QA~QH,最高位QH可作为多片74HC595级联应用时,向上一级的级联输出。但因为QH受输出锁存器的打入控制,所以还从输出锁存器前引出QH,作为与移位寄存器完全同步的级联输出。

QB 1 16 Vcc
QC 2 15 QA
QD 3 14 SI
QE 4 13 G
QF 5 12 RCK
QG 6 11 SCK
QH 7 10 SCLR
GND 8 9 QH

图3. 74HC595外形及引脚

4.1.3行驱动器
单片机P1口低4位输出的行号经4/16线译码器74LS154译码后生成16条行选通信号线,再经过驱动器驱动对应的行线。一条行线上要带动16列的LED进行显示,按每一LED器件20MA电流计算,16个LED同时发光时,需要320MA电流,选通三极管8550作为驱动管可满足要求。
4.2.系统程序的设计
显示屏软件的主要功能是向屏体提供显示数据,并产生各种控制信号,使屏幕按设计的要求显示。根据软件分层次设计的原理,可以把显示屏的软件系统分为两层;第一层是底层的显示驱动程序,第二层是上层的系统应用程序。显示驱动程序负责向屏体送显示数据,并负责产生行扫描信号和其他控制信号,配合完成LED显示屏的扫描显示工作。显示驱动器程序由定时器T0中断程序实现。系统应用程序完成系统环境设置(初始化)、显示效果处理等工作,由主程序来实现。
从有利于实现较复杂的算法(显示效果处理)和有利于程序结构化考虑,显示屏程序适宜采用C语言编写。
4.2.1显示驱动程序
显示驱动程序在进入中断后首先要对定时器T0重新赋初值,以保证显示屏刷新率的稳定,1/16扫描显示屏的刷新率(帧频)计算公式如下:

刷频率(帧频)=1/16×T0溢出率

=1/16×f/12(65536-t)

其中f位晶振频率,t为定时器T0初值(工作在16位定时器模式)。
然后显示驱动程序查询当前燃亮的行号,从显示缓存区内读取下一行的显示数据,并通过串口发送给移位寄存器。为消除在切换行显示数据的时候产生拖尾现象,驱动程序先要关闭显示屏,即消隐,等显示数据打入输出锁存器并锁存,然后再输出新的行号,重新打开显示。图4为显示驱动程序(显示屏扫描函数)流程图。

4.2.2系统主程序
本文设计的系统软件能使系统在目测条件下LED显示屏各点亮度均匀、充足,可显示图形和文字,显示图形和文字应稳定、清晰无串扰。图形或文字显示有静止、移入移出等显示方式。
系统主程序开始以后,首先是对系统环境初始化,包括设置串口、定时器、中断和端口;然后以“卷帘出”效果显示图形,停留约3s;接着向上滚动显示“我爱单片机”这5个汉字及一个图形,然后以“卷帘入”效果隐去图形。由于单片机没有停机指令,
所以可以设置系统程序不断的循环执行上述显示效果。
单元显示屏可以接收来自控制器(主控制电路板)或上一级显示单元模块传输下来的数据信息和命令信息,并可将这些数据信息和命令信息不经任何变化地再传送到下一级显示模块单元中,因此显示板可扩展至更多的显示单元,用于显示更多的显示内容。

5性能分析与总结
5.1 性能分析
LED显示屏硬件电路只要硬件质量可靠,引脚焊接正确,一般无需调试即可 正常工作。软件部分需要调试的主要有显示屏刷新频率及显示效果两部分。显示屏刷新率由定时器T0的溢出率和单片机的晶振频率决定,表5.1给出了实验调试时采用的频率及其对应的定时器T0初值。

表5.1 显示平刷新率与T0初值关系表(24MHz晶振)

刷新率 25 50 62.5 75 85 100 120
T0初值 0Xec78 0Xf63C 0Xf830 0xF97E 0XFA42 0XFB1E 0xFBEE

从理论上来说,24Hz以上的刷新频率就能看到稳定的连续的显示,刷新率越高,显示越稳定,同时刷新频率越高,显示驱动程序占用的CPU时间越多。试验证明,在目测条件下刷新频率40Hz一下的画面看起来闪烁较严重,刷新频率50Hz以上的已基本察觉不出画面的闪烁,刷新频率达到85Hz以上时再增加画面闪烁没有明显的改善。
显示效果处理程序的内容及方法非常广泛,其调试过程在此不作具体讨论,读者可以照源程序自行分析。
这个方案设计的16x16的点阵LED图文显示屏,电路简单,成本较低,且较容易扩展成更大的显示屏;显示屏各点亮度均匀、充足;显示图形或文字稳定、清晰无串扰;可用静止、移入移出等多种显示方式显示图形或文字。
5.2 总结
本文设计的一个室内用16x16的点阵LED图文显示屏,能够在目测条件下LED显示屏各点亮度均匀、充足,可显示图形和文字,显示图形和文字应稳定、清晰无串扰。图形或文字显示有静止、移入移出等显示方式。本系统具有硬件少,结构简单,容易实现,性能稳定可靠,成本低等特点。
总结本文的研究工作,主要做了下面几点较突出的工作:
一、通过查阅大量的相关资料,详细了解了LED的发光原理和LED显示屏的原理,了解了LED的现状,清楚地了解了LED显示屏与其它显示屏相比较有那些
优点,明确了研究目标。
二,本文设计的LED显示屏能够实现在目测条件下LED显示屏各点亮度均匀、充足,可显示图形和文字,显示图形和文字应稳定、清晰无串扰。图形或文字显示有静止、移入移出等显示方式。
三,文章给出了系统具体的硬件设计方案,硬件结构电路图,软件流程图和具体汇编语言程序设计与调试等方面。
四,在这次毕业设计的过程中学会了 Protel 99se 的基本使用,感到Protel 99se 对自动化专业的同学来说是一门很有用的课程。
五,通过这次毕业设计,重新复习并进一步学习了MCS-51;熟练掌握了WORD软件的使用。
六,存在缺陷:没有考虑抗干扰的问题。本回答被提问者采纳
第4个回答  2009-05-19
用锁存器之类的就行

【51单片机系列】proteus中创建16x16LED点阵
本文主要介绍了如何在Proteus8.6中创建16x16 LED点阵,以及如何使用8x8点阵制作16x16点阵。首先,文章详细介绍了在Proteus中测试8x8点阵的电流方向和行列控制接口的方法,结果表明红色点阵电流方向为上->下,蓝色、绿色和橘色点阵为下->上,红色点阵接口为上列下行,其他颜色点阵为上行下列。其次,文章提供了...

我用51系列单片机做16*16汉字点阵,但是点阵显示偏暗怎么办?我想是单片 ...
一般都用595来做,8行一个595 需要2个595送数据;再用2个595当列扫描,共需要4个595 就可以完成;另外,你也可以用三极管来驱动行,但是这样会造成行列显示亮度不一致,但绝对比用IO直接驱动要好的多,单片机的驱动电流是很弱的,即便是加上拉电阻也不足以驱动点阵 ...

...了,我想要做一个16X16LED的点阵,是用51单片机的,希望能给出程序,电...
51单片机就是0和1的问题,为了更容易进步请先做8*8的点阵,具体怎么做很简单,就是看你有没有心情去想

求51单片机控制的16*16点阵代码
\/\/这是16*16点阵 显示一个字的代码。。。 临时写的。。。include <reg52.h> include <intrins.h> define IOdata \/\/数据口定义 define uchar unsigned char sbit row0 \/\/0行 定义 sbit row1 \/\/1行 定义 sbit col0 \/\/0列 定义 sbit col1 \/\/1列 定义 uchar code word_tab[][32]= {...

用51单片机做16*16点阵需要哪些材料
好吧说正经的。。首先最基本的要求是点阵驱动。因为16x16,要用32个I\/O口,对于89S51单片机这是不现实的。所以需要I\/O口扩展。I\/O扩展有很多方法,比较常用的是用四个锁存器(74HC573),把一组八个I\/O口的数据在四个时钟周期内分别锁存在四个锁存器里。这是最简单最笨的方法(用12个IO口),...

求51单片机16*16的点阵汉字移动原理
首先是让汉字能够静态显示,显示一段时间后(时间可能很短)把所显示的汉字编码移一位重新送出,比如要向左移动,原本显示在第一列的数据就丢弃了,把第二列的数据送到第一列上显示,依次移动显示一屏,显示一段时间再进行一次移动,人们看起来也就是移动的了。 还搞不明白的话,可以晚上问我。

基于51单片机的16x16 led点阵显示屏设计原理与电路图
MOV R4,#16 MOV DPTR,#WORDTAB START:JNB P1.0,SLOW JNB P1.1,SOON MOV R1,#00H SCAN8:MOV A,R1 SWAP A MOV P3,A SWAP A INC A MOV R1,A MOV A,R2 MOVC A,@A+DPTR CJNE A, #0DDH,NEXT AJMP MAIN NEXT:MOV P2,A INC R2 MOV A,R2 MOVC A,@A+DPTR MOV P0,A INC ...

51单片机16*16点阵4个汉字LED屏显示 请帮忙修改下程序,其他都不变...
共16行,第三次中断,从行缓存头上开始,每行送18个BIT,共16行,。。。依此类推。第九次中断,更新缓存字节的内容,每行送16个BIT。每次送的BIT超过了实际显示的象素,这样从显示的效果看起来就是字在向左移动。与之对应,如果先送24个BIT,然后,23,然后22,则显示效果是右移 ...

为什么我的51单片机点阵数码管显示爱心图形,而是全亮
都是低电平,所以全亮。并没有实现按列(或按行)扫描。就是仿真图画得太复杂了,又用了总线加标网络标号,而网络标号又不对。下图,虽然是16*16的点阵,但主要说明,点阵屏的行,列引脚都直接与锁存器连接,不要三极管,不要电阻,越简单越好。不要用实物的驱动想法画仿真图,反倒出错。

51单片机用汇编语言驱动16*16点阵显示“机电工程系”汉字
硬件线路没要求的话,简单 ;16X16LED点阵流动显示 ;逐列、逆向(低位开始)扫描 ORG0000H AJMPMAIN ORG0030H MAIN:MOVDPTR,#TAB;字码表初址赋值 MOVR1,#00H;列控制码 MOVR4,#96;移动" "及"机电工程系"6个字符,共96列 CM:MOVR5,#5;每屏反复显示5次 MOVR3,#16;列数 C1:MOVR2,#0;取...

相似回答