刘东君 发表于 2021-12-24 16:17

STM32+MCGS触摸屏四通道数据采集

本帖最后由 刘东君 于 2021-12-24 16:24 编辑

#申请原创# @21小跑堂
1.想做一个数据采集系统,然后将数据存储起来,方便查看选择了STM32+MCGS触摸屏。
2.原理图绘制,选择立创的绘图软件,简单方面。用到了ADC采集模块与RS485通讯。

3.PCB的绘制同样采用了立创绘图软件,感觉和AD差不多,但是功能少很多,不过简单的电路板绘制也比较方便,不用单独绘制PCB的封装了,另一个重要原因,总有xiaohanjian给发律师函{:sweat:},公司也不舍得花钱!另外吐槽下中国的互联网公司,就不能搞点牛X的软件吗!!!道阻且长!!

4.样板回来了,开始焊接工作。小公司啥都是自己搞啊!吐槽下老版,不多找点人。

板子焊接完成了,不是很好看,水平有限,焊接瑕疵,上电试验,效果还行,没有电容爆炸 冒烟。
5.写程序了,先写STM32的程序,写控制下IO口 指示灯都没问题,按键也没问题,挺好!

6.先写485通讯程序,写了好久,下面是和屏通讯的主要寄存器区
void Modbus_RegMap(void)
{
      //ÊäÈ뿪¹ØÁ¿¼Ä´æÆ÷Ö¸ÕëÖ¸Ïò
      Modbus_InputIO=(vu32*)&PEin(4);//KEY0   //&PEin(4)£ºÈ¡PE4µÄµØÖ·£¬(vu32*)&PEin(4)½«PE4µØÖ·Ç¿ÖÆ×ª»»Îªuw32ÀàÐ͵ĵØÖ·£¬Modbus_InputIO=(vu32*)&PEin(4); ½«×ª»»ºÃµÄµØÖ·Ë͸øµØÖ·Ö¸ÕëModbus_InputIO£»
      Modbus_InputIO=(vu32*)&PEin(3);//KEY1   //*Modbus_InputIO È¡³öµØÖ·ÖеÄÄÚÈÝ¡£
      Modbus_InputIO=(vu32*)&PEin(2);//KEY2
      Modbus_InputIO=(vu32*)&PAin(0);//KEY3
      
      //Êä³ö¿ª¹ØÁ¿¼Ä´æÆ÷Ö¸ÕëÖ¸Ïò
//      Modbus_OutputIO=(vu32*)&PBout(5);//LED0
//      Modbus_OutputIO=(vu32*)&PEout(5);//LED1
            Modbus_OutputIO=(vu32*)&RUN;//
      Modbus_OutputIO=(vu32*)&ERR;//
                              Modbus_OutputIO=(vu32*)&ALM;//
      
      
      //±£³Ö¼Ä´æÆ÷Ö¸ÕëÖ¸Ïò
      Modbus_HoldReg=(u16*)&Show;//²âÊÔÊý¾Ý1
      Modbus_HoldReg=(u16*)&Show;//((u16*)&testData1)+1;//²âÊÔÊý¾Ý1
      Modbus_HoldReg=(u16*)&Show;//(u16*)&testData2;//²âÊÔÊý¾Ý2
      Modbus_HoldReg=(u16*)&Show;//((u16*)&testData2)+1;//²âÊÔÊý¾Ý2
      Modbus_HoldReg=(u16*)&testData1;
                  Modbus_HoldReg=(u16*)&testData2;
                  Modbus_HoldReg=(u16*)&testData3;
}7.写主程序:u8 ucstep=0;
u8 TMI=0;
void Key_Cmd(void);
int main(void)
{
      delay_init();                     //ÑÓʱº¯Êý³õʼ»¯         
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//ÉèÖÃÖжÏÓÅÏȼ¶·Ö×éΪ×é2£º2λÇÀÕ¼ÓÅÏȼ¶£¬2λÏìÓ¦ÓÅÏȼ¶      
         LED_Init();                                          //³õʼ»¯ÓëLEDÁ¬½ÓµÄÓ²¼þ½Ó¿Ú
      KEY_Init();                                        //³õʼ»¯°´¼ü
      Adc_Init();                                  //ADC³õʼ»¯
      RTC_Init();                                  //RTC³õʼ»¯
      RS485_Init();
      Timer7_Init();

      while(1)
      {
                switch(ucstep)
                {
                        case 0:                              
                                                break;                        
                        case 1:
                                                RUN=1;
                                                TMI++;
                                                if(TMI>=50)
                                                {
                                                      TMI=0;
                                                      ERR=!ERR;//DS0ÉÁ˸      
                                                }
                                          break;
                        case 2:
                                                 ERR=1;
                                                 Adc_Service();
                                                 ucstep=3;
                                                 break;
                        case 3:
                                                RS485_Service();
                                                ucstep=4;
                                                break;
                        case 4:
                                                TMI++;
                                                if(TMI>=20)
                                                {
                                                      TMI=0;
                                                      RUN=!RUN;
                                                }
                                                ucstep=2;
                                                break;
                        case 5:
                                                RUN=!RUN;
                                                ERR=!ERR;
                                                ALM=!ALM;
                                                ucstep=0;
                                                break;
                }
                Key_Cmd();
      }
}

