OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 48512|回复: 53

STM32实时绘制曲线过程... 持续更新

  [复制链接]

14

主题

101

帖子

2

精华

中级会员

Rank: 3Rank: 3

积分
493
金钱
493
注册时间
2011-9-6
在线时间
3 小时
发表于 2011-10-10 16:16:37 | 显示全部楼层 |阅读模式
大家好:
      我想实现根据串口发送的数据,在LCD屏上动态绘制曲线,不知有何有效方法,有无样例可供参考? 敬请赐教!
      现在已经实现:
     1  串口发送的数据通过DMA方式存储在数组中
     2  将数组中的ASCII数据转换为十进制
     3   可以实现静态显示,通过数组搬移数据后循环显示可以实现曲线绘制,但是显示速度速度较慢
     4 根据原子哥的提示采用乒乓策略 建立两个BUFFER 利用DMA接收串口数据 接收完成后产生中断实现BUFFER的交替更新数据 BUFFER中的数据由ASCII码转换为十进制数后存储在长度为50的数组中 每次更新数据 需要删除数组首数据 其他数据向前移动一位 然后添加新数据 再扫描整个数组 在LCD上实现动态绘制曲线    这个方法可以实现动态绘制曲线 但是速度较慢  主要问题是每次数组内的所有数据都需要移动
      5 根据4的经验,改用循环队列存储处理后的数据,避免了每次更新数据需要整个数组数据都移动的弊端.现在的问题是:
         (1)绘制曲线时如果不加清屏程序,可以明显看见曲线动态向前移动,但是前面已经绘制的数据仍然存在
         (2)绘制曲线时如果加上清屏程序,LCD显示曲线一闪一闪,可以看见曲线在移动,但是不能滚动显示,明显感觉到清屏时间很长,是的显示数据时间很短 一闪而过  并且在串口停止发送数据后屏幕也不会显示最后绘制的曲线

      针对问题5,请问大家有没有好的建议?   谢谢!
事无巨细 循序渐进
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2011-10-10 18:56:37 | 显示全部楼层
建立一个坐标数组,应该就可以了吧?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

14

主题

101

帖子

2

精华

中级会员

Rank: 3Rank: 3

积分
493
金钱
493
注册时间
2011-9-6
在线时间
3 小时
 楼主| 发表于 2011-10-10 21:49:57 | 显示全部楼层
坐标系建立了,将ASCII码转换为十进制后存在一个数组中,但是每秒有257组数据,在曲线移动时有重叠出现,前面的点没有被清除, 不知道有没处理的办法?
事无巨细 循序渐进
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2011-10-11 09:02:49 | 显示全部楼层
回复【3楼】葱花鱼:
---------------------------------
那就把点清除
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2011-10-7
在线时间
0 小时
发表于 2011-10-13 18:45:07 | 显示全部楼层
清出后再传输试试?
我行我思皆因我所爱
回复 支持 反对

使用道具 举报

14

主题

101

帖子

2

精华

中级会员

Rank: 3Rank: 3

积分
493
金钱
493
注册时间
2011-9-6
在线时间
3 小时
 楼主| 发表于 2011-10-13 20:38:43 | 显示全部楼层
现在基本可以显示 但是速度赶不上串口发送的速度 根据原子哥的提示 在用乒乓操作实现  正在进行中...
事无巨细 循序渐进
回复 支持 反对

使用道具 举报

14

主题

101

帖子

2

精华

中级会员

Rank: 3Rank: 3

积分
493
金钱
493
注册时间
2011-9-6
在线时间
3 小时
 楼主| 发表于 2011-10-18 14:39:25 | 显示全部楼层
看看LCD驱动IC的数据手册中关于GRAM的描述,看看能否将清屏程序简化,欢迎提供建议,进行中......
事无巨细 循序渐进
回复 支持 反对

使用道具 举报

14

主题

101

帖子

2

精华

中级会员

Rank: 3Rank: 3

积分
493
金钱
493
注册时间
2011-9-6
在线时间
3 小时
 楼主| 发表于 2011-10-20 17:06:19 | 显示全部楼层
曲线已经可以正常显示,速度还需优化...
事无巨细 循序渐进
回复 支持 反对

使用道具 举报

9

主题

