基于MSP430健康测试仪程序.docx
- 文档编号:2371976
- 上传时间:2022-10-29
- 格式:DOCX
- 页数:18
- 大小:18.47KB
基于MSP430健康测试仪程序.docx
《基于MSP430健康测试仪程序.docx》由会员分享,可在线阅读,更多相关《基于MSP430健康测试仪程序.docx(18页珍藏版)》请在冰豆网上搜索。
基于MSP430健康测试仪程序
//*****************************************************************************
//基于MSP430F449的健康检测仪
//weidaogangnanyongqiweiminli
//BuiltwithIAREmbeddedWorkbenchVersion:
3.40a
//DATA:
2008-8-25
//说明:
WDT作为时钟定时器,BASICTIMER作为测量脉搏信号的定时器,下降沿捕获脉搏信号,CCI3B为信号源
//*****************************************************************************
#include
//宏定义按键,P1
#definekeyio0xf1//定义按键IO口,P1.1-P1.3IO口.
#definekey_10x0f7//定义返回键值1
#definekey_20x0fb//定义返回键值2
#definekey_30x0fd//定义返回键值3
#definekey10x02
#definekey20x04
#definekey30x08
#definedelay_small200
#defineten_ms0x028e;
#defineDQ1P4OUT|=BIT0
#defineDQ0P4OUT&=~BIT0
//声明子程序
unsignedcharkinput=0x00;
unsignedcharktemp=0x00;
unsignedcharkstore=0x00;
unsignedcharkready=0x00;
unsignedcharkoutput=0x00;
unsignedchargetkey=0x00;
constunsignedkconst=0x70;
unsignedcharError=0;
floatTemper=0.0;
inttemperature=0;
intvalue;
intcc;
intcount;
intdd;
unsignedcharhour,min,sec;
unsignedcharkeyvalue;
unsignedcharkeyvalue1;
unsignedcharkeyvalue2;
voidproc_key();
voidinc_sec();
voidinc_min();
voidinc_hour();
inti;
constunsignedcharlcd_table[]={
0x7b,//*"0"*//
0x12,//*"1"*//
0x4f,//*"2"*//
0x1f,//*"3"*////LCD显示代码表
0x36,//*"4"*//
0x3d,//*"5"*//
0x7d,//*"6"*//
0x13,//*"7"*//
0x7f,//*"8"*//
0x3f,//*"9"*//
0x84,//*"-"*//
};
voidkey_process_0(void);
voidkey_process_1(void);
voidkey_process_2(void);
voidkey_check(void);
unsignedcharkey_value;//定义键值全局变是
voidDelayNus(unsignedintn);
voidWrite_18B20(unsignedcharn);
unsignedcharRead_18B20(void);
voidInit(void);
voidSkip(void);
voidConvert(void);
voidReadDo(void);
voidReadTemp(void);
voidGetTemp(void);
voidInitLcd(void);
voiddisplay_number(unsignedlongvalue,intstart,intwidth);
voidLcd_Clr(void);
voidtiwen(void);
voidmaibo(void);
voidshizhong(void);
unsignedcharkey_chcek(void);
//*************************************************************************
voidmain(void)
{
WDTCTL=WDTPW+WDTHOLD;//关狗
P1DIR=0X00;
P1IE|=BIT1+BIT2+BIT3;//P2.1-P2.3IO口中断使能
P1IES|=0x0e;//P2.1-P2.3IO口边沿触发中断方式设置
P1IFG&=~(key1+key2+key3);//P2.1-P2.3IO口中断标志位清除
_EINT();//中断允许
//或直接写成_BIS_SR(LPM4_bits+GIE);
LPM3;//进入低功耗LPM3,此时单片机功耗最低
while
(1)
{
P1IE&=~(BIT1+BIT2+BIT3);//P2.1-P2.3IO口关闭中断允许
P1IFG&=~0x0e;//P2.1-P2.3IO口中断标志位清除
key_check();
switch(key_value)//对键值进行处理.采switch语法结构查询
{
casekey_1:
key_process_0();//调用键处理程序1
break;
casekey_2:
key_process_1();//调用键处理程序2
break;
casekey_3:
key_process_2();//调用键处理程序2
break;
default:
break;
}
key_value=0x00;//键值清除
P1IE|=BIT1+BIT2+BIT3;//P2.1-P2.3IO口中断使能
P1IFG&=~0x0e;//P2.1-P2.3IO口中断标志位清除
LPM3;
}
}
//main函数结束
//*************************************************************************
//P1中断服务程序
#pragmavector=PORT1_VECTOR
__interruptvoidPort_1(void)
{
switch(P1IFG)
{
case0x02:
key_value=0xf7;
break;
case0x04:
key_value=0xfb;
break;
case0x08:
key_value=0xfd;
break;
default:
P1IFG&=~0x0e;//P2.1-P2.3IO口中断标志位清除
break;
}
P1IFG&=~0x0e;//P2.1-P2.3IO口中断标志位清除
LPM3_EXIT;
}
//*************************************************************************
voidkey_process_0(void)//值处理,调用时钟子程序
{
shizhong();
}
//*************************************************************************
voidkey_process_1(void)//值处理,调用体温子程序
{
tiwen();
}
//*************************************************************************
voidkey_process_2(void)//值处理,调用脉搏子程序
{
maibo();
}
//**************************************************************************
voidkey_check(void)
{unsignedinti;
for(i=0;i if(0xff! =(P1IN&0xf7))//是否有键存在? { while(0xff! =(P1IN|0xf7));//一直等待按键松开 } else key_value=0x00;//延时去抖动无键按下,则清除键变量. } //************************************************************************** //以下为体温测量子程序 //************************************************************************** voidDelayNus(unsignedintn) { while(n--){}; } //----------------------------------- //功能: 写18B20 //----------------------------------- voidWrite_18B20(unsignedcharn) { unsignedchari; for(i=0;i<8;i++) { DQ0; DelayNus (1);//延时13us左右 if((n&0X01)==0X01)DQ1; elseDQ0; n=n>>1; DelayNus(9);//延时50us以上 DQ1; } } //------------------------------------ //功能: 读取18B20 //------------------------------------ unsignedcharRead_18B20(void) { unsignedchari; unsignedchartemp; for(i=0;i<8;i++) { temp=temp>>1; DQ0; _NOP();//延时1us DQ1; _NOP();_NOP();//延时5us _NOP();_NOP();_NOP(); P4DIR&=~BIT0; if((P4IN&BIT0)==0) { temp=temp&0x7F; }else { temp=temp|0x80; } DelayNus(7);//延时40us P4DIR|=BIT0; DQ1; } returntemp; } //----------------------------------- voidInit(void) { DQ0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 MSP430 健康 测试仪 程序
![提示](https://static.bdocx.com/images/bang_tan.gif)