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