скачать рефераты

скачать рефераты

 
 
скачать рефераты скачать рефераты

Меню

Разработка цифрового измерителя кровяного давления на микроконтроллере MC68HC908JL3 скачать рефераты

ит QB позволяет сначала определять систолическое давление, и только потом определять диастолическое давление, причём если систолическое давление определенно, то в последующем определяется только диастолическое давление.

Рис.4.2.1.2.

Рис.4.2.1.2.(продолжение)

Рис.4.2.1.2.(продолжение)

Рис.4.2.1.2.(продолжение)

Рис.4.2.1.2.(продолжение)

Рис.4.2.1.2.(продолжение)

4.2.2 БСА обработчика прерывания от таймера

БСА обработчика прерывания от таймера, представлена на рис.4.2.2.1. Для правильной работы обработчика, необходимо частоту тактирования таймера сделать равной 125кГц, т.е. Fbus/8, а в регистр периода загрузить число 12499. Тогда через каждые 0,1 S будет вызываться обработчик прерывания от таймера.

В начале подпрограммы обработчика необходимо сбросить флаг TOF(бл.1), иначе в противном случае следующий запрос на прерывание “потеряется”.

После того, как флаг будет сброшен, подпрограмма переходит к выполнению блока 2, в котором она делает инкремент ячейки памяти Sec10(в ней находятся 10-е доли секунды). Как только Sec10 станет равным 9-и (бл.3), происходит очистка, т.е. обнуление, Sec10 (бл.4) и делается инкримент ячейки памяти Sec (в которой находятся целые секунды).

В блоках 6,7 происходит отсчёт времени до 2-х минут, после чего устанавливается бит Dvb(бл.8), который контролирует время нахождения в программы в цикле (бл.30,31,29) см. рис.4.2.1.2.

Рис.4.2.2.1.

4.2.3 БСА обработчика прерываний от АЦП

БСА обработчика прерываний от АЦП представленна на рис.4.2.3.1.

Бит ab (бл.1) определяет аналоговый вход АЦП, или РТВ0, или РТВ1. Рассмотрим случай когда аналоговым входом является линия РТВ0, т.е. ab=0.

В блоке 2 определяется, был ли ранее у АЦП аналоговый вход РТВ0:

Если не был (ab2=0), то происходит сброс бита ab1, который выполняет аналогичную функцию, только показывает, был ли ранее у АЦП, аналоговый вход РТВ1. После чего происходит установка бита ab2 в 1 (бл.4), и запуск АЦП с аналоговым входом РТВ0 (бл.7). Далее программа выходит из обработчика.

Если был (ab2=1), то в блоке 5 устанавливается бит СОСО1, сигнализирующий о том, что преобразование завершено, после чего результат из регистра данных АЦП переносится в ячейку памяти Upress, и происходит запуск АЦП с аналоговым входом РТВ0 (бл.7). После чего программа выходит из обработчика.

В случае когда аналоговым входом является линия РТВ1 (ab=1), всё происходит аналогично.

Бит ab2 и ab1 необходимы для корректной работы подпрограммы. То есть, если аналоговым входом является линия РТВ0, то при смене аналогового входа на РТВ1, первый результат преобразования окажется ложным, он не будет соответствовать значению сигнала на входе РТВ1. Поэтому чтобы этого не случилось, вводятся биты ab2 и ab1.

Рис.4.2.3.1.

4.2.4 БСА подпрограммы табличной перекодировки напряжение в давление.

БСА подпрограммы табличной перекодировки напряжения в давление представленна на рис. 4.2.4.1.

В начале подпрограммы происходит сохранение регистров CPU в стеке (бл.1). Далее происходит вычисление истинного давления(бл.2), после чего результат проделанной операции заносится в Udav (бл.3). В блоке 4 происходит загрузка числа в регистр Х, затем следует команда табличной перекодировки ( бл.5), где TCP - начало таблицы перекодировки. После чего, в блоке 6, перекодированное число заносится в Udav, в блоке 7 восстанавливаются из стека регистры CPU, и программа выходит из обработчика.

