
答案之书(可放音频)
简介
基于stc单片机制作的答案之书,按下按键即可刷新屏幕文字并播放相应音频
简介:基于stc单片机制作的答案之书,按下按键即可刷新屏幕文字并播放相应音频开源协议
:GPL 3.0
描述
基于stc单片机制作的答案之书,按下按键即可刷新屏幕文字并播放相应音频,代码是不带音乐的版本,想要放音乐的话买个mini mp3模块接上,再给加上这一段代码就行
/******************************************************************************
- 实现功能:实现芯片上电分别指定播放第一曲和第二曲,基本的程序供用户测试
- 日期 :2013-05-06
- 运行环境:STC 晶振:11.0592M 波特率:9600
- 备注 :在普中科技的 51 开发板上调试 OK --- STC89C516RD+
1、该测试程序必须是模块或者芯片方案中有设备在线,譬如 U 盘、TF 卡、FLASH
******************************************************************************/
#define COMM_BAUD_RATE 9600 //串口波特率
#define OSC_FREQ 11059200 //运行晶振:11.05926MHZ
static unsigned char Send_buf[10] = {0};
/*
void Delay_Ms(unsigned int z)
{
unsigned int x=0 , y=0;
for(x=110 ; x>0 ;x--)
for(y=z; y>0;y-- );
}*/
/******************************************************************************
- 功能描述: 串口 1 初始化
- 注: 设置为 9600 波特率
******************************************************************************/
void Serial_init(void)
{
//TMOD = 0x20; // 设置 T1 为波特率发生器
//SCON = 0x50; // 0101,0000 8 位数据位, 无奇偶校验
//PCON = 0x00; //PCON=0;
//TH1=256-(OSC_FREQ/COMM_BAUD_RATE/32/12);//设置为 9600 波特率
//TL1=256-(OSC_FREQ/COMM_BAUD_RATE/32/12);
//TR1 = 1; //定时器 1 打开
//REN = 1; //串口 1 接收使能
//ES = 1; //串口 1 中断使能
PCON &= 0x7F; //波特率不倍速
SCON = 0x50; //8位数据,可变波特率
AUXR |= 0x40; //定时器时钟1T模式
AUXR &= 0xFE; //串口1选择定时器1为波特率发生器
TMOD &= 0x0F; //设置定时器模式
TMOD |= 0x20; //设置定时器模式
TL1 = 0xD9; //设置定时初始值
TH1 = 0xD9; //设置定时重载值
ET1 = 0; //禁止定时器中断
TR1 = 1; //定时器1开始计时
}
void Uart_PutByte(unsigned char ch)
{
SBUF = ch;
while(!TI){;}
TI = 0;
}
/******************************************************************************
- 功能描述: 串口向外发送命令[包括控制和查询]
- 参数说明: CMD:表示控制指令,请查阅指令表,还包括查询的相关指令
feedback:是否需要应答[0:不需要应答,1:需要应答]
data:传送的参数
******************************************************************************/
void SendCmd(unsigned char len)
{
unsigned char i = 0 ;
Uart_PutByte(0x7E); //起始
for(i=0; i<len; i++)//数据
{
Uart_PutByte(Send_buf[i]) ;
}
Uart_PutByte(0xEF) ;//结束
}
/******************************************************************************
- 功能描述:求和校验
- 和校验的思路如下:
发送的指令,去掉起始和结束。将中间的 6 个字节进行累加,最后取反码。接收端就将
接收到的一帧数据,去掉起始和结束。将中间的数据累加,再加上接收到的校验字节。刚好
为 0.这样就代表接收到的数据完全正确。
******************************************************************************/
void DoSum( unsigned char *Str, unsigned char len)
{
unsigned int xorsum = 0;
unsigned char i;
for(i=0; i<len; i++)
{
xorsum = xorsum + Str[i];
}
xorsum = 0 -xorsum;
*(Str+i) = (unsigned char)(xorsum >>8);
*(Str+i+1) = (unsigned char)(xorsum & 0x00ff);
}
void Uart_SendCMD(unsigned char CMD ,unsigned char feedback , unsigned char dat)
{
Send_buf[0] = 0xff; //保留字节
Send_buf[1] = 0x06; //长度
Send_buf[2] = CMD; //控制指令
Send_buf[3] = feedback;//是否需要反馈
Send_buf[4] = (unsigned char)(dat >> 8);//datah
Send_buf[5] = (unsigned char)(dat); //datal
DoSum(&Send_buf[0],6); //校验
SendCmd(8); //发送此帧数据
}
设计图
未生成预览图,请在编辑器重新保存一次BOM
暂无BOM
克隆工程工程成员
知识产权声明&复刻说明
本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。
请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。


评论