历史上的今天
返回首页

历史上的今天

今天是:2025年02月05日(星期三)

正在发生

2020年02月05日 | 基于51单片机的vs1003 MP3模块原理图

2020-02-05 来源:51hei

电路原理图如下:
0.png?imageView2/2/w/550

单片机源程序如下:

/*

* 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

********************************************************************************************************************/

推荐阅读

史海拾趣

Enable Semiconductor Corp公司的发展小趣事

面对竞争激烈的半导体市场,Enable Semiconductor Corp公司明智地选择了细分市场作为突破口。公司通过对市场的深入调研,发现智能手机、可穿戴设备等领域对高性能半导体产品的需求日益增长。于是,公司及时调整产品策略,加大在这些领域的研发和市场投入。这一战略布局使得公司能够快速响应市场需求,赢得客户的信赖。

FETek Technology(东沅)公司的发展小趣事

随着业务的不断扩展,东沅开始寻求国际化的发展道路。他们积极参加国际电子展会和技术交流活动,与全球各地的客户和合作伙伴建立了广泛的联系。同时,东沅还加大了对品牌建设的投入,通过广告宣传、媒体合作等方式提升品牌知名度和美誉度。这些努力使得东沅在国际市场上逐渐崭露头角,成为一家备受瞩目的电子企业。

AEMC Instruments公司的发展小趣事

AEMC Instruments公司成立于1976年,隶属于Chauvin Arnoux集团。这个新成立的公司在电子行业中崭露头角,凭借其在电气测试和测量领域的专业知识和技术,迅速获得了市场的认可。初创时期,AEMC Instruments公司以研发和生产电流测量探头、电能质量分析仪等核心产品为主,这些产品凭借其准确性和稳定性,为公司的快速发展奠定了坚实的基础。

欧密格光电(Amicc)公司的发展小趣事

随着电子行业的不断发展,AEMC Instruments公司不断追求技术创新和产品升级。公司投入大量资源进行研发,成功推出了接地电阻测试仪(包括新型革命性塔测试系统)和绝缘电阻测试仪等新型产品。这些产品不仅提高了测试的准确性和效率,还满足了市场对高品质电气测试仪器的需求。同时,公司还不断完善现有产品线,推出了钳形表、变压器变比计、谐波功率计等一系列电气测试仪器,进一步巩固了其在行业内的领先地位。

HiRel Connectors Inc公司的发展小趣事
每个摄像头单独使用电源适配器供电,适用于小规模或分散安装的摄像头系统。
DAQ Electronics LLC公司的发展小趣事

在DAQ Electronics LLC公司的发展过程中,技术创新一直是其核心竞争力。公司不断投入研发资源,推出了多款具有自主知识产权的数据采集产品。其中,一款便携式DAQ设备因其高精度、低噪声的特点,在市场上获得了广泛认可。这款产品的成功,为公司赢得了大量客户,也为公司的后续发展奠定了坚实基础。

问答坊 | AI 解惑

毕业设计制作的小车机器人!

1。寻线 2。寻光 3。机器人之间无线数传用以协同完成任务 4。红外蔽障 5。超声波蔽障 6。串口摄像头 7。自制光电码盘测速…

查看全部问答>

中移动Ophone手机主界面曝光 5月底正式发布

本帖最后由 jameswangsynnex 于 2015-3-3 19:57 编辑 5月11日消息,据中国移动相关人士透露,5月中下旬中移动将正式公开发布采用OMS手机操作系统(Open mobile system)的Ophone手机。这将意味着中国自主研发的OMS手机操作系统将正式走上前台,向 ...…

查看全部问答>

实时嵌入式操作系统uCOS_II在AT91上的移植

【摘 要】 介绍了嵌入式实时操作系统uCO S2II 的特点和内核结构, 并通过对A TM EL 公司A T 91M 55800A 的体系结构的分析, 讨论了移植的可能性, 同时提出了移植过程中出现的问题及解决的方法, 最终通过设计多 任务的应用程序证实了移植的成功L…

查看全部问答>

硬件仿真

想问一下支持硬件仿真的单片机芯片都有哪些  谢谢…

查看全部问答>

寻找PDA无线点菜系统,或者开发人员

寻找PDA无线点菜系统,或开发人员,qq: 5521201 ,谢谢。…

查看全部问答>

ATMEL系列

原装正品:ATMEGA8A-8AU     2010+ATMEGA8L-8AU     2010+ ATMEGA8L-8PU     2010+ ATMEGA8A-PU      2010+ATMEGA16L-8PU    2010+ATMEGA32 ...…

查看全部问答>

WINCE6.0操作系统在三星6410开发板上完美展现!--基于立宇泰ARMSYS6410开发板

精彩测评实例图片说明:1,WINCE6.0系统启动画面(进度条动态显示内核加载进程,LOGO图片可以根据客户需要免费更换);2,WINCE6.0桌面效果;3,800x480液晶屏全屏播放H.264视频流文件(采用硬件解码)4,800x480液晶屏全屏播放MPEG4(avi后缀)音视 ...…

查看全部问答>

我UCOS项目任务优先级划分问题

我在做同步相量测量(PMU) 就是把AD采集的三项交流电压和电流值打上时标然后上传,在接收PC发送的控制命令,如控制继电器开关的命令。由于要对数据打时标(时间戳),底层的PMU采集装置散布在不同的点,每一个点(PMU)安装一个GPS 不现实 ...…

查看全部问答>

AVR编程软件

我的电脑是64位机,系统是win7的家庭普通版,买电脑觉得送了个win7的正版系统,就没在升旗舰了。 现在在学AVR单片机,老师需要我给编一些程序,但是下了很多相关编程软件,就是用不了(比如CVAVR,ICCAVR). 很困惑,求大神指点!!! 谢谢…

查看全部问答>

最近想搞一搞STM32的F4系列的MCU,在此求一块F4 Discovery的板子

本帖最后由 bobde163 于 2014-5-24 22:34 编辑 这两天我手头上的一个Jlink坏了,本来是用来调试STM32F103的板子的,不知道是操作系统的原因还是怎么的,使用出了点问题,在电脑开机之后,第一次插入Jlink,可以通过Jlink Commandr程序查看相关信 ...…

查看全部问答>