Главная страница
Навигация по странице:

  • 5.6. Проверка сопряжения по емкостным параметрам

  • 5.7. Проверка согласования временных диаграмм МП и ЗУ.

  • 6. Разработка ПО на языке ассемблера

  • Приложение А. Текст программы на языке ассемблера МК-51

  • DAC_interrupt_interpretator

  • КП_МПС_Абрамов. Микропроцессорное устройство управления регулятором температуры по заданному закону


    Скачать 2.47 Mb.
    НазваниеМикропроцессорное устройство управления регулятором температуры по заданному закону
    Дата10.01.2023
    Размер2.47 Mb.
    Формат файлаdoc
    Имя файлаКП_МПС_Абрамов.doc
    ТипЗакон
    #880544
    страница4 из 5
    1   2   3   4   5




    Рисунок 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. Проверка согласования временных диаграмм МП и ЗУ.


    1. Рассмотрим процесс чтения ОЗУ.


    а) Проверка времени появления данных на ШД МП относительно появления адреса на ША МП.

    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 ; зацикливаемся на основной секции

    ; подпрограмма обработки прерывания от АЦП
    1   2   3   4   5


    написать администратору сайта