你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验之谈】基于STM32+MCGS触摸屏四通道数据采集的经验分享

[复制链接]
STMCU小助手 发布时间:2022-12-12 14:00

​1.想做一个数据采集系统,然后将数据存储起来,方便查看选择了STM32+MCGS触摸屏。

2.原理图绘制,选择立创的绘图软件,简单方面。用到了ADC采集模块与RS485通讯。

9 L" Z! K: ^3 s2 x3 o3 P0 i

​

​

​


4 C1 }5 t7 P% _; Q* G3.PCB的绘制同样采用了立创绘图软件,感觉和AD差不多,但是功能少很多,不过简单的电路板绘制也比较方便,不用单独绘制PCB的封装了


3 M6 t" r4 e; l* F4 K7 u2 j​  v# t; m3 _; w$ e6 E' r! A$ `$ n/ \

, j9 r; z& W, x- d, i

4.样板回来了,开始焊接工作。


! y  ^5 Y! h" @" a​$ s, Y7 Z9 S& |9 X6 k2 W4 B8 Z$ ~
% o' O4 p2 O3 |

板子焊接完成了,不是很好看,水平有限,焊接瑕疵,上电试验,效果还行,没有电容爆炸 冒烟。& t, o* _8 p1 ], P( ^) [; B

  K/ S. J4 x4 J  e* T  M, _7 x4 p

5.写程序了,先写STM32的程序,写控制下IO口 指示灯都没问题,按键也没问题,挺好!

' Z# p4 H9 C/ ?* u* R
​) s2 [! p9 r" q" x. O

7 M3 p  R0 J& o+ |) }

6.先写485通讯程序,写了好久,下面是和屏通讯的主要寄存器区


