OLED显示屏刷新速度考虑,肯定用硬件SPI驱动OLED屏幕。

OLED示波器,数组data[128]表示,数组长度为128,也就是OLED有128列,每一列一个数值,数值大小就是纵坐标,0~63,借用队列实现示波器的话:
(1)传感器有新的数据了,队列满的就删除队列头,然后向队列尾插入新数据。
(2)OLED刷新就是遍历队列所有元素。

考虑到心率显示效果,传感器采样速度虽然很快,但向队列插入新数据的时间点需要控制,比如10ms向队列写入新数据,那整个屏幕周期是1270ms。

这样的话依旧是一次移动一个数据,心率刷新效果未可知。如果想心率显示整段往前平移,比如有了新的五个数据点后,刷新一次屏幕。这样显示效果又会不同。这样的话,新建队列的时候就得依照移动条件。

借助于以上的想法和https://blog.csdn.net/song_hui_xiang/article/details/47146503这个实现,去完成这个设计。

Signal 是ADC采集0到4095,用pulsesensor,采集的数值一般是800以上,3000以下,良好归一化到取件0到63:temp = 64 - ((Signal - 800) / (2200 / 62));
新数据有ECG_move个后则满足(data_count == ECG_move) 就刷新显示。


#pragma vector = ADC12_VECTOR
__interrupt void ADC10(void)
{Signal = ADC12MEM0;
}#pragma vector=TIMER1_A0_VECTOR
__interrupt void TIMER1_A0_ISR(void)
{unsigned char temp;static char data_count = 0;if (Signal > 800){temp = 64 - ((Signal - 800) / (2200 / 62));if (temp < 64){AddQ(q, temp);                     //添加新数据data_count++;}}if (data_count == ECG_move){data_count = 0;PrintQueue_len128(q);                     //刷新显示}
}


同样,使用ADS1292R采集的数据依照时间将数据添加到队列显示即可。

本来我做这个是做着玩,但是好像大家对这个都挺感兴趣的现在我给大家指几条道路。
这个肯定是用430单片机更容易在评委心里加分!

我介绍一下源码:
写的是读取pulsesensor的代码,不是读取ADS1292R的代码。
pulsesensor是一种光能转电压的传感器,能读取手指的心电变化。
ADC读取pulsesensor即可,读取后在OLED屏幕上打点。
单片机的SPI寄存器控制SPI的OLED,这样速度才跟得上,基本上是秒出图像,这也可以用于别的事情。
可以通过片选CS选择,CS选择OLED就读取OLED,CS选择ADS1292R就读取ADS1292R,
但鉴于在电脑端看到的波形都那么丑,我就没做下一步了。
OLED的SPI寄存器设置和ADS1292R的并不是一样的。
Msp430f5529单片机有UCA0模块和UCB0模块,UCA0可以支持SPI、UART,UCB0可以支持SPI、IIC,为了把串口留出来,所以不能用UCA0。源码里面我OLED用的是UCB0的SPI,只要通过片选CS就能够让很多器件都接在单片机的SPI口,单片机并不需要那么多SPI模块。

有人用模拟器出来的波形很漂亮:

这个波形确实很漂亮,和pulsesensor差不多的波形了。

[一个建议,点我]

像上面这个链接里面的所展示的这样,比较器或许能简化计算心率。

但是,也可以完全依靠原来数据计算心率,就需要下面这个压缩包里的东西了,里面就是用pulsesensor原数据计算心率的代码~

单片机 队列 C语言 OLED 示波器 心率波形 显示 MSP430F5529 pulsesensor ADS1292R相关推荐

  1. C# 使用 ScottPlot.WinForms 实现示波器的波形显示

    前言 灵活使用C# 的部分图表组件,可以快速搭建一个[示波器]波形显示的界面 这里使用:ScottPlot.WinForms,通过官方描述是开源的 相关介绍 下载地址:https://github.c ...

  2. 使用QT的QChart写自己的示波器_QChart波形显示

    我几个月前最开始学习QT,就是从完成波形显示的功能开始的.之前工作的上位机需要有虚拟示波器功能,也就是波形显示.不曾玩过QT的小白,被安排学习完成一下.当时便选用QChart,根据领导需求也更新迭代过 ...

  3. STM32的心率监测装置+OLED心率波形显示

    欢迎访问我的个人博客:基于stm32的心率监控装置

  4. 51单片机用c语言在液晶1602上显示汉字,lcd1602与单片机连接图,基于51单片机的lcd1602液晶显示屏连接电路图...

    描述 LCD1602是一种工业字符型液晶,能够同时显示16x02即32个字符.LCD1602液晶显示原理 LCD1602液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示, ...

  5. 单片机无线调试-看见心跳-手机显示心率波形

    这次带来一篇使用手机观察心率波形的教程,这可能是最后一篇 关于蓝牙调试器的"硬核广告" 了,这几天一直做这个真的做的有些反感了,感觉时间被浪费,如果有人能从中受益就好了,但看起来不 ...

  6. 148、基于STM32单片机的心跳心率波形采集系统

    毕设帮助.开题指导.技术解答(有偿)见文末. 目录 一.功能介绍 二.实物图 三.原理图 四.程序 五.资料包括 一.功能介绍 (1)采用MAX30102实时采集人体心率波形,通过OLED显示屏绘制成 ...

  7. 指尖心跳,通过手指测量心率波形

    指尖心跳,通过手指测量心率波形 心跳传感器 检测原理 传感器贴膜 arduino接线 arduino程序下载 STM32接线 STM32程序下载 上位机查看 总结 原文链接:https://www.y ...

  8. ESP32( IDF平台)+MAX30102 配合Pyqt上位机实现PPG波形显示与心率计算

    0 引言 年前买了一个MAX30102模块,在家无聊做了这个demo对一些相关的知识进行学习. 主要学习的内容: 光体积变化描记图(Photoplethysmogram, PPG)测量原理学习. ES ...

  9. 推荐一款好用的串口波形显示助手----虚拟示波器

    文章目录 前言 一.虚拟示波器是什么? 二.去哪里下载 1.下载源码 2.解压 三.如何移植到单片机 1.添加.c,.h文件 2.替换串口字节发送函数,如send_char(databuf[i]); ...

  10. 【二代示波器教程】第5章 示波器设计—波形快速刷新方案

    完整教程下载地址: https://www.armbbs.cn/forum.php?mod=viewthread&tid=45785 第5章        示波器设计-波形快速刷新方案 本章节 ...

最新文章

  1. 【JS第28期】继承-借用构造函数
  2. 设计模式-工厂模式学习(初级)
  3. NSAssert和NSParameterAssert
  4. Android保存图片到本地相册
  5. wpf 按钮样式_键盘 | 01.在程序集间引用样式
  6. 竖流式沉淀池集水槽设计计算_竖流沉淀池计算书
  7. Linux 性能监控、测试、优化工具
  8. Oracle 树操作、递归查询(select…start with…connect by…prior)
  9. TurboFan-Sea of Nodes概念讲解
  10. 无线路由器网络测试软件,如何简单快速测试家里无线路由器的网速和性能?
  11. PrettyDiff:在线文本对比工具
  12. ThinkPadnbsp;E40nbsp;硬盘异响…
  13. 2.2.9 12306火车订票验证码处理
  14. 根据父母身高预测儿子身高
  15. 程序员必备:Git入门,超详细
  16. [TJOI2015]弦论
  17. VS2015 解决 “有太多的错误导致IntelliSense引擎无法正常工作,其中有些错误无法在编辑其中查看”问题
  18. php文件如何上传到服务器,php文件怎么上传到云服务器
  19. [转帖]华为Hi 1620 等ARM 服务器版本CPU信息.
  20. 读和写,关于cache和buffer

热门文章

  1. 10款白嫖网站笔记整理
  2. 如何修改PDF文件内的文字的字体和颜色?
  3. 京东工业品,走在「全国统一大市场」之前?
  4. altium designer2020安装教程
  5. python语言是不是胶水语言_不会吧,不会吧,不会还有人觉得Python是胶水语言吧?...
  6. 10 QT - 自定义信号和槽
  7. 奈奎斯特稳定性判据的推导
  8. 解决notepad++ php代码美化
  9. 微型计算机b5040电源板,联想b5040一体机电源用普通ATX电源改的该法
  10. 锐浪HTML5报表实际应用方法,解决锐浪Grid++报表在谷歌等浏览器不兼容的尴尬局面