Курсовая работа: Разработка цифрового измерителя кровяного давления на микроконтроллере MC68HC908JL3
YN
NY
Y
Рис.4.1.2. Обобщённая БСА.
4.2 Рабочая БСА
4.2.1 БСА основной программы
Рабочая БСА придставленна на рис.4.2.1.2..В начале программы происходит инициализация, блок 1, в котором происходит инициализация портов ввода-вывода, АЦП и таймера. После чего в блоке 2 обнуляются все переменные, задействованные в данной программе. Как только, это всё выполнится, происходит запуск АЦП(блок 4), у которого аналоговым входом является линия РТВ0.
Первый результат преобразования аналогового сигнала, заносится в ячейку памяти CONST, и означает значение кода при нулевом давлении. После этого на индикатор выводятся символы как показано на рис.4.2.1.1., и в младшем разряде “сис:” зажигается 0. После чего, идёт процедура ожидания окончания накачки манжеты.
сис х х 0
диа х х х пул х х х
рис.4.2.1.1. Расположение символов на индикаторе.
Она заключается в следующем. В ячейку памяти del заносится число соответствующее задержке 0,75 секунды( бл.12). В блоках 16 и 15 организован цикл, после выполнения которого, происходит индикация текущего давления (бл. 17 – 21). После чего делается декремент ячейки памяти del. Если del0 то, программа переходит к выполнению бл.13. и все происходит заново. Если del=0, то в бл.25. происходит сравнение давления до задержки и после задержки. Если давление после задержки больше давления до задержки, то программа переходит к выполнению бл.12. и данная процедура повторяется. Если же давление после задержки меньше давления до задержки, то это означает, что пользователь прекратил накачку манжеты, и программа переходит на процедуру определения амплитуды.
В начале процедуры, в блоке 30 происходит сравнение напряжения снимаемого с активного фильтра (вход РТВ1) с заданным порогом напряжения (1,75V). Если пороговое напряжение больше напряжения снимаемого с АФ, то программа зациклевается и ожидает когда напряжение с АФ будет больше порогового. Причём, если в течении 5 секунд программа находится в цикле, то измерение прекращается и выводится сообщение об ошибки. Если Upress1>Пор, то происходит сброс ячейки памяти OVSEC, и далее происходит определение значения амплитуды (бл. 33 – 37).
Как только, амплитуда будет определенна, происходит сброс и перезапуск таймера, а также обнуление SEC10 и SEC (бл. 38). После чего значение амплитуды заносится в ячейку памяти АМР2 (бл. 39). Далее АЦП переключается на вход РТВ0 (бл. 40), и результат второго преобразования заносится в UDAV (этот результат показывает давление в манжете), после чего АЦП обратно переключается на вход РТВ1. Как только АЦП переключится на вход РТВ1, ячейка памяти PULSE, в которой находится кол-во пульсаций, инкрементируется. А далее идет процедура вычисления производной амплитуды.
Производная вычисляется по формуле:
,
где, AMP 1 и AMP 2 – амплитуды;
time – время между амплитудами.
При первом входе в процедуру SB=0 (бл.50), вычисляется время импульса и заносится в ячейку памяти time1 (бл.52 – 55). После чего проверяется (бл.56), если первая амплитуда находится в АМР2, а вторая в АМР1, то они меняются местами (бл.57 – 59) и программа переходит на выполнение бл.29, т.е. определение амплитуды начинается сначала. Если первая амплитуда находится в АМР1, а вторая в АМР2, то ничего не происходит, и определение амплитуды начинается заново.
При последующем входе SB=1, в начале также определяется время импульса, но далее смотрится:
1. Если РВ=0, то значение времени заносится в time2, после чего из time2 вычитается time1, и РВ устанавливается в “1” (бл.64 – 66).
2. Если РВ=1, то значение времени заносится в time1, после чего из time1 вычитается time2, и РВ устанавливается в “0” (бл.61 – 63).
И в первом, и во втором случае, результат преобразования заносится в time3 (бл.67).
В блоке 68 происходит определение разности между АМР2 и АМР1. Далее в блоках 69 – 73 вычисляется производная. После чего программа переходит к процедуре определения давления.
Из графика показанного на рис.4.2.1.1. видно, что первая производная, которая больше порога ПОРОГ1 является определяющей для систолического давления, т.е. по ней определяют систолическое давление. Последующее производные, которые больше порога ПОРОГ1, но меньше порога ПОРОГ2 не являются определяющими и игнорируются. Когда производная будет больше порога ПОРОГ2, то она станет определяющей для диастолического давления. Поэтому в процедуре определения давления, сначала определяется систолическое давление (бл.75). Если давление определилось, то значение давления заносится в SIS, после чего бит QB устанавливается в “1” (бл.77,78), и идёт определение диастолического давления. Если давление не определилось, то бит QB не устанавливается, и далее происходит определение диастолического давления.
Как только диастолическое давление будет определенно (бл.76), его значение переносится в DIA (бл.79). После чего осуществляется проверка (бл.80), если SIS=0, то выводится сообщение об ошибки, после чего устройство ожидает спуска манжеты (бл.81), перед повторным измерением. Если SIS0, то идёт вычисление частоты пульса (бл.82 – 84) и далее происходит индикация давления и пульса (бл.85), после чего устройство опять ожидает спуск манжеты перед повторной накачкой.
Бит QB позволяет сначала определять систолическое давление, и только потом определять диастолическое давление, причём если систолическое давление определенно, то в последующем определяется только диастолическое давление.
| ||||||
| ||||||||
| ||||||||
Рис.4.2.1.2.