Проектирование электронных устройств в Multisim 12.0. Часть 7

Разработка схем электрических принципиальных с использованием микроконтроллеров

В Multisim реализовано большое количество функций для профессионального проектирования микроэлектронных устройств, одной из которых является имитация работы микроконтроллеров. Необходимо отметить, что в состав системы Multisim 12.0 входит 68 моделей микроконтроллеров и 60 моделей микропроцессоров, однако запуск процесса моделирования возможен лишь для следующих типов микроконтроллеров: 8051, 8052, PIC16F84, PIC16F84A, которые находятся в библиотеке компонентов «MCU». Рассмотрим процесс моделирования схем с использованием микроконтроллеров на примере микроконтроллера 8051. На рисунке 1 представлена цоколевка этого микроконтроллера.


Рис. 1. Назначение выводов микроконтроллера х51.

Для того, что бы добавить данную микросхему в рабочее поле проекта, необходимо в программе Multisim в меню «Вставить» выбрать пункт «Компонент…», в результате чего откроется окно «Выбор компонента» (рис. 2).


Рис. 2. Диалоговое окно «Выбор компонента».

В левой верхней части окна находится меню «Раздел», в котором из выпадающего списка выбирается нужная библиотека компонентов базы данных Multisim. В нашем случае необходимо выбрать пункт «MCU». В поле «Семейство» расположены все группы семейств микросхем выбранной библиотеки, в то время как в поле «Компонент» отображаются все компоненты выбранного семейства. После того как выбор компонента произведен, его условное графическое обозначение отобразится в поле предварительного просмотра «Символ (ANSI)». Для того, что бы разместить выбранный компонент на схеме, необходимо в окне «Выбор компонента» нажать на кнопку «ОК», после чего данное окно будет закрыто, а символ компонента будет прикреплен к курсору мыши, при помощи которого необходимо поместить компонент в нужное место на схеме. При размещении микроконтроллера х51 в рабочем поле проекта откроется окно мастера MCU «Создатель MCU – шаг 1 из 3». Работа мастера состоит из 3-х шагов, на первом из которых (рис. 3) пользователю будет предложено выбрать директорию размещения проекта и создать для него рабочую папку.


Рис. 3. Окно мастера «Создатель MCU – шаг 1 из 3».

Для этого необходимо указать «Путь доступа к рабочей области для этого MCU» и «Название рабочей области». После того как соответствующие поля заполнены, необходимо нажать на кнопку «Далее», в результате чего будет открыто следующее окно мастера «Создатель MCU – шаг 2 из 3» (рис.4).


Рис. 4. Окно мастера «Создатель MCU – шаг 2 из 3».

На втором шаге мастер предложит определить следующие установки проекта:

  •  «Тип проектирования» («Стандартный» или «Использовать внешний Hex файл») – выберите второй параметр в том случае, если у вас уже есть готовый hex файл, в противном случае установите стандартный тип проектирования;
  •  «Язык программирования» («С» или «Ассемблер»);
  •  «Инструменты ассемблера/компилятора»;
  •  «Название проекта» — вводится вручную.

После установки всех параметров необходимо нажать на кнопку «Далее», в результате чего будет открыто третье окно мастера «Создатель MCU – шаг 3 из 3» (рис. 5).


Рис. 5. Окно мастера «Создатель MCU – шаг 3 из 3».

В данном окне посредством установки переключателя в нужную позицию необходимо произвести выбор одного из параметров:

  • «Начать с пустого проекта»;
  • «Добавить исходный файл».

Выберите первый пункт в том случае, если у вас уже есть на диске компьютера подготовленный файл .hex. В противном случае, выберите второй пункт. При этом в поле «Имя исходного файла» необходимо прописать название файла .asm, в который в процессе проектирования будет вноситься код программы инициализации микроконтроллера. После того как переключатель установлен в нужную позицию, нажмите на кнопку «Закончить», в результате чего работа с мастером MCU будет закончена.

Новый файл можно добавить в проект и в процессе работы над схемой. Для этого в меню «Микроконтроллеры» выберите пункт «MCU 8051 U?/Менеджер кодов MCU» в результате чего будет открыто окно «Менеджер кодов MCU» (рис. 6) и в поле «Добавить в проект» нажмите на кнопку «Новый файл». Значение «U?» в пункте меню «MCU 8051 U?» зависит от количества микроконтроллеров в вашем проекте.


