Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronic Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Register Log in

Biomedical monitor using pic 16f887 in Mikroc

Status
Not open for further replies.

musa1423

Newbie level 1
Joined
Apr 25, 2011
Messages
1
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Activity points
1,305
I AM READING VALUES FROM DIFFERENT BIOMEDICAL SENSORS AND SEND THEM TO PC USING RS232.I ONLY RECEIVE VALUES '<FF>' AND THEN NOTHING IS RECIEVED ANYMORE




* Test configuration:
MCU: PIC16F887
Dev.Board: PICkit 3
Oscillator: HS, 10.0000 MHz
Ext. Modules: -
*/

#define Saline_status PORTC.F4

void Delay_ms(const time_in_ms);

void main() {
double ECG,ECG0,ECG1,ECG2,ECG3 ;

int HEARTRATE, RESP_TEMP, VOLTAGE2 ,BODY_TEMP ,CALL,VOLTAGE1; int cardreadresult ,ON=1,CHANGE=1,OK=0;
char Patient_calling = 'a',CARDREADER='b', ECG_S = 'c', BODY_TEMPERATURE='d',RESPIRATORY_TEMPERATURE = 'h';
char SALINE_SATUS = 'g',HEARTRATE_SENSOR = 'f' ;
unsigned short pulserate, pulsecount ;
unsigned long Vin ,ECG4, ECG5 ;

ADCON1 = 0x80; // Configure AN0-6 pins as analogue
TRISA = 0xFF; // set direction to be input
TRISB = 0xFF; // set direction to be input
TRISC = 0xFF; // set direction to be input
TRISD = 0xFF; // set direction to be input
Uart1_Init(9600); // initialise uart1

for(; ;) {

CALL = PORTD ; // Patient_calling SWITCHES
Uart1_Write(Patient_calling);
Delay_ms(1);
if (CALL> 0x00) {
Uart1_Write( ON);
}

cardreadresult = PORTB ; //CARDREADER
Uart1_Write(CARDREADER);
Delay_ms(1);
if (cardreadresult > 0x00) { //send cardreadresult to usart
Uart1_Write(cardreadresult);
}

//ECG SENSOR
ECG0 = Adc_Read(0); // Read from channel 0 (AN0)
Delay_ms(1); //One msecond pause
ECG1 = Adc_Read(1); // Read from channel 1 (AN1)
Delay_ms(1); //One msecond pause
ECG2 = Adc_Read(2); // Read from channel 2 (AN2)
Delay_ms(1); //One msecond pause
ECG3 = Adc_Read(3); // Read from channel 3 (AN3)
Delay_ms(1); //One second pause
ECG4 = (ECG0 + ECG1 + ECG2 + ECG3)/4 ;
ECG5 = ECG4*100 ; // Scale up the result
ECG = ECG5 / 8192 ; // Convert to mV
Uart1_Write(ECG_S) ;
Delay_ms(1);
Uart1_Write(ECG) ;

VOLTAGE1 = Adc_Read(5); // BODY TEMPERATURE
Uart1_Write(BODY_TEMPERATURE);
Vin = 488*VOLTAGE1; // Scale up the result
BODY_TEMP = Vin /100; // Convert to temperature in C
Delay_ms(1);
Uart1_Write(BODY_TEMP);


VOLTAGE2= Adc_Read(6); // RESPIRATORY TEMP SENSOR
Uart1_Write(RESPIRATORY_TEMPERATURE);
Delay_ms(1);
Vin = 488*VOLTAGE2; // Scale up the result
RESP_TEMP = Vin /100; // Convert to temperature in C
Uart1_Write(RESP_TEMP);




Uart1_Write(SALINE_SATUS); //SALINE SATUS
Delay_ms(1);
if (Saline_status == 1 ){
Uart1_Write(CHANGE);
} //send change saline status signal to uart
else{
Uart1_Write(OK); // SALINE STATUS OK
}

TMR0=0; // Heart rate sensor to counter
Delay_ms(10000); // Delay 10 Sec
pulsecount = TMR0;
HEARTRATE = pulsecount*6;
Uart1_Write(HEARTRATE_SENSOR);
Delay_ms(1);
Uart1_Write(HEARTRATE);

} // Endless loop
}
 

Status
Not open for further replies.
Toggle Sidebar

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Top