Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

5

.2.pdf
Скачиваний:
11
Добавлен:
16.04.2015
Размер:
479.98 Кб
Скачать

Рис.8. Схема программы klav_jki

Текст программы:

klav_jki_main.asm org 8400h

include asms\4081_4\Bs\5.2\2.asm

include asms\4081_4\Bs\5.2\klav_jki.asm include asms\4081_4\Bs\5.2\klav_mon.asm ret

 

klav_jki.asm

 

 

mov r1, #34h

 

 

mov r0, #30h

 

 

mov dptr,#FFE2h

; адрес внешней памяти для записи номера нажатой клавиши

cols:

cjne @r0, #70h, cols1

 

 

mov a,#00h

 

 

jmp end

 

cols1:

cjne @r0, #b0h,cols2

 

 

mov a,#01h

 

 

jmp end

 

cols2:

cjne @r0, #d0h, cols3

 

 

mov a,#02h

 

 

jmp end

 

cols3:

cjne @r0, #e0h,cols0

 

 

mov a,#03h

 

 

jmp end

 

end:

mov r3,a

 

 

mov a,r0

 

 

subb a,#30h

 

 

rl a

 

 

rl a

 

 

add a,r3

 

 

mov r3,a

 

; Получение HEX-кода для вывода на экран ЖКИ

 

clr c

; очищаем флаг С

 

subb a,#0ah

 

 

jc l30

; проверка номера нажатой клавиши

 

 

; если он меньше 10, то прибавляем 30 для получения HEX-кода

 

 

; если 10 или больше, то прибавляем 37

l40:

mov a,r3

 

 

add a,#37h

 

 

jmp l

 

l30:

mov a,r3

 

 

add a,#30h

 

 

jmp l

 

; записываем HEX-код нажатой клавиши по адресу внешней памяти

l:mov @r1, a movx @dptr, a jmp endend

; если не нажато ни одной клавиши, то записываем символ «X» cols0: cjne @r0, #f0h,colsF

n1:

inc r0

 

cjne r0,#34h,cols

 

mov a,#d5h

 

mov @r1, a

 

movx @dptr, a

 

jmp endend

; если нажато несколько клавиш, то выводим символ «>» colsF: mov a,#3eh

mov @r1, a movx @dptr, a

endend: mov a,#ffh

Описание программы:

Данная программа использует алгоритмы предыдущих программ по определению и выводу номера нажатой клавиши.

Отметить следует процесс преобразования номера клавиши в HEX-код.

Если номер нажатой клавиши меньше 10, то к номеру прибавляется 30h и получается символ от 0 до 9. Если номер 10 и более, то к номеру прибавляется и получается символ от A до F. HEX-коды приведены в таблице

В ходе тестирования программы были проверены разные комбинации нажатых клавиш: одна клавиша, две клавиши и ни одной клавиши. Результаты показывают, что программа работает корректно.

Результаты испытаний и анализ результатов:

Результатами испытания явилось отображение на экране необходимого текста. Не нажато ни одной клавиши:

Number of button X Нажата четвертая клавиша:

Number of button 04 Нажато две клавиши:

Number of button >

4.5. Аналого-цифровое преобразование

Необходимо разработать и выполнить программы, преобразующие аналоговые сигналы от потенциометра и интегратора в цифровые коды и выводящие эти коды на ЖКИ. Отличием этих программ друг от друга является номер входа АЦП, на который подается аналоговый сигнал, так же отличается способ исследования преобразований, в остальном программы совпадают.

Преобразование аналогового сигнала и вывод данных на экран должен осуществляться в три этапа (три подпрограммы):

1.непосредственно само аналого-цифровое преобразование;

2.преобразование двоичного кода, полученного на выходе АЦП, в HEX-коды;

3.вывод HEX-кодов на ЖКИ.

Схема программы:

Рис.9. Схема программ

Текст программы:

adc_mai.asm

org 8400h

 

include asms\adc.asm

;подключение подпрограммы adc.asm

include asms\to_int.asm

;подключение подпрограммы to_int.asm

include asms\indic.asm

;подключение подпрограммы indic.asm

ret

 

adc.asm

;регистры АЦП ADCON: equ D8h ADDAT: equ D9h DAPR: equ Dah

U:equ 40h

mov a, #00000011 ;задание режима работы и номера канала (для потенциометра – 3, для интегратора – 4)

 

anl ADCON, #E0h

;настройка АЦП

 

orl ADCON, A

 

 

mov DAPR, #0h

;задание опорных напряжений и запуск преобразования

 