Рис.4.2.4.1.

4.2.5 БСА подпрограммы вывода числа на индикацию

БСА вывода числа на индикацию представлена на рис.4.2.5.1.

В ячейку памяти ci заносится число (бл.2) равное кол-ву цифр выводимых на индикатор.

В блоке 5 происходит загрузка числа для табличной перекодировки, в регистр Х. После чего в бл.6 следует команда табличной перекодировки числа для индикации, где TCI - это начало кодовой таблицы. После этой команды, происходит передвижение по ячейкам BCDxxx.

В блоках 8,9 происходит запись перекодированного числа в одну из ячеек памяти INDxxx, после чего в блоке 10 идёт передвижение по ячейкам INDxxx.

В блоке 11 происходит настройка индикатора на приём адреса, после чего в блоке 12 адрес передаётся в индикатор, который стробируется импульсом образованным блоками 13-15. После этого следует задержка 30 мкС, в течении которой индикатор выполняет, свои внутренние операции.

Как только задержка окончилась, в бл.17,18 индикатор настраивается на приём данных, и далее происходит передача данных (бл.19), которые стробируются импульсом образованным блоками 20-22. После чего в блоке 23 происходит задержка, после которой декрементируется ячейка памяти ci, в блоках 25-27 происходит подготовка для вывода следующего числа на индикацию, и в бл.28 проверяется, если ci 0, то подпрограмма переходит к выполнению бл.6 и всё начинается заново. Если ci=0, то программа выходит из обработчика.

Рис.4.2.5.1.

Рис.4.2.5.1.(продолжение)

4.2.6 БСА подпрограммы перевода числа в BCD формат

БСА подпрограммы перевода числа в BCD формат представлена на рис.4.2.6.1.

В начале подпрограммы, регистры CPU сохраняются в стеке. В блоке 1 происходит проверка:

Если число больше 99, то в блоке 3 происходит деление числа на 100, в результате этой операции, целое частное помещается в аккумулятор, а остаток деления в регистр H. Целое частное - это сотни числа, поэтому они заносятся в ячейку памяти BCD100 (бл.4), после чего остаток загружается в аккумулятор (бл.5), и делится на 10 (бл.6). В результате этой операции, в аккумуляторе получаются десятки числа, которые заносятся в BCD10 (бл.7), а остаток числа показывает единицы и заносится в BCD1 (бл.8).

Если число меньше 99, то оно проверяется в блоке 2, если оно меньше 9, то в ячейку памяти BCD100,BCD10 записывается код пробела (бл. 11,12), после чего данное число записывается в BCD1 (бл.13). Если оно больше 9, то число записывается в аккумулятор (бл.9), в ячейку памяти BCD100 записывается код пробела, после чего происходит деление числа на 10 (бл.6) и далее всё происходит как в пункте 1, только начиная с блока 6.

Рис.4.2.6.1.

5. Принципиальная схема устройства

Принципиальная схема устройства изображена на рис.5.1.

Заключение

Обратите внимание на принципиальную схему прибора, в ней как видно минимум элементов. Это объясняется применением в схеме, микроконтроллера. Причем всё измерение осуществляется в полуавтоматическом режиме и происходит в микроконтроллере. Тем самым пользователь прикладывает минимум усилий для измерения своего давления.

Таким образом применение микропроцессорных систем в устройствах различного типа, позволяет сократить кол-во элементов в схеме, сделать устройство более качественным, а также позволяет осуществить наиболее “дружелюбный” интерфейс с пользователем.

Программа для данного устройства была написана на ассемблере CASM08, оттранслированна и отлажена на ICS08JL, листинг программы приведён в приложении.

Список литературы

Панфилов Д.И. Датчики фирмы MOTOROLA. Москва. ДОДЭКА. 2000. 96 с.

