对于单片机学习版上的蜂鸣器的问题。。STC89C52的单片机。。应该是无源蜂鸣器。。

电路图如图所示。。。我的问题是。。我编程控制它。。先定义:sbitbeer=P0^7;然后控制语句时beer=0;或者beer=~beer;延时一段时间;beer=1;再... 电路图如图所示。。。我的问题是。。我编程控制它。。先定义:sbit beer=P0^7;然后控制语句时beer=0;或者beer=~beer;延时一段时间;beer=1;再延时。。就这样一直循环。。运行程序后。。蜂鸣器只响一瞬间。。即每次循环只响一瞬间。。但是如果我整个程序不加其他句子。。就一句:beer=~beer;蜂鸣器就能一直响。。哪位能够解答一下??在线等。。 展开
 我来答
windwin999
2011-02-19 · TA获得超过137个赞
知道答主
回答量:75
采纳率:0%
帮助的人:0
展开全部
I/O 口定时翻转电平驱动蜂鸣器方式
使用I/O 口定时翻转电平驱动蜂鸣器方式的设置比较简单,只需要对波形分析一下。由于驱动的信号刚好为周期500μs,占空比为1/2duty 的方波,只需要每250μs 进行一次电平翻转,就可以得到驱动蜂鸣器的方波信号。在程序上,可以使用TIMER0 来定时,将TIMER0 的预分频设置为/1,选择TIMER0 的始终为系统时钟(主振荡器时钟/4),在TIMER0 的载入/计数寄存器的高4 位和低4 位分别写入00H 和06H,就能将TIMER0 的中断设置为250μs。当需要I/O 口驱动的蜂鸣器鸣叫时,只需要在进入TIMER0 中断的时候对该 I/O 口的电平进行翻转一次,直到蜂鸣器不需要鸣叫的时候,将I/O 口的电平设置为低电平即可。不鸣叫时将I/O 口的输出电平设置为低电平是为了防止漏电。

估计是你的延时太长了
宿兴电子
2024-11-28 广告
联系我们一、有无震荡源 无源这里的“源”不是指电源,而是指震荡源。也就是说,有源蜂鸣器内部带震荡源,所以只要一通电就会叫。而无源内部不带震荡源,所以如果用直流信号无法令其鸣叫。 二、价格不同 有源蜂鸣器往比无源蜂鸣器贵,就是因为里面多个震荡... 点击进入详情页
本回答由宿兴电子提供
XA打不死的小强
2011-02-19 · TA获得超过509个赞
知道小有建树答主
回答量:452
采纳率:0%
帮助的人:241万
展开全部
一般单片机的程序都是一个while(1),单片机会一直执行while循环里面的语句;
你的程序应该在主程序里面这样写;
while(1)
{
beep=~beep;
delay();
}
这样蜂鸣器才会循环响的。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
changmingking
2011-02-19
知道答主
回答量:37
采纳率:0%
帮助的人:11.4万
展开全部
你画个程序流程图,或者在线仿真,看看程序到底怎么走,在通过WATCH窗口看PORTC的值 逻辑没错的话 不会出现此问题的
初步估计,你是程序跑到底就不返回了 也就是只执行一遍~~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友2e754a3
2011-02-19 · 超过18用户采纳过TA的回答
知道答主
回答量:103
采纳率:0%
帮助的人:63.8万
展开全部
while(1)
[
beer=0;
delay(1);
beer=1;
delay(1);
]
delay().................试试(自己写delay吧)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式