51单片机学习笔记(四)数码管

一、数码管的结构

数码管是一种半导体发光器件,其基本单元是发光二极管。一般的数码管由组成数字的七段二极管以及一个小数点构成,一共是八段,分别用a,b,c,d,e,f,g,dp来表示。通过选择数码管上的二极管,既可以显示需要的字符,这些二极管所对应的数码组合就称为段码。
请添加图片描述
按二极管单元的连接方式,可分为共阳极和共阴极数码管。

  1. 共阳极数码管:是指将所有二极管的阳极接到一起形成公共阳极(COM)。在使用时,需要将想要显示的字符对应的二极管的阴极设置成低电平,其余二极管为高电平,从而显示相应的字符;
  2. 共阴数码管:与共阳极数码管相反,是将所有的阴极接到一起形成公共阴极(COM)。使用时,对应字段应为高电平。

按照可以显示的位数分,又可以分为一位、两位、三位、四位……
请添加图片描述
单片机上常用的是由两个四位数码管组合成的八位数码管,每个四位数码管的公共端(COM)都独立分开,称为为选段,可以根据需要,只使用其中的某一位数码管进行显示,也可以一起显示。
同时,为了节省I/O口,常常会令四个数码管共用同一个段码端。因此,当进行数据显示的时候,所有的数码管接受的都是同样的数据。
请添加图片描述

二、数码管的动态驱动显示方式

由于电路中所有的数码管的8个字段的同名段连在一起,使得它们在同一时间只能显示相同的字符。因此,常采用动态驱动的方式对数码管进行控制,该方法利用了视觉暂留现象和发光管的余辉现象,尽管各位数码管并非同时点亮,只要间隔的时间足够短,就会在人眼中看到稳定的数据。这样一来,既能够节省I/O端口,同时又能保证显示效果。

三、数码管的驱动电路

在单片机电路中,想要驱动数码管需要用到两大模块,分别是:动态数码管模块和74HC138译码器。
请添加图片描述
在动态数码管模块中,有一块芯片叫做74HC25,这个芯片的作用是进行数据的传送,当它的DIR端接入高电平时,可以将左侧的数据输出到右侧,而当它接入低电平时,则会将右侧的数据读取到左侧。
通过使用这个芯片,可以将左侧的较微弱的控制信号进行放大,从增强对数码管的驱动能力。

请添加图片描述
74HC138的作用主要是操控数码管的位选端,通过从左侧的输入端A、B、C(权重C>B>A),将其转化为十进制的数据,从右侧对应的输出端输出(对应输出为低电平0,其余为1)。
同时,通过使用138译码器,可以减少I/O口的数量,将原本的8的口缩减为3个口。

四、代码

1. 单个显示数码管

#include <regx52.h>

void main()
{
	P2_2=0;P2_3=0;P2_4=0;//位选端数据,选择LED1
	P0=0x06;//段选端数据,数码管显示为‘1’
	while(1)
	{
		
	}
}

2. 多个数码管动态显示

#include <regx52.h>

unsigned char NixieDic[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
                    //对应   0   1    2    3    4    5    6    7    8    9

void DelayXms(unsigned char xms)
{
	unsigned char i,j;
	while(xms--)
	{
		i=2;j=239;
		do
		{
			while(--j);
		}while(--i);
	}
}

//数码管显示函数,输入:location(数码管位选:1~8),number(要显示的数据:0~8)
void NixieTube(unsigned char location,number)
{
	switch(location)
	{
		case 1:P2_2=0;P2_3=0;P2_4=0;break;
		case 2:P2_2=1;P2_3=0;P2_4=0;break;
		case 3:P2_2=0;P2_3=1;P2_4=0;break;
		case 4:P2_2=1;P2_3=1;P2_4=0;break;
		case 5:P2_2=0;P2_3=0;P2_4=1;break;
		case 6:P2_2=1;P2_3=0;P2_4=1;break;
		case 7:P2_2=0;P2_3=1;P2_4=1;break;
		case 8:P2_2=1;P2_3=1;P2_4=1;break;
	}
	P0=NixieDic[number];//调用列表来将数据转换为对应的段码
	DelayXms(1);//使用延时函数进行消影
}

void main()
{
	while(1)
	{
	  NixieTube(1,1);	
	  NixieTube(2,2);
	  NixieTube(3,3);
	}
}
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值