БЭК. Жидкокристалические индикаторы фирмы DATA INTERNATIONAL. Москва. 1999. 64 с.

Technical Data. MC68HC908JL3.

Technical Data. MPX5050DP.

Приложение

тонометр.asm Assembled with CASM08Z 25.02.03 9:58:45 PAGE 1

0000 1 PTA equ $0

0000 2 PTB equ $1

0000 3 PTD equ $3

0000 4 DDRA equ $4

0000 5 DDRB equ $5

0000 6 DDRD equ $7

0000 7 PDCR equ $A

0000 8 PTAPUE equ $D

0000 9 KBSCR equ $1A

0000 10 KBIER equ $1B

0000 11 CONFIG2 equ $1E

0000 12 CONFIG1 equ $1F

0000 13 TSC equ $20

0000 14 TCNTH equ $21

0000 15 TCNTL equ $22

0000 16 TMODH equ $23

0000 17 TMODL equ $24

0000 18 ADSCR equ $3C

0000 19 ADR equ $3D

0000 20 ADICLK equ $3E

21

22

23

0080 24 org $80 ;ОЗУ

25

0080 26 ind rmb 3

0083 01 27 adres db 1

0084 01 28 BCD100 db 1

0085 01 29 BCD10 db 1

0086 01 30 BCD1 db 1

0087 01 31 indx db 1

0088 01 32 ci db 1

0089 01 33 bitf db 1

008A 01 34 upress1 db 1

008B 01 35 upress db 1

008C 01 36 udav db 1

008D 01 37 const db 1

008E 01 38 dav db 1

008F 01 39 y db 1

0090 01 40 pulse db 1

0091 01 41 bitf1 db 1

0092 01 42 cmp1 db 1

0093 01 43 del db 1

0094 01 44 por db 1

0095 01 45 ovsec db 1

0096 01 46 cmpad db 1

0097 01 47 amp2 db 1

0098 01 48 amp1 db 1

0099 01 49 sec db 1

009A 01 50 sec10 db 1

009B 01 51 time1 db 1

009C 01 52 time2 db 1

009D 01 53 time3 db 1

009E 01 54 pr1 db 1

009F 01 55 sis db 1

00A0 01 56 pr2 db 1

00A1 01 57 dia db 1

00A2 01 58 pul db 1

тонометр.asm Assembled with CASM08Z 25.02.03 9:58:45 PAGE 2

00A3 01 59 bcdx db 1

00A4 01 60 pmem1 db 1

61

EC00 62 org $ec00 ;программа

63

64 start:

65 ;--------------------------- Инициализация -----

66

EC00 [01] 4F 67 clra

EC01 [01] 5F 68 clrx

69

EC02 [04] 6EFF07 70 mov #$ff,DDRD ;Настраиваем линии

порта PTD на вывод

EC05 [04] 6E1C05 71 mov #$1c,DDRB ;Настраиваем линии

РТВ2,РТВ3,РТВ4 на вывод

72

73 ;Инициализация индикатора

74

EC08 [04] 1501 75 bclr 2,PTB

EC0A [04] 1701 76 bclr 3,PTB

EC0C [04] 6E0603 77 mov #$6,PTD ;Установка режима ввода

EC0F [04] 1801 78 bset 4,PTB ;Формирование

стробирующего импульса

EC11 [01] 9D 79 nop

EC12 [01] 9D 80 nop

EC13 [01] 9D 81 nop

EC14 [01] 9D 82 nop

EC15 [01] 9D 83 nop

EC16 [04] 1901 84 bclr 4,PTB

EC18 [05] CDEF08 85 jsr deleysret

EC1B [04] 6E3803 86 mov #$38,PTD ;Установка выполняемых

функций

EC1E [04] 1801 87 bset 4,PTB ;Формирование

стробирующего импульса

EC20 [01] 9D 88 nop

EC21 [01] 9D 89 nop

EC22 [01] 9D 90 nop