void Key_Cmd(void)
{
      u8 key;
      key=KEY_Scan(0);      //µÃµ½¼üÖµ
      if(key)
      {                                                   
                switch(key)
                {                                 
                        case KEY1_PRES:         //SD¿¨
                                       ucstep=1;
                                       break;
                        case KEY2_PRES:      //¿ØÖÆLED0·­×ª
                                       ucstep=2;
                                       break;
                        case KEY3_PRES:      //¿ØÖÆLED1·­×ª         
                                       ucstep=5;
                                       break;
                }
      }else delay_ms(10);
}好了 ,主程序也完成了,下面写MCGS触摸屏的程序。
8.MCGS触摸屏 先来个牛X界面 **长城永不到!!!!千里黄河水涛涛

9.装完了,该干正事了 ,编写正式测试界面

10.界面完事了 该配置变量和通道了

11.最后就是触摸屏脚本程序编写了。
IF $Second MOD 10 = 0 THEN

电压1=设备0_读写4WUB0001
电压2=设备0_读写4WUB0002
电压3=设备0_读写4WUB0003
电压4=设备0_读写4WUB0004



!SaveData(电压)

测试窗口.控件67.Refresh()
测试窗口.控件67.End()
ENDIF

进度计数=进度计数+1

IF 进度计数>5 THEN

进度计数=0
进度=2
控制=2
      
ENDIF

进度计数=进度计数+1

IF 进度计数>5 THEN

进度计数=0
进度=2
控制=2
      
ENDIF
12.都搞定了 ,看下效果吧。不会搞视频上传。。。。。。弄个附件吧






巧克力娃娃 发表于 2021-12-24 16:35

感谢楼主

suncat0504 发表于 2021-12-24 18:13

支持你,兄弟!不过,你可以考虑用一台不连互联网的电脑,安装AD,就不用担心了。我们发明了纸、瓷器,也没有人给我们专利费。

gxs64 发表于 2021-12-25 11:23

建议用网口+485

lihui567 发表于 2021-12-26 19:34

嘉立创的绘图软件现在已经开始普及了,不知道画图过程当中方便?

刘东君 发表于 2021-12-27 08:58

lihui567 发表于 2021-12-26 19:34
嘉立创的绘图软件现在已经开始普及了,不知道画图过程当中方便?

听方便的

yinwuqing110 发表于 2021-12-27 23:24

楼主很犀利啊

zeshoufx 发表于 2021-12-28 11:25

lihui567 发表于 2021-12-26 19:34
嘉立创的绘图软件现在已经开始普及了,不知道画图过程当中方便?

现在主要是网页版,,离线版的马上出来了

jgp886585 发表于 2021-12-31 15:29

看看

梁武 发表于 2022-1-3 23:44

这编程界面好像VSCode,这个编译软件好用吗?

2365031858 发表于 2022-1-15 13:01

搞点牛x的软件说起来倒是轻巧 你先给嘉立创打个几百块钱省的人家用爱发电

huquanz711 发表于 2022-1-15 19:06

不错,谢谢楼主分享。

wjp_860623 发表于 2022-1-16 20:41

littlelida 发表于 2022-1-18 15:34

防火墙,可以阻止AD联网,
正常用,没问题

F10086 发表于 2022-2-10 21:39

谢谢分享,好好学习

weifeng90 发表于 2022-2-11 08:20

不错不错,谢谢分享。

一刀一级 发表于 2022-2-11 09:52

感谢分享

carpsnow 发表于 2022-2-11 16:43

整挺好~
那个AD不联网就没事

lu50211 发表于 2022-2-12 08:45

感谢分享

caijl 发表于 2022-2-12 14:45

厉害!值得学习
页: [1] 2
查看完整版本: STM32+MCGS触摸屏四通道数据采集