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锁存器
- OE为使能端,当他为低电平的时候, 锁存器开始工
- VCC和GND为电源和地端
- 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锁存器
- OE为使能端,当他为低电平的时候, 锁存器开始工
- VCC和GND为电源和地端
- 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.静态数码管原理图
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锁存器
- OE为使能端,当他为低电平的时候, 锁存器开始工
- VCC和GND为电源和地端
- 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.数码管动态显示原理
动态显示的特点是将所有数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。