共阴/共阳数码管 ----- 学习笔记

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

未调用已定义的函数

以上是关于共阴/共阳数码管 ----- 学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

静态数码管——小白的单片机笔记

共阴极共阳极七段数码管 从0至F

基于51单片机+74LS138译码器+8位共阴数码管时钟设计—按键修改时间

c51语言设计数码管,中断设计1s显示0~F,采用proteus仿真

c51语言设计数码管,中断设计1s显示0~F,采用proteus仿真

c51语言设计数码管,中断设计1s显示0~F,采用proteus仿真