51单片机之数码管

1.静态数码管原理图

在这里插入图片描述

LED数码管根据LED的不同接法分为两类:共阴和共阳
为了显示数字或字符,必须对数字或字符进行编码。七段数码管加上一个小数点,共计8段。因此为LED显示器提供的编码正好是一个字节。
共阴数码管码表
0x3f , 0x06 , 0x5b , 0x4f , 0x66 , 0x6d
0 1 2 3 4 5
0x7d , 0x07 , 0x7f , 0x6f , 0x77 , 0x7c
6 7 8 9 A B
0x39 , 0x5e , 0x79 , 0x71 , 0x00
C D E F 无显示
静态显示原理
LED显示器工作方式有两种:静态显示方式和动态显示方式。静态显示的特点是每个数码管的段选必须接一个8位数据线来保持显示的字形码。当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。这种方法的优点是占用CPU时间少,显示便于监测和控制。缺点是硬件电路比较复杂,成本较高。
开发板电路图

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
74H573锁存器在这里插入图片描述

  1. OE为使能端,当他为低电平的时候, 锁存器开始工
  2. VCC和GND为电源和地端
  3. LE为锁存端,当LE为高电平的时候,Q0-Q7都跟D0-D7状态一样,当LE为低电平的时候,Q0-Q7都锁存数据,无论D0-D7怎么变化,Q0-Q7都保持锁存之前的那个状态。
