动态显示的特点是将所有数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示,所谓动态扫描显示即轮流向各位数码管送出字形码和相应的选位,利用发光管的余晖和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。动态显示的亮度比静态显示的要差一些,所以在选择限电阻时应略小于静态显示电路中的。
数码管数字显示/数码管编号 |
dp |
g |
f |
e |
d |
c |
b |
a |
0 |
灭 |
灭 |
亮 |
亮 |
亮 |
亮 |
亮 |
亮 |
1 |
灭 |
灭 |
灭 |
灭 |
灭 |
亮 |
亮 |
灭 |
2 |
灭 |
亮 |
灭 |
亮 |
亮 |
灭 |
亮 |
亮 |
3 |
灭 |
亮 |
灭 |
灭 |
亮 |
亮 |
亮 |
亮 |
4 |
灭 |
亮 |
亮 |
灭 |
灭 |
亮 |
亮 |
灭 |
5 |
灭 |
亮 |
亮 |
灭 |
亮 |
亮 |
灭 |
亮 |
6 |
灭 |
亮 |
亮 |
亮 |
亮 |
亮 |
灭 |
亮 |
7 |
灭 |
灭 |
灭 |
灭 |
灭 |
亮 |
亮 |
亮 |
8 |
灭 |
亮 |
亮 |
亮 |
亮 |
亮 |
亮 |
亮 |
9 |
灭 |
亮 |
亮 |
灭 |
亮 |
亮 |
亮 |
亮 |
|
共阴极数码管 |
取反为共阳极数码管 |
||
数字显示 |
二进制 |
十六进制 |
二进制 |
十六进制 |
0 |
00111111 |
0x3F |
11000000 |
0xC0 |
1 |
00000110 |
0x06 |
11111001 |
0xF9 |
2 |
01011011 |
0x5B |
10100100 |
0xA4 |
3 |
01001111 |
0x4F |
10110000 |
0xB0 |
4 |
01100110 |
0x66 |
10011001 |
0x99 |
5 |
01101101 |
0x6C |
10010010 |
0x92 |
6 |
01111101 |
0x9B |
10000010 |
0x82 |
7 |
00000111 |
0x07 |
11111000 |
0xF8 |
8 |
01111111 |
0x7F |
10000000 |
0x80 |
9 |
01101111 |
0x6F |
10010000 |
0x90 |
a b c d e f
共阴 a~f: 0x77 0x7c 0x39 0x5e 0x79 0x71
共阳 a~f: 0x88 0x83 0xa7 0xa1 0x86 0x8e
特点:D74HC245是一种三态输出、八路信号收发器,主要应用于大屏显示,以及其他的消费类电子产品中增强驱动。
通透:输入是高电平,输出也是高电平;输入是低电平,输出也为低电平;
双向三态
双向:可以输出,也可以输出
三态:
适用于显示器以及其他数字电路的驱动。
符号 |
管脚名称 |
管脚号 |
说明 |
A0 --- A7 |
数据输入/输出 |
2 ---- 9 |
|
B0 ---- B7 |
数据输入/输出 |
18 ----11 |
|
—— OE
|
输出使能 |
19 |
|
DIR |
方向控制 |
1 |
DIR=1,A—— B, B —— A |
GND |
逻辑地 |
20 |
逻辑地 |
VDD |
逻辑电源 |
10 |
电源端 |
|
|
|
|
输出使能 |
输出控制 |
工作状态 |
—— OE (低电平有效) |
DIR |
|
L |
L |
Bn输入,An输出 |
L |
H |
An输入,Bn输出 |
H |
X(输出方向DIR为任意值) |
高阻态 |
是一种三通道输入,八通道输出译码器,主要应用于消费电子产品。
适用于数字电路中的 3—8 译码功能
SOP16
十六进制(简写为hex或下标16)在数学中是一种逢16进1的进位制。一般用数字0到9和字母A到F(或a~f)表示,其中:A~F表示10~15,这些称作十六进制数字。
0x后面跟随的十六进制计数,十六进制计数用a~f表示该位上取百值10~15
0x3f
十六进制个位基数是1,高位=低位*16,那么度3对应的位基数专是16*1=16,f对应的基数是1,中包含3个16和15个1,加起来等于63。
0xfc表示对应基数是16这位上取值15,对属应基数是1的位上取值12,即15个16加12个1这个十进制数
#include "reg52.h"
#include "intrins.h"
typedef unsigned char u8;
typedef unsigned int u16;
u8 code smgduan[16] = {0X3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,
0x77,0x7c,0x39,0x5e,0x79,0x71}; //
void main(){
P0=~smgduan[0];
while(1)
{
}
}
#include
#include
typedef unsigned char u8; // 预处理数据类型
typedef unsigned int u16; // 预处理数据类型
// 138译码器管脚定义
sbit LSA = P2^2;
sbit LSB = P2^3;
sbit LSC = P2^4;
// 延迟函数
void delay(u16 i){
while(i--);
}
// 数组
/**********************************
数码管显示真值表 共阳
0 1 2 3 4 5
0xc0 0xf9 0xa4 0xb0 0x99 0x92
6 7 8 9 a b
0x82 0xf8 0x80 0x90 0x88 0x83
c d e f
0xa7 0xa1 0x86 0x8e
*************************************
数码管显示数字的真值表
*/
u8 code smgduan[16]={0X3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,
0x77,0x7c,0x39,0x5e,0x79,0x71}; //共阴
void DigDisplay(){
u8 i; //
for(i=0;i<8;i++){
switch(i){
case(0):
LSA = 0;LSB=0;LSC=0;break;
case(1):
LSA = 1;LSB=0;LSC=0;break;
case(2):
LSA = 0;LSB=1;LSC=0;break;
case(3):
LSA = 1;LSB=1;LSC=0;break;
case(4):
LSA = 0;LSB=0;LSC=1;break;
case(5):
LSA = 1;LSB=0;LSC=1;break;
case(6):
LSA = 0;LSB=1;LSC=1;break;
case(7):
LSA = 1;LSB=1;LSC=1;break;
}
P0 = smgduan[i];
delay(100);
//P0= 0X00;
}
}
void main(){
P0=~smgduan[0];
while(1){
DigDisplay();
}
}
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
SEGMENT: ?PR?DIGDISPLAY?MAIN