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

51单片机音乐 始终不发声解决办法

2014-01-12 
51单片机音乐 始终不发声#includereg51.h#define uchar unsigned char#define uint unsigned intsbit be

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
[解决办法]
有电吗?程序写进去?
[解决办法]
好好查查程序
[解决办法]
最好用示波器量下蜂鸣器两端是否有信号
[解决办法]
用万能表检测一下接触两端是不是相通
[解决办法]
先软调下程序是否是按想象的走的,示波器量一下管脚是否有波形
[解决办法]
管脚对不对,用示波器量下蜂鸣器两端是否有信号,如果有的话再看看是不是超声波,或者频率太低

热点排行