mov r7, #15

;формирование задержки

r1:

djnz R7, r1

 

 

mov U, ADDAT

;запись результата в ячейку 40h

to_int.asm

B:

equ F0h

 

 

mov a, 40h

 

 

mov B, #10

;основание системы счисления

 

div ab

;деление

 

mov r1, a

 

 

mov a, b

 

 

add a, #30h

;в аккумуляторе HEX-код

 

mov dptr, #FFD2h

 

 

movx @dptr, a

;запись третьего символа в видеобуфер

 

mov a, r1

 

 

mov B, #10

;основание системы счисления

 

div ab

;деление

 

mov r1, a

 

 

mov a, b

 

 

add a, #30h

;в аккумуляторе HEX-код

 

mov dptr, #FFD1h

 

 

movx @dptr, a

;запись второго символа в видеобуфер

 

mov a, r1

 

 

mov B, #10

;основание системы счисления

 

div ab

;деление

 

mov r1, a

 

 

mov a, b

 

 

add a, #30h

;в аккумуляторе ASCII-код

 

mov dptr, #FFD0h

 

 

movx @dptr, a

;запись первого символа в видеобуфер

 

mov a, r1

 

Описание программы:

Подпрограмма adc.asm управляет АЦП. В ней указывается номер входа, на который поступает аналоговый сигнал, так что для преобразования сигналов от потенциометра и от интегратора она будет отличаться. Преобразование двоичного кода в HEX -коды выполняется программой to_int.asm. Она считывает из ячейки памяти двоичное число и три раза делит это число на 1010. Остатки от деления будут разрядами десятичного числа. Чтобы из них получить HEX-коды, нужно добавить код 30h. Так же подпрограмма to_int.asm записывает получившиеся коды в видеобуфер.

Вывод HEX-кодов на ЖКИ осуществляется с помощью подпрограммы из первого задания.

Для преобразования использовались сигналы от двух источников аналоговых сигналов: от потенциометра, и от интегратора, к которому был подключен генератор прямоугольных сигналов.

При испытаниях был использован осциллограф, позволяющий определять реальные значения аналоговых сигналов.

Испытания с потенциометром проводились следующим образом. По осциллографу определялось реальное значение на выходе с потенциометра, затем этот сигнал был дважды преобразован сначала при диапазоне 5 В, затем при диапазоне 1,25 В. Таких значений аналоговых сигналов было использовано 5 штук.

В ходе испытаний с интегратором, сначала по осциллографу измерялось среднее значение сигнала с выхода интегратора. Затем этот сигнал несколько раз преобразовывался при диапазоне 5 В, а после при диапазоне 1,25 В.

Результаты измерений наблюдались на осциллографе и на ЖКИ. Они представлены в таблицах № - №

Результаты:

Таблица . Результаты преобразования аналогового сигнала с потенциометра.

Диапазон

U осц.

Цифровой

Результат

Погрешность

Абсолютная

эквивалент

преобразования

погрешность (мВ)

 

 

 

 

1

51

55

4

80

0-5 В

2

103

106

3

60

3

154

160

6

120

(DAPR = 0)

4

205

211

6

120

 

 

5

256

255

1

20

 

 

 

 

 

 

0-1,25 (40)

1

204

214

10

50

1,25-2,5 (84)

2

153

167

14

70

2,5-3,75 (C8)

3

102

112

10

50

3,125-4,375 (EA)

4

179

184

5

25

3,75-5 (0C)

5

255

255

0

0

Видно, что АЦП выполняет преобразование с заметной ошибкой, причем, чем дальше реальное значение сигнала от границ диапазона преобразований, тем больше погрешность. Однако уменьшение диапазона преобразований довольно сильно уменьшает погрешность.

Таблица 2. Результаты преобразования аналогового сигнала с интегратора.

Диапазон

U осц.

Цифровой

Результат

Погрешность

Абсолютная

эквивалент

преобразования

погрешность (мВ)

 

 

 

 

 

 

 

 

 

 

 

 

124

1

20

 

 

 

 

 

 

 

 

 

125

2

40

 

 

 

 

 

 

0-5 В

2.4

123

128

5

100

(DAPR = 0)

125

2

40

 

 

 

 

 

 

 

 

 

 

 

130

7

140

 

 

 

 

 

 

 

 

 

131

8

160

 

 

 

110

3

15

 

 

 

 

 

 

 

 

 

98

9

45

 

 

 

 

 

 

1,875-

 

 

112

5

25

 

 

 

 

 

2.4

107

97

10

