51单片机 数码管显示

一、数码管介绍

1、什么是数码管

在这里插入图片描述

2、数码管原理图

在这里插入图片描述

3、数码管引脚定义

在这里插入图片描述
在这里插入图片描述

共阴极和共阳极:(见上图)

共阴极(51开发板)和共阳极 以及电平测试思路
测试思路:共同段都设置为1,若是共阴,另一端输入0\1都不亮;若共阳,另一端输入0会亮

8个数码管的名称顺序:见上图

位选:显示哪个8个数码管中的数码管

段选:显示哪个数码管

数码管的段码表

在这里插入图片描述

4、数码管驱动方式

插图9‘20

5、点亮一个数码管代码

二、138译码器原理图

进行位选(对哪8个数码管进行操作)
通过连接芯片的P2口控制位选
在这里插入图片描述

三、缓冲器

在这里插入图片描述
在这里插入图片描述

缓冲器作用

1、控制信号传递方向
2、放大高电平信号
3、确定位选后,通过 P0口给段码数据,来控制数码管的亮灭
dir:direction,接高电平将数据送到右边,低电平读取右边数据

四、静态数码管显示

代码编辑及含义

#include <REGX52.H>

unsigned char Nixietable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; //所有可以显示的数字,包括0,1,2,3,4,5,6,7,8,9

void Nixie(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=Nixietable[Number];//显示的数字与数组位置一一对应
}

void main()
{
	Nixie(5,0);   //根据坐标选择要点亮的数码管,含义为第五个数码管显示0
	while(1)
	{		
	}
}

五、动态数码管显示

1、数码管消影

原因:

数据串位

解决方式:

每次进行初始化,将其归零
P0=0x00;

2、代码编辑及含义

#include <REGX52.H>
void Delay(unsigned int xms)		
{
	unsigned char i, j;
	while(xms--)
	{
		
		i = 2;
		j = 239;
	do
	{
		while (--j);
	} 
	while (--i);
	}
}
unsigned char Nixietable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};

void Nixie(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=Nixietable[Number];
	P0=0x00;                      //数字消影
}

void main()
{
	while(1)
	{
		Nixie(2,5);
		//Delay(200);            //消影和延时不能同时出现,延时可出现跑马灯效果
		Nixie(3,2);
		//Delay(200);
		Nixie(4,0);
		//Delay(200);
		Nixie(5,1);
		//Delay(200);
		Nixie(6,3);
		//Delay(200);
		Nixie(7,1);
		//Delay(200);
		Nixie(8,4);
		//Delay(200);
	}
}

零碎

电容读数:类似电阻读数

  • 1
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值