102

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
205
金钱
205
注册时间
2011-1-20
在线时间
7 小时
发表于 2011-10-20 23:08:47 | 显示全部楼层
如有了结果能否与大家分享一下。
回复 支持 反对

使用道具 举报

14

主题

101

帖子

2

精华

中级会员

Rank: 3Rank: 3

积分
493
金钱
493
注册时间
2011-9-6
在线时间
3 小时
 楼主| 发表于 2011-10-27 11:00:39 | 显示全部楼层

开发环境:ALIENTEK MINI STM32 + MDK3.80+寄存器操作
  这个工程主要实现动态绘制曲线和在SD卡内创建、读写文件。
 key0     按键控制根据RTC日期创建文件夹,根据RTC时间创建文件 ;
 key1      DMA中断方式持续接收串口数据 ,然后将接收到的数据写入文件 ,LCD显示曲线;
wake_up   读文件内数据, LCD显示曲线。

DMA中断方式接收数据是根据原子哥提出的利用乒乓策略实现数据持续接收,参考了http://hi.baidu.com/%B0%D9%BA%CF%CA%A6/blog/item/1a516c3c77aab229b9998f61.html (利用库函数实现)里面关于乒乓策略的处理方法,在此表示感谢。

注:工程文件中关于数据处理采用数组搬移的方式实现,还存在数据处理速度慢的缺陷,数据处理以链队的方式(实现上述功能)还未实现,如果大家有好的处理方法欢迎指点迷津,如有不足之处欢迎指正,共同进步,谢谢!

串口测试字符串(字符长度为100)0103060709141618253555607065545045403726343129282624211918151412100704020809344547495658666854434547

FATFS 动态曲线.rar

1.84 MB, 下载次数: 11115

事无巨细 循序渐进
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2011-10-27 12:30:59 | 显示全部楼层
好贴.
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2011-10-27 12:31:38 | 显示全部楼层
能上传几个PP就更好了.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

46

主题

1579

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1970
金钱
1970
注册时间
2011-7-17
在线时间
4 小时
发表于 2011-10-27 15:10:22 | 显示全部楼层
高手啊,能不能用lcd加ad转换弄一个示波器出来?
Time?And?Relative?Dimension?In?Space.
回复 支持 反对

使用道具 举报

9

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2011-11-4
在线时间
0 小时
发表于 2011-11-5 21:08:28 | 显示全部楼层
回复【10楼】葱花鱼:
---------------------------------
楼主您好,我对您的这个绘制曲线比较感兴趣,但水平太差,所以想向您学习一下,您可以讲一下怎么使用循环队列吗?怎么实现ad的波形显示(示波器)呢?
回复 支持 反对

使用道具 举报

14

主题

101

帖子

2

精华

中级会员

Rank: 3Rank: 3

积分
493
金钱
493
注册时间
2011-9-6
在线时间
3 小时
 楼主| 发表于 2011-11-7 13:12:11 | 显示全部楼层
回复【14楼】ndfoolmanzjk:
---------------------------------
关于队列的使用你可以参考一下<<数据结构>>里面关于队列的相关基础知识,明白基本操作原理.这里使用循环队列的好处是每次有新处理的数据需要显示时直接在队首出队一个数据,然后在队尾插入新数据即可,避免利用数组有新数据加入时需要搬移整个数组数据.  
事无巨细 循序渐进
回复 支持 反对

使用道具 举报

9

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2011-11-4
在线时间
0 小时
发表于 2011-11-10 19:06:20 | 显示全部楼层
回复【15楼】葱花鱼:
---------------------------------
明白了,谢谢您啊
回复 支持 反对

使用道具 举报

13

主题

104

帖子

0

精华

初级会员

Rank: 2

积分
179
金钱
179
注册时间
2011-8-2
在线时间
0 小时
发表于 2011-11-14 22:30:37 | 显示全部楼层
马瑞卡
回复 支持 反对

使用道具 举报

12

主题

216

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
313
金钱
313
注册时间
2011-4-7
在线时间
3 小时
发表于 2011-11-21 00:11:31 | 显示全部楼层
收下学习
回复 支持 反对

使用道具 举报

8

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
97
金钱
97
注册时间
2011-8-15
在线时间
3 小时
发表于 2012-1-2 16:44:24 | 显示全部楼层
好帖,标记学习
回复 支持 反对

