КП_МПС_Абрамов. Микропроцессорное устройство управления регулятором температуры по заданному закону
Скачать 2.47 Mb.
|
Рисунок 5.8. Цоколевка микросхем: а) КР1554ИР23 б) КР1554АП6 Ход расчета: 1) Для того чтобы развязать шину данных по входу и по выходу ставим шинный формирователь КР1554АП6 на обратную связь шины данных. Расчет согласования по току проводить нецелесообразно, т.к. к контактам порта Р0 МК подключено по одному контакту ОЗУ. 2) Рассчитаем соотношение нагрузки на шине адреса: I0вых >= I0нагр = n I0вх + к I0ут ; I1вых >= I1нагр = n I1вх + к I1ут Iвых равен выходному току буферного регистра КР1554ИР23. Как видно из принципиальной схемы МПС наибольшая нагрузка приходится на разряды шины адреса А0 – А10. Поэтому произведем расчет баланса нагрузок для одного разряда шины адреса: I0нагр=8* I0вх(КР537РУ14Б) + 8*I0ут(КР537РУ14Б) + 4* I0вх(КР556РТ13) + 4*I0ут(КР556РТ13); I0нагр=25,6 + 0,04+ 1 + 0,02=29,25мА; То есть I0вых =86мА > 29,25 мА, условие выполняется. I1нагр=8* I1вх(КР537РУ14Б) + 8*I1ут(КР537РУ8А) + 4* I1вх(КР556РТ5) + 4*I1ут(КР556РТ5); I1нагр=16 + 0.04+ 0.16 + 0.02=16.22мА; То есть I1вых =75мА > 16.22 мА, условие выполняется. 4) Рассчитаем соотношение нагрузки на шине управления: I0вых >= I0нагр = n I0вх + к I0ут ; I1вых >= I1нагр = n I1вх + к I1ут Iвых равен выходному току микросхемы К155ЛН6. Как видно из принципиальной схемы МПС наибольшая нагрузка приходится на линии сигналов W/R и CSRAM. С учетом этого расчет баланса нагрузки будет выглядеть так: а) Сигнал CSRAM: I0нагр=8* I0вх(КР537РУ14Б) + 8*I0ут(КР537РУ14Б) I0нагр=25,6 + 0,04=25,64 мА; То есть I0вых =32мА > 25,64 мА, условие выполняется. б) для сигнала W/R: I0нагр=8* I0вх(КР537РУ14Б) + 8*I0ут(КР537РУ14Б) I0нагр=25,6 + 0,04=25,64 мА; То есть I0вых =32 мА > 25,64 мА, условие выполняется. 5.6. Проверка сопряжения по емкостным параметрам. Самая большая нагрузка по емкости приходится на шину адреса. Т. е. должно выполнятся условие: Свых.>=Снагр. В нашем случае это соотношение будет иметь вид: Снагр.ОЗУ=8*С(КР537РУ15Б)=8*50=400 пФ. Свых=500>400, т.е. условие выполняется Снагр.ПЗУ=4*С(КР556РТ13)=4*30=120 пФ. Свых=500>120, т.е. условие выполняется Баланс по емкостным параметрам полностью выполняется 5.7. Проверка согласования временных диаграмм МП и ЗУ. Рассмотрим процесс чтения ОЗУ. а) Проверка времени появления данных на ШД МП относительно появления адреса на ША МП. F=12МГц; tAD=7*T=7*1/12*106=580нс tALE +tRG + tA(A) + tBF <= tAD tALE28 нс; tAD=580 нс; tRG=10,5 нс; tA(A)= 14 нс; tBF=7 нс; Таким образом: tAL +tRG + tA + tBF <= tAD 28нс + 10,5нс + 14нс +7нс < 580нс; 59,5нс < 580нс; То есть условие выполняется. б) Проверка выполнения требований наложенных на параметр CS микросхемы памяти. tAС +tи + tне+ tCS + tBF <= tAD; tAC – интервал между моментами появления адреса и строба чтения; tAС=127 нс; tAD=580нс; tи=8,5 нс; tне=7,5 нс; tCS =130 нс; Таким образом: tAС +tи + tне+ tCS + tBF <= tAD; 127нс + 8,5нс + 7,5нс + 130нс+ 7нс < 580нс 153 нс< 580нс; То есть условие выполняется. в) Проверка времени установки сигнала CS относительно адреса. tSU(A - CS)СХ.>= tSU(A - CS)ТУ; tSU(A - CS)СХ.= tAС + tИ + tНЕ –( tALЕ +tRG); tSU(A - CS)СХ.=127нс + 8,5нс + 7,5нс – (28нс + 10,5нс)=104,5нс; tSU(A - CS)ТУ=20нс; Таким образом: 157нс > 20нс; То есть условие выполняется. Как видно из расчетов все условия по временным задержкам микросхемы ОЗУ и МП выполняются, а значит, при обращении МП к ОЗУ формирование холостых циклов не требуется. 2) Рассмотрим процесс чтения ПЗУ. а) Проверка времени появления данных на ШД МП относительно появления адреса на ША МП. tALЕ +tRG + tA <= tAD tALЕ=28нс; tAD=580нс; tA(A)=60 нс; Таким образом: tAL +tRG + tA <= tAD 28нс + 10,5нс + 60нс < 580нс; 98,5нс < 600нс; То есть условие выполняется. б) Проверка выполнения требований наложенных на параметр CS микросхемы памяти. tAС +tCS+ tИ-НЕ+ tИ + tНЕ <= tAD; tAD=580нс; Таким образом: tAС +tCS+ tИ-НЕ+ tИ + tНЕ <= tAD; tНЕ=7,5нс; tИ-НЕ=8нс; tИ=8,5нс; tCS=40нс; 127нс + 40нс + 8нс + 8,5нс+7,5нс < 580нс 191нс< 600 нс; То есть условие выполняется. в) Проверка времени установки сигнала CS относительно адреса. tSU(A - CS)СХ.>= tSU(A - CS)ТУ; tSU(A - CS)СХ.= tAС + tИ-НЕ+ tИ + tНЕ –( tALЕ +tRG); tНЕ=7,5нс; tИ-НЕ=8нс; tИ=8,5нс; tSU(A - CS)СХ.=127нс + 8нс+8,5нс+7,5 – (28нс + 10,5нс)=112,5нс; tSU(A - CS)ТУ=40нс; Таким образом: 112,5нс > 40нс; То есть условие выполняется. Как видно из расчетов все условия по временным задержкам субмодулей ПЗУ и МП выполняются, а значит, при обращении МП к ПЗУ формирование холостых циклов не требуется. 6. Разработка ПО на языке ассемблера Разработаем блок-схему алгоритма управления объектом: Рисунок 6.1. Блок-схема алгоритма Заключение В данном курсовом проекте была разработана микропроцессорная система для управления температурой термостата, обеспечивающая изменение температуры по указанному в задании графику. Разработка управляющей микропроцессорной системы состоит из двух этапов: разработка аппаратной части МПС; разработка программного обеспечения. Результатом первого этапа разработки является принципиальная электрическая схема МПС. В процессе этого этапа первоначально была разработана структурная схема МПС и произведен выбор элементной базы для построения МПС. Также был произведен расчет модуля памяти, где было проверено согласование элементов модуля памяти по электрическим параметрам в различных режимах работы. Кроме того, было проверено согласование по электрическим параметрам элементов, подключенных к системной шине. Также была рассчитана потребляемая мощность всей МПС и отдельно модуля памяти. На втором этапе был разработан алгоритм управления, который затем был реализован в виде программы на ассемблере МК51. Список литературы 1. Преснухин Л. Н. Расчет элементов цифровых устройств. - 1991 2. Алексеенко А. Г. Основы микросхемотехники. – 1977 3. Наумов Ю. Е. Интегральные логические схемы. – 1970 4. Данилов Р. В. И др. Применение интегральных микросхем в электронной вычислительной технике. – М.: Радио и связь, 1986 5. Шило В. Л. Популярные цифровые микросхемы: Справочник. – М.: Радио и связь, 1987 6. Вуколов Н. И. Михайлов А. Н. Знакосинтезирующие индикаторы: справочник/Под ред. В. П. Балашова. – М.: радио и связь, 1987 7. Справочник по цифровой вычислительной технике. /Под ред. Б. Н. Малиновского. – 1974 8. МК-51. Электронное учебное пособие. 9. Князьков О.М., Краснопильский В.Б. Микроконтроллер в ПИ- и ПД- регуляторах. - 1994 Приложение А. Текст программы на языке ассемблера МК-51 ;***************** ;**секция данных** ;***************** interval_number equ 7h ; номер текущего температурного интервала DAC_result equ 8h ; ячейка памяти для хранения результатов работы АЦП decoded_DAC_result equ 9h ; буфер под скорректированную температурусАЦП first_indication_cell equ 10h ; перваяячейкадляиндикации second_indication_cell equ 11h ; втораяячейкадляиндикации frequency_devider equ 12h ; программный делитель частоты first_number_of_iterations equ 13h ; количествоитераций 1 участка second_number_of_iterations equ 14h ; количествоитераций 2 участка third_number_of_iterations equ 15h ; количествоитераций 3 участка fourth_number_of_iterations equ 16h ; количествоитераций 4 участка first_initial_temperature equ 17h ; стартоваятемпература 1 участка second_initial_temperature equ 18h ; стартоваятемпература 2 участка third_initial_temperature equ 19h ; стартоваятемпература 3 участка fourth_initial_temperature equ 20h ; стартоваятемпература 4 участка steck equ 21h ; адрес дна стека ;******************* ;**секция кода** ;******************* org 0000h ; после включения питания стартуем с этой точки ajmp init ; сразу же переходим на инициализацию org 0003h ; обработчик прерывания по входу от кнопки "пуск" setb tr0 ; запускаем первый таймер clr p3.0 ; запускаем АЦП clr ie.0 ; запрещаем реакцию на повторное нажатие кнопки reti ; возвращаемся в основную программу org 000Bh ; обработчик прерывания от таймера mov th0, #high (-20000) ; реинициализируем mov tl0, #low (-20000) ; таймер на 20 мс reti ; возвращаемся в основную программу org 0013h ; обработчик прерывания от АЦП ajmp DAC_interrupt_interpretator ; обработчик вынесем в отдельную подпрограмму ; основная программа org 0030h init: ; секция инициализации mov sp, #steck ; настраиваем указатель стека mov p3, #11001111b ; настраиваем порт на реакцию по INT0 и INT1 clr p3.4 ; выключаем вентилятор clr p3.5 ; выключаем нагреватель mov frequency_devider, #75 ; для1 интервала - делитель на 1,5 секунды mov decoded_DAC_result, #00 ; обнуляем буфер с обработанными АЦП-данными mov first_indication_cell, #00 ; обнуляем «видеобуфер» mov second_indication_cell, #00 ; обнуляем «видеобуфер» mov dptr, #FFFFh ; в DPTR – указатель на область АЦП в АП I\O mov first_number_of_iterations, #20 ; количество итераций первого участка = 20 mov second_number_of_iterations, #10 ; количество итераций второго участка = 10 mov third_number_of_iterations, #5 ; количество итераций третьего участка = 5 mov fourth_number_of_iterations, #15 ; количество итераций четвёртого участка = 15 mov first_initial_temperature, #00001010b ; стартоваятемпература 1 участка 100c mov second_initial_temperature, #00011110b ; стартоваятемпература 2 участка 300c mov third_initial_temperature, #00010100b ; стартовая температура 3 участка 200c mov fourth_initial_temperature, #00001111b ; стартовая температура 4 участка 150c mov interval_number, #0 ; настраиваемся на первый интервал mov tmod, #00000001b ; первый таймер – в первый режим работы mov th0, #high (-20000) ; настраиваем таймер на 20 мс mov tl0, #low (-20000) ; настраиваем таймер на 20 мс mov tcon, #00000101b ; реакция на прерывания – по фронтам mov ie, #10000111b ; разрешаем прерывания: АЦП, таймер, «ПУСК» ; основной цикл begin: acall indic ; сканируем индикатор djnz frequency_devider, sleep ; если интервал не кончился – ложимся спать mov a, #0 ; инициализируем аккумулятор, попутно – ; настраиваемся на 1-й интервал ; далее – четыре куска – настройка делителя частоты clr c ; сбрасываем флаг C subb a, interval_number ; выясняем, в первом ли мы участке должны быть jс acc.7, second_interval_frequency_devider ; если не в первом – уходим на второй mov frequency_devider, #75 ; если в первом – настраиваемся на 1,5 секунды clr p3.0 ; включаем АЦП ajmp sleep ; ложимся спать ; второйинтервал second_interval_frequency_devider: mov a, #1 ; задаемся вторым номером интервала clr c ; сбрасываем флаг subb a, interval_number ; выясняем, во втором ли интервале нам надо быть jс acc.7, third_interval_frequency_devider ; если нет, то уходим в третий mov frequency_devider, #100 ; а если да – настраиваемся на 2 секунды clr p3.0 ; включаем АЦП ajmp sleep ; ложимся спать ; третийинтервал third_interval_frequency_devider: mov a, #2 ; задаёмся третьим номером интервала clr c ; сбрасываем флаг С subb a, interval_number ; выясняем, должны ли мы здесь быть jс acc.7, fourth_interval_frequency_devider ; еслинет – уходимв 4-йинтервал mov frequency_devider, #150 ; а если да – настраиваемся на 3 секунды clr p3.0 ; включаем АЦП ajmp sleep ; спать ; четвёртый интервал fourth_interval_frequency_devider: mov frequency_devider, #50 ; настраиваемся на 1 секунду clr p3.0 ; включаем АЦП ajmp sleep ; спать ; крепкий и здоровый сон контроллера sleep: orl pcon, #01h ; засыпаем ajmp begin ; зацикливаемся на основной секции ; подпрограмма обработки прерывания от АЦП |