51单片机教程:数码管动态显示(0~99999999)74hc138驱动

51单片机教程:数码管动态显示(0~99999999)74hc138驱动本文介绍了一种利用 8 位共阴极数码管实现 0 到动态显示的方法 通过扫描显示原理和视觉暂留效果 实现了数字的连续滚动显示而无闪烁

大家好,欢迎来到IT知识分享网。

数码管动态显示0~

一、共阴极8位数码管原理

在这里插入图片描述
在这里插入图片描述

首先了解一些必要知识
1、多位数码管是扫描显示,也就是同一时刻只有一个数码管显示
2、视觉暂留效果:第一个数码管显示完,第二个数码管接着显示,接着后面数码管一次显示,当显示(扫描)足够快的时候,人眼是看不到闪烁的,就认为多个数码管是同时显示的
3、多位数码管只能同时显示多个一样的数字,要显示不同数字需要扫描显示

比如说要显示,你看起来8个数码管是同时亮的,其实同一时刻只有一个数码管是亮的
在这里插入图片描述
我们把时间放慢,看看数码管都发生了什么变化:
1、第1毫秒
在这里插入图片描述
2、第二毫秒
在这里插入图片描述
3、第三毫秒
在这里插入图片描述
4、第四毫秒
在这里插入图片描述
5、第五毫秒
在这里插入图片描述
6、第六毫秒
在这里插入图片描述
7、第七毫秒
在这里插入图片描述
8、第八毫秒
在这里插入图片描述

当数码管的扫描频率大于50hz的时候人眼是基本分不清的,也就是你的扫描8个数码管的周期控制在20ms内就可以实现动态显示不闪烁。

二、了解原理后打开proteus仿真,画电路图
这里用了74hc138,不会用的可以百度一下芯片用法
在这里插入图片描述
三、编写代码
代码功能,显示从0自加到

#include <reg51.h> typedef unsigned long u32; //对数据类型进行声明定义 typedef unsigned int u16; typedef unsigned char u8; sbit LSA=P3^0; //74hc138的A B C引脚定义 sbit LSB=P3^1; sbit LSC=P3^2; #define SMG P0 //定义数码管段数据接口P0 u8 buff[8]; //显示缓冲数组 u8 a[]={ 
   0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//分别显示0 1 2 3 4 5 6 7 8 9 void delay_ms(u16 t) { 
    u16 i,j; for(i=0; i<t; i++) for(j=0; j<120; j++); } void update(u32 val) //更新缓冲数组 { 
    //分离各位数据 buff[0]=val/%10; ///%10=1; buff[1]=val/%10; ///%10=2; buff[2]=val/%10; ///%10=3; buff[3]=val/10000%10; ///10000%10=4; buff[4]=val/1000%10; ///1000%10=5; buff[5]=val/100%10; ///100%10=6; buff[6]=val/10%10; ///10%10=7; buff[7]=val%10; //%10=8; } void display(void) //显示函数 { 
    u8 n; for(n=0; n<8; n++) { 
    switch(n) //先位选 { 
    case 0:LSC=0;LSB=0;LSA=0;break; case 1:LSC=0;LSB=0;LSA=1;break; case 2:LSC=0;LSB=1;LSA=0;break; case 3:LSC=0;LSB=1;LSA=1;break; case 4:LSC=1;LSB=0;LSA=0;break; case 5:LSC=1;LSB=0;LSA=1;break; case 6:LSC=1;LSB=1;LSA=0;break; case 7:LSC=1;LSB=1;LSA=1;break; } SMG=a[buff[n]]; //后发送段数据 delay_ms(1); //小延时,显示更稳定 } } void main(void) { 
    u32 num=0; //要显示的数据 u16 t; //延时用 while(1) { 
    update(num); //更新显示缓冲数组 for(t=0; t<50; t++) //用for循环来延时不然显示不正常 { 
    display(); //显示缓冲数组 } num++; //显示数据自加 } } 

执行效果:一开始显示00000000,然后自动加一,一会变成00000035,直到溢出
在这里插入图片描述
在这里插入图片描述

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/156885.html

(0)
上一篇 2025-02-09 17:20
下一篇 2025-02-09 17:25

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信