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。

51单片机如何控制八个数码管,进行动态扫描
这个是4位数码管,P0口接赋值端,P1口低四位接4个数码管的选通端,你要八个的话就把P1口的高四位再接到另外四个数码管的片选端,程序仿照就可以了

51单片机显示八位数码管的C语言程序
1、最开始,我们先打开keil。2、接着,我们要定义好库函数,想要实现动态数码灯,这个步骤是很重要的。3、接着,我们加上一条循环语句。4、最后,我们把先前定义的延时语句delayms写好。5、最后,点击这里进行编译,生成一个hex文件。6、如果这里无错误警告的话,就说明我们的程序写对了,那我们就可以...

51单片机控制8个数码管并显示1-8
数码管段选连接到单片机P0口,位选连接到P2口 ORG 0000h MAIN:CALL DISPLAY AJMP MAIN DISPLAY:MOV R0,#0 MOV R1,#0x01 MOV DPTR,#TAB LOOP:INC R0 MOV A,R0 MOVC A,@A+DPTR MOV P0,#0 ;消隐 MOV P0,A ;送段码 CALL DELAY MOV A,R1 ;送位码 RL A ;移位 MOV P2,A MOV ...

51单片机,8位共阴极数码管动态显示12位学号,按键调整走动速度,C语言的...
sbit k_add = P3^1;sbit k_sub = P3^4;unsigned char code SEG7[] = { 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90, 0xff};unsigned char DISP_BUFF[] = { 10, 10, 10, 10, 10, 10, 10, 10,1, 3, 9, 2, 5, 8, 0, 7, 4, 6, 3, 2,10, 10,...

51单片机锁存器控制数码管显示时钟
一种是静态扫描,二是动态扫描。静态的太耗资源,一般很少用,除非资源足够用。多数都是用动态扫描的。动态扫描的原理是:首先有八个数据线,分别连接到七段数码管的七个位,和小数点位。然后就是有一批使能信号线。假如你有八个数码管,那就需要八个使能信号线。同一个时刻,其实只有一个数码管在亮...

怎样用一个单片机控制8个数码管
如果是一个8段数码管的8个段码,直接连接8个I\/O到对应的8个段的控制端即可,通过I\/O输出高低电平控制对应的段码。如果是8个数码管,则,每个数码管的8个断码控制线并联总线到I\/O,作为数据控制。每个数码管的使能端口单独控制,或者使用进位模式,做选择控制哪一个数码管显示。

用51单片机八位共阴极数码管三极管,设计单片机动态扫描显示系统,八位...
include <reg51.h> unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};void show();void delay();void main(){ while(1)show();} void show(){ unsigned char i;for(i=0;i<8;++i){ P0=table[i+1];P2=~(0x01<...

51单片机怎么用汇编语言让8个数码管不停的 显示0-9(最好要接74HC595...
要数码管不停显示,只能用动态显示,但是要看是单片机接数码管是哪个端口,还有是直接接在数码管上还是中间有寄存器,不知74HC595是接在哪的

数码管显示的动态扫描原理
动态显示驱动:数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I\/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,...

基于51单片机利用八个数码管花样显示如下
其实很简单,你把1--8对应的共阴极或共阳极的编码寻在一个数组里(C语言)或者表里(汇编语言查表法),在P0口和P2口接上8个7段数码管,P2口做位选,P0口做段选,每次从表中查询你要显示的数据的编码写到P0口,再把你要在哪一个数码管上显示写到P2口(比如位选为低电平有效,向P2口写入0xFE...

相似回答