Микропроцессорная система индикации восьмиразрядным семисегментным индикатором

Тип работы:
Курсовая
Предмет:
Коммуникации, связь, цифровые приборы и радиоэлектроника


Узнать стоимость

Детальная информация о работе

Выдержка из работы

Министерство образования и науки РФ

Факультет технической кибернетики

КУРСОВОЙ ПРОЕКТ

По дисциплине: Конструирование микропроцессорных устройств

На тему: Микропроцессорная система индикации восьмиразрядным семисегментным индикатором

СОДЕРЖАНИЕ

1. ЛИТЕРАТУРНЫЙ ОБЗОР

1.1 Динамическая индикация

1.2 Поразрядная динамическая индикация

1.3 Посегментная динамическая индикация

1.4 Итог

2. РАЗРАБОТКА СТРУКТУРНОЙ СХЕМЫ И ВЫБОР ЭЛЕМЕНТНОЙ БАЗЫ

2.1 Структурная схема

2.2 Микроконтроллер

2.3 Инверторы

2.4 Светодиодные семисегментные индикаторы

3. КОД УПРАВЛЯЮЩЕЙ ПРОГРАММЫ

4. КОНТРОЛЬНЫЙ ПРИМЕР

5. ЗАКЛЮЧЕНИЕ

ЛИТЕРАТУРА

1. ЛИТЕРАТУРНЫЙ ОБЗОР

Для отображения цифровой информации в системах на базе микроконтроллеров используются светодиодные семисегментные индикаторы. Они просты в управлении, имеет высокую яркость, широкий диапазон рабочих температур и низкую стоимость. К недостаткам светодиодных индикаторов относятся — высокое энергопотребление, отсутствие управляющего контроллера и скудные возможности по выводу буквенной информации.

Светодиодный семисегментный индикатор представляет собой группу светодиодов расположенных в определенном порядке и объединенных конструктивно. Зажигая одновременно несколько светодиодов можно формировать на индикаторе символы цифр. Индикаторы различаются по типу соединения светодиодов — общий анод, общий катод, по количеству отображаемых разрядов — однораразрядные, двух разрядные и т. д. и по цвету — красные, зеленые, желтые и т. д.

Рисунок 1.1 — Семисегментный индикатор

Семисегментным индикатором можно управлять статически или динамически.

Рассмотрим принцип статического управления индикации.

При таком принципе сегменты зажигаются один раз и переключаются только при изменении цифры. Это и программно удобно: не нужно постоянно вызывать из программы функции или подпрограммы, отвечающие за динамическую индикацию. Нужно только при изменении данных повторно вывести их на дисплей и всё.

Но возникает проблема: для этого нужно много выводов микроконтроллера. К примеру, если у нас 4 цифры, то нужно 8×4=32 вывода, у Меги16 их всего 32. Поэтому для реализации статической индикации необходимо использовать сдвиговые регистры или расширители портов.

Расширители портов, как правило, подключаются к микроконтроллеру через SPI/I2C и представляют из себя полноценный порт ввода-вывода, который можно настроить на вход/выход и перевести в высокоомное Hi-Z состояние (это когда вывод как-бы ни к чему не подключен).

Преимущества, в сравнении с динамической индикацией:

Постоянная яркость индикации на любой частоте

Переключение только при изменении цифры

Легче в программировании, так как не нужно постоянно вызывать из программы функции или подпрограммы, отвечающие за динамическую индикацию

Недостатки, в сравнении с динамической индикацией:

Необходимо большое количество выводов микроконтроллера

Необходимо использовать сдвиговые регистры или расширители портов

Рисунок 1.2 — Статическая индикация

1.1 Динамическая индикация

