完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
我们很多的案例实际上就是用来检测我们的单片机上的零件等是否能正常使用,我们已经测试了很多的二极管,数码管等,对于我们的发生装置还没有一定的了解,故我们现在学习一下蜂鸣器和可变调的蜂鸣器
蜂鸣器 实验现象 蜂鸣器初始状态是没有发声; 按下按键1,则蜂鸣器开始发声 再次按下按键1,蜂鸣器停止发声 工作原理 电路原理图: 无源蜂鸣器只需改变Beep端口的电平,产生一个周期性的方波即可使蜂鸣器发生声音,不同的频率发出的声音不同。
理想的振荡源为一定频率的方波 [tr]有源蜂鸣器无源蜂鸣器[/tr]
接通电源后,接收到的音频信号电流通过电磁线圈,使电磁线圈产生磁场。 振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声 代码解析 流程设计图如下: 全局定义 ***it ***tBeep = P3 ^ 4; //蜂鸣器引脚bit btBeepFlag; //控制蜂鸣器开关的标志位 总体代码比较简单,延时,初始化函以及按键消抖数我们已经可以按照以前的进行改写,现在只需判断按键是否按下,按下之后一直色号顶开关标志位为有效或无效即可 可变调的蜂鸣器 实验现象 数码管上显示的每个数字代表着不同的音调 通过按键KEY1可以修改数字的值(0-9) 通过KEY2让蜂鸣器发声或者不发声 工作原理 其原理与蜂鸣器相似,可变掉主要就是一种综合性质的实现,用上我们的许多前面学过的东西,也算是一种复习了 关键在于如何修改输入蜂鸣器方波的频率? 输入蜂鸣器的方波是通过定时器来产生的。 定时器中断的频率决定了输入蜂鸣器的方波的频率, 而定时器中断的频率是通过重装值决定的。 因此只需要修改定时器自动重装的重装值,就能向蜂鸣器输入不同频率的方波。 代码解析 主要代码为这部分 if( ***tKey1 == 0 ) { if( ***tKey1_state == 0 ) //判断按键是否按下 { DelayMs( 10 ); //延时消抖 if( ***tKey1 == 0 ) { uiToneNum++; //声调改变 if( uiToneNum == 10 ) uiToneNum = 0; TH0 = 0xF4 - uiToneNum; //减小重装值,从而减少振动(中断)频率 ***tKey1_state = 1; //设置按键1为已按下 } } } else ***tKey1_state = 0; 由上可知道其如何改变重装值,从而得到其不同的音调 |
|
|
|
只有小组成员才能发言,加入小组>>
2548 浏览 0 评论
1143浏览 2评论
744浏览 1评论
497浏览 0评论
262浏览 0评论
423浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-21 01:11 , Processed in 1.337251 second(s), Total 80, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号