51单片机学习——动态数码管显示

目的:让数码管在多个位置显示不同的数据。

消影

数码管扫描时,位选 段选 位选 段选 位选 段选

在从段选到位选时,可能会发生串位的问题,为了避免这种情况,需要在段选之后加入一个清零。

即:位选 段选 清零 位选 段选 清零 位选 段选 清零

cs 复制代码
#include <REGX52.H>

//(0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,0x00)

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

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

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

void Nixie(unsigned char Location,Number)//NixieTube数码管
{
	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);//稳定显示1ms,直接清零数码管会显示的比较暗
	P0 = 0x00;//清零,0x00表示空
}

void main()
{
/*	在第四个数码管显示6
	//P2位选(位置选择) P0段选(字形选择)
	P2_4 = 1;//138译码器从高位到低位为CBA
	P2_3 = 0;
	P2_2 = 0;
	P0 = 0x7D;//数据高位对端口高位,例如一个数是12345,那么1就是数据高位,p07是端口高位,所以从P07往前读,一个数字的第一位才是最高位*/

//	Nixie(2,3);静态时仅扫描一次 动态需要一直扫描所以移到循环内
	while(1)
	{
//需要进行消影,先选位置,但是位置还残留着上一个函数的数字
		Nixie(1,1);
//		Delay(200);
		Nixie(3,2);
//		Delay(200);
		Nixie(5,3);
//		Delay(200);
	}
}

单片机驱动方式

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

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

TM1640

只需要两根线就可以控制16个数码管显示任意数字。

74HC595移位寄存器

通过三根数据线和两根电源线就可以控制八个数码管,虽然也会耗费单片机CPU的扫描时间但是可以节省单片机的I/O口。

注:本文出自对bilibili江协科技51单片机入门教程[4-2]动态数码管显示 内容的学习笔记。

相关推荐
XINVRY-FPGA40 分钟前
EPM240T100I5N Altera FPGA MAX II CPLD
人工智能·嵌入式硬件·fpga开发·硬件工程·dsp开发·射频工程·fpga
mit6.8242 小时前
[openvela] Hello World :从零开始的完整实践与问题复盘
c++·嵌入式硬件
好望角雾眠3 小时前
第一阶段C#基础-10:集合(Arraylist,list,Dictionary等)
笔记·学习·c#
艾伦~耶格尔3 小时前
【集合框架LinkedList底层添加元素机制】
java·开发语言·学习·面试
星仔编程3 小时前
python学习DAY46打卡
学习
大霞上仙4 小时前
实现自学习系统,输入excel文件,能学习后进行相应回答
python·学习·excel
曙曙学编程5 小时前
stm32——GPIO
c语言·c++·stm32·单片机·嵌入式硬件
yatingliu20195 小时前
HiveQL | 个人学习笔记
hive·笔记·sql·学习
郭庆汝5 小时前
CMake概述用法详细笔记
笔记
武当豆豆5 小时前
C++编程学习(第25天)
开发语言·c++·学习