单片机小白学习之路(七)---数码管的动态显示

目标:数码管的动态显示


上篇讲到了用74LS138来控制数码管的位选,那是怎么选的呢?我们先来看看这个译码器的说明书


13367077-c3c51bd1b35e5920.png
74LS138

/Y0--/Y7是数据输出

A0--A2是数据输入

/E1,/E2,E3是使能控制,/E1和/E2是低电平有效,E3是高电平有效

VDD是接电源;GND接地


13367077-81b700e5003a354a.png
真值表

最重要的是真值表了,来解释其运行方式

/E1和/E2是低电平有效,E3是高电平有效,只要其中一个不满足条件则/Y0--/Y7全部输出高电平,我们是共阴式数码管那么不会亮

从第四行开始都满足了,这时候就可以看看A0--A2了,顺序是A2-

A1-A0,其从上往下依次是000,001,010,011,100,101,110,111.这样看出是0,1,2,3,4,5,6,7的二进制。再看看右半的Y0,000是Y0, 001是Y1,  010是Y2........一次对应下去就知道是怎么控制了?


代码

13367077-d0095c88c7bdbd45.PNG
数码管动态

里面有个switch语句 switch(i)是判断i的,当i是0就执行case 0后面的语句,每句后面加个break不然会一直把下面执行了。

一个for循环,实现了不同数码管显示不同数字的要求,i是0时第一个数码管亮,数字0。i是1时第二个数码管亮显示数字1........

P0 = 0x00是为了让P0口更加稳定又归位


写一半心血来潮又增加了点难度,让显示完一遍又倒着来一遍

13367077-d8000b86b2bf3bd1.PNG
改进

其实也就加了个嵌套for循环,是下面判断一下......

那个9耗了不少时间我一直写8,导致显示是0,1,2,3,4,5,6,0,7,6,5,4,3,2,1,  0

以为a 和i是同步的,大意了,自己基础也不扎实,a是按1,2,3,4,5,6,7......顺序的所以当i是7 时a 是8,所以这里写<9


那个case4凸出来纯属一下手贱,但这是C语言所以缩进没关系,如果是靠缩进定位的python就有问题了,但似乎python很少很少写单片机。。。。

*

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值