1 你的P0看不出作用,每次EX0中断都取反,可能会影响与P0有关的电路部分
2 main()中,while(1)后没有语句,编译不了。可能你是省略了后面的程序
3 for(j=0;j<57;j++);延时是否够,不够时改为for(j=0;j<57;j++) _nop();或for(j=0;j<57;j++) { _nop();_nop(); }
4 BEEP(bit i)中while(1)没有跳出的语句,在需要出来时用break;跳出while(1)循环
短路8050的CE,上电看看蜂鸣器响不响。不响的话去掉100欧姆电阻。
响的话去掉8050的短路,拨码开关断开,10k电阻接拨码开关的一头接电源,上电看看响不。
不响改10k为1k或470欧姆。
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 口的输出电平设置为低电平是为了防止漏电。
估计是你的延时太长了
以上就是关于c52单片机无源蜂鸣器的问题全部的内容,包括:c52单片机无源蜂鸣器的问题、mega16单片机驱动蜂鸣器,程序如下,怎么不响:DDRD|=BIT(4);PORTD|=BIT(4);急求!、对于单片机学习版上的蜂鸣器的问题。。STC89C52的单片机。。应该是无源蜂鸣器。。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)