血压仪整理资料.docx
- 文档编号:10992939
- 上传时间:2023-02-24
- 格式:DOCX
- 页数:17
- 大小:17.82KB
血压仪整理资料.docx
《血压仪整理资料.docx》由会员分享,可在线阅读,更多相关《血压仪整理资料.docx(17页珍藏版)》请在冰豆网上搜索。
血压仪整理资料
/*********************2009.02.23添加*****************************/
voidBCD(unsignedcharBcdData);//十进制数据转换为BCD码
unsignedintTransUnit(unsignedintdat);//单位转换,Kpa值转换为mmHg值
voidRevertData(void);//将以Kpa为单位的数据还原成以mmHg为单位的数据,并移动数据已得到想要的数据结构
voidRevertKpa(void);//还原Kpa数据,取得Kpa数据的整数部分和小数部分
voidCalcuCoordinate(void);//将压力值换算到对应的坐标值
voidPrintRow(unsignedintNum_dot);//打印一行
voidPrintLine(unsignedintstart,unsignedintlen);//打印一条横线
voidPrintCurve(void);//打印曲线
voidPrintSign(void);//打印三角标
voidCoordinateData(void);//打印坐标刻度值
voidCoordinateLine(void);//打印坐标刻度线
voidPrintResult(void);//打印高压、低压、平均压、脉搏,单位mmHg、kpa、bpm
voidFirstProcess(void);//进行各项数据整理,同时将测量结果移入DataBuffer[]
voidReadAllData(void);//读取存储在存储器中的打印曲线用的数据
voidSaveAllData(void);//向存储器中写入打印曲线用的数据
voidtest_FM3104(void);//
/****************************************************************/
/************************************************************************************
*功能:
打印峰值曲线
************************************************************************************/
voidPrintCurve(void)
{
unsignedcharj,k,m,n,h,tmp;
unsignedinti;
tmp=10-MaxValue%10;//让纵坐标的终刻度为10的整数倍
MaxValue+=tmp;//同上
for(i=0;i<=MaxValue;i++)//动态分配打印高度
{
k=0;
/*******打印纵坐标刻度********/
if(i==50|i==100|i==150|i==200|i==250)//纵轴刻度
{
for(n=35;n>30;n--)
{
DotPosition[k]=n;
k++;
}
bit_Print=1;
}
if(i%10==0)//10的整数倍时打印刻度
{
for(h=40;h>35;h--)
{
DotPosition[k]=h;
k++;
}
}
DotPosition[k]=40;k++;//左边线(纵坐标)
//DotPosition[k]=340;k++;//右边线
bit_Print=1;
/********打印峰值线********/
for(j=8;j<8+InceptData[6];j++)
{
if(i { DotPosition[k]=InceptData[j+InceptData[6]];//取得对应的压力值 k++; bit_Print=1; } } if(bit_Print) { PrintRow(k);//打印一行 bit_Print=0; for(m=0;m<80;m++) { DotPosition[m]=0; } } } //PrintLine();//封顶线 /*****打印纵坐标终点数值*****/ BCD(MaxValue); Print(0x1b);Print(0x36);//选择字符集1 Print(0x1b);Print(0x44);//水平造表 Print (1);Print(0); Print(0x09);//执行造表 Print(ZF[BU[0]]);Print(ZF[BU[1]]);Print(ZF[BU[2]]);//纵坐标终点数值 Print(0x0d); } /**************************** *功能: 打印三角号 ****************************/ voidPrintSign(void) { unsignedinti,k; unsignedcharj; Print(0x1b);Print(0x40);//初始化打印机 for(j=0;j<5;j++) { Print(0x1b);Print(0x27);Print(20-j*4);Print(0); for(i=GYSign-5+j;i { if(i<256) { Print(i);Print(0); } else { Print(i-256);Print (1); } } for(k=DYSign-5+j;k { if(k<256) { Print(k);Print(0); } else { Print(k-256);Print (1); } } Print(0x0d);Print(0x0a); } } /******************************************** *功能: 打印坐标值 *水平造表: 每个字符按12+字间距计算 ********************************************/ voidCoordinateData(void) { Print(0x1b);Print(0x40); Print(0x1b);Print(0x36);//选择字符集1 Print(0x1b);Print(0x44);//水平造表 Print (2);Print(6);Print(12);Print(18);//造表位置 Print(24);Print(27);Print(0); Print(0x09);//执行造表 Print(ZF[2]);Print(ZF[2]);Print(ZF[0]);//坐标数值220 Print(0x09); Print(ZF[2]);Print(ZF[0]);Print(ZF[0]);//坐标数值200 Print(0x09); Print(ZF[1]);Print(ZF[5]);Print(ZF[0]);//坐标数值150 Print(0x09); Print(ZF[1]);Print(ZF[0]);Print(ZF[0]);//坐标数值100 Print(0x09); Print(ZF[5]);Print(ZF[0]);//坐标数值50 Print(0x09); Print(ZF[3]);Print(ZF[0]);//坐标数值30 Print(0x0d); Print(0x0a);Print(0x0a); } /**************************** *功能: 打印坐标刻度 ***************************/ voidCoordinateLine(void) { unsignedchari,k,m,n; Print(0x1b);Print(0x40); for(i=0;i<5;i++)//10点高度 { Print(0x1b);Print(0x27);Print(7);Print(0);//7个长刻度 for(k=21;k<28;k++) { if(Cord[k]<256) { Print(Cord[k]);Print(0); } else { Print(Cord[k]-256);Print (1); } } Print(0x0d);Print(0x0a); } for(m=0;m<5;m++) {//5点高度 Print(0x1b);Print(0x27);Print(21);Print(0);//21个短刻度,包括7个长刻度和14个短刻度 for(n=0;n<21;n++) { if(Cord[n]<256) { Print(Cord[n]);Print(0); } else { Print(Cord[n]-256);Print (1); } } Print(0x0d);Print(0x0a); } } /**************************************** *功能: 打印收缩压、舒张压、平均压、脉搏 ***************************************/ voidPrintResult(void) { unsignedchari; /****打印脉搏数****/ Print(0x1b);Print(0x40);//初始化打印机 Print(0x1b);Print(0x38);Print(0x00);//选择汉字打印 for(i=0;i { Print(MB[i]); } BCD(InceptData[3]); Print(0x1b);Print(0x36);//选择字符集1 Print(0x1b);Print(0x56);Print(0x02);//纵向放大2倍 if(BU[0]! =0) { Print(ZF[BU[0]]); } else { Print(0x1b);Print(0x66);Print(0);Print (1);//打印一个空格 } Print(ZF[BU[1]]);Print(ZF[BU[2]]); for(i=0;i Print(MU[i]); Print(0x0a);Print(0x0a);Print(0x0d); /****打印平均压****/ Print(0x1b);Print(0x40);//初始化打印机 Print(0x1b);Print(0x38);Print(0x00);//选择汉字打印 for(i=0;i { Print(PJ[i]); } BCD(InceptData[2]); Print(0x1b);Print(0x36);//选择字符集1 Print(0x1b);Print(0x56);Print(0x02);//纵向放大2倍 if(BU[0]! =0) { Print(ZF[BU[0]]); } else { Print(0x1b);Print(0x66);Print(0);Print (1);//打印一个空格 } Print(ZF[BU[1]]);Print(ZF[BU[2]]); for(i=0;i Print(UN[i]); Print(0x1b);Print(0x66);Print(0);Print (1);//打印一个空格 Print(ZF[12]);//打印"(" BCD(KpaZ[2]); if(BU[0]! =0) { Print(ZF[BU[0]]); } if(BU[1]! =0) { Print(ZF[BU[1]]); } else { Print(0x1b);Print(0x66);Print(0);Print (1);//打印一个空格 } Print(ZF[BU[2]]); Print(ZF[11]);//小数点 Print(ZF[KpaX[2]]);//小数部分 for(i=0;i Print(KP[i]); Print(ZF[13]);//打印")" Print(0x0a);Print(0x0a);Print(0x0d); /****打印舒张压****/ Print(0x1b);Print(0x40);//初始化打印机 Print(0x1b);Print(0x38);Print(0x00);//选择汉字打印 for(i=0;i { Print(DY[i]); } BCD(InceptData[1]); Print(0x1b);Print(0x36);//选择字符集1 Print(0x1b);Print(0x56);Print(0x02);//纵向放大2倍 if(BU[0]! =0) { Print(ZF[BU[0]]); } else { Print(0x1b);Print(0x66);Print(0);Print (1);//打印一个空格 } Print(ZF[BU[1]]);Print(ZF[BU[2]]); for(i=0;i Print(UN[i]); Print(0x1b);Print(0x66);Print(0);Print (1);//打印一个空格 Print(ZF[12]);//打印"(" BCD(KpaZ[1]); if(BU[0]! =0) { Print(ZF[BU[0]]); } if(BU[1]! =0) { Print(ZF[BU[1]]); } else { Print(0x1b);Print(0x66);Print(0);Print (1);//打印一个空格 } Print(ZF[BU[2]]); Print(ZF[11]);//小数点 Print(ZF[KpaX[1]]);//小数部分 for(i=0;i Print(KP[i]); Print(ZF[13]);//打印")" Print(0x0a);Print(0x0a);Print(0x0d); /*****打印收缩压****/ Print(0x1b);Print(0x40);//初始化打印机 Print(0x1b);Print(0x38);Print(0x00);//选择汉字打印 for(i=0;i { Print(GY[i]); } BCD(InceptData[0]); Print(0x1b);Print(0x36);//选择字符集1 Print(0x1b);Print(0x56);Print(0x02);//纵向放大2倍 if(BU[0]! =0) { Print(ZF[BU[0]]); } else { Print(0x1b);Print(0x66);Print(0);Print (1);//打印一个空格 } Print(ZF[BU[1]]);Print(ZF[BU[2]]); for(i=0;i Print(UN[i]); Print(0x1b);Print(0x66);Print(0);Print (1);//打印一个空格 Print(ZF[12]);//打印"(" BCD(KpaZ[0]); if(BU[0]! =0) { Print(ZF[BU[0]]); } if(BU[1]! =0) { Print(ZF[BU[1]]); } else { Print(0x1b);Print(0x66);Print(0);Print (1);//打印一个空格 } Print(ZF[BU[2]]); Print(ZF[11]);//小数点 Print(ZF[KpaX[0]]);//小数部分 for(i=0;i Print(KP[i]); Print(ZF[13]);//打印")" Print(0x0a);Print(0x0a);Print(0x0d); } //2009-02-23 //////////////////////////////////////////////////////////// voidmain(void) { unsignedchartmpa,tmpb; RST8279=1; WriteReg(0x0A,0x9F);//关闭看门狗 TMOD=0x21;//T1定时器模式28位自动重载;T0定时器模式116位计数 TL1=0xfa;//T1用作波特率发生器 TH1=0xfa;//波特率4800 SCON=0X50;//模式1: 1位起始位;8位数据;1位停止位; ET1=0;//禁止定时器1中断 ET0=1;//允许定时器0中断 ES=0;//禁止串口中断 TR1=1;//定时器1开始运行 TR0=1;//定时器0开始运行 IT1=1;//外部中断1为下降沿中断 EX1=1;//允许外部中断1中断 IT0=1;//外部中断0为下降沿中断 EX0=1;//允许外部中断0中断 EA=1; WriteReg(CONTROL,0);//开启时钟 ZLG7289_Init(60);//090707修改5为60 STB=1;///打印机数据选通触发脉冲 P32=1;P2=0xff;///接收数据中断口和数据口 tmpa=ReadReg(BATTRY);///读取地址Companion上的内容 tmpb=(tmpa&0xFB);///Companion的VBC位(第二位)清零,防止对锂电池充电 WriteReg(BATTRY,tmpb);///重新写入Companion //测试函数 test_FM3104();CoordinateLine(); //PlayVoice(); /**/ while (1) { if(bit_welcome==1) { PlaySeg(17); bit_welcome=0; } if(NewDisplay)///如果需要更新显示 { WatchDog();///重置看门狗 ReadClock();///读取时钟 Display();///显示 } if(PressedOnekey)keyPro(); if(FlagHaveOrder)ProcessSerial(); ReadKey();//读取打印模式设置按键的状态2008-09-04 } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 血压 整理 资料