50

3,125 (A6)

 

 

 

 

 

 

 

107

0

0

 

 

 

 

 

 

 

 

 

 

 

 

124

17

85

 

 

 

 

 

 

 

 

 

94

13

65

 

 

 

 

 

 

Видно, что из-за пульсации сигнала на выходе интегратора, значения на выходе АЦП меняются, даже не смотря на то, что среднее значение сигнала остается неизменным.

Так же как и при потенциометре, после уменьшения диапазона преобразования, уменьшилась погрешность.

4.6.Аналого-цифровое преобразование и демонстрация скорости обработки изменяющегося сигнала

Анализ задания:

Необходимо с помощью цифрового осциллографа продемонстрировать скорость обработки изменяющегося аналогового сигнала. Для этого необходима программа adc_mai.asm. Эта программа должна реализовывать бесконечный цикл, в котором должны по очереди обрабатываться сначала сигнал от потенциометра, а затем сигнал от интегратора. Запись результатов преобразований должна производиться в различные ячейки. После каждого преобразования необходимо вызвать подпрограмму монитора (lcall 128h).

Рис.. Схема программы adc_mai.asm.

При преобразовании аналогового сигнала в цифровой код используется тот же алгоритм, что и в предыдущем задании.

Текст программы: adc_mai.asm

 

org 8400h

 

 

m1:

lcall adc

;вызов подпрограммы adc, преобразующей аналоговые сигналы в цифровые коды

 

lcall 128h

;вызов подпрограммы монитора

 

sjmp m1

;бесконечный цикл

 

ret

 

 

 

include asms\adc.asm

;подключение подпрограммы adc.asm

 

adc.asm

 

 

;регистры АЦП

 

ADCON: equ D8h

 

ADDAT:

equ D9h

 

DAPR:

equ Dah

 

U1:

equ 40h

 

U2:

equ 41h

 

adc:

mov a, #00000011

;преобразование сигнала от потенциометра

 

anl ADCON, #E0h

 

 

orl ADCON, A

 

 

mov DAPR, #0h

 

 

mov r7, #15

 

p1:

djnz R7, p1

 

 

mov U1, ADDAT

 

 

mov a, #00000100

;преобразование сигнала от интегратора

 

anl ADCON, #E0h

 

 

orl ADCON, A

 

 

mov DAPR, #0h

 

 

mov r7, #15

 

i1:

djnz R7, i1

 

mov U2, ADDAT

 

ret

Описание программы:

В качестве сигналов использовались выход потенциометра и выход интегратора, подключенного к генератору прямоугольных импульсов. Для изменения аналоговых сигналов использовался регулятор потенциометра, а так же регуляторы постоянной времени интегратора и скважности генератора прямоугольных импульсов.

Результаты:

Результаты наблюдались в «Окне управления» в виде графиков зависимости цифрового эквивалента аналогового сигнала от времени. Результаты представлены на рисунках 11 - 13 Для потенциометра:

Рис.. График зависимости цифрового эквивалента аналогового сигнала на выходе потенциометра от времени.

Для интегратора:

Рис.. График зависимости цифрового эквивалента аналогового сигнала на выходе интегратора, регулируемого постоянной времени, от времени.

Рис.. График зависимости цифрового эквивалента аналогового сигнала на выходе интегратора, регулируемого скважностью, от времени.

Из графиков видно, что при изменении аналогового сигнала, изменение цифрового эквивалента происходит довольно быстро.

Выводы:

В результате работы были изучены основы работы с портами микроконтроллера SAB 80C515, ЖКИ, клавиатуры, потенциометра и генератора прямоугольных импульсов лабораторного стенда.

Всего в микроконтроллере SAB 80C515 шесть портов ввода-вывода цифровой информации и один порт ввода аналоговой информации. Это является недостатком данного микроконтроллера, потому что данного количества портов не всегда достаточно для подключения периферийных устройств:

Два порта заняты для подключения внешней памяти данных.

Для подключения ЖКИ требуется один порт и еще 3 разряда от другого порта на подключение управляющих линий, то есть 11 выводов.

Для подключения клавиатуры требуется 1 порт.

Врезультате имеется только 1 свободный порт и один порт частично. И это без учёта подключения источников прерываний и блока быстрого ввода-вывода. В итоге для ввода-вывода цифровой информации может не оказаться портов.

К достоинствам микроконтроллера отнесём возможность портов к передаче информации, как на вход, так и на выход, причем это можно осуществлять одновременно. Данная возможность экономит малое количество портов в микроконтроллере.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]