Программа Сервисный Центр
0

Измеритель пульса на микроконтроллере PIC16F628A. Часть 2. Программное обеспечение


Окончание Начало читайте здесь: Часть 1. Принцип действия и схема Примечание. Листинг исходного кода, размещенный в тексте описания, использовать в своих проектах не рекомендуется. В конце описания имеется ссылка на архив с полным исходным кодом к проекту. Программное обеспечение микроконтроллера осуществляет управление и вычисление данных. С целью экономии ресурса батареи (в случае питания от батареи) модуль ИК сенсора активируется только при запуске измерения, включаясь на 15 секунд после нажатия кнопки «Start». Импульсы, поступающие на вывод TOCK1 микроконтроллера, подсчитываются таймером Timer0, который работает в режиме счетчика без предделителя. Программа для микроконтроллера полностью написана с использованием компилятора mikroC, разработанного компанией mikroElektronika, текст программы снабжен подробными комментариями. Листинг /* Project: Measuring heart rate through fingertip Copyright @ Rajendra Bhatt January 18, 2011 PIC16F628A at 4.0 MHz external clock, MCLR enabled*/sbit IR_Tx at RA3_bit;sbit DD0_Set at RA2_bit;sbit DD1_Set at RA1_bit;sbit DD2_Set at RA0_bit;sbit start at RB7_bit;unsigned short j, DD0, DD1, DD2, DD3;unsigned short pulserate, pulsecount;unsigned int i;//-------------- Function to Return mask for common anode 7-seg. displayunsigned short mask(unsigned short num) { switch (num) { case 0 : return 0xC0; case 1 : return 0xF9; case 2 : return 0xA4; case 3 : return 0xB0; case 4 : return 0x99; case 5 : return 0x92; case 6 : return 0x82; case 7 : return 0xF8; case 8 : return 0x80; case 9 : return 0x90; } //case end}void delay_debounce(){ Delay_ms(300);}void delay_refresh(){ Delay_ms(5);}void countpulse(){ IR_Tx = 1; delay_debounce(); delay_debounce(); TMR0=0; Delay_ms(15000); // Delay 15 Sec IR_Tx = 0; pulsecount = TMR0; pulserate = pulsecount*4;}void display(){ DD0 = pulserate%10; DD0 = mask(DD0); DD1 = (pulserate/10)%10; DD1 = mask(DD1); DD2 = pulserate/100; DD2 = mask(DD2); for (i = 0; i<=180*j; i++) { DD0_Set = 0; DD1_Set = 1; DD2_Set = 1; PORTB = DD0; delay_refresh(); DD0_Set = 1; DD1_Set = 0; DD2_Set = 1; PORTB = DD1; delay_refresh(); DD0_Set = 1; DD1_Set = 1; DD2_Set = 0; PORTB = DD2; delay_refresh(); } DD2_Set = 1;}void main() { CMCON = 0x07; // Disable Comparators TRISA = 0b00110000; // RA4/T0CKI input, RA5 is I/P only TRISB = 0b10000000; // RB7 input, rest output OPTION_REG = 0b00101000; // Prescaler (1:1), TOCS =1 for counter mode pulserate = 0; j = 1; display(); do { if(!start){ delay_debounce(); countpulse(); j= 3; display(); } } while(1); // Infinite loop} Загрузки Исходный код и hex файл для прошивки микроконтроллера - скачать Часть 3. Конструкция прибора, демонстрция работы, использование и рекомендации по изготовлению и нстройке ИК сенсора.На английском языке: Heart rate measurement from fingertip. Part 2. SoftwareПеревод: Vadim по заказу РадиоЛоцман

По материалам сайта www.rlocman.ru

Также рекомендуем:

 
 
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии в данной новости.
 
Обратная связь

Наши партнеры

 

Опросы

Есть ли справедливость в жизни?
Конечно есть, уверен!
Вроде как должна быть, но...
Затрудняюсь ответить...
Какая справедливость? О чем Вы?
Эх.., нет правды на свете!

 

Облако тегов

Требуется для просмотраFlash Player 9 или выше.

Показать все теги
 

Календарь публикаций

«    Декабрь 2016    »
ПнВтСрЧтПтСбВс
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
 

Архив новостей

Декабрь 2016 (15)
Ноябрь 2016 (42)
Октябрь 2016 (34)
Сентябрь 2016 (38)
Август 2016 (34)
Июль 2016 (36)
 
Наверх Сервисные мануалы Даташиты Ремонт LCD, ЖК телевизоров LG Samsung Скрипт программы "Сервисный центр"