Bootstrap

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.数码管动态显示原理

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


悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;