c语言单片机数码管显示0234,数码管动态显示。

本文介绍如何使用C语言在单片机上实现数码管动态显示数字0234。通过将数字拆分为四位并存储在数组中,利用段选和位选查表方式依次显示,结合视觉暂留原理设置适当的延时。数码管的位选通过P3口控制,段选采用共阳极数码管查表方式。文中还提供了改进方案,包括使用138译码器和573锁存器优化IO口资源和显示效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

思路:

用四段数码管显示一个四位数。

1、把要显示的数字的每一位都分开,用一个数组val[4]存起来,如val[0] = 千位, val[1] = 百位,

val[2] =十位, val[3] = 个位。

2、段选和位选通过查表的方式。将每位数字通过循环的方式输出。

3、原理是人眼的视觉暂留,所以需要确定扫描的时间间隔,时间间隔用延时函数delay()。这个延时函数时间过长,数码管看起来就是全亮。如果时间太短,会出现闪烁,合适的时间自己去试。

4、在点亮每位数码管之间需要延时同时还需要消隐。例如P0 = 0xff 或者是P0=0x00,具体取决于共阴还是共阳。

电路:

四位数码管,段选接P0口,位选分别接P34~P37连续接

例程:

#include

typedef unsigned char uchar;

typedef unsigned int uint;

//段选,用查表的方式

uchar code SegSelect[] =

{~0x3f,~0x06,~0x5b,~0x4f,~0x66,~0x6d,~0x7d,~0x07,~0x7f,~0x6f,~0x40};//共阳

//uchar code SegSelect[] =

{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};//共阴

uint g_num = 0;

uchar g_count = 0;

sbit wei0 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值