|
楼主 |
发表于 2006-12-14 18:10:02
|
显示全部楼层
硬件就是按照程序中给的
vs1003的引脚
#define VS1003B_PORT PORTC
#define VS1003B_DDR DDRC
#define VS1003B_PIN PINC
#define VS1003B_XCS 3
#define VS1003B_XRESET 0
#define VS1003B_DREQ 1
#define VS1003B_XDCS 2
sd卡的引脚
#define MMC_SD_PORT PORTB //引脚定义
#define MMC_SD_CS_PIN 2 //mega8
#define DDR_INI() DDRB |= _BV(2)|_BV(3)|_BV(5) //mega8
//灯
#define LED1_CON() DDRC|=_BV(PC5)
#define LED1_ON() PORTC|=_BV(PC5)
#define LED1_OFF() PORTC&=~_BV(PC5)
#define LED2_CON() DDRB|=_BV(PB1)
#define LED2_ON() PORTB|=_BV(PB1)
#define LED2_OFF() PORTB&=~_BV(PB1)
//按键
#define STOP _BV(PD2)
#define MODE _BV(PD3)
#define NEXT _BV(PD7)
#define UP _BV(PD4)
#define DOWN _BV(PD6)
#define PREV _BV(PD5)
可以看出来的
那两个灯如果在开机时是做为故障显示的,一个指示VS1003初始化失败,一个指示SD卡文件系统初始化失败。
当然你的两个灯都亮的话代表都失败了。
正常情况下,一个代表单曲重复,一个代表随即播放(我最后给的程序)
另外今天我还发现有的质量差的低速卡不能使用,因为单片机速度太快了
要在程序开始时把速度调到最低即 OSCCAL = 0x00;//
而在初始化完成后调到最快OSCCAL = 0xff;//
后才能使用。
我最早买的san disk 卡不管什么速度都没问题
主程序如下:
int main()
{
DDRD &= 0x03;//初始化端口
PORTD |= 0xfc;
LED1_CON();
LED1_OFF();
LED2_CON();
LED2_OFF();
OSCCAL = 0x00;//最小RC振荡频率
OSCCAL = 0x00;
Delay(0xffff);
MMC_SD_Init();//初始化spi口
Delay(0xffff);
if(VS1003B_Init())LED1_ON();//配置VS1003
Delay(0xffff);//提供足够的延时
Delay(0xffff);
Delay(0xffff);
Delay(0xffff);
Delay(0xffff);
MMC_SD_Reset();//初始化SD卡
OSCCAL = 0xff;//最大RC振荡频率
OSCCAL = 0xff;
Delay(0xffff);
if(FAT_Init())LED2_ON();//初始化文件系统 支持FAT16和FAT32
Search("\\",&MusicInfo,&totalsongs,&type);//搜索根目下的歌曲 不包含子目录
//也可以指定文件夹 如Search("\
ew\mp3",&MusicInfo,&totalsongs,&type);
//代表在根目录下的new文件夹下的mp3文件下的音乐文件
PlayMusicwithKey();//播放歌曲
return 0;
}
手工做这个焊接要确保没问题。
-----此内容被bozai于2006-12-14,18:13:23编辑过 |
|