数码管动态显示0~99999999
一、共阴极8位数码管原理
首先了解一些必要知识
1、多位数码管是扫描显示,也就是同一时刻只有一个数码管显示
2、视觉暂留效果:第一个数码管显示完,第二个数码管接着显示,接着后面数码管一次显示,当显示(扫描)足够快的时候,人眼是看不到闪烁的,就认为多个数码管是同时显示的
3、多位数码管只能同时显示多个一样的数字,要显示不同数字需要扫描显示
比如说要显示12345678,你看起来8个数码管是同时亮的,其实同一时刻只有一个数码管是亮的
我们把时间放慢,看看数码管都发生了什么变化:
1、第1毫秒
2、第二毫秒
3、第三毫秒
4、第四毫秒
5、第五毫秒
6、第六毫秒
7、第七毫秒
8、第八毫秒
当数码管的扫描频率大于50hz的时候人眼是基本分不清的,也就是你的扫描8个数码管的周期控制在20ms内就可以实现动态显示不闪烁。
二、了解原理后打开proteus仿真,画电路图
这里用了74hc138,不会用的可以百度一下芯片用法
三、编写代码
代码功能,显示从0自加到99999999
#include 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 } void update(u32 val) //更新缓冲数组 { //分离各位数据 buff[0]=val/10000000%10; //12345678/10000000%10=1; buff[1]=val/1000000%10; //12345678/1000000%10=2; buff[2]=val/100000%10; //12345678/100000%10=3; buff[3]=val/10000%10; //12345678/10000%10=4; buff[4]=val/1000%10; //12345678/1000%10=5; buff[5]=val/100%10; //12345678/100%10=6; buff[6]=val/10%10; //12345678/10%10=7; buff[7]=val%10; //12345678%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,直到溢出
上一篇:51单片机项目设计:超声波测距、智能小车(keil+proteus)
下一篇:51单片机教程:按键的定时器消抖(有延时的程序不是好程序
推荐阅读最新更新时间:2024-11-22 13:26
设计资源 培训 开发板 精华推荐
- AM6TW-2412SZ 12V 6 瓦单路输出 DC-DC 转换器的典型应用
- DC209A,用于 LTC1404CS8 12 位高速 600ksps 模数转换器的演示板,具有停机功能
- 具有关断功能的 ADR391ART-REEL 精密低漂移 2.500 V 堆叠电压基准的典型应用
- 【训练营_进阶班】基于51内核单片机的物联网开发板
- DER-417 - 5mW空载输入功率,8 W待机电源
- LT1021CIN8-10 精密电压基准的典型应用
- LTC1879EGN 演示板、高效同步降压稳压器、2.65V - 10V 输入、1.8V/2.5V/3.3Vout @ 1.2A
- DM160225, 3D Touch Pad Board 是一种 PC 外设,用于扩展具有 3D 手势的 2D 触摸板
- 【广西师大校赛】FM调频接收机
- LCD1602自动量程100V10A电压电流表
- 首都医科大学王长明:针对癫痫的数字疗法已进入使用阶段
- 非常见问题解答第223期:如何在没有软启动方程的情况下测量和确定软启动时序?
- 兆易创新GD25/55全系列车规级SPI NOR Flash荣获ISO 26262 ASIL D功能安全认证证书
- 新型IsoVu™ 隔离电流探头:为电流测量带来全新维度
- 英飞凌推出简化电机控制开发的ModusToolbox™电机套件
- 意法半导体IO-Link执行器电路板为工业监控和设备厂商带来一站式参考设计
- Melexis采用无磁芯技术缩小电流感测装置尺寸
- 千丘智能侍淳博:用数字疗法,点亮“孤独症”儿童的光
- 数药智能冯尚:ADHD数字疗法正为儿童“多动症”提供更有效便捷服务
- Vicor高性能电源模块助力低空航空电子设备和 EVTOL的发展