首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

由上位机发送1给单片机时,蜂鸣器以400ms频率发声 调了半天调不出有关问题

2012-02-04 
由上位机发送1给单片机时,蜂鸣器以400ms频率发声 调了半天调不出问题/*由上位机发送1给单片机时,蜂鸣器以4

由上位机发送1给单片机时,蜂鸣器以400ms频率发声 调了半天调不出问题
/*由上位机发送1给单片机时,蜂鸣器以400ms频率发声
,发2时以200ms频率发声,
发3时以100ms频率发声,
发4时关闲蜂鸣器  
频率 11.0592M HZ
0011 0001 49(十) 31(16) 1
0011 0010 50 32 2
0011 0011 51 33 3

*/
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uint num;
uint temp;//用于记录num的变化
uchar a;
sbit buzzer=P2^3;
void main()
{

TMOD=0x21;//定时器T1选择工作方式2
TH1=0xfd;
TL1=0xfd;//定时器T1装初值
TR1=1;
REN=1;//SOCN中开串行接受
SM0=0;
SM1=1;//SCON中设定定时器工作方式为1
EA=1;
ES=1;//IE中开串行口中断

buzzer=0;
num=0;
temp=0;
TH0=(65536-45972)/256;
TL0=(65536-45872)%256;
ET0=1;
TR0=1;

while(1)
{
switch(a)
{
case '1':
temp++;
if(temp==4)
{
temp=0;
buzzer=~buzzer;
}
break;
case '2':
num++;
temp++;
if(temp==2)
{
temp=0;
buzzer=~buzzer;
}
break;
case '3':
num++;
temp++;
if(temp==1)
{
temp=0;
buzzer=~buzzer;
}
break;
default: break;
}
}

}
void ser() interrupt 4
{
RI=0;
a=SBUF;
}
void enter0() interrupt 1//50ms
{
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
}


[解决办法]
case '1'改成case 1。后面的同理。去掉''
[解决办法]
提一个

LZ先确定自己买到的是频率驱动的蜂鸣器

现在市场上大多数都是自带了振荡电路的蜂鸣器

直接给一个电压就响的

:)

热点排行