完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
|
相关推荐
19个回答
|
|
修罗君 发表于 2017-8-9 15:30 cnt100us是全局变量,因为定时器设置了100us自动重载(可根据实际需要更改),中断发生1次cnt100us+1,num也是全局变量,可以在按键程序中++/- -。num数值越大频率越低,反之亦然。
最佳答案
|
|
|
|
回帖奖励 +10 分积分
你这不已经是思路了吗,思路就是你想要做什么,达到什么目标,你这连先做什么,后做什么都有了。
|
|
|
|
......问题是不知道 怎么开始写了。。。也许我上面的陈述有错。。。。好尴尬 又是大哥 你。。。。 |
|
|
|
|
|
|
|
那这个问题。。。问得我自己都 笑了。。。按键和显示我都可以写出来。就是这个频率是什么 ?怎么去写? |
|
|
|
|
|
|
|
按键和显示你都可以写出来,这个你应该一看就明白了。 void Timer0Init(void) //100微秒@12.000MHz { TMOD = 0x02; //设置定时器自动重载模式 TL0 = 0x9C; //设置定时初值 TH0 = 0x9C; //设置定时重载值 TR0 = 1; //定时器0开始计时 EA=1; //开总中断 ET0=1; //开定时器0中断 } void timer0() interrupt 1 //中断服务程序 { Cnt100us++; //定时器中断计数变量自+1 if(Cnt100us>=num) //改变num值就改变频率(反比) { //频率=1/秒/2/num Cnt100us=0; //定时器中断计数变量清0 Buzzer=~Buzzer; //蜂鸣器端口取反 } } |
|
|
|
因为刚学,所以不是很明白 。我想问一下你这个cnt100us怎么来? 是不是要在上面写一个延时函数? 还有那个num是不是也要在上面定义一个全局变量num?就比如说我那个按键按下num++这样来改变他的值吗?? |
|
|
|
wulinwl 发表于 2017-8-9 15:52 那不是和我的初忠相反了。我是想让按键按下后频率++ 让数码管显示频率 出来。 |
|
|
|
wulinwl 发表于 2017-8-9 15:52 而且大神,我还想补充下。我按照你上面的去写了 蜂鸣器可以响。但那是当cnt100us=0时才会响。但我是想测试这个蜂鸣器到达哪个频率时响声最大。 所以需要一个数码管显示出它的频率。 频率从0开始++ |
|
|
|
修罗君 发表于 2017-8-9 16:14 那里打错了。是cnt100us>=num时就会响、。。 |
|
|
|
无源电磁式蜂鸣器常识 额定电压:电磁式蜂鸣器以1 / 2方波驱动 工作电压:可正常工作的适用电压范围,但不保证低于额定电压时仍能达到最低音压 。 消耗电流:正常发声后,持续的消耗电流量。而启动瞬间需要的电流,一般至少需要持续耗电流的三倍 。 直流电阻:以电表直接量测的直流阻抗。 声音输出:加以额定的电压,1 / 2方波,以数据库表在距离10厘米测得。 额定频率:蜂鸣器每一个频率都仍有声音,额定的频率指建议使用的最大,且音压一致性较好的频点 。 操作温度:能维持正常动作的温度-30 - +70度。 以某品牌无源电磁式蜂鸣器为例,在额定电压下其谐振频率附近就是最大音量,但我通常取2.5KHz,音质清脆。 额定电压:1.5V 电压范围:1.0V--3.0V 消耗电流:最大45mA(在1.5V, 2048Hz, 1/2 方波) 线圈阻抗:16.0±4.0 Ω 输出音压:85dB 谐振频率:2048 Hz 操作温度:-20℃-- +60℃ 贮藏温度:-30℃-- +70℃ |
|
|
|
虽然还不是很懂,但你已经帮我解释很多了。最后还想问你最后 一个问题, TL0 = 0x9C; TH0 = 0x9C; 这两个地方的0x9c是怎么计算的? 因为是自学 所以问题比较多。。。。。麻烦了。 |
|
|
|
百度一下,单片机定时器初值计算方式,应该就能解决这个问题了。PS:因为不知道你用什么单片机,所以只能指引你自己去搜索答案了。 |
|
|
|
51单片机的定时器0模式2是8位自动重装模式,在12M晶振时,最大定时256us,如果设定100us就用256-100=156=0x9c。当计数100个脉冲TL0溢出不仅置位TF0,而且会自动动将TH0的内容重新装入TL0。知道这个道理就行,实际使用中可以借助定时器计算器。 |
|
|
|
51单片机的定时器0模式2是8位自动重装模式,在12M晶振时,最大定时256us,如果设定100us就用256-100=156=0x9c。当计数100个脉冲TL0溢出不仅置位TF0,而且会自动动将TH0的内容重新装入TL0。知道这个道理就行,实际使用中可以借助定时器计算器。 |
|
|
|
|
|
|
|
wulinwl 发表于 2017-8-10 06:37 说的很详细。谢了 那我要改变它的频率值不是可以直接改变这个0x9c就行了?我试了下把这个0x9c改成一个变量 然后按键按下后定义这个变量++ 蜂鸣器的声音会变大呢、。。 |
|
|
|
修罗君 发表于 2017-8-10 09:14 可以这么做,只要搞懂定时器的工作原理,代码随意写。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
464 浏览 0 评论
478 浏览 1 评论
基于瑞萨FPB-RA4E2智能床头灯项目——1编译环境搭建与点亮驱动ws2812全彩LED
439 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
994 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
1056 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11780 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 05:16 , Processed in 1.014628 second(s), Total 110, Slave 91 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号