这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界» 论坛首页» 活动中心» 板卡试用» 之二OLED波形显示(FREERTOS)

共55条 1/6 1 2 3 4 5 6 ›| 跳转至

之二OLED波形显示(FREERTOS)

助工
2018-12-16 15:38:56 打赏

考试总算考完了大半,终于有时间写帖子了。

这段时间吧程序改成了FREERTOS版本了,加入OS后多任务处理起来会方便许多,ADC采样并计算心率创建一个任务,波形显示创建一个任务,还有一个任务用来翻转led提示系统正在运行。

心率的采样和计算在上一章帖子里已经一直好了,这次只需要复制过来即可。本次的重点是波形的OLED显示。不过效果并不像在示波器和上位机上那样理想,毕竟像素只有128*64。

先上显示部分的程序,如下:

void Show_Pulse() { u8 cur=Cur,i; OLED_CLS(); if(cur<127) { i=cur+128; for(; i!=0; i++) { if(Pulser[i] < 1900 || Pulser[i] > 2300)continue; else OLED_PutPixel(i-cur-128,64-(Pulser[i]-1900)/7); } i=0; for(; i 2300)continue; else OLED_PutPixel(i-cur+128,64-(Pulser[i]-1900)/7); } } else { i=cur-128; for(; i 2300)continue; else OLED_PutPixel(i-cur+128,64-(Pulser[i]-1900)/7); } } }

OLED屏幕的显示列数为128,所以我定义的波形缓存为256点。OLED刷新频率为10Hz。每次刷新时先获取ADC缓存到哪一个点了,然后将前128个点用打点函数更新即可,注意如何正确的获取前128点。然后还有一个问题是压缩变换,将读到到ADC值压缩变换到0-63范围内,因为OLED只有64行,由于制造厂家的不同,ADC值的范围会有所不同,压缩变换时的算法根据实际情况做相应的调整。

下一步打算做一个扩展板,毕竟用杜邦线看起来实在是太乱了,也是作为最后压轴上场的最终版“跳动的心”

最后附上本帖配套的程序

跳动的心V1.2.rar




关键词: 波形 显示 FREERTOS

菜鸟
2018-12-16 20:57:40 打赏
2楼

终于等到好文!!

向你学习!!


管理员
2018-12-17 09:19:27 打赏
3楼

楼主棒棒哒


菜鸟
2018-12-17 19:34:24 打赏
4楼

image.png

这是什么意思?


菜鸟
2018-12-17 19:37:15 打赏
5楼

能贴硬件图 么


高工
2018-12-19 20:20:51 打赏
6楼

不错不错哦~期待更新


专家
2022-01-21 10:47:14 打赏
7楼

不错不错


高工
2022-01-21 10:51:58 打赏
8楼

感谢分享,学习学习


专家
2022-01-22 13:39:30 打赏
9楼

感谢分享


专家
2022-01-22 13:44:39 打赏
10楼

感谢分享,学习学习


共55条 1/6 1 2 3 4 5 6 ›| 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册]