ĐỒ ÁN VI XỬ LÝ VÀ MÁY TÍNH – BỘ MÔN KỸ THUẬT MÁY TÍNH Trạng thái : Nghỉ ngơ
6.3 Kết luận và hướng phát triển đề tài:
- Kết luận: Việc thực hiện đề tài đã kiểm chứng được lý thuyết về phương pháp đo nhịp tim bằng phương pháp hấp thụ hồng ngoại. Từ đó có thế thiết kế các máy đo nhịp tim sử dụng phương pháp này để đưa vào sử dụng trong đời sống thực tế.
- Hướng phát triển đề tài:
+ Với phương pháp hấp thụ hồng ngoại, ta không chỉ đo nhịp tim mà có thể phát triển để đo nồng độ bão hòa Oxi trong máu. Để đo nồng độ bão hòa Oxi trong máu, ta sử dụng 2 nguồn sáng với các bước sóng khác nhau, việc phân tích cường độ sáng thu được có thể đo đạc được nồng độ bão hòa Oxi trong máu.
+ Ngoài ra cũng có thể phát triển đề tài theo hướng máy đo đạc đa năng với khả năng đo đạc thêm các thông số y sinh khác như huyết áp, thân nhiệt, điện tâm đồ…
PHỤ LỤC
Danh mục CODE:
1 #include <msp430g2553.h>
2 unsigned int so[10]={0xc0,0x79,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
ĐỒ ÁN VI XỬ LÝ VÀ MÁY TÍNH – BỘ MÔN KỸ THUẬT MÁY TÍNH
3 unsigned int nhiptim=0; 4 unsigned int dem; 5 int k=0;
6 void hienthi(unsigned int x) 7 { unsigned int tram=x/100; 8 unsigned int x1=x%100; 9 unsigned int chuc=x1/10; 10 unsigned int donvi=x1%10; 11 for(int j=0;j<1000;j++) 12 {
13 P2OUT &=~ BIT1 ;//P2.1=0, bat BJT DK hang tram 14 P1OUT=so[tram];//xuat du lieu ra
15 __delay_cycles(5000);//thoi gian hien thi 16 P2OUT |= BIT1 ;//tat
17 P2OUT &=~ BIT2 ;//P2.2=0 bat BJT DK hang chuc 18 P1OUT=so[chuc];//xuat du lieu ra
19 __delay_cycles(5000);//thoi gian hien thi 20 P2OUT |= BIT2 ;//tat
21 P2OUT &=~ BIT4 ;//P2.4=0 bat BJT DK hang don vi 22 P1OUT=so[donvi];//xuat du lieu ra
23 __delay_cycles(5000);//thoi gian hien thi 24 P2OUT |= BIT4 ; //tat
25 }26 } 26 }
27 #pragma vector=PORT2_VECTOR 28 __interrupt void Port_2(void) 29 {
ĐỒ ÁN VI XỬ LÝ VÀ MÁY TÍNH – BỘ MÔN KỸ THUẬT MÁY TÍNH
30 dem++;
31 P2IFG &= ~BIT0; 32 }
33 void battimer() 34 {
35 TA0CCTL0 = CCIE; // CCR0 interrupt enabled 36 TA0CCR0 = 50000; //50ms
37 TA0CTL = TASSEL_2 + MC_1; // SMCLK, upmode 38 } 39 void tattimer() 40 { 41 TA0CTL = 0X00; 42 } 43 #pragma vector=TIMER0_A0_VECTOR 44 __interrupt void Timer_A (void) 45 { 46 if(k<1200) k++; 47 else 48 { k=0; 49 nhiptim=dem; 50 hienthi(nhiptim); 51 dem=0; 52 tattimer(); 53 } 54 }
55 //Ham cau hinh 1Mhz 56 void Cofigure_Clock(void)
ĐỒ ÁN VI XỬ LÝ VÀ MÁY TÍNH – BỘ MÔN KỸ THUẬT MÁY TÍNH
57 {
58 if (CALBC1_1MHZ == 0XFF)// if calibration const ant erased 59 { 60 while(1); 61 } 62 DCOCTL=0; 63 BCSCTL1 = CALBC1_1MHZ; 64 DCOCTL = CALDCO_1MHZ; 65 BCSCTL2 |= SELM_0;
66 // chon nguon clock CPU MCLK la DCO 67 }
68 void main(void) 69 {
70 WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer 71 Cofigure_Clock();
72 P1DIR |= BIT0 + BIT1 + BIT2 + BIT3 + BIT4 + BIT5 + BIT6 ;//output 73 P2DIR |= BIT1 + BIT2 + BIT4;//output
74 P2IE |= BIT0; // P2.0 interrupt enabled 75 P2IES |= BIT0; // P2.0 Hi/lo edge
76 P2IFG &= ~BIT0; // P2.0 IFG cleared
77 _BIS_SR(GIE); //BAT NGAT DEM NHIP TIM78 P2DIR &= ~BIT3; 78 P2DIR &= ~BIT3;
79 while(1) 80 { 81 while((P2IN&BIT3)); 82 for(int i=0;i<400;i++); 83 while(!(P2IN&BIT3)); Nhóm 39 Page 31
ĐỒ ÁN VI XỬ LÝ VÀ MÁY TÍNH – BỘ MÔN KỸ THUẬT MÁY TÍNH 84 for(int i=0;i<400;i++); 84 for(int i=0;i<400;i++); 85 dem=0; 86 battimer(); 87 } 88 } Nhóm 39 Page 32