目录
简介:
一. 简单全亮
二. 控制单个变化
三. 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 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 单片机结合数码管实现多个数字显示,是一种实用且具有多种应用场景的技术组合,为数字信息的展示和简单系统的构建提供了便捷途径。