资讯详情

MCC、超详细干货:用PIC单片机做一个MP3音乐播放器









PIC16F15324启垦板是一款玲珑的启垦板,它板载了LED和KEY 等基础尝试单位,不妨完毕简略的进修和尝试目的。为了充足感受和展现PIC16F15324的本能,在本启垦板的前提上经过摆设I2C交口的OLED屏来显现信息,运用UART来统制MP3音乐模块来播搁音频文献,运用KEY采用播搁实质,进而形成了一个不妨显现华文歌单的MP3播搁安装,其完全构偏睹图1所示。

图1 播搁器完全形成
在安排历程中,重要经过3个阶段: 1) 引足摆设阶段 2)  功效步调安排阶段 3) 功效尝试阶段
1.      引足摆设
PIC16F15324关于于启垦东西的规定,此地是运用MPLABX IDE v5.45为启垦东西,并增添MCC举行引足功效的摆设,其引足摆设状况如图2所示。 个中,PA0对交OLED屏的数据引足,PA1对交OLED屏的时钟引足;PC4对交MP3播搁模块的串口交管引足;PA5对交按键引足;PC1动作备用引足,以便安排音量。
图2 引足功效摆设
另外,因步调安排的须要,还采用了延时功效,睹图3所示。
图3采用延时功效
在完毕了引足的摆设后,点打“Generate”即可天生步调框架及步调。 2.      功效步调安排 1)  显现步调安排
#define OLED_SCLK_Set()   SCL_SetHigh() #define OLED_SDIN_Set()   SDA_SetHigh() 相映的OLED屏初始化函数为:



  1. void OLED_Init(void)





  2. {





  3. Write_IIC_Command(0xAE); //display off





  4. Write_IIC_Command(0x20); //Set Memory Addressing Mode





  5. Write_IIC_Command(0x10);





  6. Write_IIC_Command(0xb0);//Set Page Start Address for Page Addressing Mode,0-7





  7. Write_IIC_Command(0xc8);//Set COM Output Scan Direction





  8. Write_IIC_Command(0x00);//---set low column address





  9. Write_IIC_Command(0x10);//---set high column address





  10. Write_IIC_Command(0x40);//--set start line address





  11. Write_IIC_Command(0x81);//--set contrast control register





  12. Write_IIC_Command(0xdf);





  13. Write_IIC_Command(0xa1);//--set segment re-map 0 to 127





  14. Write_IIC_Command(0xa6);//--set normal display





  15. Write_IIC_Command(0xa8);//--set multiplex ratio(1 to 64)





  16. Write_IIC_Command(0x3F);//





  17. Write_IIC_Command(0xa4);//





  18. Write_IIC_Command(0xd3);//-set display offset





  19. Write_IIC_Command(0x00);//-not offset





  20. Write_IIC_Command(0xd5);//--set display clock divide ratio/oscillator frequency





  21. Write_IIC_Command(0xf0);//--set divide ratio





  22. Write_IIC_Command(0xd9);//--set pre-charge period





  23. Write_IIC_Command(0x22); //





  24. Write_IIC_Command(0xda);//--set com pins hardware configuration





  25. Write_IIC_Command(0x12);





  26. Write_IIC_Command(0xdb);//--set vcomh





  27. Write_IIC_Command(0x20);//0x20,0.77xVcc





  28. Write_IIC_Command(0x8d);//--set DC-DC enable





  29. Write_IIC_Command(0x14);//





  30. Write_IIC_Command(0xaf);//--turn on oled panel





  31. OLED_Clear();





  32. }






2)  提取字模及歌曲采用
为了实行图4所示的歌曲采用界面,将所用到的汉字字模用字模提取东西提取出来,并修立了小字库。
图4 歌曲采用界面
图5 提取字模
汉字的显现函数为:



  1. void OLED_ShowCHinese(unsigned char x,unsigned char y,unsigned char no)





  2. {





  3. unsigned char t,adder=0;





  4. OLED_Set_Pos(x,y);





  5. for(t=0;t<16;t++)





  6. {





  7. OLED_WR_Byte(Hzk[2*no][t],OLED_DATA);





  8. adder+=1;





  9. }





  10. OLED_Set_Pos(x,y+1);





  11. for(t=0;t<16;t++)





  12. {





  13. OLED_WR_Byte(Hzk[2*no+1][t],OLED_DATA);





  14. adder+=1;





  15. }





  16. }





借帮启垦板上的按键,可实行播搁歌曲的采用,其本理图如图6所示。
图6按键本理图
在按键的统制下,实行歌曲采用的步调如下:



  1. void OLED_ShowCHinese(unsigned char x,unsigned char y,unsigned char no)





  2. {





  3. unsigned char t,adder=0;





  4. OLED_Set_Pos(x,y);





  5. for(t=0;t<16;t++)





  6. {





  7. OLED_WR_Byte(Hzk[2*no][t],OLED_DATA);





  8. adder+=1;





  9. }





  10. OLED_Set_Pos(x,y+1);





  11. for(t=0;t<16;t++)





  12. {





  13. OLED_WR_Byte(Hzk[2*no+1][t],OLED_DATA);





  14. adder+=1;





  15. }





  16. }










3)串行通讯及运用
因为MP3播搁模块是支援串口统制的,故此地用串口的发送功效来发送统制指令,其引足陈设如图7所示。
图7  MP3播搁模块引足陈设
为便于指令的办法,特将指令寄存到数组中,其实质如下:
unsigned charcmd3[10] = {0X7E, 0xFF, 0x06, 0X03, 0x00, 0x00, 0x01, 0xFE, 0xF7, 0XEF};//*play index
unsigned charcmd6[10] = {0X7E, 0xFF, 0x06, 0X06, 0x00, 0x00, 0x10, 0xFE, 0xE5, 0XEF};//*set  Volume
另外,播搁指定乐曲的指令为:
playn(num); for(i=0;i<10;i++) { EUSART1_Write(cmd3); } 安排音量的指令为: setVolume(18); for(i=0;i<10;i++) { EUSART1_Write(cmd6); } 3.      功效尝试
以MP3指令发送为例,其功效考证界面如图8所示。
图8 指令发送考证
图9 启垦板启动尝试
在完毕各关节的尝试后,步调的编译截止如图10所示,瞅睹该安排关于保存资材的占用还十分高。
图10  编译截止
另外,咱们还举行一项T卡尝试,假如小心考察便会创造,在MP3播搁模块上所用的T卡而没有是TF卡。经本质尝试,效验一般良佳。
图11 初始界面 图12 播搁界面 由此瞅来PIC16F15324启垦板固然体型小,功效有限,但是小芯片依旧有大能量,在外设的协同下也能显现华文菜单,也能播搁语音等。





本文系21ic论坛网友jinglixixi本创  




免责证明:本文实质由21ic赢得受权后颁布,版权归本作家一切,本平台仅供给信息保存效劳。文章仅代表作家部分睹解,没有代表本平台态度,如有问题,请通联咱们,感谢!


锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台