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

  • Работа защищена с оценкой

  • курсовая(1). Курсовая работа по дисциплине Методы моделирования цифровых устройств на тему Моделирование микропроцессорного управляющего устройства


    Скачать 1.77 Mb.
    НазваниеКурсовая работа по дисциплине Методы моделирования цифровых устройств на тему Моделирование микропроцессорного управляющего устройства
    Дата14.12.2022
    Размер1.77 Mb.
    Формат файлаodt
    Имя файлакурсовая(1).odt
    ТипКурсовая
    #845563




    МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

    ПЕНЗЕНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
    Кафедра «Вычислительная техника»

    Курсовая работа

    по дисциплине «Методы моделирования цифровых устройств» на тему «Моделирование микропроцессорного управляющего устройства»

    Выполнил: студент гр.20ВО2

                Нагаев М.Т.

    Руководитель: д.т.н., профессор каф. ВТ

    __            Зинкин С.А.

    Работа защищена с оценкой___________
    Дата защиты_________________________
    2022






    Реферат
    Пояснительная записка состоит из 26 листов, 18 рисунков, 2 таблиц и 1 приложения.

    Цель работы моделирование работы микропроцессорного управляющего устройства, реализующего логические функции и управляющий микропрограммный автомат. Ввод и вывод управляющих сигналов задавать при помощи регистров.

    В результате проделанной работы была выполнена модель микропроцессорного управляющего устройства, реализующего логические функции и управляющий алгоритм с использованием языка С++ и ассемблера МСS51.



































    Изм.

    Лист

    № докум.

    Подпись

    Дата

    Разраб.

    Нагаев М.Т.







    Моделирование микропроцессорного управляющего устройства

    Лит.

    Лист

    Листов

    Провер.

    Зинкин С.А.










    4

    26













    гр.20ВО2

    Н. Контр.










    Утверд.










    Содержание


    Введение…………………………………………………………………………....

    6

    1 Постановка и реализация задачи………………………………………………

    7

    1.1 Моделирование комбинационных схем на ПЭВМ…………………………

    7

    1.2 Моделирование сложных комбинационных схем на ПЭВМ………………

    9

    1.3 Моделирование и реализация на языке C/C++ управляющей программы, заданной граф-схемой алгоритма (ГСА)………………………………………...

    14

    1.4 Использование побитовых операций на микроконтроллере MCS-51…….

    18

    1.5 Моделирование функции заданной СДНФ на микроконтроллере MCS-51

    20

    1.6 Моделирование управляющего алгоритма на языке ассемблера для микроконтроллера MCS-51 ………………………………………………….......

    21

    2 Описание моделирующей среды ………………………………………………

    24

    Приложение А………………………………………………………………..........

    29


    Введение
    EdSim51 - это самый популярный и простой симулятор, доступный для микроконтроллера 8051. EdSim - это фактически виртуальный 8051 с клавиатурой, АЦП, ЦАП, 7-сегментным дисплеем и другими внешними периферийными устройствами. EdSim специально создан для студентов и их образовательных целей. Изюминкой этого симулятора является "простота и удобство использования". Любой новичок может изучить это программное обеспечение довольно быстро.


    1 Постановка и реализация задачи

    1.1 Моделирование комбинационных схем на ПЭВМ

    Таблица 1 — Исходные данные для функции 4 переменных

    Номера конституент (наборы, для которых ф-я истинна - 1)

    1

    0001

    6

    0110

    7

    0111

    9

    1001

    12

    1100

    13

    1101

    14

    1110

    15

    1111


    Код программы:
               #include
    bool equal(bool a, bool b){

    return (!a&&!b) || (a&&b);

    }
    int main()

    {

    bool a = 0, b = 0, c = 0, d = 0, f;

    printf("Source 1 task:\n");

    printf("a b f\n");

    for (int i = 0; i < 2; i++) {

    for (int j = 0; j < 2; j++) {

    f = equal((a||(!a&&b)),(a||b));

    printf("%i %i %i \n", a, b, f);

    b = !b;

    }

    a = !a;

    }

    a = 0;

    b = 0;

    printf("Minimized 1 task:\n");

    printf("a b f\n");

    for (int a = 0; a < 2; a++) {

    for (int b = 0; b < 2; b++) {

    f = 1;

    printf("%i %i %i\n", a, b, f);

    }

    }

    printf("\nSource 2 task:\n");

    printf("a b c d f\n");

    for (int a = 0; a < 2; a++) {

    for (int b = 0; b < 2; b++) {

    for (int c = 0; c < 2; c++) {

    for (int d = 0; d < 2; d++) {

    //correct function

    f = (!a && !b && !c && d) || (!a && b && c && !d) || (!a && b && c && d) ||

    (a && !b && !c && d) || (a && b && !c && !d) || (a && b && !c && d) || (a && b && !c && d) ||

    (a && b && c &&!d) || (a && b && c && d);

    printf("%i %i %i %i %i\n", a, b, c, d, f);

    }

    }

    }

    }

    printf("\nMinimize 2 task:\n");

    printf("a b c d f\n");

    for (int a=0;a<2;a++){

    for (int b=0;b<2;b++){

    for (int c=0;c<2;c++){

    for(int d=0;d<2;d++){

    f = (a && b) || (b&&c) || (!b&&!c&&d);

    printf("%i %i %i %i %i\n", a, b, c, d, f);

    }

    }

    }

    }

    return 0;

    }
    Результаты:

    Рис. 1 — Результат работы программы
    1.2 Моделирование сложных комбинационных схем на ПЭВМ
    ((с→b) → (d ↓ b)) ↓ ((a → d) | (a → c)) = ((c ∨ d) | (c

    d)) | ((a+b) → (a - b))
    Программа должна выводить минимизированную и не минимизированную СДНФ.

    Код программы:
    #include
    using namespace std;
    bool impl(bool a, bool b)

    {

    return (!a || b);

    }
    bool zapr(bool a, bool b)

    {

    return (a && !b);

    }
    bool equal(bool a, bool b)

    {

    return ((a&&b) || (!a&&!b));

    }
    bool pirs(bool a, bool b)

    {

    return !(a || b);

    }
    bool shaffer(bool a, bool b)

    {

    return !(a && b);

    }
    int main(){

    int x,y,f1,m,n,f2;

    cout<<"Source"<
    cout<<"a"<<"|"<<"b"<<"|"<<"c"<<"|"<<"d"<<"|"<<"f"<
    for (int a=0; a<2; a++){

    for (int b=0; b<2; b++){

    for (int c=0;c<2;c++){

    for (int d=0;d<2;d++){

    x = impl( impl(!c,b), pirs(d,b) );

    y = shaffer( (impl(a,d)),(impl(a,c)) );

    f1 = pirs(x,y);

    cout<
    }

    }

    }

    }

    cout<<"Minimized with function:"<
    cout<<"a"<<"|"<<"b"<<"|"<<"c"<<"|"<<"d"<<"|"<<"f"<
    for (int a=0; a<2; a++){

    for (int b=0; b<2; b++){

    for (int c=0;c<2;c++){

    for (int d=0;d<2;d++){

    x = impl( impl(!c,b), pirs(d,b) );

    y = shaffer( (impl(a,d)),(impl(a,c)) );

    f1 = pirs(x,y);

    m = ( shaffer( (c||d), (equal(c,d)) ) );

    n = impl( (!a^!b), zapr(a,b) );

    f2 = shaffer(m,n);

    if (f1!=f2) {

    cout<<"Error";

    return 1;

    }

    cout<
    }

    }

    }

    }

    cout<<"Source:"<
    cout<<"a"<<"|"<<"b"<<"|"<<"c"<<"|"<<"d"<<"|"<<"f"<
    for (int a=0; a<2; a++){

    for (int b=0; b<2; b++){

    for (int c=0;c<2;c++){

    for (int d=0;d<2;d++){

    x = (!(!!c or b)) or (!(d or b));

    y = !((!a or d) and (!a or c));

    f1 = !(x or y);

    cout<
    }

    }

    }

    }

    cout<<"Minimized:"<
    cout<<"a"<<"|"<<"b"<<"|"<<"c"<<"|"<<"d"<<"|"<<"f"<
    for (int a=0; a<2; a++){

    for (int b=0; b<2; b++){

    for (int c=0;c<2;c++){

    for (int d=0;d<2;d++){

    x = (!(!!c or b)) or (!(d or b));

    y = !((!a or d) and (!a or c));

    f1 = !(x or y);

    /*m = (c or d) and ( (!c and !d) or (c and d) );

    n = ( (!!a and !b) or (!a and !!b) ) or (a and !b);

    f2 = !(!m and n); */

    m = ( !( (c||d) and ((!c and !d) or (c and d)) ) );

    n = (!(!a^!b)) or (a&&!b);

    f2 = !(m and n);

    if (f1!=f2) {

    cout<<"Error";

    return 1;

    }

    cout<
    }

    }

    }

    }

    cout<<"Minimized 1:"<
    cout<<"a"<<"|"<<"b"<<"|"<<"c"<<"|"<<"d"<<"|"<<"f"<
    for (int a=0; a<2; a++){

    for (int b=0; b<2; b++){

    for (int c=0;c<2;c++){

    for (int d=0;d<2;d++){

    x = (!(!!c or b)) or (!(d or b));

    y = !((!a or d) and (!a or c));

    f1 = !(x or y);

    f2 = (!a and b) or (c and d);

    if (f1!=f2) {

    cout<<"Error";

    return 1;

    }

    cout<
    }

    }

    }

    }

    cout<<"Minimized 2:"<
    cout<<"a"<<"|"<<"b"<<"|"<<"c"<<"|"<<"d"<<"|"<<"f"<
    for (int a=0; a<2; a++){

    for (int b=0; b<2; b++){

    for (int c=0;c<2;c++){

    for (int d=0;d<2;d++){

    x = ( !( (c||d) and ((!c and !d) or (c and d)) ) );

    y = (!(!a^!b)) or (a&&!b);

    f1 = !(x and y);

    f2 = (!a and b) or (c and d);

    if (f1!=f2) {

    cout<<"Error";

    return 1;

    }

    cout<
    }

    }

    }

    }

    return 0;

    }

    Результаты:

    Рис. 2 — Результаты работы программы Рис. 3 — Результат работы

    использованием функций программы используя функцию

    в базисе И, ИЛИ, НЕ


    Рис. 4 — Результат работы программы

    используя минимизированная функцию

    1.3 Моделирование и реализация на языке C/C++ управляющей программы, заданной граф-схемой алгоритма (ГСА)
    Реализовать блок-схему. Блок-схема представлена в приложении А.
    Код программы:
    #include

    using namespace std;

    int main()

    {

    bool x1,x2,x3,x4;

    cout << "Начало"<
    point1:

    cout << "Введите x1: ";

    cin >> x1;

    if (!x1){

    cout<<"A1"<
    goto point1;

    }

    cout << "Введите x2: ";

    cin >> x2;

    if (!x2){

    goto point1;

    }

    cout << "Введите x3: ";

    cin >> x3;

    if (!x3){

    cout<<"A2"<
    goto end;

    }

    cout << "Введите x4: ";

    cin >> x4;

    if (!x4) goto point1;

    cout<<"A3"<
    end:

    cout<<"Конец"<
    getchar();

    return 0;

    }
    Результаты:


    Рис. 5 — Результат работы программы
    Граф-схемы алгоритмов:




    Рис. 6 — Исходная ГСА
    Р ис. 7 — Автомат жесткой логики

    Р ис. 8 — Реализация на D триггерах

    1.4 Использование побитовых операций на микроконтроллере MCS-51

    Реализовать логическую функцию X&(¬Y∨Z) на микроконтроллере MCS-51.

    Таблица 2 — Таблица истинности логической функции

    X

    Y

    Z

    F

    0

    0

    0

    1

    0

    0

    1

    1

    0

    1

    0

    1

    0

    1

    1

    0

    1

    0

    0

    0

    1

    0

    1

    0

    1

    1

    0

    0

    1

    1

    1

    0


    Код программы:

    JMP BEGIN;

    BEGIN:

    MOV P1, #00000111b ;P1.2=,1.1=Y, P1.0=Z – ввод значений X,Y,Z

    MOV C, P1.0; C = Z

    ANL C, P1.1; C = Z^Y=Y^Z

    ORL C,P1.2; C=(Y^Z)VX

    CPL C ; C = !C

    MOV P1.7, C ;вывод C в P1.7
    Результаты:



    Рис. 9 — Результат работы программы


    Рис. 10 — Результат работы программы


    1.5 Моделирование функции заданной СДНФ на микроконтроллере MCS-51

    Реализовать функцию СДНФ на микроконтроллере MCS-51.
    Код программы:
    jmp begin

    begin:

    mov P1,#00001111b

    ;1 (¬P1.3 & ¬P1.2 & ¬P1.1 & P1.0)

    mov C,P1.3

    cpl C; P1.1=!P1.3

    anl C, /P1.2; C = !P1.3 & !P1.2

    anl C, /P1.1; C = (!P1.3 & !P1.2) & !P1.1

    anl C, P1.0; C = !P1.3 & !P1.2 & !P1.1 & P1.0

    jc print

    ;2 (¬P1.3 & P1.2 & P1.1 & ¬P1.0)

    mov C, P1.3; C = P1.3

    cpl C; C = !P1.3

    anl C, P1.2; C = !P1.3 & P1.2

    anl C, P1.1 ; C = !P1.3 & P1.2 & P1.1

    anl C, /P1.0; C = !P1.3 &P1.2 &P1.1 & !P1.0

    jc print

    ;3 (¬P1.3 & P1.2 & P1.1 & P1.0)

    mov C, P1.3; C = P1.3

    cpl C; C = !P1.3

    anl C, P1.2; C = !P1.3 & P1.2

    anl C, P1.1; C = !P1.3 & P1.2 & P1.1

    anl C, P1.0; C = !P1.3 & P1.2 & P1.1 & P1.0

    jc print

    ;4 (P1.3 & ¬P1.2 & ¬P1.1 & P1.0)

    mov C, P1.3; C = P1.3

    anl C, /P1.2; C = P1.3 & !P1.2

    anl C, /P1.1; C = P1.3 & !P1.2 & !P1.1

    anl C, P1.0; C = P1.3 & !P1.2 & !P1.1 & P1.0

    jc print

    ; 5 (P1.3 & P1.2 & ¬P1.1 & ¬P1.0)

    mov C, P1.3; C = P1.3

    anl C, P1.2; C = P1.3 & P1.2

    anl C, /P1.1; C = P1.3 & P1.2 & !P1.1

    anl C, /P1.0; C = P1.3 & P1.2 & !P1.1 & !P1.0

    jc print

    ; 6 (P1.3 & P1.2 & ¬P1.1 & P1.0)

    mov C, P1.3; C = P1.3

    anl C, P1.2; C = P1.3 & P1.2

    anl C, /P1.1; C = P1.3 & P1.2 & !P1.1

    anl C, P1.0; C = P1.3 & P1.2 & !P1.1 & P1.0

    jc print

    ; 7 (P1.3 & P1.2 & P1.1 & ¬P1.0)

    mov C, P1.3; C = P1.3

    anl C, P1.2; C = P1.3 & P1.2

    anl C, P1.1; C = P1.3 & P1.2 & P1.1

    anl C, /P1.0; C = P1.3 & P1.2 & P1.1 & !P1.0

    jc print

    ; 8 (P1.3 & P1.2 & P1.1 & P1.0)

    mov C, P1.3; C = P1.3

    anl C, P1.2; C = P1.3 & P1.2

    anl C, P1.1; C = P1.3 & P1.2 & P1.1

    anl C, P1.0; C = P1.3 & P1.2 & P1.1 & P1.0

    jc print

    print:

    mov P1.7, C

    Результаты:


    Рис. 11 — Результаты работы программы



    Рис. 12 — Результаты работы программы
    1.6 Моделирование управляющего алгоритма на языке ассемблера для микроконтроллера MCS-51

    Реализовать сложную неструктурную граф-схему алгоритма (ГСА) на языке Ассемблера для микроконтроллера MCS-51.

    Исходная блок-схема:







    Рис. 13 — Исходная ГСА

    Код программы:
    jmp begin;

    begin:

    mov p1, #00000000b

    ;P2.0 - x1

    ;P2.1 - x2

    ;P2.2 - x3

    ;P2.3 - x4

    mov p2, #00001111b

    A1:mov p1,#00000001b; A1

    point1:

    mov C, p2.0;Ввод х1

    jnc A1 ;if(!x1) goto A1

    jnc point1; if(!x1) goto point1

    mov C, p2.1 ;Ввод x2

    jnc point1

    mov C, p2.2;Ввод х3

    a2: mov p1,#00000010b; A2

    jnc a2 ;if(!x3)

    jnc AK ; goto end

    mov C,p2.3;Ввод х4

    jnc point1 ; if(!x4) goto point1

    mov p1,#00000011b; A3

    AK:jmp begin
    Результаты:



    Рис. 14 — Результаты работы программы



    Рис. 15 — Результаты работы программы




    Рис. 16 — Результаты работы программы

    2 Описание моделирующей среды
    Прoграммные cредства изучения и прoектирования микрокoнтроллерных систем на оснoве МК 8051 предназначeны для освoения прoграммирования микроконтроллеров семейства МК 8051 и для программирования и отладки совместной работы микроконтроллера с основными компонентами микропpoцессорных систем управления (СУ). EdSim51 - это самый популярный и простой симулятор, доступный для микроконтроллера 8051. EdSim - это фактически виртуальный 8051 с клавиатурой, АЦП, ЦАП, 7-сегментным дисплеем и другими внешними периферийными устройствами. EdSim специально создан для студентов и их образовательных целей. Изюминкой этого симулятора является "простота и удобство использования". Любой новичок может изучить это программное обеспечение довольно быстро. Стенд включает в себя следующие основные компоненты:

    • микрокoнтроллер 8051

    • схему подключения блока светодиодов, цифроаналогового преобразователя и дисплея;

    • схему подключения блока светодиодов, ЦАП и жидкокристаллического индикатора;

    • схему подключения блока механических переключателей и аналого- цифрового преобразователя;

    • схему подключения компаратора и ЦАП;

    • cхему подключения электродвигателя и универсального асинхронного приёмопередатчика;

    • схему подключения клавиатуры.

    Кроме того, стенд включает источник постоянного напряжения и осциллограф.







    Рисунок 17 - Функциональная схема модели лабораторного стенда EdSim51
    На рисунке 18 приведен внешний вид EdSim51. Рассмотрим основные компоненты пользовательского интерфейса, их функции и связь с элементами функциональной схемы EdSim51.

    На рисунке 18 можно выделить четыре основных панели:

    - панель микроконтроллера;

    - панель ассемблерного кода;

    - панель периферийного оборудования;

    - панель отображения состояния линий портов ввода/вывода.



    Рисунок 18 - Внешний вид модели лабораторного стенда EdSim51
    Список используемых источников:

    1) https://www.edsim51.com/introduction.html - официальный сайт

    2) https://pue8.ru/protsessory/708-mikrokontrollery-mcs-51-programmnaya-  model-struktura-komand-chast-5.html - пособие по микроконтроллерам MCS-51

    3) Каспер Эрни - Программирование на языке Ассемблера для микроконтроллеров семейства i8051 — Гор.линия-Телеком, 2004 - 191с.

    Приложение А

    (обязательное)




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