7.5.1 定时功能应用:数字时钟设计
1.任务要求
利用定时器TIM2、GPIO、EXTI模块,结合LCD1602,设计一个简易数字时钟,能显示时、分、秒。请进行硬件设计、软件设计,并通过Proteus完成仿真和调试。
2.硬件设计
硬件电路图如图7.10所示,由LCD1602显示电路和按键电路组成,LCD1602的数据端分别与PC0~PC7相连,RS与PC8相连,R/W与PC9相连,E与PC10相连。按键分别连接到PB8、PB9、PB10,下降沿有效。

图7.10 硬件电路图
3.软件设计
设系统时钟采用内部HSI,倍频到64 MHz,送到定时器作为基准时钟源。TIM6预分频64分频,得到频率为1 MHz、周期为1μs的时钟源。定时器采用向下计数方式。定时50 ms,并产生定时中断,计数20次为1 s,依次进行分钟、小时计数。设50 ms计数次数为N,则有:50 ms=1μs×N,则可得计数次数N=50000,所以定时器初值CNT=50000-1。
定时器分频值为64,定时器初值为50000-1。
在STM32CubeMX中,将上述参数配置在TIM2中,参数配置如图7.11所示。
(https://www.daowen.com)
图7.11 参数配置
通过STM32CubeMX生成MDK工程文件,如图7.12所示。在工程文件中,生成的定时器初始程序“tim.c”文件代码无须修改,主要完成对“main.c”文件的设计。

图7.12 工程文件
在生成的“main.c”文件里,需要设计实现数字时钟的代码,参考程序如下。


4.仿真与调试
在Keil-MDK中进行编辑、编译和调试后,生成可执行程序,在Proteus中绘制仿真电路图,并将.hex文件加载到工程中,启动仿真调试,在LCD1602上显示时、分、秒,调整按键可实现对时、分、秒参数的修改,仿真电路图与调试效果如图7.13所示。

图7.13 仿真电路图与调试效果