51单片机如何控制八个数码管,进行动态扫描

如题所述

第1个回答  2009-03-25
动态扫描就是给各个数码管依次显示,任意时间只有一个数码管亮,但闪烁的太快了,人眼分辨不出,给人的感觉就是每个数码管都在亮。一般过程就是赋值,开显示,延时,关显示,这是我以前写过的程序
#include <REGX52.H>
main()
{unsigned int i;
while(1)
{P0=0x3f;//个位赋值
P1_0=0;//开显示
for(i=0;i<2;i++);//延时
P1_0=1;//关显示

P0=0x6;//十位
P1_1=0;
for(i=0;i<2;i++);
P1_1=1;

P0=0x5b;//百位
P1_2=0;
for(i=0;i<2;i++);
P1_2=1;

P0=0x4f;//千位
P1_3=0;
for(i=0;i<2;i++);
P1_3=1;}
}
这个是4位数码管,P0口接赋值端,P1口低四位接4个数码管的选通端,你要八个的话就把P1口的高四位再接到另外四个数码管的片选端,程序仿照就可以了
第2个回答  2009-03-25
;以下是共阳数码管简单程序;
p0口接abcdefg,P2口接s0,s1,s2......s7;
软件靠自己啦
如:main:mov r1,#8;
mov r0,#00h;
mov r2,#0feh;
loop:mov p0,r0;送显示数据
inc r0;
mov p2,r2;选通要显示的数码管
lcall delay;
mov a,r2;
rl a;
mov r2,a;
djnz r1,loop;
ajmp main;
delay:mov r7,#245;延时大约1ms
djnz r7,$;
ret
第3个回答  2009-03-25
方法:
p0口各串一只1K电阻,控制8只PNP管作八个共阳数码管驱动(向8只共阳数码管供电),用p1口作段驱动(吸流),......软件会写吧!本回答被网友采纳
第4个回答  2009-03-25
外接74系列驱动电路就行,比如74LS164或74LS138。
相似回答