- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
如有帮助,欢迎支持。
蜂鸣器报警电路原理介绍
蜂鸣器报警电路以SH69P43为控制芯片,使用4MHz晶振为主振荡器。PORTC.3/T0作为I/O口通过三极管Q2来驱动蜂鸣器LS1,而PORTC.2/PWM0
则作为PWM输出口通过三极管Q1来驱动蜂鸣器LS2。另外在PORTA.3和PORTA.2分别连接了两个按键,其中PWM按键用来控制PWM输出口驱动蜂鸣器;另一个PORT按键用来控制I/O口驱动蜂鸣器,连接按键的I/O开口内部上拉电阻。
先对所使用的蜂鸣器进行分析,它的工作频率为2000赫兹,也就是说蜂鸣器的驱动信号波形周期为500μs,由于是1/2duty的信号,因此一个周期内高电平和低电平的时间宽度均为250μs。在软件设计上,我们将通过两种驱动方式来进行说明。
(a)I/O口定时翻转电平驱动蜂鸣器:
1
如有帮助,欢迎支持。
使用I/O口定时翻转电平驱动蜂鸣器方式的设置较为简单,只需对波形进行分析。由于驱动信号的周期为500μs,占空比为1/2duty的方波只需每250μs进行一次电平翻转就可以得到驱动蜂鸣器的方波信号。在程序上,可以使用TIMER0来定时,将TIMER0的预分频设置为/1,选择TIMER0始终为系统时钟(主振荡器时钟/4),在TIMER0的载入/计数寄存器的高4位和低4位分别写入00H和06H,就能将TIMERO的中断设置为250μs。当需要I/O口驱动的蜂鸣器鸣叫时,只需要在进入TIMER0中断的时候对该I/O口的电平进行一次翻转,直到蜂鸣器不需要鸣叫时候将I/O口的电平设置为低电平即可(不鸣叫时将I/O口的输出电平设置为低电平是为了防止漏电)。
(b)PWM输出口直接驱动蜂鸣器:
由于PWM只能控制固定频率的蜂鸣器,所以可以在程序的系统初始化时就对PWM的输出波形进行设置。首先根据SH69P43的PWM输出的周期宽度是10位数据来选择PWM时钟。系统使用4MHz的晶振作为主振荡器,一个tosc的时间是0.25μs,若是将PWM的时钟设置为tosc的话,则蜂鸣器要求的波形周期500μs的计数值为500μs/0.25μs=(2000)10=(7D0)16,7D0H为11位的数据,而SH69P43的PWM输出周期宽度只是10位数据,所以选择PWM的时钟为tosc无法实现蜂鸣器所需的驱动波形。
若我们将PWM的时钟设置为4tosc,这样一个PWM的时钟周期就是1μs,由此可以算出500μs对应的计数值为500μs/1μs=(500)10=(1F4)16,即分别在周期寄存器的高2位、中4位和低4位三个寄存器中填入1、F和4,就完成了对输出周期的设置。接下来对占空比寄存器进行设置,在PWM输出中占空比的实现需通过设定一个周期内电平的宽度。当输出模式为普通模式时,占空比寄存器是用来设置高电平的宽度。250μs的宽度计数值为250μs/1μs=(250)10=(0FA)16。只需要在占空比寄存器的高2位、中
4位和低4位中分别填入0、F和A就可以完成对占空比的设置,设置占空
比为1/2duty。以后只需打开PWM输出,PWM输出口就能输出频率为2000Hz、占空比为1/2duty的方波。
2
如有帮助,欢迎支持。
上述文字对蜂鸣器报警电路的原理进行了介绍,望朋友们可以很好地将此应用到实际生产和生活中,并能更好地选用不同的蜂鸣器。
上述文字对蜂鸣器报警电路的原理进行了介绍,望朋友们可以很好地将此应用到实际生产和生活中,并能更好地选用不同的蜂鸣器。
3
文档评论(0)