资源简介
血压采集的原程序,包括整个工程在内的所有,可以下载看看。
代码片段和文件信息
#include
#define uchar unsigned char
#define uint unsigned int
#include “LCD_1602.H“
#include “DS18B20.h“
#include “ADC_Init.h“
#include “stdio.h“
sbit Motor=P2^0;//电机控制端口 高电平打开
sbit Relay=P2^1;//电磁阀 1吸合
sbit LED=P1^3;//指示灯
sbit DataIn=P3^2;
sbit KEY_Start=P1^4;//开始检测按键
sbit KEY_Stop=P1^7;//停止检测按键
sbit KEY_0=P1^5;
sbit KEY_1=P1^6;
uchar num=0;//定时器计数
uint number=0;
bit flag=0;//检测血压标志位
uint countM=0;//脉搏计数
uint MB=0;
float idata temp0=0;//读取当前电压对应的值
float idata tempS=0;
float idata temp;
float idata HighP=0LowP=0;
void delay_ms(uint t)
{
uint i=0j=0;
for(i=0;i for(j=0;j<100;j++);
}
void SendData()
{
uchar idata dat[20];
uchar i=0;
sprintf(dat“x%3d_%2d_%2d_%.2fx“(uint)HighP(uint)LowP(uint)MBRead_Tempe());
while(dat[i]!=‘\0‘)//发送串口数据
{SBUF=dat[i];
while(!TI);//等待发送完成
i++;
}
}
void Key_Scan()//按键扫描
{
uchar i=0;
if(KEY_Start==0)
{
delay_ms(15);
if(KEY_Start==0)
{
while(!KEY_Start);
Motor=1;
Relay=1;
flag=1;
write_string(00“ H: mmHg“);
write_string(01“L: mmHg“);
write_string(91“ “);
delay_ms(5000);
for(i=0;i<5;i++)GetADCResult(0);
temp0=GetADCResult(0); //获取传感器当前电压值
}
}
if(KEY_Stop==0)//关闭测量
{
delay_ms(15);
if(KEY_Stop==0)
{
Motor=0;
Relay=0;
TR0=0;
flag=0;
LED=1;
while(!KEY_Stop);
}
}
if(KEY_0==0)
{
delay_ms(15);
if(KEY_0==0)
{
MB=0;
TR0=1;
write_string(120“ “);//清除脉搏显示位置
while(!KEY_0);//松手检测
while(number<=1199)//50*20 60=1200
{
if(DataIn)
{
delay_ms(15);
if(DataIn)
{
MB++;
write_num(120MB);//显示脉搏
while(DataIn);
while(!DataIn);
while(DataIn);
while(!DataIn);
delay_ms(10);
}
}
}
//MB*=6;
LED=1;number=0;
write_num(120MB);//显示脉搏
}
//发送温度 脉搏 高低压信息
TR1=1;//启动定时器1 波特率发生器
SendData();
TR1=0;//关闭波特率发生
}
if(KEY_1==0)
{
delay_ms(15);
if(KEY_0==1)
{
while(!KEY_1);
for(i=0;i<5;i++)GetADCResult(0);
temp0=GetADCResult(0); //获取参考电压2.5v 2.5v对应的数字量假如是512
Motor=1;
Relay=1;
flag=1;
write_string(00“ H: mmHg“);
write_string(01“L: mmHg“);
write_string(91“ “);
}
}
}
void USART() interrupt 4//串口中断入口地址
{
if(RI)RI=0;//接收完成标志位
if(TI)TI=0;//发送
}
void Usart_Init()//串口初始化 定时器初始化
{
IE=0X92;//1001 0011//开定时器0中断 开串口中断 开外中断0
IP=0X02;//配置定时器0优先级最高
SCON=0X50;//串口方式1 8位数据位
TMOD=0X21;//定时器0工作于方式 1 16位自动重装 定时器1工作方式2 八位自动重装 0101
TH1=TL1=0XFd;//9600bps (256-fosc/(baud*384))
TH0=0X4C;
TL0=0X00;//定时50ms
TR1=0;//关闭定时器1 不使用串口
TR0=0;
}
//float Get_V()//0.5-4.5 0-40kpa 0.1=1kpa 7.5*kpa= mmHg
//{uchar i=0;
// temp=0;
// for(i=0;i<5;i++)
// GetADCResult(1); //获取参考电压2.5v 2.5v对应的数字量假如是512
// temp=GetADCResult(1);//523;
// temp=2.5/temp;//
//
// for(i=0;i<5;i++)GetADCResult(0);
// tempS=GetADCResult(0); //2.0
//
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 801 2015-06-05 16:26 健身数据采集\HardWare\ADC_Init.c
文件 1288 2015-06-05 16:26 健身数据采集\HardWare\LCD_1602.C
文件 8204 2015-05-02 15:58 健身数据采集\HardWare\NRF_24L01.C
文件 1487 2015-05-02 19:59 健身数据采集\healthy.build_log.htm
文件 5091 2015-06-05 16:18 健身数据采集\healthy.c
....... 71375 2015-05-17 21:46 健身数据采集\healthy.uvgui.admin
....... 72164 2015-06-05 16:27 健身数据采集\healthy.uvgui.LGL_QQ
....... 5436 2015-06-05 16:27 健身数据采集\healthy.uvopt
....... 14191 2015-05-13 19:39 健身数据采集\healthy.uvproj
文件 809 2015-06-05 16:12 健身数据采集\inc\ADC_Init.h
文件 2230 2015-05-07 21:35 健身数据采集\inc\DS18b20.h
文件 601 2015-05-02 19:05 健身数据采集\inc\LCD_1602.h
文件 3413 2015-05-02 15:45 健身数据采集\inc\NRF_24L01.h
文件 2189 2015-06-05 16:26 健身数据采集\Listings\ADC_Init.lst
文件 10657 2015-06-05 16:26 健身数据采集\Listings\healthy.lst
文件 36129 2015-06-05 16:26 健身数据采集\Listings\healthy.m51
文件 3460 2015-06-05 16:26 健身数据采集\Listings\LCD_1602.lst
文件 4127 2015-06-05 16:26 健身数据采集\ob
文件 32665 2015-06-05 16:26 健身数据采集\ob
文件 1011 2015-06-05 16:26 健身数据采集\ob
文件 13955 2015-06-05 16:26 健身数据采集\ob
文件 152 2015-06-05 16:26 健身数据采集\ob
文件 22171 2015-06-05 16:26 健身数据采集\ob
文件 8545 2015-06-05 16:26 健身数据采集\ob
目录 0 2015-06-05 16:26 健身数据采集\HardWare
目录 0 2015-06-05 16:12 健身数据采集\inc
目录 0 2015-06-05 16:26 健身数据采集\Listings
目录 0 2015-06-05 16:26 健身数据采集\ob
目录 0 2015-06-05 16:27 健身数据采集
----------- --------- ---------- ----- ----
............此处省略2个文件信息
- 上一篇:网络安全等级保护2.0基本要求表格
- 下一篇:discard命令的发送过程
评论
共有 条评论