历史上的今天
今天是:2025年04月06日(星期日)
2020年04月06日 | 51单片机 stc-B板学习——八位数码管动态显示
2020-04-06 来源:eefocus
这个程序实现的效果是将程序下载到STC板子上后,可以看到8个数码管从左到右分别显示0到7的八个数字,隔一段时间后显示1到8,接着是2到9,再接着是3到0以此循环向左移动。
首先我们先来看看数码管和发光二极管的硬件电路图

需要明确的是,这个程序的是实现需要:LED灯亮且不会数码管同时亮。
要让LED灯亮,首先需要将P0的8个引脚以及P2.3设置成推挽输出(工作模式)(这里对工作模式的设置方式不再赘述)
数码管和LED灯不同时亮:通过E3实现。E3 既是反相器输出信号也是数码管的使能信号,当E3=0时,LED灯(共阴极)亮,数码管位选信号的使能信号为0,数码管不亮;反之,数码管亮而LED不亮
接下来,我们还需要注意到的是,不光要是数码管和LED灯亮,还要控制其频率,这里就需要用到我们的定时器的功能了。

这里用到了两次分频的过程:
第一次:每1ms flag++,加至8(扫描速度够快),控制位选,视觉错觉感觉每一位都亮,也即是实现数码管每一位都显示数字的效果,而具体的显示的数字是多少,在第二次分频中实现
第二次:count++,加至100,数字更新一次,让每一位分开显示(视觉),如果速度很快,眼睛看到的效果是很多个数字重叠显示在一位(无法分辨)
有了以上分析,我们再来看看整个程序的执行过程就很容易了。
对于代码的分析,我们首先应该从主函数出发。

首先是一个初始化的过程:

这个初始化过程主要是将对应引脚的输出设置成推挽输出。接下来打开了定时器中断,并设置初始值是1ms,也就是定时器中断函数每1ms触发一次。
定时器中断函数:
史海拾趣
|
开机检测,不是充电电路问题,该机采用ATJ2085方案,可以充电,但是开机后,立马显示电池电量低,电池电压正常,检查ATJ2085的第31脚,电量检测脚,发现所连接的两个电阻有一个虚焊,加焊后,检测OK。 准备装机,装好后,结果还是开不 ...… 查看全部问答> |
|
wince 下我要用AM85C30实现同步通信(SDLC),问题是这个芯片接收FIFO 3字节,发送没有缓冲! 比如我要用1Mbps通信,中断频率就要1M/8=125k/s, 接收的状况要好一些,3字节的FIFO可以把中断频率降到125k/3=42k/s, 发送就更郁闷了,完全是125k/s ...… 查看全部问答> |
|
版主: 您好,使用STM32F有一段时间了,感觉STM32的性价比较高,最近在了解使用FSMC驱动rgb接口的相关内容,在ST官方网站上下载了与之相关的AN3241文档,看到有个基于STM3210E-EVAL的demo板的支持直接驱动TFT液晶的函数库,我 ...… 查看全部问答> |




