51单片机音乐 始终不发声
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit bee_Speak =P3^7;
int num;
uint table[15]={64260,64400,64254,64580,64684,64777,64820,64898,64968,65030,65058,65110,65157,65178,65217};
uchar tablemu[]=
{0x82,0x01,0x81,0x94,0x84,0x0b4,0x0a4,0x04,0x81,0x01,0x81,0x94,0x84,0x0c4,0x0b4,0x04,0x82,0x01,0x81,0x0f4,0x0d4,0x0b4,0x0a4,0x94,0x0e2,0x01,0x0e1,0x0d4,0x0b4
,0x0c4,0x0b4,0x04,0x00};//高四位为与table中所对应的频率 低四位为节拍
void deley(int i);//延时程序
void main() //主程序
{
uchar Temp1,Temp2,Temp3;
uint Addr=0;
TMOD=0x01; //定时器工作在方式1
ET0=1;
EA=1;
while(1)
{Temp1 = tablemu[Addr++];//取出频率和节拍
if ( Temp1 == 0x00 ) //歌曲结束符
{ TR1=0;
break;
}
else
{TR0=1;
Temp2=Temp1>>4;//右移4位 后赋值给temp2
Temp3=Temp1 |0x0f;将低四位取出
num=table[Temp2]; //取出table中对应的定时器初值
TH0=(65536-num)/256; //赋初值
TL0=(65536-num)%256;
deley(Temp3); //延时程序
}
}
}
void deley(int i)
{int j=0,t,k,m;
for(j=0;j<i;j++)
for(t=0;j<187;j++);
for(k=0;k<248;k++);
for(m=0;m<2;m++);
}
void timer0() interrupt 1
{
bee_Speak=~bee_Speak;
TH0=(65536-num)/256;
TL0=(65536-num)%256;
} 单片机 c
[解决办法]
有电吗?程序写进去?
[解决办法]
好好查查程序
[解决办法]
最好用示波器量下蜂鸣器两端是否有信号
[解决办法]
用万能表检测一下接触两端是不是相通
[解决办法]
先软调下程序是否是按想象的走的,示波器量一下管脚是否有波形
[解决办法]
管脚对不对,用示波器量下蜂鸣器两端是否有信号,如果有的话再看看是不是超声波,或者频率太低