——来自迪文开发者论坛
本期为大家推送迪文开发者论坛获奖开源案例——基于T5L智能屏的FM收音机。该方案基于T5L智能屏,通过串口4与FM收音机模块进行通讯,实现自动搜索获取不同频段电台,同时支持选台、频率调节、音量控制等功能,为用户提供便捷操作体验。
UI素材展示


GUI工程设计

C51工程设计
(1)屏幕代码如下:
void resetFreChannelValue(void){ Write_Dgus(0x1510,10800); Write_Dgus(0x1511,1);}INIT_CPU();//系统初始化PORT_Init();//IO口初始化T0_Init();//定时器0初始化T2_Init();//定时器2初始化my_UART4_Init(115200);uart_init();//串口初始化ws2812_writ_byte(8);//LED初始化resetFreChannelValue();ChangePage(1);
(2)屏幕显示频率,频道代码如下:
void DispFreChannel(void){ if(Uart4_Rx[0]!=0x51) return; if(Uart4_Rx[1]!=0x10) return; Write_Dgus(0x1510,Uart4_Rx[2]<<8|Uart4_Rx[3]); Write_Dgus(0x1511,Uart4_Rx[4]);}
(3)屏幕处理触摸数据代码如下:
void FMCtrol(void){ u8Read[2]; u8sendda[10],i=0; memset(Read,0,sizeof(Read)); Read_Dgusii_Vp(0x1500,Read,1); if(!Read[1]) return; memset(sendda,0,sizeof(sendda)); sendda[0]=0x51; switch(Read[1]) { case1: sendda[1]=0x10; break; case2: sendda[1]=0x11; break; case3: sendda[1]=0x12; break; case4: sendda[1]=0x13; break; case5: sendda[1]=0x14; break; case6: sendda[1]=0x15; break; case7: sendda[1]=0x16; break; case8: sendda[1]=0x17; break; } UART4_SendStr(sendda,2); Write_Dgus(0x1500,0);}
(4)FM收音机板数据解析核心代码如下:
void FmModeUpdateFrmChannel(void){ static uint16_t Frebuf=0xffff,Channelbuf=0xffff; static uint16_t delayin=80; uint8_t sendbufl[10]; if(delayin) { delayin--; return; } if(app_get_curr_task() != APP_FM_TASK) return; if(get_fm_channel()!=Channelbuf|| get_fm_frq()!=Frebuf) { Channelbuf=get_fm_channel(); Frebuf=get_fm_frq(); sendbufl[0]=0x51; sendbufl[1]=0x10; sendbufl[2]=Frebuf>>8; sendbufl[3]=Frebuf; sendbufl[4]=Channelbuf; //UserUartRetRec(AI_uart_bus,sendbufl,5); AI_uart_bus->write(sendbufl, 5); }}void UserUartRecHandle(const uart_bus_t*uart_bus,u8 *data,u16 len){ u8 retdata[30]; u8 i=0; if(data[0]!=DwinLocal_addr) return; switch(data[1]) { case 0x10: app_task_put_key_msg(KEY_MUSIC_PP,0); break; case 0x11: app_task_put_key_msg(KEY_FM_SCAN_ALL,0); break; case 0x12: app_task_put_key_msg(KEY_FM_NEXT_STATION,0); break; case 0x13: app_task_put_key_msg(KEY_FM_PREV_STATION,0); break; case 0x14: app_task_put_key_msg(KEY_FM_NEXT_FREQ,0); break; case 0x15: app_task_put_key_msg(KEY_FM_PREV_FREQ,0); break; case 0x16: app_task_put_key_msg(KEY_VOL_UP,0); break; case 0x17: app_task_put_key_msg(KEY_VOL_DOWN,0); break; }}
全部0条评论
快来发表一下你的评论吧 !