本帖最后由 cheng51 于 2019-2-6 17:22 编辑 解决了。是蜂鸣器运行时干扰或者是负载太大,导致单片机直接复位,原来的代码问题不大。在正负极间装了一个104独石电容和10uf的点解电容后就好了。谢谢大家了。 |
蜂鸣器函数延时太短了,再增加一个循环函数试试 |
wulin 发表于 2019-2-2 16:48 谢谢老师了。我临时有事不能继续完成这个小制作,我回头试试。 |
y_z_q3963 发表于 2019-2-2 20:00 尝试增加了时长还是听不到。但是只运行蜂鸣器函数可以听到声音。费解。 |
taotie 发表于 2019-2-2 18:11 注释掉其他的内容,只循环蜂鸣器函数,蜂鸣器可以发声,应该不是三极管的问题。谢谢了。 |
suuy79 发表于 2019-2-2 16:40 我表达失误了,是只循环蜂鸣器函数时声音很大。蜂鸣器确实是无源的,有源的尺寸比这个大一圈。按键的话我不知道怎么修改。 |
蜂鸣器子程序里的延时太短了吧,无源蜂鸣器按这个延时出来的声音频率太高,不在听觉范围内所以听不到。 |
换个npn管试一试~~ |
pnp管与npn管电压极性有区别~~ |
b3b7d0a20cf431ad762dda5d4236acaf2fdd98d3.png (27.57 KB, 下载次数: 41)
你的无源蜂鸣器函数不对,只振荡一个周期1ms哪能听到响? 给你一个简单的无源蜂鸣器函数(12MHz 1T),如果用定时器做振荡源更好些。 0.24ms半周期蜂鸣器程序 void buzzer(unsigned int x) //2x为1个振荡周期 { //x=1000可以鸣响0.24S unsigned char t; while(x--) { BEE=~BEE; //蜂鸣器谐振频率2048Hz for(t=0;t<210;t++); //0.24ms半周期=2083Hz } BEE=1; } |
1、首先说蜂鸣器: 你说的单独试蜂鸣器声音很大,估计你买的蜂鸣器是有源的。 2、其次,有木有可能没有按“开始按钮(KEY0)”? |