购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.16 TIMER0控制门铃声音输出

图3-20所示仿真电路运行时,按下K1按键,定时器中断程序将控制蜂鸣器模拟发出“叮”、“咚”的门铃声,其中“叮”的声音用较短定时形成较高频率,“咚”的声音用较长定时形成较低频率,通过虚拟示波器可以观察到两种不同频率声音的脉宽变化。

图3-20 TIMER0控制门铃声音输出电路

1.程序设计与调试

主程序中while循环在检测到按键按下并释放后执行TR0=1,定时器启动计数,为输出两种不同频率的声音,其中断程序完成了以下两种不同的定时。

① 初始时定时设置为700µs,每次定时溢出都将执行中断函数内首行语句DoorBell = ~DoorBell,P3.0引脚输出数字脉冲。由于有变量p的控制,前400次触发中,每次执行DoorBell= ~DoorBell后定时初值均被重置为700µs (0.7ms),从而使得P3.0输出声音频率恒为1/0.7/2×1 000=714Hz。

② 当变量p累加到400时,后续400次中断触发过程中每次同样会执行DoorBell = ~DoorBell并输出脉冲信号,但每次触发后定时初值均被重置为1 000µs (1ms),从而使得输出声音频率为1/1/2×1 000=500Hz。

正是由于前后400次的定时设置不同,从而实现了“叮”、“咚”两种频率声音的输出。当p值为800时,定时器停止(TR0 = 0),定时器不会形成溢出,中断停止触发,声音输出结束。

如果要改变所输出声音频率,可修改700和1 000这两个延时初值,要改变声音输出长度,可修改400和800这两个时长控制值。

2.实训要求

① 用定时器控制模拟出另一种门铃声音效果。

② 修改程序,用定时器中断控制实现其他某种声音频率的模拟输出。 36iiYEGLyHLWIUv6Ch5kJ8dVKbae/neD9krpI8wY5gtaoTtcWPfF/33iHzTA1Xu1

3.源程序代码
点击中间区域
呼出菜单
上一章
目录
下一章
×