查看: 368|回复: 14
打印 上一主题 下一主题

基于MSP430的简易心率测试仪

[复制链接] qrcode

22

主题

24

帖子

74

积分

注册会员

Rank: 2

积分
74
楼主
跳转到指定楼层
发表于 2014-9-23 09:48 PM | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

唉,最近忙成狗了,实在是事情太多,今天抽出一点时间来发一个帖子。嘿嘿

31

搞了一天的OLED显示,从不停地找代码到找到代码后的代码更改,IAR下载方式的学习,基本上算是好了一天,当然还有那个展板的制作用了一个下午。能正常显示ASCII码,这是原先代码里就实现的,现在想实现对中文字符的显示,根据对源代码的理解,进行了更改,但是始终没有显示,或者显示的是乱码。后来进行了很多盲目的更改,都没效果。后来不知怎么回事,想到了那个while循环的判据可能是导致程序不能执行的原因,因此,将while注释掉,果断可以执行了。后来仔细研究了,发现那个判据是判断所要显示的传入数组是否为空,如果不为空继续执行的程序:while(*str != \'\') 因为可以直接传入一个数组进行显示。

首先,要读懂代码,在去修改。

 

36

这两天一直在调DHT11,因此,在调试的过程中也学会了利用IAR进行但不调试工作。不用学,用多了,都试过了,便记住了,也会用了。

昨天一直调不通的原因,就是因为发出启动信号后,DHT11总线一直未响应。单步调试总是进入一个死循环。纠结了一晚上。后来晚上突然想起来,有可能是系统时钟设置问题。但是,却一直找不到OLED的显示是在哪里设置了系统时钟,后来,在看了书后感觉,有可能OLED并不需要设置系统时钟,也就是说,原本系统时钟没有设置过。今天下午来了以后直接进行了时钟设置。果断一次调试成功,但是还有个问题,就是数据只执行一次,应该是判断数据是否有效的那里while循环判据问题,修改好了,果断可以显示了,而且工作很正常。下一步,写时钟,或者说是万年历,这个应该不难吧。

 

312

今天晚上,花了几个小时的时间,将MSP430里面剩下的这个中断使能写好,刚一开始,遇到的问题就是,将书上    _enable_interrupts();  _BIS_SR_register(LPM3_bits);两句加上去后,前一句说找不到定义,显然是包含的头文件里并没有这个函数对应的寄存器操作,后一句经过查看头文件得知应该最前面有两个下划线__BIS_SR_register(LPM3_bits);

遇到的另一个Warning[Pe550]:详见另外一个word文档

 

57

过了这么久了,终于又捡回来开始设计这个项目了。感觉事情好多,忙不过来。两个月后,看来要重新学起了,今天开始写OLED和万年历。

 

59

昨天程序调了一个晚上,感觉其实430挺好用的,至少对于我这种32用的还不是很好地人来说吧,但是现在有一个问题就是,430中断,我想在是设置了MCLKACLK两个时钟,MCLK1MHzACLK32.768KHz,显示部分肯定是没有问题的了,只是现在不开总中断问题不大,开了总中断之后每1S,貌似是程序重新启动一次,时间大概是一秒感觉有可能是中断处理没开好?看门狗已经关闭了,不知道现在是什么问题,问题可能出在中断上,所以现在把重点放在这里进行调试。

 

不知道怎么回事,改了两下就好了,真心感觉好坑啊,一共改了三个地方:

(1)       将看门狗放在进入设定主时钟MCLK之前关闭

(2)       TACTL=MC_1+TASSEL_1+TAIE+TACLR+ID_0;就加了个ID_0,虽然不知道什么意思

(3)       中断函数中开头加了TACTL&=~TAIFG;结尾加了TACTL|=TAIE;奇迹般的可以工作了

当然,刚一开始的时候显示是有问题的,主要原因是DHT11读取需要时间较长,造成秒不是连续变化,将DHT11返回值是否正确的那句while循环判断删除后,流畅度明显提高了。就是难得会有一秒能看出明显的延时或超前。接下来就是写调整时间的程序了。

程序大致改好了,大部分沿用原来的代码,虽然没有松手检测,但是大致可以完成预定任务。

文件:OLED and Time V2.0

 

511

今天开始先把中断等之类的进行修改,看能不能实现心跳的计数。首先,先从中断计数开始调起,看能不能实现进入中断就计数加一。

做下来程序问题都不大,但是有一个致命的问题就是,我插上中断引脚之后OLED显示会花掉,不提的出现乱码,真的不知道这到底什什么错误,考虑了:电压过大、电流过大、没有共地等因素,但是没有什么进展。经过深思熟虑,我突然感觉到应该是OLED在现实的时候速度太快导致的出现问题,于是便让我想起了中断,果然,在中断中我是用了显示函数,注释掉,果然好了。看来毕竟是OLED,第一次用有可能是SPI通信方式不稳定吧。不过问题解决,新技能get

 

512

写了下面的程序框图

其中问题比较大的是那个排序,后来还是选用了冒泡排序,就最后有点小收获,就是在判断是否有按键按下的时候,

        while(!((P1IN&BIT2)== 0 || (P1IN&BIT3)== 0));

        if ((P1IN&BIT3)== 0)

        {

            //处理函数

        }

        else if ((P1IN&BIT2)== 0)

        {

            //处理函数

        }

不过还没上硬件电路测试,今天先到这里吧

513

上电之前又对程序进行了部分修改,上电之后便可以正常使用,且使用过程对于最初设计比较符合,因此可以算这个项目基本完成。




下面传一下代码和整理的资料

如果大家还要别的资料,或者有什么问题,可以回帖找我哦



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

0

主题

92

帖子

6

积分

新手上路

Rank: 1

积分
6
沙发
发表于 2014-9-24 09:12 AM | 只看该作者
好贴,顶起

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

0

主题

88

帖子

16

积分

新手上路

Rank: 1

积分
16
板凳
发表于 2014-9-24 10:24 AM | 只看该作者
确实不错!
回复 支持 反对

使用道具 举报

0

主题

73

帖子

6

积分

新手上路

Rank: 1

积分
6
地板
发表于 2014-9-24 10:32 AM | 只看该作者
顶起!!
回复 支持 反对

使用道具 举报

0

主题

105

帖子

46

积分

新手上路

Rank: 1

积分
46
5#
发表于 2014-9-24 10:33 AM | 只看该作者
MSP430的时钟确实灰常帅气~

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

0

主题

101

帖子

26

积分

新手上路

Rank: 1

积分
26
6#
发表于 2014-9-25 04:19 PM | 只看该作者
很好的,不错哦
回复 支持 反对

使用道具 举报

0

主题

82

帖子

4

积分

新手上路

Rank: 1

积分
4
7#
发表于 2014-9-25 08:52 PM | 只看该作者
我使用IAR写的程序,所以再时钟配置上还真下了一番功夫
回复 支持 反对

使用道具 举报

0

主题

77

帖子

22

积分

新手上路

Rank: 1

积分
22
8#
发表于 2014-9-25 08:53 PM | 只看该作者
其实现在做这个方面的厂家真的很多,百度就有一款,作为我们来说,外观上也是以后需要考虑的因素了
回复 支持 反对

使用道具 举报

0

主题

113

帖子

46

积分

新手上路

Rank: 1

积分
46
9#
发表于 2014-9-26 05:12 PM | 只看该作者
斑斑,在忙也要注意身体
回复 支持 反对

使用道具 举报

1

主题

102

帖子

43

积分

新手上路

Rank: 1

积分
43
10#
发表于 2014-9-26 08:13 PM | 只看该作者
恩恩,谢谢关心

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

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

本版积分规则

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