找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3564|回复: 2
打印 上一主题 下一主题
收起左侧

想用手机发送信息通过蓝牙模块联单片机控制蜂鸣器发出音乐

[复制链接]
跳转到指定楼层
楼主
ID:76963 发表于 2015-6-11 21:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
遇到问题:手机发送2,3时可以控制蜂鸣器响,但是将音乐程序加入后,手机发送任何数字蜂鸣器都会滴滴响但不成音乐,以下是我写的下位机程序,不知道哪里出错了,请各位大神指教,谢谢谢谢!!!!急需啊!

#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char  //无符号字符型 宏定义        变量范围0~255
#define uint  unsigned int         //无符号整型 宏定义        变量范围0~65535
sbit Beep =  P2^1 ;
uchar tmp;
uchar i,j,flag,time1,time2;
uint code array1[]={
     400,400,650,650,650,1200,
     400,400,650,650,650,1200,
     400,400,650,650,650,650,1200,
     400,400,650,650,650,1200
     };
uchar code array[]={
     0xfd,0x79,0xfd,0x79,0xfd,0xc7,0xfd,0x79,0xfe,0x21,0xfe,0x05,
        0xfd,0x79,0xfd,0x79,0xfd,0xc7,0xfd,0x79,0xfe,0x51,0xfe,0x21,  
     0xfd,0x79,0xfd,0x79,0xfe,0xc0,0xfe,0x84,0xfe,0x21,0xfe,0x05,0xfd,0xc7,
     0xfe,0x99,0xfe,0x99,0xfe,0x90,0xfe,0x21,0xfe,0x51,0xfe,0x21
     };
void delay(uint m)
{
            uint n;
         for(;m>0;m--)
          for(n=125;n>0;n--);
}


void init()               //初始化  
{  
          TMOD = 0x21;       // 定时器1工作于8位自动重载模式, 用于产生波特率  
          TH1=TL1=0xFD;      // 波特率9600  
                   
      SCON = 0x50;       // 设定串行口工作方式1 允许接收,相当于下面三句  
                //SM0=0;  
                //SM1=1;  
                //REN=1;  
          PCON =0x00;        // 波特率不倍增  
          
          EA=1;  
          ES=1;                              
            Beep =0;           //初始化设置指示灯灭  
                delay(25);
                Beep =1;
}  


void ctrl()         //根据接受信息做出操作  
{  
       
  switch(tmp)  
          {         
     case '2':      flag=1;    break;          //收到字符2,指示灯亮   
         case '3':       flag=2;     break;          //收到字符3,指示灯灭

          }  
}  

  /************************************************/   
void beep_with()
{
        if(flag==1)
        {        TH0=TL0=0;
            TR1 = 1;
            ET0=1;  
                 while(1)
                         {
                          time1=array[i++];
                          time2=array[i++];
                          if(i==50)
                           i=0;
                          delay(array1[j++]);
                          if(j==25)
                           j=0;
                         }
        }       
    if(flag==2)
        {
            TR0=0;
                Beep=~Beep;
         }
}         

void main( )  
        { init();
          while(1)  
                {  
                   if(RI==1)         // 是否有数据到来  
                      {  
                        RI = 0;  
                        tmp = SBUF;                  
                    ctrl();
                                        beep_with();
                      }            
                }  
        }  


void init0() interrupt 1
{
         TR0=0;
         Beep=~Beep;
         TH0=time1;
         TL0=time2;
         TR0=1;
}         

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1 发表于 2015-6-12 01:34 | 只看该作者
这个程序是播放什么音乐的?  数组这么短
回复

使用道具 举报

板凳
ID:76963 发表于 2015-6-14 16:52 | 只看该作者
admin 发表于 2015-6-12 01:34
这个程序是播放什么音乐的?  数组这么短

生日快乐
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表