| data D区 不是00h-7fh吗 为什么会有0a0h ?地址是连续的,有但是已经不是data。 |
| 检查焊的是不是搞错成无源蜂鸣器,5V有源蜂鸣器外壳上有标示+号,长脚为正 |
| 应该是你们震荡源有问题,在测试看看 |
| 无源蜂鸣器震荡须有高低电平变化 三极管导通必须是b极和e极有足够的压降 而你的无源蜂鸣器放在c极无形中抬高了c、b极电势 使b、e极压降不能够使三极管正常导通 就没有了高低电平的变化 蜂鸣器就无法震荡 你可以吧蜂鸣器连接在e极 和vcc之间 再加个限流电阻 |
|
给你一个适合这个电路的演示程序试试 #include<reg52.h> #define uchar unsigned char #define uint unsigned int sbit Buzzer=P2^4; /*------------------------------- 1ms延时程序(12MHz 12T) -------------------------------*/ void delayms(uint k) { uint i,j; for(i=k;i>0;i--) for(j=114;j>0;j--); } /*--------------------------- 无源蜂鸣器驱动程序(12MHz 12T) ---------------------------*/ void BUZZER(uint x) //0.24ms半周期蜂鸣器程序 { uchar t; while(x--) { Buzzer=~Buzzer; //蜂鸣器谐振频率2048Hz for(t=0;t<28;t++); //0.24ms半周期=2083Hz } Buzzer=1; //复位 } void main() { while(1) { BUZZER(500); delayms(500); } } |
| 光有方波不行,频率必须满足人的耳朵可听范围,过低就是次声波,过高是超声波,蜂鸣器不能工作,人耳也无法接受 |
|
试试将延时时间,减到50~100ms ~~~~~~~~~~~~~~~~~~~~~~~~~~ |
人中狼 发表于 2018-9-8 23:03 可是我写了方波信号,所以无论是有源无源的蜂鸣器都应该至少会响吧。 |