㈠ 51单片机共阴数码管利用静态显示,让六个数码管显示1~6,程序怎么写
代码如下:
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
#define data P0 //P0口宏定义
/* ***************************************************** */
// 数码管位选数组定义
/* ***************************************************** */
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, //熄灭
0x00 //自定义};
};
/* ***************************************************** */
// 位定义
/* ***************************************************** */
sbit = P1^7; //段选定义
sbit we = P1^6; //位选定义
/* ***************************************************** */
// 函数名称:DelayMS()
// 函数功能:毫秒延时
// 入口参数:延时毫秒数(ValMS)
// 出口参数:无
/* ***************************************************** */
void delay(uint z)
{
uint x,y;
for(x = 0; x < z; x++)
for(y = 0; y < 113; y++);
}
/* ***************************************************** */
// 函数名称:main()
// 函数功能:数码管静态显示
// 入口参数:无
// 出口参数:无
/* ***************************************************** */
void main(void)
{
uchar i;
we = 1;//位选开
data = 0x00;//送入位选数据
we = 0;//位选关
while(1)
{
for(i = 0;i < 16 ; i++)
{
= 1; //段选开
data = leddata[i]; //送入段选数据
= 0; //段选关
delay(500); //延时
}
}
}
(1)单片机静态数码管显示扩展阅读
对于74HC573,形象一点,我们只需要将其理解为一扇大门,只不过这扇大门是单向的,其中11引脚(LE)控制着门的开、关状态,高电平为大门打开,低电平为大门关闭。
D0-D7为输入,Q0-Q7为输出,在LE = 1,即输入高电平时,输入端=输出端,输入是什么,输出也就原封不动的输出;在LE = 0 ,即输入高电平时,大门关闭,实现锁存,不再输出。了解之后,我们按照电路图,来进行编程,代码实现。
在实现数码管的静态显示中,用到了两个锁存器,两个I/O口,P1.6和P1.7,分别是位选和段选。
首先定义了个数码管位选数组,也就是十六进制代码,这便是后来数码管显示数字的核心,接着,用 sbit 定义了位选和段选端口,分别是 P1.6 和 P1.7 ,定义了一个延时函数,其实这一串代码很有意思,开关开关思想,贯穿始终。
首先把位选打开,送入位选数据后,关闭锁存器,实现锁存,进入循环,随之打开段选锁存器,送入段选数据后,再次关闭段选。
接下来,这个延时操作对于实际看到数码管的显示效果特别重要,因为程序在段选后之后,会马上消隐,显示的时间之后几个微秒,这显然不太合理,需要在关闭段选后加上延时,这样一来,才会让每位数码管亮度保持均匀。
㈡ 51单片机与led数码管静态显示实验目的
51单片机与led数码管静态显示实验的目的有以下几点:
1. 熟悉51单片机的IO口编程方法:通过对51单片机的IO口编程,可以更好地了解51单片机的工作原理,为后续的单片机编程打下基础。
2. 熟悉led数码管的驱动原理:led数码管是常见的数字显示设备,通过数字电路将数字信号转换为led点阵信号,控制点亮不同的led灯来显示数字。了解led数码管的驱动盯坦原理,能够更好地理解数字电路的工作原理。
3. 掌握数码管凯瞎桐静态显示的方法:静态显示是将数码管中的每个数字分别映射到单片机的IO口上,并按照一定的时序信号将对应的数字信息发送到数码管上进行显示。掌握数码管静态显示的神正方法,能够进一步理解数字电路的设计和实现。
4. 综合应用:通过将51单片机的IO口编程和数码管的驱动技术应用到实验中,实现了一个数字计时器的设计和实现。这个实例能够让学生更深入地了解嵌入式系统的设计和应用方法。
通过这些目的的实现,学生可以加深对数字电路和嵌入式系统的理解和应用,为以后的工作和学习打下良好的基础。
㈢ 51单片机静态显示可以实现6位数码管123456的显示吗
多位数码管无法实现静态显示,物理上正备它们就存在冲突。除非每一位显示的内容都相同……
如果执着于用静态显示,行卜可以用6个1位数码管,缺点是需要大量的举带毁管脚来控制(可以用串扩并方案或地址映射扩展方案,成本上得不偿失)。