A. 單片機蜂鳴器c語言編程
沒有研究你的程序,但是Beep=~Beep;很好理解,就是將Beep的值
取反
,如果Beep原來是1(響),那麼將Beep的值取反後再給回它自已那不是變成0(不響)了嗎。
B. 蜂鳴器每一秒響一次,響十秒後關閉,怎麼做,C語言
每隔一秒響一次, 響多久沒有說
一般都是響一秒 停一秒。 這樣就是20秒後關閉了。
可以寫作
intcnt=0;
while(cnt++<10)
{
BEEP=1;
delay_ms(1000);
BEEP=0;
delay_ms(1000);
}
C. 單片機用C語言讓蜂鳴器發出兩種聲調,怎麼編程
讓蜂鳴器發出兩種不同的聲調很容易,只要給蜂鳴器的控制信號發送不同頻率的脈沖就可以實現了,以下以延時方式來做。
#include<reg51.h>
#define
uchar
unsigned
char
#define
uint
unsigned
int
sbit
SPK=P1^0;
sbit
K1=P1^7;
//發聲函數
void
Alarm(uchar
t)
{
uchari,j;
for(i=0;i<200;i++)
{
SPK=~SPK;
for(j=0;j<t;j++);
//由參數t行成不同的頻率
}
}
voidmain()
{
SPK=0;
while(1)
{
if(K1==1)
{
Alarm(90);
Alarm(120);
}
}
}
D. AT89C52單片機 蜂鳴器響一秒停0.5秒 速求 c語言
#include <reg51.h>
typedef unsigned char BYTE; // 數據范圍0-255
typedef unsigned int WORD; // 數據范圍0-65535
typedef bit BOOL ; // 數據范圍0-1
sbit BUZZ = P0^0;
WORD count,flag;
void timer0() interrupt 1
{
TH0=(65535-46080)/256;
TL0=(65536-46080)%256; // 重新載入延時時間,如果晶振為12M, 則為被減數則為50000
count++;
if(count==10) // 11.0592 晶振精確延時0.5秒
{ flag++;
if (flag==1)
{BUZZ=0; }
else if (flag==3)
{BUZZ=1; flag=0; }
count=0;
}
}
/* 主程序 */
/********************************/
main()
{
TMOD=0x01; // 定時器工作在方式1
TH0=(65536-46080)/256;
TL0=(65536-46080)%256; // 載入定時器初值
ET0=1; // 開定時器0 中斷
EA=1; // 開總中斷
TR0=1; // 定時器0工作
flag=0;
while(1);
}