Рис. 6. Окно «Менеджер кодов MCU».

В том случае если в вашем проекте один микроконтроллер, данный пункт меню будет иметь следующее название «MCU 8051 U1». Если же в вашем проекте несколько микроконтроллеров, то в меню «Микроконтроллеры» количество пунктов «MCU 8051 U?» будет соответствовать количеству микроконтроллеров в вашем проекте, а значение «U?» — номеру микроконтроллера. Необходимо так же отметить, что если в вашей рабочей области создано несколько проектов, то предварительно посредством выделения при помощи левой кнопки мыши необходимо определить в окне «Менеджер кодов MCU» в поле дерева проектов проект, к которому будет добавлен новый файл. В результате выполненных действий будет открыто окно «Новый» (рис. 7), в котором в поле «Тип файла» необходимо выбрать один из следующих пунктов меню:

  • «Файл ассемблера (.asm)»;
  • «Вложенный файл ассемблера (.inc)»;
  • «Исходный файл С (.c)»;
  • «Выходной файл С (.h)»,

а в поле «Имя файла» ввести название файла, который будет добавлен в проект.


Рис. 7. Окно «Новый».

В проект можно так же добавить и уже подготовленные ранее .hex или .asm файлы. Для того, что бы добавить .asm файл, в окне «Менеджер кодов MCU» в поле «Добавить в проект» нажмите на кнопку «Файлы…», в результате чего будет открыто окно проводника Windows, в котором выберите на диске компьютера необходимый файл и нажмите на кнопку «Открыть». Для того, что бы добавить .hex файл, необходимо в меню «Микроконтроллеры» выбрать пункт «MCU 8051 U?/Менеджер кодов MCU» и в открывшемся окне «Менеджер кодов MCU» на вкладке «Основные» в поле «Файл машинного кода для моделирования (*.hex)» нажать на кнопку «Просмотр…» (рис. 8).


Рис. 8. Окно «Менеджер кодов MCU». Добавление .hex файла в проект.

В результате выполненных действий будет открыто окно проводника Windows, в котором необходимо выбрать на диске компьютера нужный .hex файл, после чего нажать на кнопку «Открыть». Для того, что бы на вкладке «Основные» стало активным поле «Файл машинного кода для моделирования (*.hex)», необходимо в дереве проектов при помощи левой кнопки мыши выделить название проекта, к которому добавляется файл машинного кода.

После того как работа с мастером MCU закончена, в проект будет добавлена ещё одна вкладка для ввода текста программы инициализации микроконтроллера. В меню «Микроконтроллеры» находятся команды для обеспечения написания и отладки программы с учетом особенностей разрабатываемого устройства.

Для наглядной демонстрации работы программы инициализации микроконтроллера воспользуемся цветными пробниками, порог срабатывания которых установим в соответствии с нижним уровнем значения напряжения логической единицы. Цветные пробники расположены на панели инструментов «Виртуальные измерительные компоненты», которую можно добавить в проект при помощи команды меню «Вид/Панель инструментов». Пробники напряжения определяют напряжение в конкретной точке схемы и если исследуемая точка имеет напряжение равное или большее значения напряжения срабатывания, которое указано в настройках данного цветного пробника, то пробник загорается цветом. Установить необходимое пороговое значение срабатывания цветного пробника можно в окне настроек данного прибора на вкладке «Параметры», установив в поле «Пороговое напряжение (VT)» необходимое значение напряжения. Окно настроек можно открыть с помощью двойного щелчка левой кнопки мыши на пиктограмме данного прибора на схеме.

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

После того как в рабочей области проекта собрана схема (рис. 9), а на вкладке «*.asm» введен код программы (рис. 10), можно запускать моделирование.


Рис. 9. Демонстрационная схема с использованием микроконтроллера и цветных пробников напряжения.


Рис. 10. Вкладка «*.asm».

