共阴/共阳数码管 ----- 学习笔记
Posted 旭日初扬
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了共阴/共阳数码管 ----- 学习笔记相关的知识,希望对你有一定的参考价值。
一、数码管的动态显示原理
动态显示的特点是将所有数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示,所谓动态扫描显示即轮流向各位数码管送出字形码和相应的选位,利用发光管的余晖和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。动态显示的亮度比静态显示的要差一些,所以在选择限电阻时应略小于静态显示电路中的。
1..1、数码管的共阴与共阳
数码管数字显示/数码管编号 | 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
二、双P沟道增强型MOS---D74HC245芯片
特点:D74HC245是一种三态输出、八路信号收发器,主要应用于大屏显示,以及其他的消费类电子产品中增强驱动。
2.1、主要特性
- 采用CMOS工艺
- 宽电压工作范围:3.0V ---- 5V
- 双向三态输出
- 八线双向收发器
- 封装形式:SOP20、SOP20-2、TSSOP20、DIP20,
通透:输入是高电平,输出也是高电平;输入是低电平,输出也为低电平;
双向三态
双向:可以输出,也可以输出
三态:
- P0口高阻态输出
- 管脚可以输出高电平,也可以输出低电平
2.2、应用领域
适用于显示器以及其他数字电路的驱动。
2.3、管脚的定义说明
符号 | 管脚名称 | 管脚号 | 说明 |
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为任意值) | 高阻态 |
四、译码器----D74HC138
是一种三通道输入,八通道输出译码器,主要应用于消费电子产品。
- 采用COMS工艺
- 低功耗
- 工作电压3.0V ----5.0V
- 封装形式:SOP16
4.1、应用领域
适用于数字电路中的 3—8 译码功能
4.2、管脚说明
4.3、封装形式
SOP16
代码
5.1、16进制
十六进制(简写为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这个十进制数
5.2、ASCII码
5.3、静态数码管代码
#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)
5.4、动态数码管代码
#include <reg52.h>
#include<intrins.h>
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
未调用已定义的函数
以上是关于共阴/共阳数码管 ----- 学习笔记的主要内容,如果未能解决你的问题,请参考以下文章
基于51单片机+74LS138译码器+8位共阴数码管时钟设计—按键修改时间
c51语言设计数码管,中断设计1s显示0~F,采用proteus仿真