|
【开源】FM收音机 T5L直控
整体的框架采用 800*480迪文屏+FM收音机板+喇叭,它们之间通过串口去控制。 室内收音的电台数,大概有10多个,如果是室外会更多,声音听起来很清晰,比一般的收音机效果好点。
显示效果如下:
屏幕代码如下:
- 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);
- 显示频率,频道
- 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]);
- }
- 处理触摸数据
- 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);
- }
复制代码
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;
- }
- }
复制代码
备注说明:如需源码,请参考此链接:http://inforum.dwin.com.cn:20080/forum.php?mod=viewthread&tid=12048&extra=page%3D1&_dsign=289010be
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|