基于单片机的简易门铃制作方案+资料 电路方案
本次设计采用了在主程序中进行中断等待,并通过按键使计数器溢出,产生中断服务程序,在中断程序中实现叮咚clock()函数的执行、计数器的置初值初始化,然后再次回到主程序中,等待下一次的按键触发中断——触发“叮咚”的门铃声。对于clock()叮咚函数,本实验采用的通过设置for循环次数的方式来控制声音的持续时间和频率高低。除此方法外还可以通过设置一个一定频率的定时器,也可使clock()实现叮咚功能,此时在计数器中断函数中只需打开定时器(对定时器初始化)。相比之下,利用for循环控制“叮咚”门铃的方案更为简便。 硬件仿真图的实现 原理仿真电路图中选用的器件有80C51,一个蜂鸣器和一个button按键。电路如下图所示。我们蜂鸣器选用了无源的sounder,只需提供符合一定要求的方波或正弦波即可使之发出声音。80C51是此电路图中的核心,通过。P2口作为clock()输出一定频率方波的输出口。并通过P3.4口连接按键以触发计数器T0的中断服务程序。按下按键可听到电脑音箱发出来类似“叮咚”的声音。仿真电路图如下。 问题与解决 在第一次调试运行时,仿真中按下按键,蜂鸣器未发出声音。通过查阅资料得知,这是由于,使用了protues仿真元件库里的speaker,和其参数设置有关,默认的控制电压过大,使输出的方波信号电压无法正常驱动蜂鸣器,于是改变参数或换用sounder即可解决。 修改好protues仿真电路后,按下按键,蜂鸣器依旧没反映,仔细观察发现,方便输出端的P2^0的电平一直未变,检查软件代码发现,计数器的初始化里计数器中断允许位未打开致使无法进入计数器中断里面执行clock()叮咚函数,修改代码后,点击重新生成.hex文件,用protues仿真便正常运行了,蜂鸣器发出了声音。 (3)未成功使蜂鸣器发出“叮咚”。由于软件中设置的发音频率即方波频率不合适,通过不断调整控制频率的for循环的循环次数,并通过protues仿真测试蜂鸣器,最后找到了合适的参数使之发出了叮咚声。
用户评论