历史上的今天
今天是:2025年03月29日(星期六)
2020年03月29日 | 单片机小白学习之路(七)---数码管的动态显示
2020-03-29 来源:eefocus
上篇讲到了用74LS138来控制数码管的位选,那是怎么选的呢?我们先来看看这个译码器的说明书
74LS138
/Y0--/Y7是数据输出
A0--A2是数据输入
/E1,/E2,E3是使能控制,/E1和/E2是低电平有效,E3是高电平有效
VDD是接电源;GND接地
最重要的是真值表了,来解释其运行方式
/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........一次对应下去就知道是怎么控制了?
代码:
数码管动态
里面有个switch语句 switch(i)是判断i的,当i是0就执行case 0后面的语句,每句后面加个break不然会一直把下面执行了。
一个for循环,实现了不同数码管显示不同数字的要求,i是0时第一个数码管亮,数字0。i是1时第二个数码管亮显示数字1........
P0 = 0x00是为了让P0口更加稳定又归位
写一半心血来潮又增加了点难度,让显示完一遍又倒着来一遍
改进
其实也就加了个嵌套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很少很少写单片机。。。。
*
史海拾趣
|
如图 convert mdl to vhdl无法出现,不知道是什么原因。我用的是dsp builder8.0 和 MATLAB7.0 。 dsp builder8.0的license文件已经全部复制到quartus II的license文件里了。 谢谢各位高手了,我在做毕设《基于quartus II的DDS设计》,导师突然要 ...… 查看全部问答> |
|
最近用ModelSim进行VHDL代码的功能仿真,3秒的runtime居然要花将近20分钟才能仿真完。有没有什么选项设置可以让仿真更快一点?还是说是我的设计上有问题才导致那么慢?还是因为电脑配置不行? 有大虾有高招吗?… 查看全部问答> |
|
我最近在学华恒ARM9,用的是三星S3C2410当做到中断这个问题的时候,遇到了问题,还请各位大虾帮忙 问题如下: 1、不管我把中断置一还是置零都没看到区别,和芯片资料有出入,为什么会这样 2、我把中断待决寄存器和源待决寄存器的值读出来,发现 ...… 查看全部问答> |
|
各位大侠,小弟虚心请教一个问题: 我通过9054的BAR2对本地端进行一次写操作后(成功写入),BAR2基地址由E2020000变成了E2000000(同时BAR3由E2040000变成了E2000000),以至于再次写将无法成功写入.不知是怎么回事?. 通过BAR2进行读操作则不会出现该问 ...… 查看全部问答> |
|
例如如何求下列程序延时时间: void Delay(unsigned int a) { unsigned char i; while(--a!=0) { for(i=0;i… 查看全部问答> |
|
我是非电子专业的,本科毕业设计要做一个带宽100Mhz的前置放大器。 用集成运放做。 如何既能保证带宽又增大放大倍数呀?? 有么适合的芯片推荐一下。 谢谢… 查看全部问答> |