Процесс моделирования запускается при помощи кнопки «Пуск», которая находится на панели инструментов «Моделирование». Данную панель можно добавить в проект при помощи команды меню «Вид/Панель инструментов». Так же для запуска моделирования можно воспользоваться функциональной клавишей на клавиатуре «F5». В результате, в том случае если компилятор в листинге программы не обнаружит ошибок, на диске вашего компьютера в рабочей папке проекта будут созданы следующие файлы (рис. 11):

  • *.hex — файл машинного кода (рис. 12);
  • *.asm — файл с ассемблерным кодом программы;
  • *.lst — файл листинга программы (рис. 13).

Рис. 11. Рабочая папка проекта MCU.


Рис. 12. Нex файл машинного кода.


Рис. 13. Файл листинга программы инициализации микроконтроллера.

Программа инициализации микроконтроллера пишется на языке программирования asm51. Это язык ассемблера, который предназначен специально для написания программ для микроконтроллеров семейства х51. Написанная программа транслируется с помощью ассемблера asm51, в результате чего будут получены hex файл для загрузки в память программ и листинговый файл с кодами команд и адресами расположения этих кодов. Файл листинга формируется ассемблером в процессе трансляции и представляет собой начальный ассемблерный файл, дополненный следующей информацией. Перед каждой командой размещен номер ее строки в ассемблерном тексте, адрес ячейки памяти программ, в которой размещен код операции команды, а после этого адреса – один, два или три байта самой команды. В конце программы находится таблица имен и меток.

В том случае, если в ходе компиляции кода программы инициализации микроконтроллера были обнаружены ошибки, они будут отмечены компилятором в файле листинга. При этом hex файл не будет сгенерирован до тех пор, пока ошибки не будут устранены. В файле листинга для каждой обнаруженной ошибки компилятор указывает причину ошибки и номер строки, в которой она была обнаружена. На рисунке 13 представлен файл листинга, в котором отладчик сообщает об ошибке номер 2 (Неопределенный идентификатор), которая обнаружена в восьмой строке кода программы и состоит в том что в коде программы неверно указано название порта ввода/вывода данных (в используемом микроконтроллере нет порта с названием Р4). Отчет о возможных ошибках в программе Multisim так же отображается и в нижней части рабочего проекта в окне «Блок информации» на вкладках «Результаты» и «Моделирование». Состояние памяти можно просмотреть при помощи команды меню «Микроконтроллеры/MCU 8051 U?/Просмотр памяти» (рис. 14).


Рис. 14. Окно «Просмотр памяти MCU».

Проанализируем работу демонстрационной схемы, представленной на рисунке 9.

На вкладке «main.asm» при помощи команды «MOV» были даны указания программе инициализации микроконтроллера записать в порт Р1 следующие значения линий порта Р1.7-Р1.0 – «00111111», а в порт Р2 – значения линий порта Р2.7-Р2.0 – «00000101». После запуска моделирования при помощи цветных пробников мы можем проверить правильность работы программы. Как видно из рисунка 9 на выводах портов микроконтроллера Р1 и Р2 действительно та комбинация которую мы указали в коде программы.

При написании кода программы для микроконтроллера х51 необходимо владеть синтаксисом языка программирования asm51. Система команд микроконтроллеров х51 насчитывает 111 базовых команд, которые разделены по функциональному признаку на пять групп: команды передачи данных, арифметических операций, логических операций, передачи управления и операций с битами. Наиболее часто используемые команды asm51 представлены в таблице 1.

Таблица 1. Система команд микроконтроллера х51.

 Название команды 
 Мнемокод 
 Пересылка в аккумулятор из регистра 
 MOV A, R
 Пересылка в регистр из аккумулятора
 MOV R, A
 Загрузка константы в регистр
 MOV R, #d 
 Обмен аккумулятора с регистром
 XCH A, R
 Сложение аккумулятора с регистром
 ADD A, R
 Сложение аккумулятора с константой
 ADD A, #d
 Инкремент аккумулятора
 INC A
 Инкремент регистра
 INC R
 Декремент аккумулятора
 DEC A
 Декремент регистра
 DEC R
 Логическое И аккумулятора и регистра 
 ANL A, R
 Логическое ИЛИ аккумулятора и регистра 
 ORL A, R
 Сброс аккумулятора
 CLR A
 Инверсия аккумулятора
 CPL A
 Переход, если аккумулятор равен нулю (mt – метка в коде программы) 
 JZ mt
 Переход, если аккумулятор не равен нулю (mt – метка в коде программы) 
 JNZ mt
 Пустая операция, которая может быть использована в качестве задержки на 1мкс 
 NOP
 Выход из подпрограммы 
 RET

