迪文科技论坛

 找回密码
 立即注册
搜索
查看: 616|回复: 1

【开源】固定机柜音乐播放主机系统 艺术字使用, modbus

[复制链接]

9

主题

15

回帖

896

积分

高级会员

Rank: 4

积分
896
QQ
发表于 2023-7-7 10:12:45 | 显示全部楼层 |阅读模式
固定机柜音乐播放主机系统
已经量产
屏幕用的是DMG12480C068_03WTC

视频查看使用效果地址:


首重介绍,这个也是用modbus 作为主要通信工具
这个项目,大家值得一看,里面运用了许多的知识点,这里我挑几个讲讲
大致为屏幕为从机,单片机为主控。

一:modbus和T5L 的用户程序编写
之前我也讲过,T5L的之前我也给过源码,这次我们就简单的说下T5L的用户从机modbus源码。
用keil 点开,我的源码。
int main(void)
{   
       INIT_CPU();
       T2_Init();
       UART4_Init();
       EA=1;
//    UART4_SendStr("hello",sizeof("hello"));
       WDT_ON();//打开开门狗
       while(1)
       {   
              WDT_RST();//喂狗
              Process();
       }
}
INIT_CPU(); 这个我们先不用管
主要看的是UART4_Init();
void UART4_Init(void)
{
//UART4 波特率设置:
//BODE2_DIV_H:L=CPU 主频/(8*波特率) 。
//206438400/8/115200=224=0xe0
//206438400/8/921600=28=0x1C
//206438400/8=25804800/230400=112=0x70
       SCON2T=0x80;
       SCON2R=0x80;
BODE2_DIV_H=0x00;    //FCLK/(8*DIV
BODE2_DIV_L=0x1C;//;  921600 波特率
//    BODE2_DIV_H=0x00;     //FCLK/(8*DIV
//    BODE2_DIV_L=0x70;
       //ES3T=1;
       ES2R=1;
       EA=1;
}
设置波特率,这里我们设置为921600

其它115200 ,这里我计算好了,大家直接填入BODE2_DIV_L,这个寄存器即可,如果说想懂得如何计算,可以查看迪文 T5L ASIC应用开发指南.pdf, 这里也上传一个文档,给大家参考学习

就是文档这里写着
主要是查看,Process函数
void Process(void)
{
       SpecialAddrValAutoUp();
       OneMsHandle();
       TenMsHandle();
}
void OneMsHandle(void)
{
       if(!OnemsFlag)
              return;
       OnemsFlag=0;
       MainMachineHandle();
}
void MainMachineHandle(void)
{
       if(UartDataHandle)
       {
              uartHandle(Uart4_Rx,uart4_rx_count);
              CLR_UartMp3();
       }
}
下面是主要的从机modbus 逻辑
bool uartHandle(u8 *Tdata,u8 len)
{
       u16Wlen=0;
       u16CRC_1=0,BegAddr=0;
       u8  xdata RetData[Uart4_Rx_Maxlen+10];
       u8  errnum=0;
CRC_1=CalcCrcAll(0xffff,Tdata,len-2);
       if(CRC_1!= ((Tdata[len-1])<<8 | (Tdata[len-2])))
              returnfalse;
       //这个为写指令
       if(Tdata[0]==0&& Tdata[1]!=0x06)
       {
              returnfalse;
       }
       elseif(Tdata[0]!=DevAddr) //设备地址
       {
              returnfalse;
       }
       //这个为写指令
       if(Tdata[1]!=0x03&& Tdata[1]!=0x06 && Tdata[1]!=0x10 )
       {
              SendModbusAckErr(Tdata,1);
              returnfalse;
       }
       Wlen=(Tdata[4]<<8|Tdata[5]);        //长度
       BegAddr=(Tdata[2]<<8|Tdata[3]);   //开始地址
       if(Tdata[1]==0x06)//写内存
       {
              write_dgusii_vp(BegAddr,&Tdata[4],1);
       }
       elseif(Tdata[1]==0x10)
       {
              write_dgusii_vp(BegAddr,&Tdata[7],Wlen);
       }
       //读操作响应
       //[01][0x03][00][6B][00][02][CRC高][CRC低]
       if(Tdata[1]==0x03)
       {
              RetData[0]=Tdata[0];
              RetData[1]=0x03;
              RetData[2]=Wlen*2;
              read_dgusii_vp(BegAddr,&RetData[3],Wlen);
              CRC_1=CalcCrcAll(0xFFFF,RetData,3+Wlen*2);
              RetData[Wlen*2+3]=CRC_1;
              RetData[Wlen*2+3+1]=CRC_1>>8;
              SendModbusAckOK(RetData,3+Wlen*2+2);
       }
       elseif(Tdata[1]==0x10)
       {
              memcpy(RetData,Tdata,6);
              CRC_1=CalcCrcAll(0xFFFF,(INT8U*)&RetData,6);
              RetData[6]=CRC_1;
              RetData[7]=CRC_1>>8;
              SendModbusAckOK(RetData,8);
       }
       elseif(Tdata[1]==0x06 && Tdata[0]) //当地址码为真,才应答
       {
              memcpy(RetData,Tdata,8);
              SendModbusAckOK(RetData,8);            
       }
       returntrue;
}

二:时间的艺术字显示
大家先看图片,下面是时间显示,是不是很漂亮
这里用的是艺术字控件

每一个时间变量用图片扣出来,放图标上面,如下
最后生成一个96的图标
当时间改变,就该变这个艺术字的变量,即可

三 任意界面,任意触摸控件弹出菜单
这个是个小知识点,估计很多人不知道,可以弹出任意小窗口,和迪文的标准弹出小窗口不同的后门

在界面上,有2个小小的隐藏的触摸按键,一般人是按不到的,如下

没错就是它,几乎每个 页面都 有,主要是给程序用的,当有需要某个时间点,弹出窗口,程序上就会用模拟按压,点这里,然后就会出现你设定的弹窗

关于模拟按压,就要看文档T5L_DGUS2应用指南_V63.pdf
就是这个变量,往这个变量上加,模拟触摸,就会弹出菜单

四 关于点击按键,出现的音效
主要是利用了,这个屏幕后面有个喇叭,可以播放一定的小文件的,音乐
这里设置语音的ID是1

指向的是
这个按键音乐,而这个按键音乐,如何包含进去呢?

利用了


这里的WAE生成工具,把音乐生成了,
这个文件,这样烧录的时候,把文件烧录到对应的位置
五 显示节假日

先看图片


节假日是不是挺漂亮的,如何做的呢,主要用了3个控件
1个是增量调节,触摸用

1个用了文本显示

放假,字体

1个用了,位图显示图标

总体的就是,当检测到触摸按下,就显示字体,然后再显示按下的图片背景

好了,咱们暂停说到这里。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0

主题

13

回帖

91

积分

注册会员

Rank: 2

积分
91
发表于 2023-11-11 15:15:42 | 显示全部楼层
这技术太强大了,能实现这么多功能。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|迪文科技论坛 ( 京ICP备05033781号-1 )

GMT+8, 2024-11-21 19:52 , Processed in 0.059507 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表