单片机学习 3-静态数码管显示

静态数码管

数码管介绍

数码管简介

单片机学习 3-静态数码管显示_第1张图片

共阳极公共端接阳极,低电平有效(灯亮), 共阳极数码管内部发光二极管的阳极(正极)都联在一起,此数码管阳极(正极)在外部只有一个引脚
共阴极公共端接阴极,高电平有效(灯亮),共阴极数码管内部发光二极管的阴极(负极)都联在一起,此数码管阴极(负极)在外部只有一个引脚


共阳极数码管:通过输入低电平(0)点亮(二极管导通)

单片机学习 3-静态数码管显示_第2张图片

共阴极数码管:通过输入高电平(1)点亮(二极管导通)

单片机学习 3-静态数码管显示_第3张图片

数码管显示原理

单片机学习 3-静态数码管显示_第4张图片

  1. 共阳极阳极接在一起,通常连接电源,因此通过输入低电平点亮。

​ 共阴极阴极接在一起,通常连接GND,因此通过输入高电平点亮。

  1. 如果想显示"8",只要将a、b、c、d、e、f、g点亮

    如果想显示"0",只要将a、b、c、d、e、f点亮

  2. A2-A4开发板使用的是共阴极数码管。而 A5-A7开发板小的8位数码管是共阴极,而大的数码管使用共阳极。

  3. 共阴极数码管由于点亮数码管需要消耗大量电流(会导致其它功能电流减少),所以开放版一般通过连接驱动电路来放大输出电流。如74HC245和74HC573芯片。‘

  4. 共阳极数码管由于通常通过VCC电源供电,所以在实际工业开发中一般使用共阳极数码管。

编码原理

单片机学习 3-静态数码管显示_第5张图片

**以共阴极为例:**通过连接驱动芯片,输入高电平使数码管点亮。如要点亮"0",将a、b、c、d、e、f输入高电平,g和DP输入低电平。则低位为1111,高位为1100。

P0 ^ 7-P0 ^ 0为0011 1111,转化为十六进制为0x3F。

//!!!同理而共阳极因为连接电源VCC,所以想要点亮则要输入低电平,即将0x3F取反。

数码管静态显示原理

单片机学习 3-静态数码管显示_第6张图片

以A2-A4开发板为例(采用共阴极数码管):

通过八个I/O端口控制段选(由于单片机数码管采用动态显示方式连接,即八位数码管每个位的数码管对应相同段的线路连接在一起)

通过3-8译码器三个端口控制位选。

硬件设计

单片机学习 3-静态数码管显示_第7张图片

3-8译码器:看 A0,A1,A2 输入管脚的电平状态。如果 A0,A1,A2 都为低电平,则Y0 输出有效电平(低电平),其他管脚均输出高电平。如果 A0 为高电平,A1,A2 都为低电平,则 Y1 输出有效电平(低电平),其他管脚均输出高电平。其他几种输出大家可以对照真值表查看。如果 E1、E2 使能管脚任意一个为高电平或者 E3 为低电平,不论输入是什么,输出都为高电平。
这里总结一个方法:A0、A1、A2 输入就相当于 3 位 2 进制数,A0 是低位,A1 是次高位,A2 是高位。而 Y0-Y7 具体哪一个输出有效电平,就看输入二进制对应的十进制数值。比如输入是 101(A2,A1,A0),其对应的十进制数是 5,所以 Y5 输出有效电平(低电平)。

A2-A4开发板(采用共阴极数码管):

段选直接与I/O端口相连。位选使用74HC138译码器,通过三个引脚控制八个LED(注意3-8译码器中存在非门,输入高电平,若输出有效,则输出低电平)。

A5-A7开发板(采用单个共阳极数码管,也可以采用共阴极数码管):

若采用共阳极:输入电流通过电源直接提供。I/O端口可以任意选择(P0、P1、P2、P3)与J8排针连接

软件设计

单片机学习 3-静态数码管显示_第8张图片

输出数字0的段码0x3f(共阴极),~0x3f(共阳极)


因为3-8译码器与电源相连,所以当P2 ^ 2,P2 ^ 3和P2 ^ 4端口连接时,输入的电平会使数码管点亮。因此A2-A4开发板由于是集成电路,在LED灯实验时,由于P2口的连接会导致数码管也发光。

A2-A4:

单片机学习 3-静态数码管显示_第9张图片

A5-A7:

单片机学习 3-静态数码管显示_第10张图片

注意它们数码管的顺序是相反的。

可控制3-8译码器的输入电平来选择对应位数码管的发光。

#include"reg52.h"

typedef unsigned char u8;
typedef unsigned int u16;
#define SMG_A_DP_PORT 	P0

sbit A0=P2^2;
sbit A1=P2^3;
sbit A2=P2^4;

u8 gsmg_code[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,   //第一个g代表全局变量global
								0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //共阴0-F

void main()
{
	    A0=0;
		A1=1;
		A2=1;// 110B,则06数码管(第七个)发光(用于通过3-8译码器控制共阴极数码管)
	  while(1)
		{
			SMG_A_DP_PORT=gsmg_code[0];//共阴
			//SMG_A_DP_PORT=~gsmg_code[0];//共阳
		}
}

A5开发板

共阴极:

单片机学习 3-静态数码管显示_第11张图片

共阳极:取反前

单片机学习 3-静态数码管显示_第12张图片

取反后

单片机学习 3-静态数码管显示_第13张图片

你可能感兴趣的:(单片机,学习,嵌入式硬件)