При динамической индикации сегменты зажигается по очереди. А за счет инерции глаза кажется, что индикатор горит постоянно. Из ее основных плюсов -- требуется гораздо меньше внешних элементов. Основной минус -- для нее постоянно требуется внимание процессора:) Частота смены сегментов выбирается обычно не ниже 50Гц. Лучше использовать частоты не кратные 50, иначе при искусственном освещении может появиться мерцание. Частота прерываний считается как «Кол-во разрядов» х «Частота обновления». Так для 8 разрядов с частотой 60Гц нужно вызывать прерывание с F=8×60=480Гц.

Есть два вида такой индикации -- поразрядная и посегментная. Первая наиболее известна и популярна, вторая лучше подходит когда нужно большое количество разрядов (больше 10).

1.2 Поразрядная динамическая индикация

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

Для небольшого количества разрядов поразрядная индикация наиболее проста и вполне годна для применения, но когда количество разрядов становится слишком большим ее использование становится не лучшим решением. И вот почему -- с увеличением кол-ва разрядов также увеличивается время пока индикатор не горит, а соответственно его яркость становится существенно ниже. На осциллограмме внизу слева дана картинка для 6 разрядов, а справа для 24 разрядов. На ней хорошо видно соотношение сколько времени горят/не горят сегменты.

Рисунок 1.3 — Изображение осциллографа

1.3 Посегментная динамическая индикация

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

Алгоритм работы подпрограммы в следующем -- идет перебор всех байтов в буфере и если в данной позиции текущий сегмент не должен гореть, то в регистр записывается 1. Единица пишется, т.к. активный уровень у общего вывода индикатора -- «0». После перебора всего буфера в выходы защелок фиксируется новое состояние и зажигается новый сегмент.

На следующей картинке видно как бежит «1» выбора сегмента. На ней так же видно, что увеличение кол-ва разрядов в четыре раза не приводит к уменьшению времени свечения одной позиции.

На рисунке 4 видно как бежит «1» выбора сегмента. Так же видно, что увеличение количества разрядов в четыре раза не приводит к уменьшению времени свечения одной позиции.

Рисунок 1.4 — Изображение осциллографа

1.4 Итог

Семисегментным индикатором можно управлять статически или динамически.

При статическом управлении разряды индикатора подключены к микроконтроллеру независимо друг от друга и информация на них выводится постоянно. Этот способ управления проще динамического, но без использования дополнительных элементов, как-то сдвиговые регистры, подключить многоразрядный семисегментный индикатор к микроконтроллеру будет проблематично — может не хватить выводов.

Динамическое управление (динамическая индикация) подразумевает поочередное зажигание разрядов индикатора с частотой, не воспринимаемой человеческим глазом. Схема подключения индикатора в этом случае на порядок экономичнее благодаря тому, что одинаковые сегменты разрядов индикатора объединены.

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

Индикация производилась с помощью микроконтроллера.

Микроконтроллер — компьютер на одной микросхеме. Предназначен для управления различными электронными устройствами и осуществления взаимодействия между ними в соответствии с заложенной в микроконтроллер программой. В отличие от микропроцессоров, используемых в персональных компьютерах, микроконтроллеры содержат встроенные дополнительные устройства. Эти устройства выполняют свои задачи под управлением микропроцессорного ядра микроконтроллера.

К наиболее распространенным встроенным устройствам относятся:

Устройства памяти.

Можно выделить три основных вида памяти, используемой в микроконтроллерах.

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

1.2 Память данных предназначена для хранения переменных в ходе выполнения программы.

1.3 Регистры микроконтроллера -- этот вид памяти включает внутренние регистры процессора и регистры, которые служат для управления периферийными устройствами.

Оперативная память (RAM) — память данных

Предназначена для хранения переменных в ходе выполнения программы.

Регистровая память

Оперативная память (ОЗУ — оперативное запоминающее устройство или RAM)

Энергонезависимая память (ЭСППЗУ или EEPROM)

Постоянные запоминающие устройства — память программ

