基于单片机I/O口的单线通信程序

通过单片机的I/O口发送一帧数据给语音IC,播放特定的语音

单线串口通信协议如下:基于单片机I/O口的单线通信程序_第1张图片

数据帧识别范围

head 码 : 600~1400 us
200us 码:100~250 us
400us 码:350us~500us

注意:

码和码之间需要间隔 MS 级的时间

需要发送的数据帧:

地址码 对应语音内容
0x01 已开机
0x02 模式1
0x03 模式2
0x04 模式3
0x05 已关机
0x06 下一曲
0x07 音乐1
0x08 音乐2
0x09 音乐3

代码如下:

#define TIME_200us 23	//定义固定延时变量
#define TIME_400us 46
#define TIME_start 120	//delay(120)=1.02ms

void SPEECH_Write_Byte(unsigned char data)
{ 
     DISI();
     DQ=1 ;
     DQ=0;
     delays(TIME_start);
     unsigned char i = 0;
     unsigned char DATA = 0x80;	//数据从最高位开始发送
     for(i = 0;i < 8 ;i++)
     {
 	if(data & DATA)
 	{
	     DQ=1;
	     delays(TIME_400us);
	     DQ=0;
	     delays(TIME_200us);
	}
	else
	{
	      DQ=1;
	      delays(TIME_200us);
	      DQ=0;
	      delays(TIME_400us);
	}
	DATA >>= 1;
     }
     DQ=1;
     ENI();
}

void delays(unsigned int num)
{
     while(num--);
}

你可能感兴趣的:(单片机)