您的位置:首页 > 房产 > 建筑 > 51单片机-数码管显示多个

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

2024/12/23 16:16:40 来源:https://blog.csdn.net/Cx20190420/article/details/138955456  浏览:    关键词:51单片机-数码管显示多个

目录

简介:

一. 简单全亮

二. 控制单个变化

三. 2024


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

http://t.csdnimg.cn/Ii6x0

简介:

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

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

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

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

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

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

一. 简单全亮

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

这种是不需要控制哪个亮,全部接了电.直接用上一篇的代码,就可以每个都动态变化

#include <reg52.h>
#include <intrins.h>
#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);}
}

二. 控制单个变化

就是分别控制 1234引脚了

#include <reg52.h>
#include <intrins.h>
#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

#include <reg52.h>
#include <intrins.h>
#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 1110break;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 单片机结合数码管实现多个数字显示,是一种实用且具有多种应用场景的技术组合,为数字信息的展示和简单系统的构建提供了便捷途径。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com