一、功能需求
使用定时器中断,实现数码管显示数值的递减
时间范围:10~0
递减步长:1000ms
二、数码管驱动原理
数码管显示的工作原理,其实不难,只要了解数码管的结构是由8个小的LED组成的。如下图所示,每一个数码(带1个小数点)管,都由8个led组成一个8字行,通过控制这些小灯的ON/OFF,就能组合成0-9各个数字。
而显示什么数字,其对应的8个灯管on/off的输出次序,就是编码表,如下图所示
硬件是使用两个HC595驱动的两组数码管,其电路连接如图所示(源自官方资料)。
8位数码管由两片HC595芯片驱动,一片HC595芯片负责接收串行数据输入,作为位选数据用于驱动单个数码管进行显示。高八位数据串行输入到另一片HC595芯片,作为片选数据。当数据传输完毕后,在RCLK引脚上给予不小于2us的上升沿,按照数据的内容点亮某一位数码管。
三、软件原理
硬件连接上使用3个GPIO口作为输出,1个数据位输出,2个为时钟输出(因为时钟和锁存输出时钟)。供电使用开发板上的3v3,共5根线其接法如下图
由于要求定时从10减到0,这里我采用定时器去更新数码管的显示内容,定时1s,num自减,定时器配置如下:
程序设计:
主函数:
四、下载验证
下载测试没有问题,