12下一页
返回列表 发新帖我要提问本帖赏金: 20.00元(功能说明)

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

[复制链接]
 楼主| 刘东君 发表于 2021-12-24 16:17 | 显示全部楼层 |阅读模式
<
本帖最后由 刘东君 于 2021-12-24 16:24 编辑

#申请原创# @21小跑堂
1.想做一个数据采集系统,然后将数据存储起来,方便查看选择了STM32+MCGS触摸屏。
2.原理图绘制,选择立创的绘图软件,简单方面。用到了ADC采集模块与RS485通讯。
1.png 2.png 微信截图_20211224154219.png
3.PCB的绘制同样采用了立创绘图软件,感觉和AD差不多,但是功能少很多,不过简单的电路板绘制也比较方便,不用单独绘制PCB的封装了,另一个重要原因,总有xiaohanjian给发律师函,公司也不舍得花钱!另外吐槽下中国的互联网公司,就不能搞点牛X的软件吗!!!道阻且长!!
微信截图_20211224154700.png
4.样板回来了,开始焊接工作。小公司啥都是自己搞啊!吐槽下老版,不多找点人。
微信图片_20211224154922.jpg
板子焊接完成了,不是很好看,水平有限,焊接瑕疵,上电试验,效果还行,没有电容爆炸 冒烟。
5.写程序了,先写STM32的程序,写控制下IO口 指示灯都没问题,按键也没问题,挺好!
微信图片_20211224155545.jpg
6.先写485通讯程序,写了好久,下面是和屏通讯的主要寄存器区
  1. void Modbus_RegMap(void)
  2. {
  3.         //ÊäÈ뿪¹ØÁ¿¼Ä´æÆ÷Ö¸ÕëÖ¸Ïò
  4.         Modbus_InputIO[0]=(vu32*)&PEin(4);//KEY0     //&PEin(4)£ºÈ¡PE4µÄµØÖ·£¬(vu32*)&PEin(4)½«PE4µØÖ·Ç¿ÖÆ×ª»»Îªuw32ÀàÐ͵ĵØÖ·£¬Modbus_InputIO[0]=(vu32*)&PEin(4); ½«×ª»»ºÃµÄµØÖ·Ë͸øµØÖ·Ö¸ÕëModbus_InputIO[0]£»
  5.         Modbus_InputIO[1]=(vu32*)&PEin(3);//KEY1     //*Modbus_InputIO[0] È¡³öµØÖ·ÖеÄÄÚÈÝ¡£
  6.         Modbus_InputIO[2]=(vu32*)&PEin(2);//KEY2
  7.         Modbus_InputIO[3]=(vu32*)&PAin(0);//KEY3
  8.         
  9.         //Êä³ö¿ª¹ØÁ¿¼Ä´æÆ÷Ö¸ÕëÖ¸Ïò
  10. //      Modbus_OutputIO[0]=(vu32*)&PBout(5);//LED0
  11. //      Modbus_OutputIO[1]=(vu32*)&PEout(5);//LED1
  12.               Modbus_OutputIO[2]=(vu32*)&RUN;//
  13.         Modbus_OutputIO[3]=(vu32*)&ERR;//
  14.                                 Modbus_OutputIO[4]=(vu32*)&ALM;//
  15.         
  16.         
  17.         //±£³Ö¼Ä´æÆ÷Ö¸ÕëÖ¸Ïò
  18.         Modbus_HoldReg[0]=(u16*)&Show[0];//²âÊÔÊý¾Ý1
  19.         Modbus_HoldReg[1]=(u16*)&Show[1];//((u16*)&testData1)+1;//²âÊÔÊý¾Ý1
  20.         Modbus_HoldReg[2]=(u16*)&Show[3];//(u16*)&testData2;//²âÊÔÊý¾Ý2
  21.         Modbus_HoldReg[3]=(u16*)&Show[2];//((u16*)&testData2)+1;//²âÊÔÊý¾Ý2
  22.         Modbus_HoldReg[4]=(u16*)&testData1;
  23.                     Modbus_HoldReg[5]=(u16*)&testData2;
  24.                     Modbus_HoldReg[6]=(u16*)&testData3;
  25. }