#include "reg52.h"  
#include<intrins.h>  
typedef unsigned int u16;   
typedef unsigned char u8;    
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
sbit beep=P1^5;
u16 code ta[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void delay(u16 i)
{
 while(i--); 
}
void DigDisplay1()
{
    u8 i;
 u8 j;
 j=0;
 for(i=0;i<8;i++)
 {
     switch(i)
  {        
   case(0):
      LSC=0;LSB=0;LSA=0;P0=ta[1];break;
      case(1):
      LSC=0;LSB=0;LSA=1;P0=ta[2];break;
   case(2):
      LSC=0;LSB=1;LSA=0;P0=ta[3];break;
      case(3):
      LSC=0;LSB=1;LSA=1;P0=ta[4];break;
   case(4):
      LSC=1;LSB=0;LSA=0;P0=ta[5];break;
   case(5):
      LSC=1;LSB=0;LSA=1;P0=ta[6];break;
   case(6):
      LSC=1;LSB=1;LSA=0;P0=ta[7];break;
   case(7):
      LSA=1;LSB=1;LSC=1;P0=ta[8];break;
  }
  delay(100);
  P0=0x00;
 }
}
void main()
{
 u8 i;
 while(1)
 {    
   DigDisplay1();
 }  
} 
         添加摘要           

1.静态数码管原理图

在这里插入图片描述

LED数码管根据LED的不同接法分为两类:共阴和共阳
为了显示数字或字符,必须对数字或字符进行编码。七段数码管加上一个小数点,共计8段。因此为LED显示器提供的编码正好是一个字节。
共阴数码管码表
0x3f , 0x06 , 0x5b , 0x4f , 0x66 , 0x6d
0 1 2 3 4 5
0x7d , 0x07 , 0x7f , 0x6f , 0x77 , 0x7c
6 7 8 9 A B
0x39 , 0x5e , 0x79 , 0x71 , 0x00
C D E F 无显示
静态显示原理
LED显示器工作方式有两种:静态显示方式和动态显示方式。静态显示的特点是每个数码管的段选必须接一个8位数据线来保持显示的字形码。当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。这种方法的优点是占用CPU时间少,显示便于监测和控制。缺点是硬件电路比较复杂,成本较高。
开发板电路图

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
74H573锁存器在这里插入图片描述

  1. OE为使能端,当他为低电平的时候, 锁存器开始工
  2. VCC和GND为电源和地端
  3. LE为锁存端,当LE为高电平的时候,Q0-Q7都跟D0-D7状态一样,当LE为低电平的时候,Q0-Q7都锁存数据,无论D0-D7怎么变化,Q0-Q7都保持锁存之前的那个状态。
#include "reg52.h"  
#include<intrins.h>  
typedef unsigned int u16;   
typedef unsigned char u8;    
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
sbit beep=P1^5;
u16 code ta[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//分别为0 1 2 3 4 5 6 7 8 9(码表)
void delay(u16 i)             //延时函数
{
while(i--); 
}
void DigDisplay1()
{
    u8 i;
 u8 j;
 j=0;
for(i=0;i<8;i++)
{
switch(i)
{        
case(0):
LSC=0;LSB=0;LSA=0;P0=ta[1];break;
case(1):
LSC=0;LSB=0;LSA=1;P0=ta[2];break;
case(2):
LSC=0;LSB=1;LSA=0;P0=ta[3];break;
case(3):
LSC=0;LSB=1;LSA=1;P0=ta[4];break;
case(4):
LSC=1;LSB=0;LSA=0;P0=ta[5];break;
case(5):
LSC=1;LSB=0;LSA=1;P0=ta[6];break;
case(6):
LSC=1;LSB=1;LSA=0;P0=ta[7];break;
case(7):
LSA=1;LSB=1;LSC=1;P0=ta[8];break;
}
delay(100);
P0=0x00;
}
}
void main()
{
 u8 i;
while(1)
{    
DigDisplay1();
}  
} 

P2.2,P2.3,P2.4管脚一起控制第几个数码管点亮(从右边数)

LSC(P2.4)LSB(P2.3)LSA(P2.2)第i个数码管
0001
0012
0103
0114
1005
1016
1107
1118

P0控制数码管显示的数字和字母
添加摘要

1.静态数码管原理图

在这里插入图片描述

LED数码管根据LED的不同接法分为两类:共阴和共阳
为了显示数字或字符,必须对数字或字符进行编码。七段数码管加上一个小数点,共计8段。因此为LED显示器提供的编码正好是一个字节。
共阴数码管码表
0x3f , 0x06 , 0x5b , 0x4f , 0x66 , 0x6d
0 1 2 3 4 5
0x7d , 0x07 , 0x7f , 0x6f , 0x77 , 0x7c
6 7 8 9 A B
0x39 , 0x5e , 0x79 , 0x71 , 0x00
C D E F 无显示
静态显示原理
LED显示器工作方式有两种:静态显示方式和动态显示方式。静态显示的特点是每个数码管的段选必须接一个8位数据线来保持显示的字形码。当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。这种方法的优点是占用CPU时间少,显示便于监测和控制。缺点是硬件电路比较复杂,成本较高。
开发板电路图

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
74H573锁存器在这里插入图片描述

  1. OE为使能端,当他为低电平的时候, 锁存器开始工
  2. VCC和GND为电源和地端
  3. LE为锁存端,当LE为高电平的时候,Q0-Q7都跟D0-D7状态一样,当LE为低电平的时候,Q0-Q7都锁存数据,无论D0-D7怎么变化,Q0-Q7都保持锁存之前的那个状态。
#include "reg52.h"  
#include<intrins.h>  
typedef unsigned int u16;   
typedef unsigned char u8;    
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
sbit beep=P1^5;
u16 code ta[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//分别为0 1 2 3 4 5 6 7 8 9(码表)
void delay(u16 i)             //延时函数
{
while(i--); 
}
void DigDisplay1()
{
    u8 i;
 u8 j;
 j=0;
for(i=0;i<8;i++)
{
switch(i)
{        
case(0):
LSC=0;LSB=0;LSA=0;P0=ta[1];break;
case(1):
LSC=0;LSB=0;LSA=1;P0=ta[2];break;
case(2):
LSC=0;LSB=1;LSA=0;P0=ta[3];break;
case(3):
LSC=0;LSB=1;LSA=1;P0=ta[4];break;
case(4):
LSC=1;LSB=0;LSA=0;P0=ta[5];break;
case(5):
LSC=1;LSB=0;LSA=1;P0=ta[6];break;
case(6):
LSC=1;LSB=1;LSA=0;P0=ta[7];break;
case(7):
LSA=1;LSB=1;LSC=1;P0=ta[8];break;
}
delay(100);
P0=0x00;
}
}
void main()
{
 u8 i;
while(1)
{    
DigDisplay1();
}  
} 

P2.2,P2.3,P2.4管脚一起控制第几个数码管点亮(从右边数)

LSC(P2.4)LSB(P2.3)LSA(P2.2)第i个数码管
0001
0012
0103
0114
1005
1016
1107
1118

P0控制数码管显示的数字和字母

P0显示P0显示
0x3f00x6f9
0x0610x77A
0x5b20x7cB
0x4f30x39C
0x6640x5eD
0x6d50x79E
0x7d60x71F
0x0770x00
0x7f8

2.数码管动态显示原理

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


  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
C51单片机是一种被广泛应用于嵌入式系统中的单片机,它拥有强大的定时器功能和控制能力。定时器的作用是为系统提供准确的时间基准,而数码管则是一种常见的显示器件,可以用来显示数字或其他字符。 在C51单片机上使用定时器驱动数码管的过程分为以下几个步骤: 1. 配置定时器:首先需要配置定时器的工作模式和计数器的初始值。C51单片机通常会提供相关的寄存器用于设置定时器的参数。 2. 中断设置:为了控制定时器的运行以及定时器溢出时数码管的刷新,通常需要使用中断机制。需要设置相关的中断向量、使能中断以及编写中断服务函数。 3. 时钟源选择:C51单片机通常提供多个时钟源,可以选择不同的时钟源作为定时器的输入信号。根据具体情况选择合适的时钟源,以及设置频率分频系数。 4. 数码管驱动:在定时器中断服务函数中,可以通过控制数码管的引脚电平来实现数码管的刷新。根据需要,可以使用四位数码管、七段数码管或其他类型的数码管。 5. 数字显示:通过在定时器中断服务函数中编写相应的逻辑代码,可以将要显示的数字或其他字符通过设置数码管引脚电平实现。 最后,进行编译、烧录等操作,使程序在C51单片机上运行,实现定时器驱动数码管显示功能。这样,就可以根据定时器的计时精度和频率要求,实现数码管的准确显示。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值