- •Аналоговые и цифровые устройства автоматики
- •Глава 1. Архитектура и устройство
- •1.1. Внутренняя организация мк
- •1.2. Назначение выводов микросхемы мк
- •1.3. Организация памяти в мк
- •1.4. Регистр состояния программы psw
- •1.5. Таймеры/счетчики, регистры tmod и tcon
- •1. 6. Режимы работы таймеров/счетчиков
- •Структура прерываний мк
- •1.8. Блок последовательного интерфейса мк
- •1.8.1. Последовательная передача информации
- •1.8.2. Последовательный порт однокристального мк
- •1.8.3. Регистр управления последовательным портом scon
- •1.8.4. Режимы работы последовательного порта
- •1.8.5. Асинхронный обмен (режимы 1,2,3) данными
- •1.8.6. Скорость приёма/передачи
- •1.8.7. Работа мк в локальной сети
- •1.9. Системный сброс однокристального мк
- •1.10. Режим пониженного энергопотребления мк
- •1.11. Нагрузочная способность портов ввода/вывода
- •1. 12. Расширение портов ввода/вывода
- •Глава 2. Система команд однокристальных мк семейства mcs51
- •Способы адресации операндов
- •2.2. Команды мк
- •2.3. Правила написания программ на языке assembler
- •Метка операция операнд(ы) комментарии
- •2.3.1. Метка
- •2.3.2. Операция
- •2.3.3. Операнды
- •2.3.4. Комментарий
- •2.4. Директивы ассемблера
- •2.4.1. Директивы символических определений
- •Пример:
- •Ozu_org xdata 0800h; Адрес начала области внешнего озу.
- •2.4.2. Директивы резервирования и инициализации памяти
- •2.4.3. Директивы управления состоянием ассемблера
- •Глава 3. Обработка данных в однокристальных микроконтроллерах
- •3.1. Обращение к внутренней, внешней памяти данных и памяти программ
- •3.2. Арифметические операции
- •3.3. Логические операции
- •3.4. Операции с битами
- •Глава 4. Взаимодействие однокристального мк с объектом управления
- •4.1. Программный опрос и ожидание срабатывания позиционных датчиков
- •4.2. Ожидание импульсного сигнала
- •4.3. Программирование таймеров/счетчиков и формирование дискретных управляющих сигналов
- •4.4. Программирование прерываний в микропроцессорном устройстве
- •4.5. Программирование последовательного порта
- •Глава 5. Аппаратные средства
- •5.1. Ввод информации с клавиатуры
- •5.1.1. Прямое подключение клавиш к разрядам порта мк
- •В блоке основной программы происходит инициализация системы, разрешение прерываний, а затем выполняется основная программа.
- •Применение шифратора для организации клавиатуры
- •Шифратора
- •5.1.3. Матричный способ подключения клавиатуры
- •5.1.4. Комбинированный способ организации клавиатуры
- •5.2. Отображение информации в микропроцессорном устройстве
- •5.2.1. Контроллер клавиатуры и дисплея к580вв79 ( intel 8279 )
- •5.2.2. Матричные светодиодные индикаторы
- •5.2.3. Жидкокристаллический дисплей
- •Ввод аналоговых сигналов в микропроцессорный контроллер
- •Ацп с параллельными цифровыми выходами
- •5.3.2. Применение ацп с последовательным выходом
- •5.3.3. Применение таблиц для вычисления функций
- •5.4. Формирование управляющих аналоговых сигналов
- •5.5. Построение ацп с использованием цап
- •5.6. Микропроцессорный контроллер как управляющее устройство в системах автоматического регулирования
- •Согласование дискретных датчиков и исполнительных механизмов с однокристальным мк
- •5.8. Контроль напряжения питания в микропроцессорных системах
- •Глава 6. Отладка программного обеспечения и программирование однокристальных мк
- •6.1. Интегрированная система отладки программного обеспечения для мк ProView
- •6.1.1. Оптимизирующий кросс - компилятор c51
- •6.1.2. Макроассемблер a51
- •6.1.4. Отладчик/симулятор WinSim51
- •6.2. Запуск ProView и создание файла проекта
- •Если в системе задействованы таймеры-счетчики, то удобно промоделировать их работу при разворачивании соответствующих окон Timer (рис.76).
- •В окне указаны источники и адреса векторов прерываний, их состояние и приоритет. Разрешенные прерывания отмечены словом Enable, неразрешенные - Not Enable.
- •Рассмотрим основные пункты раздела debug (отладка), представлены на рис. 84. Эти функции предназначены для выполнения процесса отладки прикладной программы пользователя.
- •6.3. Программирование однокристальных мк
- •Контрольные вопросы для закрепления материала
- •Заключение
- •Библиографический список
- •Глава 1. Архитектура и устройство однокристальных мк семейства mcs51………………………..6
- •Глава 6. Отладка программного обеспечения и программирование однокристальных мк ……….203
- •162600, Г.Череповец , пр. Луначарского, 5
5.3.3. Применение таблиц для вычисления функций
Большинство процессов, для контроля и управления которыми применяются микропроцессорные системы с аналоговым вводом/выводом информации, требуют использования методов табличного поиска.
Рассмотрим пример. Пусть нам требуется разработать устройство для измерения натяжения полотна. Натяжение материала изменяется в диапазоне 0 – 200kН, на выходе силоизмерительного датчика имеем изменение напряжения от 0 до 10 В. Код на выходе АЦП будет изменяться от 00 до FFH. На дисплей должна выводиться информация в десятичном виде (рис.59).
Рис. 59. Функциональная схема микропроцессорного устройства для измерения натяжения полотна
Для решения поставленной задачи программист должен составить таблицу соответствия кода АЦП и контролируемого технологического параметра. В нашем случае объем таблицы составит 255 байт. Однако можно существенно уменьшить объем таблицы и использовать интерполяцию промежуточных значений функции. Восемь разрядов независимой переменной можно представить как два четырехразрядных поля. Старшие четыре разряда будут использоваться для нахождения одного из табличных значений, младшие разряды – для интерполяции между этим значением и значением, которое отсчитывается четырьмя старшими разрядами следующей тетрады таблицы. Если обозначить старшую тетраду I, а младшую – N, то функция интерполяции имеет вид:
(5.8)
где х – измеренное значение;
F(x) - функция;
N – младшая тетрада;
I – старшая тетрада;
F( I ) – значение функции по старшей тетраде;
F( I + 1) – значение функции по старшей тетраде +1.
Составим таблицу соответствия кодов (табл.30). Считаем, что у нас силоизмерительный датчик имеет линейную статическую характеристику.
Таблица 30
DEC |
НЕХ |
Напряжение, В |
Натяжение, kН |
Натяжение в HEX |
0 |
00h |
0 |
0 |
00h |
16 |
10h |
0,6 |
13 |
0dh |
32 |
20h |
1,3 |
25 |
19h |
48 |
30h |
1,9 |
38 |
26h |
64 |
40h |
2,5 |
50 |
32h |
80 |
50h |
3,1 |
63 |
3fh |
96 |
60h |
3,8 |
75 |
4bh |
112 |
70h |
4,4 |
88 |
58h |
128 |
80h |
5,0 |
100 |
64h |
144 |
90h |
5,6 |
113 |
71h |
160 |
A0h |
6,3 |
125 |
7dh |
176 |
B0h |
6,9 |
138 |
8ah |
192 |
C0h |
7,5 |
150 |
96h |
208 |
D0h |
8,1 |
163 |
A3h |
224 |
E0h |
8,8 |
175 |
Afh |
240 |
F0h |
9,4 |
188 |
Bch |
256 |
100h |
10 |
200 |
C8h |
Рассмотрим подпрограмму TABL_ACP определения значений функции в промежутках между табличными значениями. Значение кода АЦП должно находиться в аккумуляторе, преобразованное в BCD формат табличное значение после выполнения подпрограммы будет находиться в ячейках 21Н и 20Н ОЗУ.
Fx EQU 50h ; Значение функции
Fi EQU 51h ; Значение функции по старшей тетраде
N EQU 52h ; Значение младшей тетрады
Fi_1 EQU 53h ; Значение функции по старшей тетраде+1
<1>TABL_ACP: MOV DPTR,#TABLE; Загрузка адреса таблицы
<2> MOV R0,A ; Сохранение кода АЦП
<3> ANL A,#0F0H; Выделение старшей тетрады.
<4> MOV R1,A ; Сохранить старшую тетраду в R1
<5> SWAP A ; Поменять местами тетрады
<6> MOVC A,@A+DPTR; Взять из таблицы в ПЗУ код
<7> MOV Fi,A ; старшей тетрады и поместить в ОЗУ
<8> MOV A,R1 ; Восстановить значение старшей тетрады
<9> SWAP A ; Поменять местами тетрады
<10> INC DPTR ; Указать на следующее значение таблицы
<11> MOVC A,@A+DPTR ; Взять из таблицы в ПЗУ код
<12> MOV Fi_1,A ; старшей тетрады и поместить в ОЗУ
<13> MOV A,R0 ; Восстановить код АЦП в А
<14> ANL A,#0FH ; Выделить младшую тетраду
<15> MOV N,A ; и поместить в ячейку ОЗУ
<16> CALL CALCULATE;Вызвать подпрограмму расчета Fx
<17> CALL BIN_BCD ; Вызвать преобразование кодов
<18> NOP ;
<19> RET ;
;Расчет по формуле F(x)=F(i)+(N/16)∙[F(i+1)-F(i)]
<20>CALCULATE:CLR C ; Сброс бита С
<21> MOV A,Fi_1;
<22> SUBB A,Fi ; F(i+1)-F(i)
<23> MOV B,N ; Поместить младшую тетраду в В
<24> MUL AB ; N∙[F(i+1)-F(i)]
<25> MOV B,#16 ;
<26> DIV AB ; N∙[F(i+1)-F(i)]/16
<27> ADD A,Fi ; F(i)+(N/16)∙[F(i+1)-F(i)]
<28> MOV Fx,A ;
<29> RET ;
;Преобразование бинарного кода в BCD
<30>BIN_BCD: MOV B,#100 ;
<31> DIV AB ; Определение числа сотен
<32> MOV 21H,A ;
<33> MOV A,#10 ;
<34> XCH A,B ;
<35> DIV AB ; Определение числа десятков
<36> SWAP A ;
<37> ADD A,B ; Сложение десятков с единицами
<38> MOV 20H,A ;
<39> RET ;
;Таблица кодов натяжения ткани в HEX форме
<40>TABLE: DB 00h,0dh,19h,26h,32h,3fh,4bh,58h,64h
<41> DB 71h,7dh,8ah,96h,0a3h,0afh,0bch,0c8h
З а д а н и е д л я с а м о с т о я т е л ь н о й р а б о т ы
Разработайте программу для микропроцессорного измерителя температуры. Диапазон изменения t = 0 – 100 0C. На выходе преобразователя температуры сигнал изменяется линейно от 0 до 5 В. АЦП восьмиразрядный.