Этот вид памяти являются энергонезависимыми -- это означает, что содержимое памяти сохраняется после выключения питания микроконтроллера. Такая память необходима, так как микроконтроллер не содержит каких-либо устройств массовой памяти (магнитных дисков), с которых загружается программа в компьютерах. Программа постоянно хранится в микроконтроллере.

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

Постоянные запоминающие устройства (ROM). Однократно-программируемое ПЗУ.

Перепрограммируемую ROM (EPROM). Электрически программируемое ПЗУ с ультрафиолетовым стиранием.

Электрически перепрограммируемую ROM (EEPROM). ПЗУ с электрической записью и стиранием, к этому виду относятся также современные микросхемы Flash-памяти.

Порты ввода/вывода (I/O)

Порты ввода/вывода имеют число независимых линий «вход/выход"от 3 до 53. Каждая линия порта может быть запрограммирована на вход или на выход. Мощные выходные драйверы обеспечивают токовую нагрузочную способность20 мА на линию порта (втекающий ток) при максимальном значении 40 мА, что позволяет, например, непосредственно подключать к микроконтроллеру светодиоды и биполярные транзисторы. Общая токовая нагрузка на все линии одного порта не должна превышать 80 мА (все значения приведены для напряжения питания 5 В).

Последовательные порты связи

Параллельные порты (I/O линии)

Аналого-цифровые преобразователи (A/D)

Цифроаналоговые преобразователи (D/A)

Драйверы жидкокристаллического дисплея (LCD)

Драйверы вакуумного флуоресцентного дисплея (VFD).

Интерфейсы связи

Таймеры

Часы реального времени

Таймеры прерываний.

Системные часы.

Встроенные устройства обладают повышенной надежностью, поскольку они не требуют никаких внешних электрических цепей.

Основным классификационным признаком микроконтроллеров является разрядность данных, обрабатываемых арифметико-логическим устройством (АЛУ). По этому признаку они делятся на 4-, 8-, 16-, 32- и 64-разрядные. Сегодня наибольшая доля мирового рынка микроконтроллеров принадлежит восьмиразрядным устройствам (около 50% в стоимостном выражении). За ними следуют 16-разрядные и DSP-микроконтроллеры (DSP — Digital Signal Processor — цифровой сигнальный процессор), ориентированные на использование в системах обработки сигналов (каждая из групп занимает примерно по 20% рынка). Внутри каждой группы микроконтроллеры делятся на CISC- и RISC-устройства.

CISC (Complex instruction set computing, или complex instruction set computer -- компьютер с комплексным набором команд) -- концепция проектирования процессоров, которая характеризуется следующим набором свойств:

нефиксированное значение длины команды;

арифметические действия кодируются в одной команде;

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

RISC (restricted (reduced) instruction set computer -- компьютер с сокращённым набором команд) -- архитектура процессора, в которой быстродействие увеличивается за счёт упрощения инструкций, чтобы их декодирование было более простым, а время выполнения -- короче. Первые RISC-процессоры даже не имели инструкций умножения и деления.
Тактовая частота, или, более точно, скорость шины, определяет, сколько вычислений может быть выполнено за единицу времени. В основном производительность микроконтроллера и потребляемая им мощность увеличиваются с повышением тактовой частоты. Производительность микроконтроллера измеряют в MIPS (Million Instruсtions per Second — миллион инструкций в секунду).

Так же по архитектуре микроконтроллеры принято разделять на микроконтроллеры с Гарвардской и Принстонской архитектурой.

Гарвардская

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

Рисунок 1.5 — Структура компьютера с Гарвардской архитектурой.

Принстонская

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

Основным преимуществом архитектуры Фон Неймана является то, что она упрощает устройство микропроцессора, так как реализует обращение только к одной общей памяти. Для микропроцессоров самым важным является то, что содержимое ОЗУ (RAM — Random Access Memory) может быть использовано как для хранения данных, так и для хранения программ. В некоторых приложениях программе необходимо иметь доступ к содержимому стека. Все это предоставляет большую гибкость для разработчика программного обеспечения, прежде всего в области операционных систем реального времени, о которых пойдет речь позднее.

