51单片机之数码管

1.静态数码管原理图

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时间少,显示便于监测和控制。缺点是硬件电路比较复杂,成本较高。
开发板电路图

51单片机之数码管_第2张图片

51单片机之数码管_第3张图片

51单片机之数码管_第4张图片
74H573锁存器51单片机之数码管_第5张图片

  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.静态数码管原理图

51单片机之数码管_第6张图片

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时间少,显示便于监测和控制。缺点是硬件电路比较复杂,成本较高。
开发板电路图

51单片机之数码管_第7张图片

51单片机之数码管_第8张图片

51单片机之数码管_第9张图片
74H573锁存器51单片机之数码管_第10张图片

  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个数码管
0 0 0 1
0 0 1 2
0 1 0 3
0 1 1 4
1 0 0 5
1 0 1 6
1 1 0 7
1 1 1 8

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

1.静态数码管原理图

51单片机之数码管_第11张图片

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时间少,显示便于监测和控制。缺点是硬件电路比较复杂,成本较高。
开发板电路图

51单片机之数码管_第12张图片

51单片机之数码管_第13张图片

51单片机之数码管_第14张图片
74H573锁存器51单片机之数码管_第15张图片

  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个数码管
0 0 0 1
0 0 1 2
0 1 0 3
0 1 1 4
1 0 0 5
1 0 1 6
1 1 0 7
1 1 1 8

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

P0 显示 P0 显示
0x3f 0 0x6f 9
0x06 1 0x77 A
0x5b 2 0x7c B
0x4f 3 0x39 C
0x66 4 0x5e D
0x6d 5 0x79 E
0x7d 6 0x71 F
0x07 7 0x00
0x7f 8

2.数码管动态显示原理

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


你可能感兴趣的:(本科,物联网)