📄 ecg_main.c
字号:
//心电监护程序
#include <reg52.h>
#include <intrins.h>
#include <string.h>
#include <math.h>
#include <index.h>
#include <flash.h>
#include <LCD.h>
#include <serial_com.h>
#include <ecg_monitor.h>
#include <AD.h>
//定时器0
void timer0() interrupt 1 using 1 //T0中断服务子程序
{
TH0=0XEE;
TL0=0X00;
flag=1;
TR0=1;
ET0=1;
}
void welcome()
{
LCD_write_cmd(0X01);
delay_ms(500);
LCD_write_cmd(0x84);
delay_ms(500);
LCD_write_string("Welcome! ");
//while(1){}
delay_ms(1000);
//while(mode_select==0){}
LCD_write_cmd(0xc2);
delay_ms(3000);
LCD_write_string("Mode select ");
delay_ms(70000);
LCD_write_cmd(0X01);
LCD_write_cmd(0x80);
delay_ms(200);
LCD_write_string("SW1:Upload data");
LCD_write_cmd(0xc0);
LCD_write_string("SW2:ECG Monitor ");
delay_ms(2000);
while(SW1==1&&SW2==1)
{
//sys_flag=!sys_flag;
}
if(SW1==0&&SW2==1)
mode_selected=0;
else if((SW1==1&&SW2==0))
mode_selected=1;
else
mode_selected=2;
}
void main()
{
unsigned char k=0,k1=0;
unsigned int k2;
//Buzzer=1;
//while(1){}
/*while(1)
{
delay_ms(1);
LED_natural=!LED_natural;
} */
initcom();
TH0=0XE9;
TL0=0XB5;
TR0=1;
ET0=1;
EA=1;
LCD_init();
//***************************
delay_ms(100);
//***************************
welcome();
if(mode_selected==0)
{
LCD_write_cmd(0x01);
delay_ms(50);
LCD_write_cmd(0x82);
delay_ms(10);
LCD_write_string("Mode selected ");
LCD_write_cmd(0xc2);
delay_ms(10);
LCD_write_string("Upload Data ");
delay_ms(1000);
LCD_write_cmd(0x01);
delay_ms(50);
LCD_write_cmd(0x82);
delay_ms(10);
LCD_write_string("Handshaking ");
at_read_init(264);
//at_read_init(5280);
while(getchar()!=0x55){}
LCD_write_cmd(0x80);
delay_ms(50);
LCD_write_string("handshake OK! ");
sendbyte(0x55);
LCD_write_cmd(0xc0);
delay_ms(50);
LCD_write_string("Data Uploading ");
delay_ms(100);
LCD_write_cmd(0x80);
delay_ms(50);
LCD_write_string(" ");
delay_ms(50);
sendbyte(0x55);
LCD_write_cmd(0x8f);
delay_ms(50);
LCD_write_data('%');
delay_ms(50);
for (k1 = 1; k1<=100; k1++)
{
if(k1%10==0){
LCD_write_cmd(127+k1/10);
delay_ms(10);
LCD_write_data(0xff);
}
LCD_write_cmd(0x8e);
LCD_write_data(48+((k1-1)%100)%10);
LCD_write_cmd(0x8d);
LCD_write_data(48+((k1-1)%100)/10);
LCD_write_cmd(0x8c);
LCD_write_data(48+(k1-1)/100);
for (k2 = 0; k2<5404; k2++){
k=at_receive_byte();
sendbyte(k);
}
/* while(flag==0){}
if(i>4)
i=0;
if(num>=163)
num = 0;
else
num=num;
if(num>=12)
ECG_data_temp[i] = 4;
else
ECG_data_temp[i]=ecgdata[num]; //AD的结果???
sendbyte(ECG_data_temp[i]);
num++;
i++; */
//delay_ms(100);
}
LCD_write_cmd(0x01);
delay_us(100);
LCD_write_cmd(0x80);
delay_us(100);
LCD_write_string("Upload over ");
while (1);
}
else if(mode_selected==1)
{
LCD_write_cmd(0x01);
delay_ms(5);
LCD_write_cmd(0x82);
delay_ms(1);
LCD_write_string("Mode selected ");
LCD_write_cmd(0xc2);
delay_ms(1);
LCD_write_string("ECG Monitor ");
delay_ms(5);
LCD_write_cmd(0x01);
delay_ms(5);
LCD_write_cmd(0x82);
delay_ms(1);
LCD_write_string("Autoadapting...");
at_write_init(264);
autoadapt();
//maxheartrate=(unsigned char)(1.4*heartrate);
//minheartrate=(unsigned char)(0.6*heartrate);
maxQRS_T=(unsigned char)(1.4*QRS_T);
minQRS_T=(unsigned char)(0.6*QRS_T);
for(i=0;i<5;i++)
{
ECG_data_temp[i]=AD_conversion(); //AD的结果???
}
i=0;
num=5;
LCD_write_cmd(0x80);
LCD_write_string("Cardiac rate:");
LCD_write_cmd(0x8d);
LCD_write_cmd(0xc0);
LCD_write_string("State:");
while(1)
{
monitor();
}
}
else
{
LCD_write_cmd(0x01);
delay_ms(5);
LCD_write_cmd(0x85);
delay_ms(1);
LCD_write_string("Error");
LCD_write_cmd(0xc2);
delay_ms(1);
LCD_write_string("Please Restart ");
while(1){}
}
while(1)
{
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -