呼吸灯的软件是系统设计的重点,其主要功能是输出合适的PWM波形,驱动三极管开关以使RCL电路获得适当的电压。而输出PWM波形的重点是对ATmega128 单片机定时/计数器的控制。
呼吸灯需要输出的PWM波形应该是一个脉冲宽度先逐渐增加然后逐渐减小的脉冲序列,可以使用定时/计数器来完成该功能,其应用系统软件流程如图 1.22 所示。
图 1.22 呼吸灯应用系统软件流程
呼吸灯的应用代码如例 1.1 所示。
该应用代码定义了一个标志位ArrorFlg,用来判别计数方向。当输出波形到达最大宽度或最小宽度时,修改这个标志位,然后在进行相应的计数之前,对该标志位进行判断,以决定增加计数器upCounter和减小计数器downCounter的计数方向。
【例 1.1】 呼吸灯的应用代码。