Рисунок 1.6 — Структура компьютера с Принстонской архитектурой

2. РАЗРАБОТКА СТРУКТУРНОЙ СХЕМЫ И ВЫБОР ЭЛЕМЕНТНОЙ БАЗЫ

2.1 Структурная схема

Рисунок 2.1 — Структурная схема

Структурная схема проекта представлена на рисунке 2.1.

Для реализации необходимого функционала требуются следующие основные узлы:

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

Микроконтроллер. Предназначен для управления различными электронными устройствами и осуществления взаимодействия между ними в соответствии с заложенной в микроконтроллер программой. Так же необходимо написать управляющую программу на языке Assembler в пакете 8051IDE.

Минимальные требования к микроконтроллеру:

Количество портов: не менее 16-ти

Частота работы: от 20 МГц

Архитектура: на базе микропроцессора 8051

Разрядность: 8 бит

2.2 Микроконтроллер

Для реализации курсового проекта необходимо подобрать элементную базу. Ниже рассматриваются контроллеры различных фирм.

Производитель

Модель

Цена (руб)

Silicon Laboratories

C8051F001

300

NXP Semiconductor

P87LPC762BN

250

Winbond

W79E821ADG

220

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

Технические характеристики C8051F001

Серия

C8051F00x

Процессор

8051

Размер ядра

8-Bit

Скорость

20MHz

Число вводов/выводов

16

Напряжение источника (Vcc/Vdd)

2.7 V ~ 3.6 V

Технические характеристики P87LPC762BN

Серия

LPC700

Процессор

8051

Размер ядра

8-Bit

Скорость

20MHz

Число вводов/выводов

18

Напряжение источника (Vcc/Vdd)

2.7 V ~ 6 V

Технические характеристики W79E821ADG

Серия

W79

Процессор

8051

Размер ядра

8-Bit

Скорость

20MHz

Число вводов/выводов

18

Напряжение источника (Vcc/Vdd)

2.7 V ~ 5.5 V

Исходя из идентичных характеристик микроконтроллеров, было решено выбрать модель фирмы Winbond W79E821ADG из соображений наиболее низкой цены на данный продукт.

2.3 Инверторы

В качестве инвертора был выбран быстродействующий логический инвертер К293ЛП7Р (5П7). Цена на данные инверторы составляет 32 рубля. Данных инвертеров понадобится восемь штук. Выходит 256 рублей.

2.4 Светодиодные семисегментные индикаторы

Необходимо восемь светодиодных одноразрядных семисегментных индикаторов с общим анодом для реализации индикации. В качестве наиболее доступных были выбраны модели индикаторов BL-S56B-11UR красного цвета фирмы Betlux Electronics.

3. КОД УПРАВЛЯЮЩЕЙ ПРОГРАММЫ

Управляющая программа написана на языке ассемблер в пакете 8051 Integrated Development Environment.

Программа управляет действиями микроконтроллера по выводу информации на восемь семисегментных индикаторов в шестнадцатеричной системе счисления.

; Obrashenie k preryvaniyam

ORG 0

JMP START

ORG 3

JMP INT0

ORG 0Bh

JMP TF0

ORG 13h

JMP INT1

ORG 1Bh

JMP TF1

ORG 23h

JMP UART

INT0:

RETI

INT1:

RETI

; ;;;;;;;;;;;;;;PRERYVANIYA PO TAYMERU; ;;;;;;;;;;;;;;;;;;

TF0:

; Vyvod v akkum koda neobhodimoy cyfry dlya indikacyy

PUSH A

MOV P1, A

CALL NULLIND

; Dvizhenie nulya

MOV P0, A

POP A

RL A

RETI

TF1:

RETI

UART:

RETI

; ;;;;;;;;;;;;;;PRERYVANIYA PO TAYMERU; ;;;;;;;;;;;;;;;;;;;

