在本节,我们来做一个秒表,在液晶屏上分别显示2位秒的整数和两位秒的小数。简略分析一下程序结构,还是两大部分:一是定时和累计时间,一是液晶显示。为了使程序好懂一些,我们可以以10毫秒为定时时间,每10个10毫秒到达,就到了100毫秒,我们对100毫秒的个数用一个变量给它计起来,当100毫秒的个数到达10个,也就意味着1秒到达,同样的,我们用一个变量也给它计起来,以此类推。前面这些动作都是在定时中断里去做的,把各层的逻辑关系理清楚,代码就好写了。对于液晶的显示,可以把它放在主程序里去完成,无非就是把上述的几个计数变量逐一在不同的位置做数值显示而已,基本也没有什么难度。大家按照这个思路先作些设计和调试,然后结合本节的视频讲解做些总结和分析。
说到这里,我需要补充一下的是,单片机的定时器工作方式二是具备自装初值的,不过它的定时容量只有255个时间单位,所以大家在应用的时候应该结合具体的定时精确度的要求来做选择。自我重装定时器初始值,可以在一定程度上提高精确度,但是不建议大家去追求完全精确,单片机的自身定时器并不是以精确定时器的要求来做设计的,它是以应用于各种定时控制的场合之需为主要目的。所以我们往往能看到很多有时种显示家用电器,他们的走时都不太准,尤其是日积月累,时间会偏离越远,大家见此也不必大惊小怪,这对于单片机而言是很正常的事情,时间显示不必在意,对家电的功能控制才是它的主业。
前面的案例讲的都是与时间有直接关联的控制,其实在很多场合下,我们用定时器表现出来的貌似跟定时没有直接关联,但却是必须用定时器才能完美实现的,比如音乐的播放,你能想象吗?下面的案例讲解,我们就来玩这个。

