0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【开源获奖案例】基于T5L智能屏的音乐播放与歌词显示方案

迪文智能屏 ? 2025-05-08 09:52 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

——来自迪文开发者论坛

本期为大家推送迪文开发者论坛获奖开源案例——基于T5L智能屏的音乐播放与歌词显示方案。该方案通过T5L串口与通用开发板、解码板进行数据交互,将解析完成的音频和歌词通过串口发送给智能屏,实现音乐播放、歌词显示、歌曲播放进度控制等功能,为用户打造流畅的视听体验。


GUI工程设计
1c41ba3e-2baf-11f0-9434-92fbcf53809c.png
C51工程设计

(1)T5L智能屏代码如下:

INIT_CPU();//系统初始化PORT_Init();//IO口初始化T0_Init();//定时器0初始化// T1_Init();T2_Init();//定时器2初始化// WDT_ON();//打开开门狗 喂狗在定时器T2中my_UART4_Init(115200);uart_init();//串口初始化voidMainMachineHandle(void){ if(UartDataHandle) { uartHandle(Uart4_Rx,uart4_rx_count); CLR_UartMp3(); }}

(2)图形剪切函数:

voidVolCutDisp(VolCutDispLog_Para_s *Para){ u8data WriteBuff[10][2]; u8VolC=0; u16Endaddrx=0; VolC=Para->Vol; memset(WriteBuff,0,sizeof(WriteBuff)); WriteBuff[0][1]=6;//固定 WriteBuff[1][1]=1;//固定 WriteBuff[2][1]=Para->CutPage;//音量条所在页面 WriteBuff[3][0]=Para->CutbegXY[0]>>8;//开始地址 X WriteBuff[3][1]=Para->CutbegXY[0]&0xff;//X WriteBuff[4][0]=Para->CutbegXY[1]>>8;//Y WriteBuff[4][1]=Para->CutbegXY[1]&0xff;//Y Endaddrx=Para->CutbegXY[0]+VolC*0.01*Para->LogoLen;//结束地址 WriteBuff[5][0]=Endaddrx>>8;//X WriteBuff[5][1]=Endaddrx&0xff;//X WriteBuff[6][0]=Para->CutendXY[1]>>8;//Y WriteBuff[6][1]=Para->CutendXY[1]&0xff;//Y WriteBuff[7][0]=Para->localPageXY[0]>>8; WriteBuff[7][1]=Para->localPageXY[0]&0xff; WriteBuff[8][0]=Para->localPageXY[1]>>8; WriteBuff[8][1]=Para->localPageXY[1]&0xff; WriteBuff[9][1]=0XFF; write_dgusii_vp(Para->CutDispaddr,WriteBuff[0],10);}voidUpanPlaySliderLogo(void){ staticu8 VolC=102; u8data Readdtata[2]; VolCutDispLog_Para_sUpanPlayLog; if(NowPage[1]!=4) { VolC=0x102; return; } Read_Dgusii_Vp(0x17B8,Readdtata,1); if(VolC==Readdtata[1]) return; VolC=Readdtata[1]; UpanPlayLog.LogoLen=459;//长度 UpanPlayLog.CutPage=13;//剪切图形所在页面 UpanPlayLog.CutDispaddr=0x8000;//基本图形地址 UpanPlayLog.Vol=VolC;//0~100音量值 UpanPlayLog.CutbegXY[0]=160;//剪切图形左上角开始地址X UpanPlayLog.CutbegXY[1]=386;//剪切图形左上角开始地址Y UpanPlayLog.CutendXY[0]=619;//剪切图形右下角开始地址X UpanPlayLog.CutendXY[1]=398;//剪切图形右下角结束地址Y UpanPlayLog.localPageXY[0]=160; UpanPlayLog.localPageXY[1]=386; VolCutDisp(&UpanPlayLog);}

(3)通用开发板代码如下:

voidLoopHandle_task(void*p_arg){ delay_ms(1000); Init_Mp3data(); DMT_ChangePage(1); while(1) { LCD_Handle(); Mp3PlayProcess(); UdiskDisInOut(); vTaskDelay(LoopHandle_ms / portTICK_PERIOD_MS); }}voidLCD_Handle(void){ DMT_Action1(); // 循环检测屏幕上是否有数据发生改变 Mp3SongSchedUp(); // MP3播放的进度条 USB_PlayDispSongName(); // 歌曲名称更新 MusicPlayLysic(); // 更新歌曲名称}

(4)歌词显示:

voidMusicPlayLysic(void){ staticu16 counttime =0; staticu8 nolrc =0; staticu16 crc1 =0, crc2 =0; u16 crcb1 =0, crcb2 =0; // static u8 updataLysci = 0; u8 ReadBufout1[64][2]; u8 ReadBufout2[64][2]; u8 ReadBufin1[32][2]; u8 ReadBufin2[32][2]; if(DmtDataBuf[MPageid][1] !=4) { counttime =0; crc1 =0; crcb2 =0; nolrc =0; return; } if(DmtDataBuf[MMp3Lrcaddr][1]) { nolrc =0; crcb1 =CalcCrcAll(0xffff, DmtDataBuf[MMp3LrcReadaddr],64); crcb2 =CalcCrcAll(0xffff, DmtDataBuf[MMp3LrcReadaddr +32],64); if(crcb1 != crc1 || crc2 != crcb2) { crc1 = crcb1; crc2 = crcb2; memset(ReadBufout1,0,sizeof(ReadBufout1)); memset(ReadBufout2,0,sizeof(ReadBufout2)); memset(ReadBufin1,0,sizeof(ReadBufin1)); memset(ReadBufin2,0,sizeof(ReadBufin2)); memcpy(ReadBufin1, DmtDataBuf[MMp3LrcReadaddr],64); memcpy(ReadBufin2, DmtDataBuf[MMp3LrcReadaddr +32],64);// All_unicodeToUtf(ReadBufin1,// (u8 *)ReadBufout1,MusicLysicDoubleNULL(ReadBufin1,64));// All_unicodeToUtf(ReadBufin2,// (u8 *)ReadBufout2,MusicLysicDoubleNULL(ReadBufin2,64)); UnicodeToGbk((u16*)ReadBufin1, (u16 *)ReadBufout1,MusicLysicDoubleNULL((char*)ReadBufin1,64)); UnicodeToGbk((u16*)ReadBufin2, (u16 *)ReadBufout2,MusicLysicDoubleNULL((char*)ReadBufin2,64));// ShuangYu_UTF_DispLysic(lv_label_get_text(lv_SY_UTF_top->songname),ReadBufout1,ReadBufout2); DMT_WriteLen(0x7100, ReadBufout1[0],32,1); DMT_WriteLen(0x7120, ReadBufout2[0],32,1); } } elseif(nolrc==0) { nolrc=1; crc1=0; crcb2=0; DMT_WriteLen(0x7100,"无",2,1); ClearDGUSIIMemory(32,0x7120);// ShuangYu_UTF_DispLysic(lv_label_get_text(lv_SY_UTF_top->songname),"无"," "); }}

(5)解码板代码如下:

voidWritecmdHandle(void){ ChangeModeTask(); SysVolSetting(); BT_PlayPreNextPPSong(); PlayModeFun(); DirsclustReadSong(); PlaySclustSong(); UserTWS_Oper(); BreakSavePlay(); ClearTwsTransData(); TwsTransData(); BtLinkOper(); SYS_Reset();}boollrc_ui_show(inttext_id, u8encode_type, u8 *buf,intlen, u8 lrc_show_flag, u8 lrc_update){#if1//(CONFIG_UI_STYLE ==STYLE_JL_SOUNDBOX) staticint disp_len =0; staticu8 lrc_showbytes =0; staticu8 offset =0; if(lrc_update) { disp_len= len; lrc_showbytes=0; offset=0; //ui_text_set_text_by_id(LRC_TEXT_ID_SEC, "", 16, FONT_DEFAULT); } if(lrc_show_flag ==1) { printf("encode_type:%d\r\n",encode_type); printf("id:%02d,%s\r\n",text_id,buf);//这里是显示歌曲 gbk编码 ModReadReg[RD_SongLysicOn][0]=encode_type; if(text_id<2)? ? ? ? {? ? ? ? ? ? memset(ModReadReg[RD_MusicLy1+text_id*32],0,64);? ? ? ? ? ? GbkToUnicode(buf,ModReadReg[RD_MusicLy1+text_id*32],32);? ? ? ? ? ? //strcpy(ModReadReg[RD_MusicLy1+text_id],buf);? ? ? ? }? ? ? ? //log_info_hexdump(buf,len);? ? }#endif? ? ?returntrue;}

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 开源
    +关注

    关注

    3

    文章

    3755

    浏览量

    43984
  • 迪文屏
    +关注

    关注

    3

    文章

    83

    浏览量

    5821
  • 智能屏幕
    +关注

    关注

    0

    文章

    72

    浏览量

    3676
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    带有歌词显示音乐播放

    本帖最后由 chew_elecfans 于 2017-8-6 11:36 编辑 播放歌曲的同时在12864LCD上显示每个乐句的歌词,并给出了音乐
    发表于 07-24 01:50

    T5L ASIC测试效果提前看!

    `T5LT5的升级版本,测试了CPU的刷新速率和在高低温箱中运行效果,很不错。图1:测试T5L的刷新速率(循环显示60幅全屏图片)图2:测试T5
    发表于 01-24 17:14

    什么是T5L

    全硬件2D加速,2.4GBytes/S的显存带宽,支持图像硬件旋转,将使UI从文本交互升级到图标和动画交互为主。7. 根据显示分辨率不同,T5L包括T5L1(最大分辨率1280*800)和T
    发表于 02-20 15:44

    分享|基于迪文T5L智能的净水机智能控制系统方案

    ——来自迪文开发者论坛用户开源案例整体方案基于评估板EKT043设计,单T5L芯片处理屏幕显示触摸以及外部系统的控制:接收并处理由高压传感器监测到的高、低压开关信号,实时
    的头像 发表于 01-14 10:02 ?1465次阅读
    分享|基于迪文<b class='flag-5'>T5L</b><b class='flag-5'>智能</b><b class='flag-5'>屏</b>的净水机<b class='flag-5'>智能</b>控制系统<b class='flag-5'>方案</b>

    开源获奖案例】基于T5L的smtp邮件发送器

    ——来自迪文开发者论坛本期为您推送一个非常实用的迪文开发者论坛获奖开源案例——基于T5L的smtp邮件发送器。工程师采用T5L智能
    的头像 发表于 10-31 08:14 ?1036次阅读
    【<b class='flag-5'>开源</b><b class='flag-5'>获奖</b>案例】基于<b class='flag-5'>T5L</b>的smtp邮件发送器

    浏览器网页与T5L迪文串口深度扩展(Node-RED技术)

    ——来自迪文开发者论坛本期为大家推送一个很有创意的迪文开发者论坛获奖开源案例——浏览器网页与T5L迪文串口深度扩展(Node-RED技术)。工程师使用
    的头像 发表于 12-09 08:13 ?1419次阅读
    浏览器网页与<b class='flag-5'>T5L</b>迪文<b class='flag-5'>屏</b>串口深度扩展(Node-RED技术)

    基于T5L智能的万能红外控制器

    ——来自迪文开发者论坛本期为大家推送迪文开发者论坛获奖开源案例——基于T5L智能的万能红外控制器。工程师通过
    的头像 发表于 06-22 08:13 ?737次阅读
    基于<b class='flag-5'>T5L</b><b class='flag-5'>智能</b><b class='flag-5'>屏</b>的万能红外控制器

    开源获奖案例】基于T5L智能的指纹识别解决方案

    ——来自迪文开发者论坛本期为大家推送迪文开发者论坛获奖开源案例——基于T5L智能的指纹识别解决方案
    的头像 发表于 07-06 08:13 ?788次阅读
    【<b class='flag-5'>开源</b><b class='flag-5'>获奖</b>案例】基于<b class='flag-5'>T5L</b><b class='flag-5'>智能</b><b class='flag-5'>屏</b>的指纹识别解决<b class='flag-5'>方案</b>

    开源获奖案例】基于T5L智能的便携功率计解决方案

    ——来自迪文开发者论坛本期为大家推送迪文开发者论坛获奖开源案例——基于T5L智能的便携功率计解决方案
    的头像 发表于 08-01 08:13 ?739次阅读
    【<b class='flag-5'>开源</b><b class='flag-5'>获奖</b>案例】基于<b class='flag-5'>T5L</b><b class='flag-5'>智能</b><b class='flag-5'>屏</b>的便携功率计解决<b class='flag-5'>方案</b>

    开源获奖案例】基于T5L智能的汽车抬头显示方案

    ——来自迪文开发者论坛本期为大家推送迪文开发者论坛获奖开源案例——基于T5L智能的汽车抬头显示
    的头像 发表于 09-24 08:03 ?762次阅读
    【<b class='flag-5'>开源</b><b class='flag-5'>获奖</b>案例】基于<b class='flag-5'>T5L</b><b class='flag-5'>智能</b><b class='flag-5'>屏</b>的汽车抬头<b class='flag-5'>显示</b>器<b class='flag-5'>方案</b>

    开源获奖案例】基于T5L芯片的调音台麦克风混响回声控制

    ——来自迪文开发者论坛本期为大家推送迪文开发者论坛获奖开源案例——基于T5L芯片的调音台麦克风混响回声控制。工程师采用800×480分辨率屏幕,通过T5L串口4与混响开发板进行数据交互
    的头像 发表于 01-07 15:32 ?549次阅读
    【<b class='flag-5'>开源</b><b class='flag-5'>获奖</b>案例】基于<b class='flag-5'>T5L</b>芯片的调音台麦克风混响回声控制

    开源获奖案例】基于T5L智能的EQ均衡效果器

    ——来自迪文开发者论坛本期为大家推送迪文开发者论坛获奖开源案例——基于T5L智能的EQ均衡效果器。工程师采用800×480分辨率屏幕,通过
    的头像 发表于 02-14 11:27 ?558次阅读
    【<b class='flag-5'>开源</b><b class='flag-5'>获奖</b>案例】基于<b class='flag-5'>T5L</b><b class='flag-5'>智能</b><b class='flag-5'>屏</b>的EQ均衡效果器

    开源获奖案例】基于T5L智能的FM收音机

    ——来自迪文开发者论坛本期为大家推送迪文开发者论坛获奖开源案例——基于T5L智能的FM收音机。该方案
    的头像 发表于 03-28 15:39 ?449次阅读
    【<b class='flag-5'>开源</b><b class='flag-5'>获奖</b>案例】基于<b class='flag-5'>T5L</b><b class='flag-5'>智能</b><b class='flag-5'>屏</b>的FM收音机

    开源获奖案例】基于T5L智能的零食机

    ——来自迪文开发者论坛本期为大家推送迪文开发者论坛获奖开源案例——基于T5L智能的零食机。该方案
    的头像 发表于 04-30 18:20 ?241次阅读
    【<b class='flag-5'>开源</b><b class='flag-5'>获奖</b>案例】基于<b class='flag-5'>T5L</b><b class='flag-5'>智能</b><b class='flag-5'>屏</b>的零食机

    开源获奖案例】AI智能交互新方案:基于T5L智能的AI DeepSeek大模型

    ——来自迪文开发者论坛本期为大家推送迪文开发者论坛获奖开源案例——AI智能交互新方案:基于T5L智能
    的头像 发表于 07-12 09:02 ?338次阅读
    【<b class='flag-5'>开源</b><b class='flag-5'>获奖</b>案例】AI<b class='flag-5'>智能</b>交互新<b class='flag-5'>方案</b>:基于<b class='flag-5'>T5L</b><b class='flag-5'>智能</b><b class='flag-5'>屏</b>的AI DeepSeek大模型