历史上的今天
今天是:2025年02月05日(星期三)
2020年02月05日 | 基于51单片机的vs1003 MP3模块原理图
2020-02-05 来源:51hei
电路原理图如下:
单片机源程序如下:
/*
* MP3模块测试程序
*
* 用途:MP3模块测试程序
* vs1003 的硬件测试程序,主控芯片为STC12LE5A60S2
* 其他的微处理器(带SPI接口的)只需稍加修改即可适用
* 对于不带硬SPI接口的微处理器可以用IO进行SPI的时序模拟
*
* 作者 日期 备注
* Huafeng Lin 20010/09/10 新增
* Huafeng Lin 20010/09/10 修改
*
*/
#include "vs1003.h"
#include "MusicDataMP3.c"
#include #define uchar unsigned char #define uint unsigned int #define ulong unsigned long #define bool bit #define true 1 #define flase 0 //针对SD卡读写板调整引脚 #define uint8 unsigned char sbit MP3_XRESET = P3^2; #define Mp3PutInReset() { MP3_XRESET = 0; } #define Mp3ReleaseFromReset() { MP3_XRESET =1; } sbit MP3_XCS = P3^3; #define Mp3SelectControl() { MP3_XCS = 0; } #define Mp3DeselectControl() { MP3_XCS = 1; } sbit MP3_XDCS = P3^4; #define Mp3SelectData() { MP3_XDCS = 0; } #define Mp3DeselectData() { MP3_XDCS = 1; } sbit MP3_DREQ = P3^5; sbit c_SPI_SI = P1^5; sbit c_SPI_SO = P1^6; sbit c_SPI_CLK = P1^7; #define Macro_Set_SI_High() c_SPI_SI = 1 #define Macro_Set_SI_Low() c_SPI_SI = 0 #define Macro_Set_CLK_High() c_SPI_CLK = 1 #define Macro_Set_CLK_Low() c_SPI_CLK = 0 void LCD_write_english_string(unsigned char X,unsigned char Y,char *s); //#define SPIWait() { while((S0SPSR & 0x80) == 0); }//等待SPI将数据发送完毕 //#define SPI_RESULT_BYTE S0SPDR //extern long volatile timeval; //用于延时的全局变量 //1ms Delayfunction //void Delay(uchar ucDelayCount) void wait(uchar ucDelayCount) { uchar ucTempCount; uchar uci; for(ucTempCount=0; ucTempCount // uci = 200; //Err // uci = 250; //OK uci = 230; while(uci--) { _nop_(); } } } //#define wait(x) Delay(x) /**********************************************************/ /* 函数名称 : MSPI_Init */ /* 函数功能 : 初始化SPI接口,设置为主机。 */ /* 参数 : 无 */ /* 返回值 : 无 */ /*--------------------------------------------------------*/ void MSPI_Init(void) { /* PINSEL0 = (PINSEL0 & 0xFFFF00FF) | 0x00005500; //选择 SPI S0SPCCR = 0x08; // SPI 时钟设置 S0SPCR = (0 << 3) | // CPHA = 0, (0 << 4) | // CPOL = 0, (1 << 5) | // MSTR = 1, (0 << 6) | // LSBF = 0, (0 << 7); // SPIE = 0, */ c_SPI_SO = 1; MP3_DREQ = 1; } /**********************************************************/ /* 函数名称 : InitPortVS1003 */ /* 函数功能 : MCU与vs1003接口的初始化 */ /* 参数 : 无 */ /* 返回值 : 无 */ /*--------------------------------------------------------*/ void InitPortVS1003(void) { MSPI_Init();//SPI口的初始化 // IODIR &= 0xfffeffff; //其他接口线的设置,其中dreq 为输入口 // IODIR |= MP3_XRESET | MP3_XCS | MP3_XDCS;//xRESET,xCS,xDS均为输出口 // IOSET |= MP3_XRESET | MP3_XCS | MP3_XDCS;//xRESET,xCS,xDS默认输出高电平 MP3_DREQ = 1; //置为输入 MP3_XRESET = 1; MP3_XCS = 1; MP3_XDCS = 1; } //uint8 SD_SPI_ReadByte(void); //void SD_SPI_WriteByte(uint8 ucSendData); //#define SPI_RecByte() SD_SPI_ReadByte() //#define SPIPutChar(x) SD_SPI_WriteByte(x) #if 1 /**********************************************************/ /* 函数名称 : SPIPutChar */ /* 函数功能 : 通过SPI发送一个字节的数据 */ /* 参数 : 待发送的字节数据 */ /* 返回值 : 无 */ /*--------------------------------------------------------*/ void SPIPutChar(unsigned char ucSendData) { // S0SPDR = c; // while((S0SPSR & 0x80) == 0); //等待SPI将数据发送完毕 uchar ucCount; uchar ucMaskCode; ucMaskCode = 0x80; for(ucCount=0; ucCount<8; ucCount++) { Macro_Set_CLK_Low(); if(ucMaskCode & ucSendData) { Macro_Set_SI_High(); } else { Macro_Set_SI_Low(); } Macro_Set_CLK_High(); ucMaskCode >>= 1; } } /******************************************************************************************************************* ** 函数名称: INT8U SPI_RecByte() Name: INT8U SPI_RecByte() ** 功能描述: 从SPI接口接收一个字节 Function: receive a byte from SPI interface ** 输 入: 无 Input: NULL ** 输 出: 收到的字节 Output: the byte that be received ********************************************************************************************************************/
下一篇:基于51单片机的频率测量仪设计
史海拾趣
|
本帖最后由 jameswangsynnex 于 2015-3-3 19:57 编辑 5月11日消息,据中国移动相关人士透露,5月中下旬中移动将正式公开发布采用OMS手机操作系统(Open mobile system)的Ophone手机。这将意味着中国自主研发的OMS手机操作系统将正式走上前台,向 ...… 查看全部问答> |
|
【摘 要】 介绍了嵌入式实时操作系统uCO S2II 的特点和内核结构, 并通过对A TM EL 公司A T 91M 55800A 的体系结构的分析, 讨论了移植的可能性, 同时提出了移植过程中出现的问题及解决的方法, 最终通过设计多 任务的应用程序证实了移植的成功L… 查看全部问答> |
|
WINCE6.0操作系统在三星6410开发板上完美展现!--基于立宇泰ARMSYS6410开发板 精彩测评实例图片说明:1,WINCE6.0系统启动画面(进度条动态显示内核加载进程,LOGO图片可以根据客户需要免费更换);2,WINCE6.0桌面效果;3,800x480液晶屏全屏播放H.264视频流文件(采用硬件解码)4,800x480液晶屏全屏播放MPEG4(avi后缀)音视 ...… 查看全部问答> |
|
我在做同步相量测量(PMU) 就是把AD采集的三项交流电压和电流值打上时标然后上传,在接收PC发送的控制命令,如控制继电器开关的命令。由于要对数据打时标(时间戳),底层的PMU采集装置散布在不同的点,每一个点(PMU)安装一个GPS 不现实 ...… 查看全部问答> |
|
最近想搞一搞STM32的F4系列的MCU,在此求一块F4 Discovery的板子 本帖最后由 bobde163 于 2014-5-24 22:34 编辑 这两天我手头上的一个Jlink坏了,本来是用来调试STM32F103的板子的,不知道是操作系统的原因还是怎么的,使用出了点问题,在电脑开机之后,第一次插入Jlink,可以通过Jlink Commandr程序查看相关信 ...… 查看全部问答> |