7.写主程序:
  1. u8 ucstep=0;
  2. u8 TMI=0;
  3. void Key_Cmd(void);
  4. int main(void)
  5. {
  6.         delay_init();                     //ÑÓʱº¯Êý³õʼ»¯         
  7.   NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//ÉèÖÃÖжÏÓÅÏȼ¶·Ö×éΪ×é2£º2λÇÀÕ¼ÓÅÏȼ¶£¬2λÏìÓ¦ÓÅÏȼ¶        
  8.          LED_Init();                                          //³õʼ»¯ÓëLEDÁ¬½ÓµÄÓ²¼þ½Ó¿Ú
  9.         KEY_Init();                                        //³õʼ»¯°´¼ü
  10.         Adc_Init();                                  //ADC³õʼ»¯
  11.         RTC_Init();                                  //RTC³õʼ»¯
  12.         RS485_Init();
  13.         Timer7_Init();

  14.         while(1)
  15.         {
  16.                 switch(ucstep)
  17.                 {
  18.                         case 0:                                
  19.                                                 break;                        
  20.                         case 1:
  21.                                                 RUN=1;
  22.                                                 TMI++;
  23.                                                 if(TMI>=50)
  24.                                                 {
  25.                                                         TMI=0;
  26.                                                         ERR=!ERR;//DS0ÉÁ˸        
  27.                                                 }
  28.                                           break;
  29.                         case 2:
  30.                                                  ERR=1;
  31.                                                  Adc_Service();
  32.                                                  ucstep=3;
  33.                                                  break;
  34.                         case 3:
  35.                                                 RS485_Service();
  36.                                                 ucstep=4;
  37.                                                 break;
  38.                         case 4:
  39.                                                 TMI++;
  40.                                                 if(TMI>=20)
  41.                                                 {
  42.                                                         TMI=0;
  43.                                                         RUN=!RUN;
  44.                                                 }
  45.                                                 ucstep=2;
  46.                                                 break;
  47.                         case 5:
  48.                                                 RUN=!RUN;
  49.                                                 ERR=!ERR;
  50.                                                 ALM=!ALM;
  51.                                                 ucstep=0;
  52.                                                 break;
  53.                 }
  54.                 Key_Cmd();
  55.         }
  56. }

  57. void Key_Cmd(void)
  58. {
  59.         u8 key;
  60.         key=KEY_Scan(0);        //µÃµ½¼üÖµ
  61.         if(key)
  62.         {                                                   
  63.                 switch(key)
  64.                 {                                 
  65.                         case KEY1_PRES:         //SD¿¨
  66.                                          ucstep=1;
  67.                                          break;
  68.                         case KEY2_PRES:        //¿ØÖÆLED0·­×ª
  69.                                          ucstep=2;
  70.                                          break;
  71.                         case KEY3_PRES:        //¿ØÖÆLED1·­×ª         
  72.                                          ucstep=5;
  73.                                          break;
  74.                 }
  75.         }else delay_ms(10);
  76. }
好了 ,主程序也完成了,下面写MCGS触摸屏的程序。
8.MCGS触摸屏 先来个牛X界面 **长城永不到!!!!千里黄河水涛涛
微信截图_20211224160111.png
9.装完了,该干正事了 ,编写正式测试界面
微信截图_20211224160341.png
10.界面完事了 该配置变量和通道了
微信截图_20211224160812.png 微信截图_20211224160827.png
11.最后就是触摸屏脚本程序编写了。
  1. IF $Second MOD 10 = 0 THEN

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



  6. !SaveData(电压)

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

  10. 进度计数=进度计数+1

  11. IF 进度计数>5 THEN

  12. 进度计数=0
  13. 进度=2
  14. 控制=2
  15.         
  16. ENDIF

  17. 进度计数=进度计数+1

  18. IF 进度计数>5 THEN

  19. 进度计数=0
  20. 进度=2
  21. 控制=2
  22.         
  23. ENDIF
12.都搞定了 ,看下效果吧。不会搞视频上传。。。。。。弄个附件吧
WeChat_20211224161330.rar (3.86 MB, 下载次数: 116) WeChat_20211224161336.rar (3.62 MB, 下载次数: 101)





打赏榜单

21小跑堂 打赏了 20.00 元 2021-12-24
理由:恭喜通过原创文章审核!请多多加油哦!

巧克力娃娃 发表于 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 | 显示全部楼层
厉害!值得学习
您需要登录后才可以回帖 登录 | 注册

本版积分规则

170

主题

1093

帖子

7

粉丝
快速回复 在线客服 返回列表 返回顶部

170

主题

1093

帖子

7

粉丝
快速回复 在线客服 返回列表 返回顶部