51单片机-数码管显示多个

作者 : admin 本文共2503个字,预计阅读时间需要7分钟 发布时间: 2024-06-8 共1人阅读

目录

简介:

一. 简单全亮

二. 控制单个变化

三. 2024


书接上回 51单片机-数码管显示单个

http://t.csdnimg.cn/Ii6x0

简介:

51 单片机作为控制核心,可以与数码管相连接来实现数字的显示。

数码管通常有多个段,通过控制这些段的点亮和熄灭状态,可以显示不同的数字。当要显示多个数字时,需要合理地安排数码管的布局和控制逻辑。

在硬件方面,需要将 51 单片机的引脚与数码管的相应引脚进行连接,以实现数据和控制信号的传输。可能需要使用驱动电路来增强信号或实现多位数码管的控制。

在编程方面,需要根据数码管的特性和显示需求来编写代码。可以通过循环和逻辑判断来依次控制每个数码管显示相应的数字。比如,可以先确定要显示的数字序列,然后逐位地将数字转换为对应的段码,并输出到数码管上。

通过这种方式,可以在数码管上同时显示多个数字,实现诸如计数器、时钟显示等多种功能。它为数据的直观展示提供了一种简单而有效的方式,在很多电子设备和系统中都有广泛应用。

总之,利用 51 单片机控制数码管显示多个数字是一种常见且实用的技术手段,具有很大的灵活性和可扩展性。

一. 简单全亮

ps:有好几次没电亮,是没加阻值,看了这方面的基础要好好补补了.

51单片机-数码管显示多个插图这种是不需要控制哪个亮,全部接了电.直接用上一篇的代码,就可以每个都动态变化

#include 
#include 
#define uchar unsigned char
#define uint unsigned int
uchar code leddata[]={
	0x3F,  //"0"
    0x06,  //"1"
    0x5B,  //"2"
    0x4F,  //"3"
    0x66,  //"4"
    0x6D,  //"5"
    0x7D,  //"6"
    0x07,  //"7"
    0x7F,  //"8"
    0x6F,  //"9"
    0x77,  //"A"
    0x7C,  //"B"
    0x39,  //"C"
    0x5E,  //"D"
    0x79,  //"E"
    0x71,  //"F"
    0x76,  //"H"
    0x38,  //"L"
    0x37,  //"n"
    0x3E,  //"u"
    0x73,  //"P"
    0x5C,  //"o"
    0x40,  //"-"
    0x00  //熄灭
	};

void DelayMS(uint x)
{
 	uchar t;
	while(x--)
	for(t=120;t>0;t--);
}

void main()
{
 	uchar i=0;
	P0=0x00;
	while(i<24)
	{
	 	P0=leddata[i];
		i++;
		DelayMS(400);
	}
}

二. 控制单个变化

51单片机-数码管显示多个插图(1)

就是分别控制 1234引脚了

#include 
#include 
#define uchar unsigned char
#define uint unsigned int
uchar code leddata[]={
	0x3F,  //"0"
    0x06,  //"1"
    0x5B,  //"2"
    0x4F,  //"3"
    0x66,  //"4"
    0x6D,  //"5"
    0x7D,  //"6"
    0x07,  //"7"
    0x7F,  //"8"
    0x6F,  //"9"
    0x77,  //"A"
    0x7C,  //"B"
    0x39,  //"C"
    0x5E,  //"D"
    0x79,  //"E"
    0x71,  //"F"
    0x76,  //"H"
    0x38,  //"L"
    0x37,  //"n"
    0x3E,  //"u"
    0x73,  //"P"
    0x5C,  //"o"
    0x40,  //"-"
    0x00  //熄灭
	};

void DelayMS(uint x)
{
 	uchar t;
	while(x--)
	for(t=120;t>0;t--);
}

void main()
{
 	uchar i=0;
	P0=0x00;
	P2 =0xfe;
	while(i<24)
	{
	 	P0=leddata[i];
		i++;
		DelayMS(400);
	}
}

这样就可以做很多小显示了,比如2024;

三. 2024

51单片机-数码管显示多个插图(2)

#include 
#include 
#define uchar unsigned char
#define uint unsigned int
uchar code leddata[]={
	0x3F,  //"0"
    0x06,  //"1"
    0x5B,  //"2"
    0x4F,  //"3"
    0x66,  //"4"
    0x6D,  //"5"
    0x7D,  //"6"
    0x07,  //"7"
    0x7F,  //"8"
    0x6F,  //"9"
    0x77,  //"A"
    0x7C,  //"B"
    0x39,  //"C"
    0x5E,  //"D"
    0x79,  //"E"
    0x71,  //"F"
    0x76,  //"H"
    0x38,  //"L"
    0x37,  //"n"
    0x3E,  //"u"
    0x73,  //"P"
    0x5C,  //"o"
    0x40,  //"-"
    0x00  //熄灭
	};

void DelayMS(uint x)
{
 	uchar t;
	while(x--)
	for(t=120;t>0;t--);
}
void delay(unsigned int t)
{
    unsigned int i, j;
    for (i = 0; i < t; i++) {
        for (j = 0; j < 1275; j++) {
            ; // 空循环,等待时间过去
        }
    }
}
void main()
{
 	uchar i=0;
	P0=0x00;
	while(1)
	{
		for (i = 0; i < 5; i++)
		{
			switch (i)
			{
			case 0:
				P0 = 0x5B;
				P2 =0xFE;  //1111 1110
				break;
			case 1:
				P0 = 0x3F;
				P2 =0xFD;//1111 1101  
				break;
			case 2:
				P0 =0x5B;
				P2 =0xFB;//1111 1011  
				break;
			case 3:
				P0 =0x66;
				P2 =0xF7;//1111 0111 
				break;
			
			default:
				break;			
			}
				
			delay(1);
			P0=0x00;
		}
			
	
	}
}

四. 总结

以下是对 51 单片机控制数码管显示多个数字的总结:

51 单片机可用于驱动数码管实现多个数字的显示。数码管由多个段组成以显示数字。

硬件上,需将单片机引脚与数码管引脚相连,可能还需驱动电路。编程时,通过循环和逻辑处理来逐个让数码管显示相应数字。可用于实现如计数器、时钟显示等功能。

其优势在于:

  • 简单直观,能清晰展示数字信息。
  • 成本较低,易于实现。

应用广泛:

  • 在各类电子设备中用于数据的实时显示。
  • 在教学和实验中帮助理解单片机控制原理。

总之,51 单片机结合数码管实现多个数字显示,是一种实用且具有多种应用场景的技术组合,为数字信息的展示和简单系统的构建提供了便捷途径。

本站无任何商业行为
个人在线分享 » 51单片机-数码管显示多个
E-->