Сопряжение микроконтроллера х51 с микросхемами 7-сегментных индикаторов в Multisim

Система, в которой используется микроконтроллер, может не лишь чем-то управлять, но и что-то отображать. Чаще всего в качестве узла отображения в схеме используют знакосинтезирующие индикаторы. По способу формирования символов индикаторы бывают 7-сегментными или матричными. Для отображения цифр удобнее использовать 7-сегментный индикатор. Такие индикаторы широко применяются в самых разных устройствах цифровой техники: от калькулятора, до электронных часов. Матричные индикаторы обычно используют для отображения букв. Каких-либо стандартных правил сопряжения микроконтроллера с индикаторами не существует, и в каждом конкретном случае сопряжение может выполняться по-разному.

На рисунке 15 представлен пример соединения микросхемы индикатора с микроконтроллером. Принцип соединения микроконтроллера с элементами схемы такой же, как и для других компонентов схемы.


Рис. 15. Сопряжение микросхемы 7-сегментного индикатора с микроконтроллером.

Для того, что бы отобразить цифру, нужно «зажечь» определенные сегменты индикатора. При использовании в схеме микроконтроллера сделать это можно программным способом. Разные комбинации светящихся элементов индикатора, обеспечиваемые внешней коммутацией, позволяют отображать цифры от 0 до 9 и децимальную точку. В представленном примере у индикатора элементы имеют общий катод.

Для управления 7-сегментным индикатором в схеме используется двоично-десятичный дешифратор 74LS48D (отечественный аналог КР514ИД1). Микросхема дешифратора выполняет преобразование двоичного кода полученного с микроконтроллера в код цифры для дальнейшего отображения на микросхеме 7-сегментного индикатора. Микросхема 74LS48D – это специальный дешифратор, предназначенный для преобразования двоичного кода в семисегментный код и управления семисегментными и жидкокристаллическими индикаторами. Входы А, B, C, D – информационные входы. Выходы QA-QG – выходы на семисегментный индикатор. Двоичные коды и соответствующие им десятичные цифры представлены в таблице 2.

Таблица 2. Двоичные коды и соответствующие им десятичные цифры.

 Двоичный код 
 Десятичная цифра 
 0000
 0 
 0001
 1
 0010
 2
 0011
 3
 0100
 4
 0101
 5
 0110
 6
 0111
 7
 1000
 8
 1001
 9

Для того, что бы добавить микросхему дешифратора в рабочее поле проекта, необходимо открыть окно «Выбор компонента» (рис. 16а) и в его левой верхней части в поле «Раздел» выбрать из списка библиотеку «TTL». Ниже поля «Раздел» находится поле «Семейство», в котором необходимо выбрать пункт «74LS». В поле «Компонент» выберите микросхему 74LS48D и нажмите на кнопку «ОК». Для того, что бы добавить микросхему семисегментного индикатора с общим катодом, выберите в окне «Выбор компонента» (рис. 16б) в поле «Раздел» библиотеку «Indicators», в поле «Семейство» пункт «HEX_DISPLAY», а в поле «Компонент» – SEVEN_SEG_DECIMAL_COM_K.


Рис. 16. Выбор компонентов схемы в окне «Выбор компонента»: (а) дешифратора, (б) семисегментного индикатора.


Рис. 17. Запись двоичного кода цифры 3 в порт Р2 микроконтроллера.

В представленном на рисунке 15 примере индикатор отображает цифру 3. Для этого на вкладке main.asm (рис. 17) при помощи команды mov были даны указания программе инициализации микроконтроллера записать в порт Р2 следующие значения линий порта Р2.7-Р2.0 – «00000011». После запуска моделирования мы можем проверить правильность работы программы. Как видно из рисунка 15 на выводах порта микроконтроллера Р2 действительно та комбинация которую мы указали в коде программы, а индикатор отображает цифру 3.

Добавить комментарий

Ваш адрес email не будет опубликован.