使用道具 举报

3

主题

33

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2012-2-2
在线时间
0 小时
发表于 2012-2-2 19:12:58 | 显示全部楼层
好贴,我现在在左串口的程序。努力中,跟上楼主的速度
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
24
金钱
24
注册时间
2012-3-13
在线时间
0 小时
发表于 2012-3-13 21:11:49 | 显示全部楼层
好贴,学习一下,不知道有没有人做过LDC绘制曲线来反映出AD实时采样的数据?
回复 支持 反对

使用道具 举报

5

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2011-9-28
在线时间
1 小时
发表于 2012-4-28 14:31:37 | 显示全部楼层
收下好好学习
回复 支持 反对

使用道具 举报

2

主题

100

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
278
金钱
278
注册时间
2012-4-15
在线时间
0 小时
发表于 2012-5-1 16:34:32 | 显示全部楼层
学习一下
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
22
金钱
22
注册时间
2012-9-29
在线时间
0 小时
发表于 2012-9-29 12:54:34 | 显示全部楼层
学习了 感谢
回复 支持 反对

使用道具 举报

16

主题

89

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
316
金钱
316
注册时间
2012-10-6
在线时间
9 小时
发表于 2012-10-6 12:37:20 | 显示全部楼层
··································
回复 支持 反对

使用道具 举报

4

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2012-9-22
在线时间
3 小时
发表于 2012-10-9 00:01:28 | 显示全部楼层
由ASCII码转换为十进制数后存储在长度为50的数   为什么要转化为十进制
回复 支持 反对

使用道具 举报

4

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2012-9-22
在线时间
3 小时
发表于 2012-10-9 23:02:39 | 显示全部楼层
回复【26楼】zjcnzcl:
---------------------------------
我知道了 显示用  时间作为文件名
回复 支持 反对

使用道具 举报

4

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2012-9-22
在线时间
3 小时
发表于 2012-10-10 00:00:49 | 显示全部楼层
158行 有点不懂     Date=timer.w_year*10000+timer.w_month*100+timer.w_date;  //获取日期   怎么year*10000  month*100
回复 支持 反对

使用道具 举报

14

主题

101

帖子

2

精华

中级会员

Rank: 3Rank: 3

积分
493
金钱
493
注册时间
2011-9-6
在线时间
3 小时
 楼主| 发表于 2012-10-19 14:40:31 | 显示全部楼层
回复【28楼】zjcnzcl:
---------------------------------
比如今天日期为2012.10.19,要创建一个20121019.txt文件,就需要2012*10000+10*100+19得到20121019。
事无巨细 循序渐进
回复 支持 反对

使用道具 举报

15

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
120
金钱
120
注册时间
2013-2-5
在线时间
0 小时
发表于 2013-2-17 16:59:09 | 显示全部楼层
为什么这个程序我下载了也只是能创建文件而key1,wk_up的功能不能正常实现?有人遇到过这样的情况么?难道配置方面需要什么特殊要求?
回复 支持 反对

使用道具 举报

96

主题

762

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1228
金钱
1228
注册时间
2012-10-19
在线时间
15 小时
发表于 2013-2-18 09:05:08 | 显示全部楼层
不错的东西
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
21
金钱
21
注册时间
2013-4-4
在线时间
0 小时
发表于 2013-4-4 22:05:41 | 显示全部楼层
我也是现在后出现了29楼所说的问题。曲线不没显示出来,不知道是否要做修改
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
21
金钱
21
注册时间
2013-4-17
在线时间
0 小时
发表于 2013-4-17 21:20:38 | 显示全部楼层
回复【32楼】yyd:
---------------------------------
初始化那几句话顺序改下就好了
回复 支持 反对

使用道具 举报

96

主题

762

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1228
金钱
1228
注册时间
2012-10-19
在线时间
15 小时
发表于 2013-4-23 09:54:57 | 显示全部楼层
最近打开来了看看,发现没用队列啊!直接的数据搬移啊!看来还有很多值得思考的地方。
回复 支持 反对

使用道具 举报

15

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
120
金钱
120
注册时间
2013-2-5
在线时间
0 小时
发表于 2013-8-28 20:22:25 | 显示全部楼层
回复【楼主位】葱花鱼:
---------------------------------
楼主想请问你是怎么在程序中实现持续接收数据的?我把move_data函数跟display函数去掉后就不能持续接收了,不明白这是为什么……
回复 支持 反对

