> 文档中心 > 【蓝桥杯】——七段数码管的运用

【蓝桥杯】——七段数码管的运用

目录

一、数码管

(一)、数码管的简介

(二)、数码管的分类

(三)、数码管是显示结构

(四)、共阳数码管段码介绍

二、数码管的显示方式

(一)静态显示方式

1、静态显示方式简介

2、数码管静态显示方式的运用

(二)动态显示方式

1、动态显示简介

2、动态显示运用


 

一、数码管

(一)、数码管的简介

数码管是一种显示器可以显示数字和其他信息的电子设备。在其玻璃管中包含着一个金属丝网制成的阳极和多个阴极,管中含有氖气和氩气等稀有气体。

(二)、数码管的分类

数码管可分为七段数码管和八段数码管,其主要区别是八段数码管比七段数码管多一个可用的小数点显示位,其基本单位都是发光二极管。

按发光二极管单元连接方式可分为共阳数码管共阴数码管

共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮,当某一字段的阴极为高电平时,相应字段就不亮。,共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮,当某一字段的阳极为低电平时,相应字段就不亮。

图1 数码管

(三)、数码管是显示结构

数码管由若干个发光二极管组成,将发光二极管的阳极接到一起形成公共阳极(COM)的数码管;将发光二极管的阴极接到一起形成公共阴极(COM)的数码管。其中a、b、c、d、e、f、g 分别对应7个段位,dp对应小数点,这8条线又称为段选线。

图2 七段数码管基本结构

(四)、共阳数码管段码介绍

在单片机设计与开发赛事中,官方提供的原理图所用数码管为共阳数码管,故下面给出在蓝桥杯比赛中常用到的编码值:

内容

段码

编码值

dp

g

f

e

d

c

b

a

0

1

1

0

0

0

0

0

0

0xC0

1

1

1

1

1

1

0

0

1

0xF9

2

1

0

1

0

0

1

0

0

0xA4

3

1

0

1

1

0

0

0

0

0xB0

4

1

0

0

1

1

0

0

1

0x99

5

1

0

0

1

0

0

1

0

0x92

6

1

0

0

0

0

0

1

0

0x82

7

1

1

1

1

1

0

0

0

0xf8

8

1

0

0

0

0

0

0

0

0x80

9

1

0

1

0

0

0

0

0

0x90

A

1

0

0

0

1

0

0

0

0x88

B

1

0

0

0

0

0

0

0

0x80

C

1

1

0

0

0

1

1

0

0xC6

D

1

1

0

0

0

0

0

0

0xC0

E

1

0

0

0

0

1

1

0

0x86

F

1

0

0

0

1

1

1

0

0x8E

-

1

0

1

1

1

1

1

1

0xBF

.

0

1

1

1

1

1

1

1

0x7F

下面为共阳数码管和共阴数码管0~9对应的编码值:

数字

0

1

2

3

4

5

6

7

8

9

共阳

0xc0

0xf9

0xa4

X0b0

0x99

0x92

X082

0xf8

0x80

X090

共阴

0x3f

0x06

0x5b

0x4f

0x66

0x6d

0x7d

0x07

0x7f

0x6f

二、数码管的显示方式

数码管的显示方式由两种:静态显示和动态显示。下面以共阳数码管为例。

(一)静态显示方式

1、静态显示方式简介

所谓静态显示方式,就是将共阳数码管的阳极接地,将其8为段选线与一个8为并行相连。

图3 4为静态数码管电路

下面为蓝桥杯中单片机设计与开发赛事中原理图中数码管连线部分

图4 蓝桥杯中数码管的电路图

2、数码管静态显示方式的运用

点亮数码管段码值

#include "reg52.h"  sbit HC138_A = P2^5; sbit HC138_B = P2^6; sbit HC138_C = P2^7;     unsigned char code SMG_Duanma[18] =     {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,     0x80,0x90,0x88,0x80,0xc6,0xc0,0x86,0x8e,     0xbf,0x7f};void DelaySMG(unsigned int time){while(time--);  while(time--);}void Init74HC138(unsigned char channel){ switch(channel) {  case 4:   HC138_A = 0;   HC138_B = 0;   HC138_C = 1;   break;  case 5:   HC138_A = 1;   HC138_B = 0;   HC138_C = 1;   break;  case 6:   HC138_A = 0;   HC138_B = 1;   HC138_C = 1;   break;  case 7:   HC138_A = 1;   HC138_B = 1;   HC138_C = 1;   break;  case 8:   HC138_A = 0;   HC138_B = 0;   HC138_C = 0;   break; }}void DispaySMG_Static(){char i;Init74HC138(6);P0 = 0x01;for(i = 0; i < 18; i++){Init74HC138(7);P0 = SMG_Duanma[i];DelaySMG(60000);}}void main(){while(1){DispaySMG_Static();}}

(二)动态显示方式

1、动态显示简介

动态显示方式是用扫描方式,一位一位的轮流点亮LED。其实质是轮流点亮单个数码管实现多位数码管整体显示效果,其能够节省大量的I/O端口,而且功耗较低。

2、动态显示运用

显示一个日期2022-2-8.

#include "reg52.h"sbit HC138_A=P2^5;sbit HC138_B=P2^6;sbit HC138_C=P2^7;unsigned char code SUM_duanma[18] =     {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,     0x80,0x90,0x88,0x80,0xc6,0xc0,0x86,0x8e,     0xbf,0x7f};void Init74HC138(unsigned char channel){switch(channel){case 4:HC138_A=0;HC138_B=0;HC138_C=1;break;case 5:HC138_A=1;HC138_B=0;HC138_C=1;break;case 6:HC138_A=0;HC138_B=1;HC138_C=1;break;case 7:HC138_A=1;HC138_B=1;HC138_C=1;break;}}void Delay(unsigned char t){while(t--);}void DisplaySMG(unsigned char num,unsigned char shu){Init74HC138(6);P0=(0x01<<shu);Init74HC138(7);P0=num;}void DisplaySMG_static(){DisplaySMG(SUM_duanma[2],0);Delay(100);DisplaySMG(0xff,0);DisplaySMG(SUM_duanma[0],1);Delay(100);DisplaySMG(0xff,1);DisplaySMG(SUM_duanma[2],2);Delay(100);DisplaySMG(0xff,2);DisplaySMG(SUM_duanma[2],3);Delay(100);DisplaySMG(0xff,3);DisplaySMG(SUM_duanma[16],4);Delay(100);DisplaySMG(0xff,4);DisplaySMG(SUM_duanma[2],5);Delay(100);DisplaySMG(0xff,5);DisplaySMG(SUM_duanma[16],6);Delay(100);DisplaySMG(0xff,6);DisplaySMG(SUM_duanma[8],7);Delay(100);DisplaySMG(0xff,7);}void main(){while(1){DisplaySMG_static();}}