语音模块JQ8400
利用上位机与模块通信倒是简单,现在我把程序写进单片机,然后单片机来给模块发送指令。现在不止是程序问题还是其他问题。
#include <reg52.h>
void UART1_SendByte(unsigned char dat);
void ConfigUART(unsigned int baud);
void Music_play();
void Flash_swtich();
void main()
{
EA = 1; //使能总中断
ConfigUART(9600);
Flash_swtich();
Music_play();
while(1);
}
/* 串口配置函数,baud-通信波特率 */
void ConfigUART(unsigned int baud)
{
SCON = 0x50; //配置串口为模式 1
TMOD = 0x20; //配置 T1 为模式 2
TH1 = 256 - (11059200/12/32)/baud; //计算 T1 重载值
TL1 = TH1; //初值等于重载值
ET1 = 0; //禁止 T1 中断
ES = 1; //使能串口中断
TR1 = 1; //启动 T1
}
void UART1_SendByte(unsigned char dat)
{
SBUF = dat;
while(!TI);
TI = 0;
// SBUF=dat; //将数据写入到串口缓冲
// sending=1; //设置发送标志
// while(sending); //等待发送完毕
}
void Music_play() //播放指令
{
UART1_SendByte(0xAA);
UART1_SendByte(0x02);
UART1_SendByte(0x00);
UART1_SendByte(0xAC);
}
void Flash_swtich() // 选择FLASH播放 指令
{
UART1_SendByte(0xAA);
UART1_SendByte(0x0B);
UART1_SendByte(0x01);
UART1_SendByte(0x02);
UART1_SendByte(0xB8);
}
/* UART 中断服务函数 */
void InterruptUART() interrupt 4
{
if (RI) //接收到字节
{
RI = 0; //手动清零接收中断
SBUF = SBUF;
}
if (TI) //字节发送完毕
{
TI = 0; //手动清零发送中断标志位
}
}
|