; ;;;;;;;;;;;;;;;;TELO PROGRAMMY; ;;;;;;;;;;;;;;;;;;;

; Telo programmy

START:

MOV A,#1 111 1110b

MOV R4,#1 000 0110b

MOV R5,#1 001 0101b

MOV R6,#111 0010b

MOV R7,#1 010 0011b

; Ustanovka v edinicu bitov preryvaniy s vneshnih ustroystv

SETB EA

SETB EX0

SETB EX1

; Vkluchenie taymera i ustanovka rezhyma raboty

SETB TR0

MOV TMOD, #1010b

SETB ET0

; Semisegmentniy kod kazhdoy cyfry

MOV 32,#1 100 0000b; 0

MOV 33,#1 111 1001b; 1

MOV 34,#1 010 0100b; 2

MOV 35,#1 011 0000b; 3

MOV 36,#1 011 0001b; 4

MOV 37,#1 001 0010b; 5

MOV 38,#1 000 0010b; 6

MOV 39,#1 111 1000b; 7

MOV 40,#1 000 0000b; 8

MOV 41,#1 001 0000b; 9

MOV 42,#1 000 1000b; A

MOV 43,#1 000 0011b; b

MOV 44,#1 100 0110b; C

MOV 45,#1 010 0001b; d

MOV 46,#1 000 0110b; E

MOV 47,#1 000 1110b; F

; Kontroller nichego ne delaet

JMP $

; ;;;;;;;;;;;;;;;;TELO PROGRAMMY; ;;;;;;;;;;;;;;;;;;;;

; ;;;;;;;;;;;;;;;;;PODPROGRAMMY;;;;;;;;;;;;;;;;;;;;;;

; Podprogramma dlya opredeleniya semisegmentnogo koda

SEG:

ANL A,#1111b

ADD A,#32

MOV R0, A

MOV A,@R0

RET

; Opredelenie pozicyi nulya dlya indikacyy

NULLIND:

CJNE A,#1 111 1110b, NI2

MOV A, R4

CALL SEG

NI2:

CJNE A,#1 111 1101b, NI3

MOV A, R4

SWAP A

CALL SEG

NI3:

CJNE A,#1 111 1011b, NI4

MOV A, R5

CALL SEG

NI4:

CJNE A,#1 111 0111b, NI5:

MOV A, R5

SWAP A

CALL SEG

NI5:

CJNE A,#1 110 1111b, NI6

MOV A, R6

CALL SEG

NI6:

CJNE A,#1 101 1111b, NI7

MOV A, R6

SWAP A

CALL SEG

NI7:

CJNE A,#1 011 1111b, NI8

MOV A, R7

CALL SEG

NI8:

CJNE A,#111 1111b, NI9:

MOV A, R7

SWAP A

CALL SEG

NI9:

RET

; ;;;;;;;;;;;;;;;;;PODPROGRAMMY;;;;;;;;;;;;;;;;;;;;;

4. КОНТРОЛЬНЫЙ ПРИМЕР

На рисунке 4.1 представлена схема проекта в пакете Proteus, которая пока еще не запущена.

микроконтроллер индикация программа

Рисунок 4.1 — Схема проекта в пакете Proteus

Далее на рисунке 4.2 изображен запущенный проект в Proteus, проассемблированный код управляющей программы был успешно загружен в виртуальный микроконтроллер. Как можно заметить, проект выполняет необходимые функции — отображает информацию на индикаторах.

Рисунок 4.2 — Запущенный проект в Proteus

5. ЗАКЛЮЧЕНИЕ

В ходе работы над проектом были решены следующие задачи:

Получены необходимые знания в программировании для микроконтроллеров серии 8051.

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

ЛИТЕРАТУРА

www. radiokot. ru

http: //www. mikontr. narod. ru/siscom. html

http: //ru. wikipedia. org/

ПоказатьСвернуть
Заполнить форму текущей работой