×

4路数码动态显示

4路数码动态显示(四位动态数码管显示)

admin admin 发表于2023-04-05 05:26:07 浏览55 评论0

抢沙发发表评论

本文目录一览:

四位数码管如何显示

使用LED时,要注意区分这两种不同的接法。为了显示数字或字符,必须对数字或字符进行编码。七段数码管加上一个小数点,共计8段. 具体看图。

根据你要显示的东西,需要对数码管进行编码,主要是设置 位选(选中哪个数码管显示) 和  段选(数码管显示的具体内容)。

数码管的亮暗就是 发光二极管 导通与截止的过程,参照图。

另外数码管有静态显示和动态显示2种,4位的话一般都是采用动态显示。

动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。-4路数码动态显示

下面给出一个程序你参考下:

/*利用动态扫描和定时器1在数码管上显示出从765432开始以1/10秒的速度往下递减直至765398并保持显示此数,与此同时利用定时器0以500MS速度进行流水灯从上至下移动,当数码管上数减到停止时,实验板上流水灯也停止然后全部开始闪烁,3秒后(用T0定时)流水灯全部关闭、数码管上显示出“HELLO”。到此保持住。(设晶振12MHZ)*/-4路数码动态显示

#include reg52.h

#include intrins.h

#define uchar unsigned char

#define uint unsigned int

sbit dula=P2^6;

sbit wela=P2^7;

uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,

0xf8,0x80,0x90,0x89,0x86,0xc7,0xc0,0xff};//0~9、hello

uchar temp,t0,t1,aa,bb,cc,bai,shi,ge,flag,flag1;

uint shu;

void init();

void display(uchar,uchar,uchar,uchar,uchar,uchar);

void delay(uint z)

{

uint t1,y;

for(t1=z;t10;t1--)

for(y=110;y0;y--);

}

void main()

{

init();

while(1)

{

if(flag1!=1)

display(7,6,5,bai,shi,ge);   //计数

else

display(10,11,12,12,13,14); //保持 hello

}

}

void init()

{

shu=432;

temp=0xfe;

P1=temp;

TMOD=0x11;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

TH1=(65536-50000)/256;

TL1=(65536-50000)%256;

EA=1;

ET0=1;

ET1=1;

TR0=1;

TR1=1;

}

void timer0() interrupt 1

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

t0++;

if(flag!=1)//说明计数没有结束

{

if(t0==10)

{

t0=0;

temp=_crol_(temp,1);

P1=temp;

}

}

else

{

if(t0%10==0)//每500ms闪一次500*10(正好闪3次)

P1=~P1;

if(t0==60)//3miao 后关闭灯

{

TR0=0;

P1=0xff;

flag1=1;

}

}

}

void timer1() interrupt 3

{

TH1=(65536-50000)/256;

TL1=(65536-50000)%256;

t1++;

if(t1==2)

{

t1=0;

shu--;

bai=shu/100;

shi=shu%100/10;

ge=shu%10;

if(shu==398)

{

TR0=0;//定时器关闭

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

TR0=1;//重启定时器

flag=1;//标志位定义

t0=0;//t0清零

P1=0xff;//关闭流水灯

TR1=0;//定时器关闭

}

}

}

void display(uchar aa,uchar bb,uchar cc,uchar bai,uchar shi,uchar ge)

{//最高位显7

dula=1;

P0=table[aa];

dula=0;

P0=0x00;

wela=1;

P0=0x01;

wela=0;

delay(1);

//第二位显6

dula=1;

P0=table[bb];

dula=0;

P0=0x00;

wela=1;

P0=0x02;

wela=0;

delay(1);

//第三位显5

dula=1;

P0=table[cc];

dula=0;

P0=0x00;

wela=1;

P0=0x04;

wela=0;

delay(1);

dula=1;

P0=table[bai];

dula=0;

P0=0x00;

wela=1;

P0=0x08;

wela=0;

delay(1);

dula=1;

P0=table[shi];

dula=0;

P0=0x00;

wela=1;

P0=0x10;

wela=0;

delay(1);

dula=1;

P0=table[ge];

dula=0;

P0=0x00;

wela=1;

P0=0x20;

wela=0;

delay(1);

}

如何利用单片机让4位数码管显示?

程序如下(用的是STC89C52芯片):

#includereg52.h//52系列单片机头文件

#define uchar unsigned char

#define uint unsigned int

uint x,y;

uchar code table[]={

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};//共阴极数码管编码

void display(uchar,uchar,uchar,uchar);//声明子函数

void delay(int);//声明子函数

void main()

{

while(1)

{

display(1,2,3,4);//主程序始终调用数码管显示子程序

}

}

void display(uchar a,uchar b,uchar c,uchar d)

{

P2=0xef;

P0=table[a];//给第一个数码管送"a"

delay(1);//延时1ms

P2=0xdf;

P0=table[b];//给第二个数码管送"b"

delay(1);//延时1ms

P2=0xbf;

P0=table[c];//给第三个数码管送"c"

delay(1);//延时1ms

P2=0x7f;

P0=table[d];//给第三个数码管送"d"

delay(1);//延时1ms

}

void delay(uint z)//延时子函数

{

uint x,y;

for(x=z;x0;x--)

for(y=110;y0;y--);

}

扩展资料

led数码管是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。led数码管常用段数一般为7段有的另加一个小数点,还有一种是类似于3位“+1”型。-4路数码动态显示

位数有半位,1,2,3,4,5,6,8,10位等等,led数码管根据LED的接法不同分为共阴和共阳两类,了解LED的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。-4路数码动态显示

参考资料来源:百度百科-数码管

4位数码管动态显示时,每次能显示几个字形码?

4个。

4位数码管动态显示时,每次能显示4个字形码。P0端口接动态数码管的字形码笔段,P2端口接动态数码管的数位选择端,动态显示1234字样。

数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一。