EC23 [01] 9D 91 nop

EC24 [01] 9D 92 nop

EC25 [04] 1901 93 bclr 4,PTB

EC27 [05] CDEF08 94 jsr deleysret ;Задержка 30 мкС

EC2A [04] 6E0803 95 mov #$8,PTD

EC2D [04] 1801 96 bset 4,PTB ;Формирование

стробирующего импульса

EC2F [01] 9D 97 nop

EC30 [01] 9D 98 nop

EC31 [01] 9D 99 nop

EC32 [01] 9D 100 nop

EC33 [01] 9D 101 nop

EC34 [04] 1901 102 bclr 4,PTB

EC36 [05] CDEF08 103 jsr deleysret ;Задержка 30 мкС

104

105 ;---------------------------------------------

106

107 main:

тонометр.asm Assembled with CASM08Z 25.02.03 9:58:45 PAGE 3

EC39 [02] A628 108 lda #!40

EC3B [02] AE80 109 ldx #$80

110 sbm:

EC3D [02] 7F 111 clr ,X ; Обнуление ячеек памяти

EC3E [01] 5C 112 incx

EC3F [01] 4A 113 deca

EC40 [03] 26FB 114 bne sbm

EC42 [04] 6E5994 115 mov #!89,por

EC45 [04] 6E089E 116 mov #!8,pr1 ;Порог для систоличе

ского

EC48 [04] 6E0DA0 117 mov #!13,pr2;Порог для диастолического

118

EC4B [02] 9A 119 cli ;Разрешаем прерывания

120

EC4C [04] 6E403C 121 mov #$40,ADSCR ;Запуск АЦП вход РТВ0

EC4F [05] 0789FD 122 brclr 3,bitf,$

EC52 [04] 1789 123 bclr 3,bitf

EC54 [05] 4E8B8D 124 mov upress,const

125

126 ;--------------------------- ИНДИКАЦИЯ сис,диа,пул

127

EC57 [04] 6E0B84 128 mov #!11,bcd100 ;$34 - код буквы "C"

EC5A [04] 6E0C85 129 mov #!12,bcd10

EC5D [04] 6E0B86 130 mov #!11,bcd1

EC60 [04] 6E0083 131 mov #$0,adres

EC63 [05] CDEEC1 132 jsr IND_RET ;Вывод на индикацию

EC66 [04] 6E0D84 133 mov #!13,bcd100 ;Вывод "ДИА"

EC69 [04] 6E0C85 134 mov #!12,bcd10

EC6C [04] 6E0E86 135 mov #!14,bcd1

EC6F [04] 6E4083 136 mov #$40,adres

EC72 [05] CDEEC1 137 jsr IND_RET

EC75 [04] 6E0F84 138 mov #!15,bcd100 ;Вывод "ПУЛ"

EC78 [04] 6E1085 139 mov #!16,bcd10

EC7B [04] 6E1186 140 mov #!17,bcd1

EC7E [04] 6E4983 141 mov #$49,adres

EC81 [05] CDEEC1 142 jsr IND_RET

143

144 ;----------------------------------------------

145

146

147 ;---------- ИНДИКАЦИЯ 0 в разделе сис ------------------------------;

148

EC84 [04] 6E0A84 149 mov #$a,bcd100 ;Символ пробела

EC87 [04] 6E0A85 150 mov #$a,bcd10

EC8A [04] 6E0386 151 mov #$03,bcd1 ;Символ "0"

EC8D [04] 6E4683 152 mov #$46,adres ;Запись адреса

EC90 [05] CDEEC1 153 jsr IND_RET

EC93 [04] 1501 154 bclr 2,PTB

EC95 [04] 1701 155 bclr 3,PTB

EC97 [04] 6E0C03 156 mov #$c,PTD ;Включить дисплей

157

тонометр.asm Assembled with CASM08Z 25.02.03 9:58:45 PAGE 4

Страницы: 1, 2, 3, 4