首页->【STC 8051单片机】

19 0

指令控制主要涉及串行通讯的初始化、指令生成与输出等函数。该设计所用单片机其晶振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;
}

经组装和调试,其效果还是蛮不错的,音质和音量都是普通耳机所不及的。


楼主可见