51单片机数码管显示生日(51单片机的动态显示)

仿真图如下:

通过程序我们还可以用LED数码管显示各种各样的数据比如:学号,生日,密码等

代码:如下显示

说明:代码第四列 即

uchar  code tablel [ ]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}

其中 {OXCO,OxF9,OxA4,  OxB0,OX99,OX92,OX82,OxF8,0×80,  0×90}   分别对应   0,1,2,3,4,5,6,7,8,9.

可通过修改以上代码 更换 单片机显示数字.

例如: 1992  10 01 即只需要更改前八位显示代码即可(后两位不变)    1992  1001对应的是

(0×F9,0×90,0×90,0×A4,0×F9,0×C0,0×(0,0×F9,0×80,0×90(后两位不变)

需要显示什么数据只需该相应程序代码即可

代码(可复制)

#include<reg51.h>
    #define uchar unsigned char
    #define uint unsigned int
        uchar code table1[]={0xA4, 0xC0, 0xC0,0xB0,0xF9,0xF9,0xA4,0x82,0x80,0x90};
        uchar code table2[]={0x01, 0x02, 0x04,0x08, 0x10,0x20,0x40,0x80};
    void DelayMS(uint x)
    {    uchar i;
    while(x--)
    for(i=0;i<120; i++);

}
    void main()
        {  uchar k;
P0=0xFF; 
P2=0x00; 
while(1)
{  for(k=0;k<=7;k++)
     {  P0=table1[k]; 
        P2=table2[k]; 
 DelayMS(2);
 P0=0xFF;
         }
     }
 }

#include<reg51.h>
	#define uchar unsigned char
	#define uint unsigned int
		uchar code table1[]={0xA4, 0xC0, 0xC0,0xB0,0xF9,0xF9,0xA4,0x82,0x80,0x90};
		uchar code table2[]={0x01, 0x02, 0x04,0x08, 0x10,0x20,0x40,0x80};
	void DelayMS(uint x)
	{	uchar i;
	while(x--)
	for(i=0;i<120; i++);
}
	void main()
		{  uchar k;
P0=0xFF; 
P2=0x00; 
while(1)
{  for(k=0;k<=7;k++)
     {  P0=table1[k]; 
        P2=table2[k]; 
 DelayMS(2);
 P0=0xFF;
		 }
	 }
 }

  • 20
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
C51单片机数码管动态显示单片机基础教学中比较经典的一个实验,该实验可以通过单片机控制数码管的显示,实现数字的动态滚动、计时、计数等功能。下面是该实验的总结。 一、实验原理 数码管动态显示是通过单片机的高速刷新来实现的。数码管的显示是静态的,即只有一次性地将数码管的显示数据送入数码管的存储器中,而动态显示则是通过不断地刷新数码管的显示数据,使其看上去是在不停地变化。单片机控制数码管的显示,需要通过端口输出控制信号,将位选和段选信号送入数码管中,从而实现数码管的动态显示。 二、实验器材 1. C51单片机开发板 2. 74HC595移位寄存器 3. 共阴数码管 4. 面包板、杜邦线等 三、实验步骤 1. 将数码管的阳极连接到单片机的P2口,将数码管的阴极连接到74HC595移位寄存器的输出端Q0~Q7。 2. 将74HC595移位寄存器的SCK、RCK、SDA分别连接到单片机的P3.5、P3.6、P3.7口。 3. 在程序中设置数码管的显示数据,将其存入74HC595移位寄存器中。 4. 设置位选信号,将控制信号送入数码管中,实现数码管的动态显示。 四、实验代码 以下是C语言编写的数码管动态显示的实验代码: ``` #include <reg52.h> #define uchar unsigned char #define uint unsigned int uchar code table[] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90}; //数码管显示表 void delay(uint x) { uint i, j; for (i = x; i > 0; i--) for (j = 110; j > 0; j--); } void main() { uchar i = 0; while (1) { P3 = 0xFF; //清零P3口 P1 = table[i++]; //设置数码管显示数据 if (i == 10) i = 0; //循环显示0~9 P3 = ~(1 << i); //设置位选信号,显示第i个数码管 delay(1); //延时一段时间 } } ``` 五、实验结果 实验成功后,数码管应该可以进行动态滚动、计时、计数等功能的实现。通过对程序进行修改,还可以实现更多有趣的功能,如闪烁、渐变等。 六、实验结论 通过本次实验,我们掌握了单片机控制数码管的动态显示原理和方法,了解了74HC595移位寄存器的使用方法。在实验中,我们不仅学会了如何通过单片机控制数码管的显示,还锻炼了编程能力和动手能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

对海风许愿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值