使用道具 举报

4

主题

9

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2012-9-8
在线时间
0 小时
发表于 2013-8-29 08:54:22 | 显示全部楼层
数组不需要一个个前移啊,采用环形缓冲器,记住头尾的下标就好啊?
回复 支持 反对

使用道具 举报

0

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
182
金钱
182
注册时间
2013-4-3
在线时间
33 小时
发表于 2014-6-10 21:07:38 | 显示全部楼层
不错,学习了,支持
回复 支持 反对

使用道具 举报

19

主题

96

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
382
金钱
382
注册时间
2014-1-7
在线时间
42 小时
发表于 2014-6-12 14:27:37 | 显示全部楼层
好屌!!!!太牛叉了
回复 支持 反对

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2015-4-24
在线时间
0 小时
发表于 2015-5-25 19:13:14 | 显示全部楼层
不错  谢谢分享  下载看看
回复 支持 反对

使用道具 举报

11

主题

193

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
425
金钱
425
注册时间
2013-3-19
在线时间
20 小时
发表于 2015-5-26 09:24:43 | 显示全部楼层
用时再来学习!!!
回复 支持 反对

使用道具 举报

0

主题

7

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2019-5-9
在线时间
4 小时
发表于 2019-11-12 16:20:37 | 显示全部楼层
xiexie                           
回复 支持 反对

使用道具 举报

0

主题

21

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
206
金钱
206
注册时间
2019-9-4
在线时间
24 小时
发表于 2019-11-12 19:40:17 | 显示全部楼层
向楼主学习
回复 支持 反对

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2020-3-13
在线时间
6 小时
发表于 2020-4-5 22:55:24 | 显示全部楼层
有没有F4的    麻烦发到630212358@qq.com   十分感谢
回复 支持 反对

使用道具 举报

2

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2019-12-18
在线时间
19 小时
发表于 2020-6-30 22:13:42 | 显示全部楼层
for(i=0;i<200;i++)
                                {
                                        if(ReceiveBuffer0[i]>=48 && ReceiveBuffer0[i]<=57)
                                        {
                                                t=t*10+(((ReceiveBuffer0[i])&0x0f)%10);
                                        }
                                        if((i%2)==1)
                                        {
                                                move_data();
                                                Buffer[39]=t;
                                                t=0;
                                                LCD_Fill(20,200,220,300,WHITE);
                                                display();
                                        }
                                }
这里有点懵,t的值为什么这样取,有时候t的值都溢出了吧,还有就是每隔一位记录并且显示一次吗,请帮忙解惑一下吧,谢谢
回复 支持 反对

使用道具 举报

2

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2020-11-14
在线时间
12 小时
发表于 2020-11-20 11:30:44 | 显示全部楼层
感谢楼主分享
回复 支持 反对

使用道具 举报

0

主题

8

帖子

0

精华

高级会员

Rank: 4

积分
868
金钱
868
注册时间
2020-10-23
在线时间
81 小时
发表于 2020-11-20 18:55:15 | 显示全部楼层
来学习
回复 支持 反对

使用道具 举报

3

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
61
金钱
61
注册时间
2021-3-20
在线时间
12 小时
发表于 2021-3-21 20:04:04 | 显示全部楼层
参考试试,谢谢楼主
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2021-2-3
在线时间
16 小时
发表于 2021-3-23 15:50:33 | 显示全部楼层
11撒发生翻车v
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
7
金钱
7
注册时间
2021-4-24
在线时间
1 小时
发表于 2021-4-24 02:00:45 | 显示全部楼层
有帮助,我也做了一个曲线控件,解决了这个问题,可以下载示例在陕西思润菲咪软件科技有限公司网,关注我吧!
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
7
金钱
7
注册时间
2021-4-24
在线时间
1 小时
发表于 2021-4-24 02:01:57 | 显示全部楼层
葱花鱼 发表于 2011-10-20 17:06
曲线已经可以正常显示,速度还需优化...

有帮助,我也做了一个曲线控件,解决了这个问题,可以下载示例在陕西思润菲咪软件科技有限公司网,关注我吧!
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-26 04:35

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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