#include<reg51.h>#define uchar unsigned char#define uint unsigned intsbit DQ=P1^0;//ASDX001 与单片机连接口sbit RS=P3^5;sbit RW=P3^6;sbit EN=P3^7;unsigned char code str1[]={"blood pressure: "};unsigned char code str2[]={" "};uchar data disdata[5];uint tvalue;//压力值uchar tflag;//压力正负标志/*************************lcd1602 程序**************************/void delay1ms(unsigned int ms)//延时1 毫秒(不够精确的){unsigned int i,j;for(i=0;i<ms;i++)for(j=0;j<100;j++);}void wr_com(unsigned char com)//写指令//{delay1ms(1);RS=0;RW=0;EN=0;P0=com;delay1ms(1);EN=1;delay1ms(1);EN=0;}void wr_dat(unsigned char dat)//写数据//{delay1ms(1);;RS=1;RW=0;EN=0;P0=dat;delay1ms(1);EN=1;delay1ms(1);EN=0;}void lcd_init()//初始化设置//{delay1ms(15);wr_com(0x38);delay1ms(5);wr_com(0x08);delay1ms(5);wr_com(0x01);delay1ms(5);wr_com(0x06);delay1ms(5);wr_com(0x0c);delay1ms(5);}void display(unsigned char *p)//显示//{while(*p!=' '){wr_dat(*p);p++;delay1ms(1);}}init_play()//初始化显示{ lcd_init();wr_com(0x80);display(str1);wr_com(0xc0);display(str2);}void delay_asdx001(unsigned int i)//延时1 微秒{while(i--);}void asdx001rst()/*ds1820 复位*/{ unsigned char x=0;DQ = 1; //DQ 复位delay_asdx001(4); //延时DQ = 0; //DQ 拉低delay_asdx001(100); //精确延时大于480usDQ = 1; //拉高delay_asdx001(40);}uchar asdx001rd()/*读数据*/{ unsigned char i=0;unsigned char dat = 0;for (i=8;i>0;i--){ DQ = 0; //给脉冲信号dat>>=1;DQ = 1; //给脉冲信号if(DQ)dat|=0x80;delay_asdx001(10);}return(dat);}void asdx001wr(uchar wdata)/*写数据*/{unsigned char i=0;for (i=8; i>0; i--){ DQ = 0;DQ = wdata&0x01;delay_asdx001(10);DQ = 1;wdata>>=1;}}read_pressure1()/*读取压力值并转换*/{asdx001rst();asdx001wr(0xcc);//*跳过读序列号*/asdx001wr(0x44);//*启动压力转换*/asdx001rst();}read_pressure2(){uchar a,b;asdx001wr(0xcc);//*跳过读序列号*/asdx001wr(0xbe);//*读取压力*/a=asdx001rd();b=asdx001rd();tvalue=b;tvalue<<=8;tvalue=tvalue|a;if(tvalue<0x0fff)tflag=0;else{tvalue=~tvalue+1;tflag=1;}return(tvalue);}/*******************************************************************/void asdx001disp1()//压力值显示{ uchar flagdat;disdata[0]=tvalue/1000+0x30;//百位数disdata[1]=tvalue%1000/100+0x30;//十位数disdata[2]=tvalue%100/10+0x30;//个位数disdata[3]=tvalue%10+0x30;//小数位if(tflag==0)flagdat=0x20;//正压力不显示符号elseflagdat=0x2d;//负压力显示负号if(disdata[0]==0x30){disdata[0]=0x20;//如果百位为0,不显示if(disdata[1]==0x30){disdata[1]=0x20;//如果百位为0,十位为0 也不显示}}}void asdx001disp2(){uchar flagdat;wr_com(0xc3);wr_dat(flagdat);//显示符号位wr_dat(disdata[0]);//显示百位wr_dat(disdata[1]);//显示十位wr_dat(disdata[2]);//显示个位wr_dat(0x2e);//显示小数点wr_dat(disdata[3]);//显示小数位wr_com(0xca);wr_dat(0xdf);wr_dat(0x43);}/********************主程序***********************************/void main(){init_play();//初始化显示while(1){ read_pressure1();//读取压力read_pressure2();//读取压力asdx001disp1();//显示asdx001disp2();//显示}}
导读:目前正在解读《远程医疗监控系统程序设计》的相关信息,《远程医疗监控系统程序设计》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《远程医疗监控系统程序设计》的详细说明。
简介:远程医疗监控系统,它是一种集成信息科学、计算机技术和通信应用技术于医疗卫生领域的高科技产业品。系统主要组成部分为:基于微控制器和传感器节点组成体征采集模块,基于GPRS/GSM 的无线收发模块,基于FPGA 的上位机监控模块。
提醒:《远程医疗监控系统程序设计》最后刷新时间 2024-03-14 01:02:38,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《远程医疗监控系统程序设计》该内容的真实性请自行鉴别。