四、数码管显示

四、数码管显示

1、数码管介绍

  • LED数码管:一种简单廉价的显示器,是由多个发光二极管封装在一起组成”8“字形的器件。

  • 一位数码管,就是八段LED拼凑。

  • 原理图有共阴(阴极连接在一个引脚上)或共阳两种接法

  • 公共端先选好,叫位选。选好段码叫段选

  • 对于四位数码管,原理和一位数码管相同。但使用原理不相同。因为只允许单个被位选,即使选了多个,那也是显示相同的数字(因为四位数码管是段选是公用引脚的,优势就是操作起来可以用更少的引脚)

  • 此弊病,可以利用单片机的数码管扫描。很快的重复单个数字,肉眼不可见(动态数码管显示)

2、代码

(1)数码管静态显示

#include <REGX52.H>

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];
}
//模块化编程,将段码封装。



void main()
{
	
	Nixie(7,3);//静态显示,即显示一位数码管
	while(1)
	{
			
	}
}

(2)数码管动态显示

因为只允许单个被位选,即使选了多个,那也是显示相同的数字(因为四位数码管是段选是公用引脚的,优势就是操作起来可以用更少的引脚)

故数码管驱动方式有两种:

  • 单片机直接扫描:硬件设备简单,但会耗费大量的单片机CPU时间。

  • 专用驱动芯片:内部自带显存,扫描电路,单片机只需告诉它显示什么即可。

代码演示

#include <REGX52.H>

unsigned char NixieTable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};

void Delay(unsigned int xms)		//@11.0592MHz
{
	unsigned char i, j;

	while(xms--)
		{
	i = 2;
	j = 199;
	do
	{
		while (--j);
	} while (--i);
		}
	
}


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];
	Delay(1);//立马清零数码管会比较暗
	P0=0x00; // 位选段选  清零 位选段选 清零 位选段选 清零....  消影
}


void main()
{
	
	
	while(1)
	{
		Nixie(1,1);
//		Delay(20);
		Nixie(2,2);
//		Delay(20);
		Nixie(3,3);
//		Delay(20);
        //当延迟低到一定程度时可以让三个数字同时显示,但也造成了“串位的问题”
        // 位选 段选 位选 段选位选段选  “串位严重”
	}
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值