5 X# n& f, O# ^& ]
  1. void Modbus_RegMap(void)
    8 [3 J- F& w3 T8 Q4 T9 ^! }" _% q

  2. - c8 E5 b; b5 W- z2 k/ E4 r  O
  3. {
    8 }: J7 @( l+ V: ]2 V1 ~
  4. ( K7 n2 k& [) \- ^3 c
  5.         //ÊäÈ뿪¹ØÁ¿¼Ä´æÆ÷Ö¸ÕëÖ¸Ïò
    0 W! a) l" \+ N' p

  6. 5 I% Y+ d& J: ?4 G$ z: e
  7. 04//KEY0     //&PEin(4)£ºÈ¡PE4µÄµØÖ·£¬(vu32*)&PEin(4)½«PE4µØÖ·Ç¿ÖÆ×ª»»Îªuw32ÀàÐ͵ĵØÖ·£¬Modbus_InputIO[0]=(vu32*)&PEin(4); ½«×ª»»ºÃµÄµØÖ·Ë͸øµØÖ·Ö¸ÕëModbus_InputIO[0]£»8 S/ _! g7 J; _2 Z9 x* ^

  8. ( q, S. c" k: H5 v0 D
  9. 13//KEY1     //*Modbus_InputIO[0] È¡³öµØÖ·ÖеÄÄÚÈÝ¡£" h6 v) c8 g& W3 h0 k

  10. * A' ?8 o, U; m) m, f- V
  11. 22//KEY2
    9 S! k& U4 x+ b# A" m3 e! ^) l: E2 Q

  12. * [% u4 v6 F& @  c! L1 a6 X9 S
  13. 30//KEY3) ^1 j; d0 O# P2 [4 |' |2 q
  14. $ r3 m2 f3 D, F& k* d) ]3 a
  15.         
    ; L$ u) F/ }3 c! F1 u- @

  16. ' `$ ?, A2 h  k4 _, b* @! H* h4 H6 [$ U
  17.         //Êä³ö¿ª¹ØÁ¿¼Ä´æÆ÷Ö¸ÕëÖ¸Ïò
    - j5 g' |4 M8 y2 w% c. s
  18. 5 l; |2 s" I. ^5 ?- s% Y7 k' Z; f
  19. //      Modbus_OutputIO[0]=(vu32*)&PBout(5);//LED0
    / Y6 ^* |1 c# a8 i. L

  20. ; t% R. S+ r9 k7 ]
  21. //      Modbus_OutputIO[1]=(vu32*)&PEout(5);//LED1: T3 m# B, n1 |3 I& d# E

  22. / e- a; T2 H& f6 Z8 ?$ d
  23. 2//
    / J! ]2 _0 {5 M2 H! |% A- I
  24. # n8 u9 i/ D4 S6 b' x
  25. 3//
    5 s& [  l& o' i, l2 C" {8 J* ]
  26. % g3 ^- U) _& F) H8 Q
  27. 4//
    ( p# `; |; s; n  X. d+ q

  28. ) ?) q% G* q- }  x" f) X  F
  29.         ( P# T( j1 e1 J5 h6 Z! P

  30. + C2 f/ b* m) `
  31.           T; v+ z2 S) }" K% ], |
  32. ) M+ A, T; X7 W
  33.         //±£³Ö¼Ä´æÆ÷Ö¸ÕëÖ¸Ïò; s1 t* y# _* t, E9 y" }  C
  34. # ^6 P- q( [' ?1 K0 W, r
  35. 00//²âÊÔÊý¾Ý10 X- i" V2 D+ f1 q0 O) N' x3 K( x
  36. 9 F( `: N9 f0 [8 i) f$ u, W, @
  37. 11//((u16*)&testData1)+1;//²âÊÔÊý¾Ý16 l! u5 t; t! }
  38. 5 A" `, I  C- F7 x" B7 s9 s
  39. 23//(u16*)&testData2;//²âÊÔÊý¾Ý2% D3 F3 j+ I6 I% T1 k. v* j

  40. & S3 y5 U. D9 X" \
  41. 32//((u16*)&testData2)+1;//²âÊÔÊý¾Ý2
    . ]. b, D& b" ~0 S4 {! \

  42. 0 L. j2 ~: d( G
  43. 4]=(u16*)&testData1;
      c% l( r9 \2 Y( ?

  44. # s  u/ Q% ]) D
  45. 5]=(u16*)&testData2;- M! r7 |$ H. B% h
  46. ! K$ H& k: C5 ~0 [: E+ [2 G8 Z
  47. 6]=(u16*)&testData3;. @' ?4 R3 v: |8 P8 r" ?6 t
  48. 5 {! W9 B3 u8 L: d
  49. 7.写主程序:" g4 q* H8 m+ ^; C
  50. ; o" w+ q# S$ w' q
  51. u8 ucstep=0;
    5 z& U4 h& V# Y& @, S: h9 W+ U
  52. 5 r3 m8 A8 s- u3 u! F
  53. u8 TMI=0;
    # K* R7 E! n' ^' ~: Q

  54. , E7 j& T. r; S; ?/ \7 o+ m9 f
  55. void Key_Cmd(void);
    : z7 H6 m7 Z4 N6 d3 r3 W" r- @
  56. ' h3 u) Y5 m9 d" t, u3 x
  57. int main(void)* y6 |/ A1 d5 h3 Z- ^

  58. / a3 M+ q$ T8 q- [3 X+ S& i* L
  59. {  p( p7 |: r: Z" ]) Y0 p# `  R( k

  60. . q6 C* `0 @3 O% x1 {. {6 D
  61. //ÑÓʱº¯Êý³õʼ»¯         
    # g/ p& M5 I9 u+ W4 s+ N& X

  62. , l# I* K2 W5 @
  63. //ÉèÖÃÖжÏÓÅÏȼ¶·Ö×éΪ×é2£º2λÇÀÕ¼ÓÅÏȼ¶£¬2λÏìÓ¦ÓÅÏȼ¶        / A, }0 N- `# R1 m

  64. # k: y8 u8 }7 _# C( ]
  65. //³õʼ»¯ÓëLEDÁ¬½ÓµÄÓ²¼þ½Ó¿Ú! q  J( b8 S! E8 {, S

  66. 2 d' Z; Y# n% |( M0 G
  67. //³õʼ»¯°´¼ü/ P# ]0 y9 I2 l! h2 j. b
  68. " A1 Q- k! V( _3 v& v* G4 N
  69. //ADC³õʼ»¯
    7 H' g. T# l( j. D

  70. $ v; B' @! R) i# e4 Q9 E
  71. //RTC³õʼ»¯9 a+ T. q5 u7 ?2 }; O$ n

  72. 8 N) I  ^3 X$ r
  73.         RS485_Init();, |6 B  b- b. j" ^* c% D3 T

  74. 5 J% A5 w  @9 [+ P$ j4 t
  75.         Timer7_Init();
    1 k* {* v( t3 u

  76. 6 C. P9 C  w2 J
  77. 3 c2 u7 Z  X4 N; Q

  78. 4 _" ^" @* B- m. ]0 n) `
  79.         while(1)! F0 q. K/ {7 V+ C: K( c

  80. 3 Z8 w+ G" B# v' W/ j
  81.         {
    * b6 H0 s# k: k, @
  82. ) x) Z5 {; }7 \. z/ V1 a# J# W
  83.                 switch(ucstep)  i9 @% k! g) O9 l& `6 z" r$ i
  84. % g( Z+ S7 Y' B$ j: O
  85.                 {. v6 |9 F9 ^8 c8 Q! V, Y4 p
  86. 3 p: m0 K$ H3 ?  O
  87.                         case 0:                                
    ! `5 v; ^; @$ W& Q
  88. + X% {0 K6 P$ ]$ j. M" `8 m
  89.                                                 break;                        
    + O& E! g* @4 v" K

  90. ) [3 K+ ~) r4 `  `9 s$ M" v0 |
  91.                         case 1:
    9 ]7 v' b( n! |
  92. : }7 J  h( J# i
  93. 1;: c3 f( i! b  ^3 ?7 N6 v, C$ k

  94.   W. A. a& b" ?
  95.                                                 TMI++;' ^6 w- {$ e" z2 Z: m5 I  `

  96. 1 O1 y( k1 o" Z8 P
  97.                                                 50). w+ `9 N4 @7 ]6 @  ^- w  R
  98. 8 a" F' o/ U& N/ q
  99.                                                 {- {" I: H7 g! q0 W# d! B4 N/ a0 o3 v
  100. 1 a  L4 b" x4 y
  101. 0;
    . E+ Y/ X# `3 R4 L& {
  102. + Y0 W  e* Z! y3 X4 A' \( y( F0 x" ?
  103. //DS0ÉÁ˸        4 {( s" s% j% W8 c, y: ?8 `
  104. / O7 ?: q. K# X! i& r4 N" a! v' h
  105.                                                 }& R6 {* G9 \+ q/ S0 {( y

  106. 4 _0 q5 i$ t8 A! I# m
  107.                                           break;0 m0 |" E; q8 _: D1 m
  108. ) t  h& \3 q9 J1 N2 M
  109.                         case 2:
    % C+ I6 r. @/ N$ E: ?& L

  110. 3 I; G8 a- t( {/ s/ }. \
  111. 1;1 T* W  [2 o( v% q+ t: b, D

  112.   C1 P6 }, }( K5 ~1 A- y
  113.                                                  Adc_Service();
    8 f$ M3 G% d( F8 z

  114. 9 g. b6 i8 F+ q4 C! B3 y% `0 w
  115. 3;0 }1 A2 |( D% V  @5 ?5 z% U, i
  116. $ S! h- m: G( U3 \3 e- I5 Y
  117.                                                  break;
    / p) p$ u1 Z* |. Y: |

  118. $ G2 {4 l" r3 B+ S7 |" ^
  119.                         case 3:
    " v7 N6 E) ~& ~& B- [
  120. 6 ~( @1 l/ R9 a
  121.                                                 RS485_Service();
    ' k$ u% ^' t+ }  Q
  122. # `& I  l3 @- j" V5 e
  123. 4;2 j7 L" z* r1 ^# i( ~( K
  124. $ e- T3 q2 w$ p- `
  125.                                                 break;2 {/ z/ w+ G$ n5 e3 O: g

  126. * d' g; B3 c" y9 w* T' U8 i( f
  127.                         case 4:. k; B0 [" g! Q% ^1 ~

  128. 0 V8 {1 o/ G2 V3 r7 O. H
  129.                                                 TMI++;" C; U6 ^# }: ~  r% L

  130. * |! U( R% Q8 z
  131.                                                 20)- e* o- s' d5 A  K
  132. - T% e4 ?/ }. u) ~, F- i/ b9 t
  133.                                                 {6 }( P! v: [# f% X* q2 W2 h6 ^2 |$ B

  134. ) v% m3 j! F) q. a
  135. 0;; V2 A& a' F. `3 i, y# k
  136. ; [6 y: m( P) x1 L4 ~- S1 n, k7 \
  137.                                                         RUN=!RUN;3 t4 @: Y% w6 b5 @2 g8 c( H

  138. 2 Q. j, Q, T- c
  139.                                                 }
    + R8 P/ l- Z9 o! v+ r

  140. ! i2 X: j. J2 S- Z
  141. 2;# ^8 O) ~+ w% F( m, G
  142. ' {9 W! S  Y  C* Q
  143.                                                 break;
    ! _# u* A7 M# Q+ U3 {

  144. / j: W1 @* ^4 t$ O% O+ i
  145.                         case 5:
    % \: }; a8 y7 W) |6 a3 f

  146. 5 v  D7 p% y3 X7 t- V
  147.                                                 RUN=!RUN;4 h) P, P$ P( u* S  D

  148. 8 {! V+ C) V8 {, p
  149.                                                 ERR=!ERR;
    ) L, [/ |0 g+ z

  150. # H/ L1 H& \' c; P0 c
  151.                                                 ALM=!ALM;
    3 B/ v' a" U. k5 Y2 u  Z
  152. - S8 Y1 U1 B3 z6 p- k5 u) a! f
  153. 0;0 M+ g3 j2 c' C9 T

  154. . |2 t7 X% ]3 M  a! q7 Y; [
  155.                                                 break;
    ' Q" D2 d( n! h9 H, `3 W

  156. # \4 \" x: k! X3 z. r6 ~/ b
  157.                 }5 U4 y) z2 D5 k# f9 I- Z/ `: B' |

  158. 8 a6 T, h7 Q& Z9 V7 @' I; p
  159.                 Key_Cmd();# T$ D5 E8 c7 C
  160. / g9 U. n0 s( X# S5 Q+ U* k% n& P
  161.         }
    . U6 j$ a  R* l

  162. 2 O% F" n0 r4 Q" c. R
  163. }% P9 C8 K5 Q# `# g0 I6 C
  164. 1 `5 K+ y9 Q5 ~7 @( U
  165. 5 Z' ]9 Q1 s; k8 L+ ]# p
  166. : Z5 g4 h- [# N" q8 s
  167. void Key_Cmd(void)
    - a7 K8 K9 `* a

  168. ! }. \( p* e3 U: a6 \8 K; R9 ^
  169. {
    / H# ]# d5 W6 L8 h- H
  170. 2 [# {6 c" U$ i1 @/ Y4 ]' @! T( n
  171.         u8 key;
    8 Y* \& X" J) U9 ^8 a
  172. 6 m% \/ y3 ?6 C9 ^4 Z( F! H6 ~
  173. 0//µÃµ½¼üÖµ
    ; u8 U6 p1 l5 J3 Y! J# p

  174. $ o0 L( L! ?" l
  175.         if(key)
    ) [; J* z0 m* A) G4 {; n) O
  176. 3 C+ x( O% U6 }: T
  177.         {                                                   
    # L5 Y( Y9 e) `# [* Q, j. U& i

  178. 3 R" ?3 ?0 Q' G  G% T* z2 ^0 e% ^
  179.                 switch(key)* k2 z" K9 f: \! M: p" S

  180. ; E+ J) r  G6 _/ }3 j
  181.                 {                                   V3 M! d% y' P4 `) \, R, H" y
  182. 5 r) c: H7 }2 R8 E7 l9 V! ^) U
  183.                         //SD¿¨
    9 Q: F- v* F" R1 s

  184. 8 ]# I5 Q2 e+ W
  185. 1;/ F# U$ Z& s' X

  186. " s. b) t, Q8 ?/ ~
  187.                                          break;' P0 x  E! n) W5 h
  188. & u6 d- o& M! V2 V9 o( K* {/ ?
  189.                         //¿ØÖÆLED0·­×ª
    1 S$ i$ U& T5 h7 Y0 T
  190. 4 V5 W- b/ U$ f, Q9 r
  191. 2;( J5 h' v) {7 m/ Y+ T  D" V

  192. 7 O: v' r+ W( C% B" j1 g
  193.                                          break;" S; ]. t2 z- F1 n+ h1 G

  194. + ~6 e0 Q+ G4 |4 A8 r
  195.                         //¿ØÖÆLED1·­×ª         % e+ Z, e% F7 g8 m8 q* e( _

  196. . ]0 F$ d1 C$ N% K* z7 ^+ o
  197. 5;3 F1 U- a* C$ f* [* V* ^

  198. 1 T% w+ g' |9 W" Z# @. t/ M: M
  199.                                          break;
    7 q' |; R( @+ V' x# ?+ a

  200. 7 O9 J/ D) a+ X1 A/ U
  201.                 }: H4 C8 E4 Z9 M2 Y9 x( A

  202. * R/ C9 j  m4 j4 s2 @! z
  203. else delay_ms(10);
复制代码
- t! Q8 D$ n1 w1 w& e5 i  v2 u

好了 ,主程序也完成了,下面写MCGS触摸屏的程序。


1 r% y- D# Z( A) D* O5 o8.MCGS触摸屏

2 c' Q% ?0 v, N8 F, ^( @& [

" `( X" C6 g' r2 V2 n4 W0 G0 L

IF $Second MOD 10 = 0 THEN
$ r! x* u; ]/ i: S

2 j/ L/ x, R* P- E! J' z

电压1=设备0_读写4WUB0001
1 T8 P2 U8 {& m1 A; x$ K% \7 B

电压2=设备0_读写4WUB0002
9 c4 _! P" Y7 K+ o( P! m3 ~

电压3=设备0_读写4WUB0003& q" n" t% ]- U

电压4=设备0_读写4WUB0004
) w8 g! v( |8 c4 F; ?$ A2 m


4 e( p9 R: u* K- |8 S- G6 `; ]6 N  U

!SaveData(电压)

9 E+ x  K/ R4 |. Q

测试窗口.控件67.Refresh()
! c7 p8 `3 `$ f

测试窗口.控件67.End()
  L( i, S: P* X- S+ I7 s# z- l

ENDIF. K4 l- a8 k! [. L5 P


, s) }) z9 V, t4 M/ U  }% y

进度计数=进度计数+11 n0 G+ ?9 ^+ h$ E( P% `# B& B

4 ^( S7 f. w  s% r& z- f

5 THEN
3 B) Y4 Y7 ~. t" E' y" {


5 N8 [% X: n2 n0 h# r3 r1 `; j- ~' A

进度计数=00 s  q- ~6 t/ i4 ]2 Y

进度=2
6 O# [. j& @- g- v, q: ~" S

控制=2
. i) q5 q& q' f' U

        / d8 r3 h. L; C! Q& B. X2 R2 C

ENDIF
! w9 J8 F8 A' \  M

1 n$ K0 F9 w" q  N8 e0 P0 x8 f4 d

进度计数=进度计数+1
2 |/ @# B( e) H/ ]


* l1 m5 c. u  s7 _' }

5 THEN, l! N0 c1 m8 H" b8 r) X9 i

: `( ], Q0 l9 I/ O6 U

进度计数=0
2 w! h$ @0 }9 b- z

进度=28 M- I9 E' ]1 a

控制=22 L. u9 c) B) x& j5 n) b& A& q% |

        ! b# V+ z$ j/ S# B8 q

ENDIF1 P+ `: F' ~& y( N! L

12.都搞定了 ,看下效果吧。不会" f0 M6 v6 P+ [6 Z) ^% E# V) X
---------------------
  O, H# x; H' w+ f作者:刘东君


  V$ F' K- P: w" `
赞 收藏 评论0 发布时间:2022-12-12 14:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版