打印
[开源硬件]

基于51单片机的MP3点播器 续3

[复制链接]
1016|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jinglixixi|  楼主 | 2016-7-21 16:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
3. 通讯功能的设计
在指令控制的实现上,主要涉及串行通讯的初始化、指令生成与输出等函数。测试过程中,可通过串口助手来验证相应的指令功能。
该设计所用单片机其晶振11.0592MH,故很容易获得9600bps的波特率,其串行通讯的初始化函数如下:
void init_serialcom( void )
{
       SCON = 0x50 ;   
           TMOD |= 0x20 ;
           PCON |= 0x80 ;  
           TH1 = 0xFA ;   //  9600bps,11.0592MHz 晶振.
           IE |= 0x90 ;   
           TR1 = 1 ;      
           TI=1;
}
   为实现单个字符的输出,相应的发送函数如下:
void send_char_com(unsigned char ch)
{
             SBUF=ch;
             while(TI== 0);
                 TI=0;
}
为了便于发送各操作指令,指令输出函数是带参数的,并以参数决定发送的,该函数内容如下:
void send_zl(unsigned char h)
{
          u8 n=0;
      unsigned char m;       
          while(n<10)      
          {
                          if(h==0) m=cmd[n];//play
                          if(h==1) m=cmd4[n];//pause
                          if(h==2) m=cmd5[n];//stop
                          if(h==3) m=cmd3[n];//play index
                          if(h==4) m=cmd6[n];//set Volume
                          send_char_com(m);
              delay(10);
                          n++;
          }
}       
按歌曲顺序播放的函数如下:
void playn(unsigned int index) //play index
{  //  index为歌曲顺序号:0~2999
        u8 i;
        u8 checksum = 0;      
        cmd3[5] = (u8)(index >> 8);
        cmd3[6] = (u8)(index);
        for(i=2; i<8; i++)
        {
                checksum += cmd3[i];   //计算校验和
        }
        cmd3[8] = (u8)~checksum;
}
   调节音量的函数如下:
void setVolume(u8 index) //set Volume
{
    //  index为音量值:0~30  
        u8 i;
        u8 checksum = 0;
        cmd6[6] = (u8)(index);
        for (i=2; i<8; i++)
        {
                checksum += cmd6[i];//计算校验和
        }
        cmd6[8] = (u8)~checksum;
}

相关帖子

沙发
海中水| | 2016-7-21 20:54 | 只看该作者
这是要连载啊!

使用特权

评论回复
板凳
jinglixixi|  楼主 | 2016-7-22 10:06 | 只看该作者

哈哈太长了,今天就把它结了。

使用特权

评论回复
地板
海中水| | 2016-7-22 11:40 | 只看该作者
jinglixixi 发表于 2016-7-22 10:06
哈哈太长了,今天就把它结了。

可以发个工程吗?

使用特权

评论回复
5
sa123800| | 2016-8-4 14:00 | 只看该作者
也想自己尝试着去做一个。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

446

主题

2675

帖子

37

粉丝