四位数码管如何显示

2023-01-16

我们做一个课程设计需要用到四位数码管显示。在网上找到四位数码管的引脚图。却不知道如何使用。是需要编程来驱动四位数码管显示么?可是我们没学过编这个程序。请大师讲解~~使用方法

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

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

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

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

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

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

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

#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;t1>0;t1--)

  for(y=110;y>0;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);

参考知识1 这个还是很初级的,驱动一个你会吧,就是如果共阴的,给某一段高电平就点亮,共阳的相反,驱动四个就是用查询方式点亮,当查询的速度足够快,人看上去就是四个同时点亮了,其他的有什么不懂的可以给我留言本回答被提问者和网友采纳 参考知识B 图上管脚定义标的很详细,不知你想要数码管显示什么,
相似知识
如何驱动四位七段数码管? 参考知识1用三极管驱动啊,只用动态扫描或者静态显示都行
如何使用四位数码管和它的工作原理? 参考知识1http://www.crystalradio.cn/bbs/viewthread.php?tid=26564&extra=&page=2有讲多位数码管的,要注册才可以看数码管是一种半导体发
数码管显示怎么理解高四位和低四位 数码管有很多种,举个例子,我认识的数码管是分位码和段码的,高四位是段码,低四位是位码,分别是选择位段,位控制哪一位的数字亮,其余暗。段是控制已经选择的那一位,哪些位置发亮,形成显示红色数字。参考知识1
四位七段LED数码管显示 参考知识1引脚1-7是让他那7段显示的,分别对应一个段10-13是片选1:e2:d3:Ca4:c5:Dp6:b7:a8:Ca9:f10:g 参考知识B循环P1输出1的编码,13脚打开,延时;P1输出2
四位共阳极数码管如何设置位选c语言编码 如果是AT89***或者STC**单片机,如图依图完整的控制代码没时间弄你可以百度,资源多的是,如果只想知道数码位的控制方法可以说一下,根据你图示,只要在三极管的基极加上低电平就可以给相应的数码位加电
两个 四位七段LED数码管该如何连接 他们之间不是直接连在一起的,是通过单片机联系起来的,每一个数码管有4个位选信号。其他的一些口则连接在l\o口上。。参考知识1除四个位选信号引脚不要相连,其他的相同位置引脚两两连起来.再分别连到
跪求单片机实验四位七段数码管显示程序!!! 我给你一个数码管代码,自己修改:/********************************************************************************标题:
动态四位七段共阳极数码管显示实验如图所示,为啥要在abcdefg哪里接几个电阻,解释一下作用 图中一排的8个电阻是上拉电阻。因为51单片机的P0口是“准”双向口,拉电流(输出电流)的能力不足,所以在实际使用时一般需要添加上拉电阻,这样在输出高电平的时候才能保证有足够的电流提供给负载。好好学习天