51单片机入门实操项目(二):数码管控制

目录

  • 前言
  • 一、硬件原理
  • 二、静态数码管显示
  • 三、动态数码管显示
  • 总结


前言

本节主要学习静态数码管与动态数码管的显示。


一、硬件原理

LED数码管是由多个发光二极管封装在一起的显示器件,主要分为共阴极和共阳极数码管两类。
在这里插入图片描述
在这里插入图片描述
硬件原理图如下:
在这里插入图片描述
笔者所用开发板上有两个四显示共阴极数码管,各数码管受相同八引脚控制显示,由于单片机输出高电平驱动能力较弱,利用74HC245芯片供给较大电流和功率驱动,并通过配置com端的电平来选亮数码管。
在这里插入图片描述
利用3-8译码器节省单片机IO资源。

二、静态数码管显示

51单片机P0寄存器控制数码管各段的显示,由原理图可知,若使数码管显示3,则需配置P0=0x4F。
在这里插入图片描述
如上图,令LED8=0,其余为高电平,即可选通第一个数码管。
显示对应表如下:
在这里插入图片描述
使第一个数码管显示3
代码如下:

#include <REGX52.H>

//数码管段码表
unsigned char TubeTable[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};

void Tube(unsigned char Location, unsigned char Number)
{
	switch(Location)	
	{
		case 1:P2_4=1;P2_3=1;P2_2=1;break;
		case 2:P2_4=1;P2_3=1;P2_2=0;break;
		case 3:P2_4=1;P2_3=0;P2_2=1;break;
		case 4:P2_4=1;P2_3=0;P2_2=0;break;
		case 5:P2_4=0;P2_3=1;P2_2=1;break;
		case 6:P2_4=0;P2_3=1;P2_2=0;break;
		case 7:P2_4=0;P2_3=0;P2_2=1;break;
		case 8:P2_4=0;P2_3=0;P2_2=0;break;
	}
	P0 = TubeTable[Number];
}

void main()
{
	Tube(1,3); //在数码管的第1位置显示3
	while(1)
	{
		
	}
}

显示如下:
在这里插入图片描述

三、动态数码管显示

由于单片机8个管脚同时控制不同数码管,也就意味着数码管同时显示时,只能显示相同的数字,为了解决这个问题,可对数码管动态扫描,即显示一个数码管后以极短时间间隔再显示其他数码管,利用人眼视觉残留便可认为多个数码管同时显示。
代码如下:

#include <REGX52.H>

//数码管段码表
unsigned char TubeTable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};

//延时函数
void Delayms(unsigned int xms)
{
	unsigned char i, j;
	while(xms--)
	{
		i = 2;
		j = 239;
		do
		{
			while (--j);
		} while (--i);
	}
}

void Tube(unsigned char Location,Number)
{
	switch(Location)    //位码输出
	{
		case 1:P2_4=1;P2_3=1;P2_2=1;break;
		case 2:P2_4=1;P2_3=1;P2_2=0;break;
		case 3:P2_4=1;P2_3=0;P2_2=1;break;
		case 4:P2_4=1;P2_3=0;P2_2=0;break;
		case 5:P2_4=0;P2_3=1;P2_2=1;break;
		case 6:P2_4=0;P2_3=1;P2_2=0;break;
		case 7:P2_4=0;P2_3=0;P2_2=1;break;
		case 8:P2_4=0;P2_3=0;P2_2=0;break;
	}
	P0=TubeTable[Number];	
	Delayms(3);  //显示一段时间
	P0=0x00;  //消影解决视觉残留
}

void main()
{
	while(1)
	{
		Tube(1,3);		
		//Delayms(100);
		Tube(2,2);		
		//Delayms(100);
		Tube(3,1);		
  	    //Delayms(100);
	}
}

上述代码实现在前三个数码管上显示3、2、1,并每次跳转显示时都做了消除残影处理,即显示之后数码管被设置为空。读者可在此基础上调试并观察消影前现象,以及加长延时观察数码管的扫描现象。
现象显示:
在这里插入图片描述


总结

本节主要介绍静态与动态数码管显示的操作学习,使读者了解数码管的显示机理并掌握单片机的数码管控制操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值