工具/软件:TI C/C++编译器
您好! 我正在研究一个项目、该项目涉及使用脉冲传感器使用 MSP430G2553计算每分钟的心搏数。 我搜索并找到了一些资源、首先我要应用它们。 稍后、我将改进我的项目。 我对这些微处理器比较陌生、因此我在等您的帮助。
(我不知道是否可以共享链接、但如果无法共享、请编辑我的帖子。)
项目的相关链接: www.instructables.com/.../
脉冲传感器 :http://www.instructables.com/id/Heart-Beat-Counter-using-MSP430/
LCD 库: http://www.ece.utep.edu/courses/web3376/Lab_5_-_LCD_files/lcdLib.h
LCD C 文件: www.ece.utep.edu/.../lcdLib.c
首先、我尝试使用脉冲传感器执行该原理图中的项目。 我刚刚将传感器的+VCC 引脚插入+5V 电源、GND 引脚接地、然后将输出引脚插入 MSP430G2553的第九个引脚。 (P2.1)
一切都还可以、但是 LCD 布线应该有一些问题、我无法操作 LCD。 因此、我决定尝试另一个 LCD 库。 使用这个新库、我的 LCD 工作正常。 但现在还有另一个问题。 我无法读取任何-true-值! (值始终为8或12。)
稍后、我在这里检测到了问题:LCD 使用 P2.1从脉冲传感器写入数据。 脉冲传感器向 P2.1发送脉冲。 我已决定将我的输入引脚从 P2.1移动到 P2.6、但它不起作用。
有一些问题、但我无法解决。 可以帮帮我吗?
我的代码如下:
===========
main.c
#include
#include "lcdLib.h"
空延迟(int);
void configWDT();
void configIO();
void configIR();
void configT();
void disableT();
void int_char ();
int i=0;
int j=0;
char lcdstr[4];
int main (空)
{
configWDT();
configio();
configIR();
lcdInit();
lcdClear ();
lcdSetText ("手指放"、0、0);
lcdSetText("on the sensor:",0,1);
while (1)
{
}
}
void configWDT()
{
WDTCTL = WDTPW + WDTHOLD;//停止 WDT
/*DCOCTL=0;
DCOCTL = CALDCO_1MHz;
BCSCTL1 = CALBC1_1MHz;
*/}
void configIO()
{
P1OUT=0x00;
P1DIR |=(BIT0 + BIT6);// P1.0输出
}
void configIR()
{
P1REN |= BIT3;// P2使能上拉/下拉
P1OUT |= BIT3;// P2上拉
P1IE |= BIT3;// P2中断被启用
P1IES |= BIT3;// P2高/低下降沿
P1IFG &=~(BIT3);//清除 P2 IFG 以防万一
_EINT();
}
void enablePulseIR()
{
P2REN |= BIT6;// P2使能上拉/下拉
P2OUT |= BIT6;// P2上拉
P2IE |= BIT6;// P2中断被启用
P2IES |= BIT6;// P2高/低下降边沿
P2IFG &=~(BIT6);// P2 IFG 清零以防万一
}
void disablePulseIR()
{
P2REN &=~BIT6;// P2使能上拉/下拉
P2OUT &=~BIT6;// P2上拉
P2IE &=~BIT6;// P2中断被启用
P2IES &=~BIT6;// P2高/低下降边沿
P2IFG |=(BIT6);// P2 IFG 清零以防万一
}
void configT()
{
CCTL0 = CCIE;// CCR0中断被启用
CCR0 = 50000;
TACTL = tassel_2 + MC_1;// SMCLK、upmode
}
void disableT()
{
TACTL = 0x00;
}
void printResult()
{
Int_char ();
lcdClear ();
lcdSetText (“心跳/最小:”,0,0);
lcdSetText (lcdstr、0、1);
}
#pragma vector=TIMER0_A0_VECTOR
_interrupt void Timer_A (void)
{
if (i<350) i++;
其他
{
P1OUT &=(~BIT0);//切换 P1.0
disableT();
configIR();
disablePulseIR();
J=j*4;
printResult();
I=0;
J=0;
}
}
#pragma vector=Port1_vector
_interrupt void Port_1 (void)
{
if (((P1IFG & 0x08)=0x08)
{
P1OUT |= BIT0;
configT();
enablePulseIR();
P1IFG &=~BIT3;
lcdClear ();
lcdSetText ("请稍候..."、0、0);
}
}
#pragma vector=port2_vector
_interrupt void Port_2 (void)
{
P2IE &=~BIT6;
J++;
P2IE |= BIT6;
P2IFG &=~BIT6;
}
空 int_char ()
{
int s;
S=j%10;
lcdstr[2]=(char)(s+48);
J=j/10;
S=j%10;
lcdstr[1]=(char)(s+48);
J=j/10;
S=j%10;
lcdstr[0]=(char)(s+48);
lcdstr[3]='\0';
}
===========
提前感谢! 我期待找到解决方案!
