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

  • Приложение Б. Схема электрическая принципиальная микропроцессорного устройства управления терморегулятором по заданному закону Приложение В.

  • Перечень элементов микропроцессорного устройства управления терморегулятором по заданному закону

  • Схема электрическая принципиальная модуля памяти

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


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

    DAC_interrupt_interpretator:

    clr p3.1 ; открываем шинник

    movx a, @dptr ; читаем данные с АЦП в аккумулятор

    setb p3.0 ; выключаем АЦП

    setb p3.1 ; закрываем шинник
    ; регулировщик первого интервала

    mov DAC_result, a ; кладём данные из аккумулятора в спец.ячейку

    acall temp ; вычисляем температуру

    djnz first_number_of_iterations, exit ; если регулирование ещё не закончено - выходим
    ;регулировщик второго интервала

    mov a, second_number_of_iterations ; если закончено – настраиваемся на второй участок

    jz third_interval_regulation ; если в аккумуляторе 0 – переходим на 3-й участок

    xch a, first_number_of_iterations ; меняем аккумулятор с числом первых итераций

    mov interval_number, #1d ; принимаем, что мы во втором интервале

    ajmp exit ; выходим

    ; регулировщик третьего интервала

    third_interval_regulation:

    mov a, third_number_of_iterations ; кладём количество третьих итераций в аккумулятор

    jz fourth_interval_regulation ; если а = 0, переходим на 4-й интервал

    xch a, first_number_of_iterations ; меняем аккумулятор с числом первых итераций

    mov interval_number, #2d ; принимаем, что мы в третьем интервале

    ajmp exit ; выходим
    ; регулировщикчетвёртогоинтервала

    fourth_interval_regulation:

    mov a, fourth_number_of_iterations ; в аккумуляторе – количество итераций 4-го периода

    jz init ; если регулирование кончилось – инициализируемся

    xch a, first_number_of_iterations ; иначе:

    mov interval_number, #3d ; принимаем, что мы в четвёртом интервале
    exit: reti ; возвращаемся из прерывания



    ;подпрограмма сканирования индикатора

    indic:

    mov a, first_indication_cell ; поместить значение температуры в аккумулятор

    anl a, #0Fh ; выбор младшего полубайта аккумулятора

    da a ; BCD-коррекция

    clr p1.4 ; выключаем первый индикатор

    mov p1, a ; выводим первую цифру температуры на индикацию

    setb p1.4 ; включаем первый индикатор

    clr p1.5 ;выключаем второй индикатор

    mov a, second_indication_cell ; поместить значение температуры в аккумулятор

    anl a, #0Fh ; выбор младшего полубайта аккумулятора

    da a ; BCD-коррекция

    mov p1, a ; поместить содержимое аккумулятор в видеобуфер

    setb p1.5 ; включаемвторойиндикатор

    ret ; возвращаемся в основную программу

    ; подпрограммавыбораинтервала

    temp:

    mov a, interval_number ; поместитьваномертекущегоинтервала

    jz first_temperature_processing ; еслиа=0, переходнаметку first_temperature_processing

    dec a ; если a!=0 вычитаем из аккумулятора 1

    jz second_temperature_processing ; еслитеперьа=0, переходнаметку 2-гоинтервала

    dec a ; итакдалее

    jz third_temperature_processing ; итомуподобное

    ajmp fourth_temperature_processing ; если добрались досюда – уходим на 4-й интервал

    ; фомирование новой эталонной температуры на каждом из участков

    first_temperature_processing: ; обработчик первого интервала (температура растёт)

    mov interval_number, #0 ; бэкапим номер интервала, чтоб потом сюда вернуться

    dec first_number_of_iterations ; декрементируемчислоитераций

    inc first_initial_temperature ; реализуемтекущеезначение t0C позакону

    mov r1, first_initial_temperature ; запоминаем новое эталонное значение температуры

    ajmp ex ; уходим на секцию регулировки
    second_temperature_processing: ; обработчик второго интервала (температура падает)

    mov interval_number, #1 ; комментарии – см. в обработчике первого интервала

    dec first_number_of_iterations

    dec second_initial_temperature

    mov r1, second_initial_temperature

    ajmp ex
    third_temperature_processing: ; обработчик 3-го интервала (температура падает)

    mov interval_number, #2

    dec first_number_of_iterations

    dec third_initial_temperature

    mov r1, third_initial_temperature

    ajmp ex
    fourth_temperature_processing: ; обработчик 4-го интервала (температура постоянная)

    mov interval_number, #3

    dec first_number_of_iterations

    mov r1, fourth_initial_temperature

    ajmp ex



    ; подпрограммаобработкитемпературы

    temperature_regulation

    mov a, DAC_result ; поместимваккумуляторэталоннуютемпературу

    mov b, #4d ; в регистр b - 4

    mul ab ; перемножим

    mov b, #10d ; в b - 10

    div ab ; делим

    clr c ; чистим флаг переноса

    subb a, #61d ; вычитаем из аккумулятора 61

    mov decoded_DAC_result, a ; в аккумуляторе – значение с АЦП, пересчитанное в

    ; градусы Цельсия
    mov b, #10 ; теперь в b - 10

    div a, b ; делим градусы на 10 получаем 1-й разряд индикатора

    mov first_indication_cell, b ; кладём его по нужному адресу

    mov second_indication_cell, a ; второй разряд – тоже по своему адресу

    mov a, r1 ; в аккумулятор кладём эталонную температуру

    mov b, #5d ; в регистр B – кладём погрешность

    mul a, b ; умножаем аккумулятор на 5

    mov b, #100 ; B = 100%

    div ab ; получаем верхнее отклонение температуры

    add a, r1 ; добавляем его к эталонному значению температуру

    ; теперь в аккумуляторе - верхняя граница

    ; на текущем участке регулирования

    subb a, decoded_DAC_result ; вычитаем из эталонной температуры текущую

    jc cooler ; если текущая больше – вентилируем

    ; если не больше – думаем, надо ли греть
    mov a, r1 ; аналогично с предыдущим вычисляем нижнюю границу

    mov b, #5d

    mul ab

    mov b, #100d

    div ab

    mov r2, a

    mov a, r1

    clr c ;

    subb a, r2 ; в аккумуляторе - нижний предел
    xch a, decoded_DAC_result ; меняем содержимое аккумулятора и decoded_DAC_result

    clr c ; чистим флаг от греха подальше

    subb a, decoded_DAC_result ; вычитаем из текущей температуры расчётную

    jc heater ; если расчётная больше – надо греть
    ajmp regulation_is_over ; а если всё нормально, то и регулировать не надо

    ; подпрограмма управления вентилятором

    cooler:

    clr p3.5 ; выключаем нагреватель

    setb p3.4 ; включаем вентилятор

    ajmp regulation_is_over ;выходим из подпрограммы
    ; подпрограмма управления нагревателем

    heater:

    clr p3.4 ; выключаем вентилятор

    setb p3.5 ; включаем нагреватель
    regulation_is_over: ; метка выхода из подпрограммы

    ret ; собственно, выход

    end.

    Приложение Б.

    Схема электрическая принципиальная микропроцессорного устройства управления терморегулятором по заданному закону
    Приложение В.

    Перечень элементов микропроцессорного устройства управления терморегулятором по заданному закону







    Приложение Г.

    Схема электрическая принципиальная модуля памяти

    Приложение Д.

    Перечень элементов модуля памяти




    1   2   3   4   5


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