![]() |
發布時間: 2022-6-3 15:47
正文摘要:初學者 求指導 謝謝大家 單片機源程序如下: #include <reg51.H> #define uint unsigned int #define uchar unsigned char sbit LCD_RS=P3^0; sbit LCD_EN=P3^1; sbit key1=P3^2; ... |
unsigned char BPFlag = 0; void Deel_Beep() { static unsigned char BPSign = 0; switch(BPFlag) { case 0: //-------不響 BZ = 0; break; case 1: //-------長響 BZ = 1; BPSign ++; if(BPSign>5) { BPSign = 0; BPFlag = 0; BZ = 0; } break; case 2: //-------雙響 switch(BPSign) { case 0: BZ = 1; BPSign++; break; case 1: BZ = 0; BPSign++; break; case 2: BZ = 1; BPSign++; break; default: BZ = 0; BPSign = 0; BPFlag = 0; break; } break; case 3: //-------短響 BZ = 1; BPSign ++; if(BPSign>1) { BPSign = 0; BPFlag = 0; BZ = 0; } break; case 4: //-------雙響 switch(BPSign) { case 0: BZ = 1; BPSign++; break; case 1: BZ = 0; BPSign++; break; case 2: BZ = 1; BPSign++; break; case 3: BZ = 0; BPSign++; break; case 4: BZ = 1; BPSign++; break; default: BZ = 0; BPSign = 0; BPFlag = 0; break; } break; } } |
興安xa 發表于 2022-6-3 20:46 打擾一下,大佬可以幫忙看看我的第二個主題該如何修改嗎 |
興安xa 發表于 2022-6-3 20:46 好的,非常感謝! |
不要黑 發表于 2022-6-3 18:47 但是這些引腳的高低電平一直在變化。 |
在中斷里找到標志位1,在下面添加上buzz=0;即可,標志位2也一樣,要停止鳴響,在主函數里添加一個按鍵程序 if(sec_1==0&&min_1==0) { flag1=0; buzz=0; k1=0; } 主函數里寫 if(key4==0) { buzz=1; } 當然還在先定義按鍵和BUZZ sbit key4=P3^5; sbit buzz=P1^0; |
同意樓上說的,可以用有源蜂鳴器和一個三極管來實現,注意NPN或PNP三極管,蜂鳴器擺放的位置不同,可百度查詢 |
蜂鳴器建議選有源的,這樣加個三極管就可以直接用引腳高低電平控制了。 |