- •Отчёт по лабораторной работе
- •Цель работы:
- •Программа работы:
- •Теоретические сведения:
- •Выполнение заданий
- •Вывод на экран жки двухстрочного текста
- •Опрос клавиатуры
- •Определение номера нажатой клавиши
- •Вывод на экран жки номера нажатой клавиши
- •Аналого-цифровое преобразование
- •Аналого-цифровое преобразование и демонстрация скорости обработки изменяющегося сигнала
Аналого-цифровое преобразование
Необходимо разработать и выполнить программы, преобразующие аналоговые сигналы от потенциометра и интегратора в цифровые коды и выводящие эти коды на ЖКИ. Отличием этих программ друг от друга является номер входа АЦП, на который подается аналоговый сигнал, так же отличается способ исследования преобразований, в остальном программы совпадают.
Преобразование аналогового сигнала и вывод данных на экран должен осуществляться в три этапа (три подпрограммы):
непосредственно само аналого-цифровое преобразование;
преобразование двоичного кода, полученного на выходе АЦП, в HEX-коды;
вывод HEX-кодов на ЖКИ.
Схема программы:
Рис.14. Схема программ
Текст программы:
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 В.
Результаты измерений наблюдались на осциллографе и на ЖКИ. Они представлены в таблицах №4-5
Результаты:
Таблица 4. Результаты преобразования аналогового сигнала с потенциометра.
Диапазон |
U осц. |
Цифровой эквивалент |
Результат преобразования |
Погрешность |
Абсолютная погрешность (мВ) |
0-5 В (DAPR = 0) |
1 |
51 |
55 |
4 |
80 |
2 |
103 |
106 |
3 |
60 |
|
3 |
154 |
160 |
6 |
120 |
|
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 |
Видно, что АЦП выполняет преобразование с заметной ошибкой, причем, чем дальше реальное значение сигнала от границ диапазона преобразований, тем больше погрешность. Однако уменьшение диапазона преобразований довольно сильно уменьшает погрешность.
Таблица 5. Результаты преобразования аналогового сигнала с интегратора.
Диапазон |
U осц. |
Цифровой эквивалент |
Результат преобразования |
Погрешность |
Абсолютная погрешность (мВ) |
0-5 В (DAPR = 0) |
2.4 |
123 |
124 |
1 |
20 |
125 |
2 |
40 |
|||
128 |
5 |
100 |
|||
125 |
2 |
40 |
|||
130 |
7 |
140 |
|||
131 |
8 |
160 |
|||
1,875-3,125 (A6) |
2.4 |
107 |
110 |
3 |
15 |
98 |
9 |
45 |
|||
112 |
5 |
25 |
|||
97 |
10 |
50 |
|||
107 |
0 |
0 |
|||
124 |
17 |
85 |
|||
94 |
13 |
65 |
Видно, что из-за пульсации сигнала на выходе интегратора, значения на выходе АЦП меняются, даже не смотря на то, что среднее значение сигнала остается неизменным.
Так же как и при потенциометре, после уменьшения диапазона преобразования, уменьшилась погрешность.