Помощь в написании студенческих работ
Антистрессовый сервис

Разработка микропроцессорной системы

КурсоваяПомощь в написанииУзнать стоимостьмоей работы

Как видно из рис. 1.2 и 1.3, 32 регистра общего назначения (РОН) включены в сквозное адресное пространство ОЗУ данных и занимают младшие адреса. Хотя физически регистры выделены из памяти данных, такая организация обеспечивает гибкость в работе. Регистры общего назначения прямо связаны с АЛУ. Каждый из регистров способен работать как аккумулятор. Большинство команд выполняются за один такт, при… Читать ещё >

Разработка микропроцессорной системы (реферат, курсовая, диплом, контрольная)

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

" Разработка микропроцессорной системы"

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

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

микропроцессорный система микросхема

Задание на курсовой проект

Исходные данные: спроектировать микропроцессорное устройство, содержащее: МП ATmega64.

Дополнительные требования: клавиатура, индикация — индикатора JE-AN16202.

1. Структура микроконтроллера ATMega

1.1. Назначение выводов

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

Микроконтроллер ATmega64 включает следующие функциональные блоки:

— 8-разрядное арифметическо-логическое устройство (АЛУ);

— внутреннюю флэш-память программ объемом 64 Кбайт с возможностью внутрисистемного программирования через последовательный интерфейс;

— 32 регистра общего назначения;

— внутреннюю EEPROM память данных объемом 4 Кбайт;

— внутреннее ОЗУ данных объемом 4 Кбайт;

— 6 параллельных 8-разрядных портов;

— 4 программируемых таймера-счетчика;

— 10-разрядный 8-канальный АЦП и аналоговый компаратор;

— последовательные интерфейсы UART0, UART0, TWI и SPI;

— блоки прерывания и управления (включая сторожевой таймер).

Рис. 1. Вид корпуса и обозначение выводов микроконтроллера ATmega64.

Port A (PA7.PA). 8-разрядный двунаправленный порт. К выводам порта могут быть подключены встроенные нагрузочные резисторы (отдельно к каждому разряду). Выходные буферы обеспечивают ток 20 мА и способность прямо управлять светодиодным индикатором. При использовании выводов порта в качестве входов и установке внешнего сигнала в низкое состояние, ток будет вытекать только при подключенных встроенных нагрузочных резисторах. Порт, А при наличии внешней памяти данных используется для организации мультиплексируемой шины адреса/данных.

Port B (PB7.PB0). 8-разрядный двунаправленный порт со встроенными нагрузочными резисторами. Выходные буферы обеспечивают ток 20 мА. При использовании выводов порта в качестве входов и установке внешнего сигнала в низкое состояние, ток будет вытекать только при подключенных встроенных нагрузочных резисторах. Порт В используется также при реализации специальных функций.

Port C (PC7.PC0). Порт С является 8-разрядным выходным портом. Выходные буферы обеспечивают ток 20 мА. Порт C при наличии внешней памяти данных используется для организации шины адреса.

Port D (PD7.PD0). 8-разрядный двунаправленный порт со встроенными нагрузочными резисторами. Выходные буферы обеспечивают ток 20 мА. При использовании выводов порта в качестве входов и установке внешнего сигнала в низкое состояние, ток будет вытекать только при подключенных встроенных нагрузочных резисторах.

Port Е (PЕ7.PЕ0). 8-разрядный двунаправленный порт со встроенными нагрузочными резисторами. Выходные буферы обеспечивают ток 20 мА. При использовании выводов порта в качестве входов и установке внешнего сигнала в низкое состояние, вытекающий через них ток обеспечивается только при подключенных встроенных нагрузочных резисторах. Порт E используется также при реализации специальных функций.

Port F (PF7.PF0). 8-разрядный входной порт. Входы порта используются также как аналоговые входы аналого-цифрового преобразователя.

#RESET. Вход сброса. Для выполнения сброса необходимо удерживать низкий уровень на входе более 50 нс.

XTAL1, XTAL2. Вход и выход инвертирующего усилителя генератора тактовой частоты.

TOSC1, TOSC2. Вход и выход инвертирующего усилителя генератора таймера/счетчика.

#WR, #RD. Стробы записи и чтения внешней памяти данных.

ALE. Строб разрешения фиксации адреса внешней памяти. Строб ALE используется для фиксации младшего байта адреса с выводов AD0-AD7 в защелке адреса в течение первого цикла обращения. В течение второго цикла обращения выводы AD0-AD7 используются для передачи данных.

AVCC. Напряжение питания аналого-цифрового преобразователя. Вывод подсоединяется к VCC через низкочастотный фильтр.

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

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

VСС, GND. Напряжение питания и земля.

1.2 Организация памяти и портов ввода/вывода

Микроконтроллеры AVR имеют раздельные пространства адресов памяти программ и данных (гарвардская архитектура). Организация памяти МК ATMega64 показана на рис. 1.2.

Рис. 2. Организация памяти микроконтроллера ATmega64

Высокие характеристики семейства AVR обеспечиваются следующими особенностями архитектуры:

* В качестве памяти программ используется внутренняя флэш-память. Она организована в виде массива 16-разрядных ячеек и может загружаться программатором, либо через порт SPI;

* 16-разрядные память программ и шина команд вместе с одноуровневым конвейером позволяют выполнить большинство инструкций за один такт синхрогенератора (50 нс при частоте FOSC=20 МГц);

* память данных имеет 8-разрядную организацию. Младшие 32 адреса пространства занимают регистры общего назначения, далее следуют 64 адреса регистров ввода-вывода, затем внутреннее ОЗУ данных объемом до 4096 ячеек. Возможно применение внешнего ОЗУ данных объемом до 60 Кбайт;

* внутренняя энергонезависимая память типа EEPROM объемом до 4 Кбайт представляет собой самостоятельную матрицу, обращение к которой осуществляется через специальные регистры ввода-вывода.

Как видно из рис. 1.2 и 1.3, 32 регистра общего назначения (РОН) включены в сквозное адресное пространство ОЗУ данных и занимают младшие адреса. Хотя физически регистры выделены из памяти данных, такая организация обеспечивает гибкость в работе. Регистры общего назначения прямо связаны с АЛУ. Каждый из регистров способен работать как аккумулятор. Большинство команд выполняются за один такт, при этом из регистров файла могут быть выбраны два операнда, выполнена операция и результат возвращен в регистровый файл. Старшие шесть регистров могут использоваться как три 16-разрядных регистра, и выполнять роль, например, указателей при косвенной адресации.

Рис. 3. Регистры общего назначения микроконтроллера ATmega64

Следующие 64 адреса за регистрами общего назначения занимают регистры ввода-вывода (регистры управления/состояния и данныхПри использовании команд IN и OUT используются адреса ввода-вывода с $ 00 по $3 °F. Но к регистрам ввода-вывода можно обращаться и как к ячейкам внутреннего ОЗУ. При этом к непосредственному адресу ввода-вывода прибавляется $ 20. Адрес регистра как ячейки ОЗУ приводится далее в круглых скобках. Регистры ввода-вывода с $ 00 ($ 20) по $1 °F ($ 3F) имеют программно доступные биты. Обращение к ним осуществляется командами SBI и CBI, а проверка состояния — командами SBIS и SBIC. В таблице B1 приведен список регистров ввода-вывода.

Таблица 1. Некоторые регистры ввода-вывода микроконтроллера ATmega64

Название

Функция

PORTG

Регистр данных порта G

DDRG

Регистр направления данных порта G

PING

Выводы порта G

PORTF

Регистр данных порта F

DDRF

Регистр направления данных порта F

SREG

Регистр состояния

SPH

Указатель стека, старший байт

SPL

Указатель стека, младший байт

TIMSK

Регистр маски прерываний от таймеров/счетчиков

TIFR

Регистр флагов прерываний от таймеров/счетчиков

MCUCR

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

MCUCSR

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

TCCR0

Регистр управления таймером/счетчиком Т0

TCNT0

Счетный регистр таймера/счетчика Т0

OCR0

Регистр совпадения таймера/счетчика Т0

ASSR

Регистр состояния асинхронного режима

TCCR1A

Регистр управления, А таймера/счетчика Т1

PORTA

Регистр данных порта А

DDRA

Регистр направления данных порта А

PINA

Выводы порта А

PORTB

Регистр данных порта В

DDRB

Регистр направления данных порта В

PINB

Выводы порта В

PORTC

Регистр данных порта С

DDRC

Регистр направления данных порта С

PINC

Выводы порта С

PORTD

Регистр данных порта D

DDRD

Регистр направления данных порта D

PIND

Выводы порта D

SPDR

Регистр данных SPI

SPSR

Регистр состояния SPI

SPCR

Регистр управления SPI

ACSR

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

ADMUX

Регистр управления мультиплексором АЦП

ADCSRA

Регистр управления и состояния АЦП

ADCH

Регистр данных АЦП, старший байт

ADCL

Регистр данных АЦП, младший байт

PORTE

Регистр данных порта Е

DDRE

Регистр направления данных порта Е

PINE

Выводы порта Е

PINF

Выводы порта F

Рис. 4 — Блок-схема микроконтроллера Atmega64

2. Микросхемы памяти

Микросхема ОЗУ приведена на рис. 13.

Рис. 13 УГО микросхемы КР565РУ1А

Назначение выводов

1 — напряжение питания (-Uп3);

2, 3, 4, 8, 9, 10, 13, 14, 15, 19, 20, 21 — входы адресные А0… А11;

5 — вход сигнала выбора микросхемы;

6 — вход информационный;

7 — выход информационный;

11 — напряжение питания (Uп2);

12— вход сигнала выбор режима;

16 — свободный;

17 — вход сигнала разрешения;

18 — напряжение питания (Uп1);

22 — общий.

ИС имеет три источника питания, первым подключают и последним отключают источник питания Uп3 = -5 В, так как он подается на подложку (кристалл), в противном случае может произойти тепловой пробой под воздействием двух других источников питания Uп1 и Uп2. Режим регенерации осуществляют по циклу считывания или считывания-модификации-записи при выполнении условия CS = 1, обеспечивающего блокировку информационных входов и выходов микросхемы и возможность работать ей «на себя». Выход микросхемы в это время находится в Z-состоянии. После включения питания нормальный режим функционирования устанавливается через восемь циклов.

Микросхема ПЗУ приведена на рис. 14.

Рис. 14 УГО микросхемы КР1601РР1

A0 ё A9 — входы адреса

D0 ё D3 — входы / выходы данных

CS — выбор кристалла

RD — вход сигнала считывания

PR — вход сигнала программирования

ER — вход сигнала стирания

UPR -вход напряжения программирования Режимы работы микросхемы представлены в таблице 1.

Таблица 1

CS

ER

PR

RD

A0ёA9

UPR

D1/0

Режим

X

X

X

X

X

Roff

Хранение

X

— 33ё-31 B

X

Общее стирание

A

—//-;

X

Избирательное стирание

A

—//-;

D1

Запись данных

A

— 33ё5 B

D0

Считывание

2.1 Карта распределения адресного пространства памяти

B000h

ПЗУ

A000h

9FFFh

ОЗУ

9ВFFh

Рис. 15. Карта распределения адресного пространства Согласно приведенной карте адресного пространства 1 Кб ОЗУ расположен c адреса 9BFFh, а 4 Кб ПЗУ с адреса A000h.

2.2 Селектор ОЗУ

Таблица. Микросхема ОЗУ, объёмом 1Кбайт, будет занимать ячейки памяти с 9BFFдо 9FFF, что соответствует адресу 1001 1ххх хххх хххх.

A15

A14

A13

А12

А11

А10

А9

А8

А7

А6

А5

А4

А3

А2

А1

А0

Х

Х

Х

Х

Х

Х

Х

Х

Х

Х

Х

в остальных случаях

2.3 Селектор ПЗУ

ПЗУ объёмом 4Кбайт занимает ячейки памяти с A000 до B000, что соответствует адресу 101x xххх хххх хххх.

Таблица

A15

A14

A13

А12

А11

А10

А9

А8

А7

А6

А5

А4

А3

А2

А1

А0

X

X

Х

Х

Х

Х

Х

Х

Х

Х

Х

Х

Х

Адресное пространство ОЗУ и ПЗУ удобно сделать на дешифраторе 3 в 8 К555ИД7.

Рис. 16. Адресный селектор памяти Где на входы подаются сигналы PC5, PC6, PC7. Так как по ним можно точно определить какая именно микросхема будет задействована: вывод 11 — микросхема ОЗУ; вывод 10 — микросхема ПЗУ.

3. Индикация

JE-AN 16 202

Характеристики? Режим отображения: STN / TN, прямой / обратный тип отображения? Формат экрана: 16 символов * 2 строки? Метод передачи: 1/16 Duty, ¼ Bias? Направление обзора: 6 O `clock/12 O’clock? Заднее освещение: LED / EL блок Таблица. Механические характеристики

Параметр

Спецификация

Ед. изм.

Размер модуля (Ш х В х Г)

80.0×36.0×15.0(10) Max.

мм

Видимая область (Ш х H/)

64.5×13.8

мм

Размер шрифта (Ш х В)

5.0×7.0

точка

Размер символа (Ш х В)

2.95×3.8

мм

Размер шага (Ш х В)

3.65×5.05

мм

Размер точки (Ш х В)

0.55×0.5

мм

Вес

Около 100 г

г

Таблица. Назначение контактов

Номер контакта

Символ

Уровень

Функция

VSS (GND)

0 V

Земля

VDD (VCC)

+ 5V

Напряжение питания логики

V0

;

Напряжения питания ЖК

RS

H / L

H: Ввод данных L: Ввод инструкций

R / W

H / L

H: Чтения данных L: Запись данных

E

H, H L

Сигнал разрешения

DB0

H / L

Шина данных

DB1

H / L

DB2

H / L

DB3

H / L

DB4

H / L

DB5

H / L

DB6

H / L

DB7

H / L

NC

;

NC

;

Блок схема Рис Схема подключения питания Рис. VDD — VO: Напряжение питания LCD

Таблица. Наборы инструкций

Инструкция

Код

Описание

Время запуска (макс.)

RS

R/W

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

Очистка дисплея

1.52 мс

Сброс

*

Возвращает дисплей при переключении

1.52 мс

Режим записи

I/D

SH

37 мкс

Управление дисплеем Вкл / Выкл

D

C

B

37 мкс

Отображение курсора или дисплея

S/C

R/L

*

*

37 мкс

Начало работы

DL

N

F

*

*

37 мкс

Установить CG Ram адрес

ACG

37 мкс

Установить DD RAM адрес

ADD

37 мкс

Чтение флага «занят» и адреса

BF

0 мкс

Запись данных в CG или DD RAM

AC

43 мкс

Чтение данных из CG или DD RAM

чтение

43 мкс

Таблица

Замечания

I/D

увеличение

уменьшение

SH

включить полный сдвиг

выключить полный сдвиг

S/C

Сдвиг дисплея

Установка курсора

R/L

сдвиг вправо

сдвиг влево

DL

Биты

Биты

N

Линии

Линии

F

5 х 11 Точек

5 х 8 точек

BF

Действующий внутренне

Может принимать инструкции

DD RAM Отображение данных оперативной памяти CG RAM: Генератор символов RAM

ACG: CG RAM Адрес ADD: CG RAM Адрес: Соответствует адресу курсора AC: Используется счетчик адреса для DD и CG RAM адреса ?: никакого эффекта.

Таблица. Символы шрифта Рис

4. Расчет потребляемой устройством мощности

Таблица

Микросхема

Ток потребления, мА

Потребляемая мощность, мВт

Количество

ATmega64

К555ИД7

9,7

КР1601РР1

КР565РУ1А

JE-AN16202

1.4

КР580ИР82

КР580ВА86

К155ЛЕ1

64,8

К500ЛЕ106Е

34,23

Для определения мощности, потребляемой устройством, необходимо просуммировать мощности, потребляемые каждым элементом в отдельности:

.

Максимальная мощность (клавиши нажаты), рассеиваемая на резисторах R1-R3, сопротивлением кОм:

мВт.

Значит мощность, потребляемая устройством:

мВт.

В качестве источника питающего напряжения можно применить любые маломощные трансформаторы на напряжения 220 / 3.3 V с использованием микросхемы-стабилизатора напряжения Б5−43, обеспечивающую максимальный ток на выходе до 1,99 А и позволяющей подключить нагрузку потребляющую до 150 Вт, что покрывает необходимые потребности.

Таблица. Спецификация

Поз. обозначение

Наименование

DD1

ATmega64

DD5

К555ИД7

DD6

КР1601РР1

DD7

КР565РУ1А

DD8

JE-AN16202

DD2,DD3

КР580ИР82

DD4

КР580ВА86

Элементы 2ИЛИ-НЕ

К155ЛЕ1

Элементы ИЛИ-НЕ

К500ЛЕ106Е

R1-R3

С2−23−0,25−1 кОм ± 5% А-В-В

5. Текст подпрограмм

Текст подпрограмм

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

Рассмотрим примеры инициализации и работы с устройствами ввода-вывода разработанного устройства.

;ATmega64

.include «m64def.inc»

.def out_fig_code = r21 ;код выводимого символа для индикатора

.def out_seg = r22 ;номер текущего сегмента

.def d1 = r4

.def d2 = r5

.def d3 = r6

def d1 = r7

.def d2 = r8

.def d3 = r9

def d1 = r10

.def d2 = r11

.def d3 = r12

def d1 = r13

.def d2 = r14

.def d3 = r15

def d1 = r16

.def d2 = r17

def d1 = r18

.def d2 = r19

.equ out_seg16 = 7

.dseg

.org 0×100

.cseg

.org 0

rjmp reset

;——————;

; начало программы

reset:

clr out_fig_code

clr out_seg

ldi r20, out_seg16

; программирование портов F и С на вывод

ldi r20, 7

out ddrc, r20

ldi r20, $ff

sts ddrf, r20

start:

ldi out_seg, 1; на сегмент 1

ldi out_fig_code, LLHLHHHL; вывод .

rcall out_pp; вызов подпрограммы вывода

ldi out_seg, 2; на сегмент 2

ldi out_fig_code, LLHLHHHL; вывод .

rcall out_pp; вызов подпрограммы вывода

ldi out_seg, 3; на сегмент 3

ldi out_fig_code, LLHLHHHL; вывод .

rcall out_pp; вызов подпрограммы вывода

rcall delay05

ldi out_seg, 4; на сегмент 4

ldi out_fig_code, LLHLHHHL; вывод .

rcall out_pp; вызов подпрограммы вывода

ldi out_seg, 5; на сегмент 5

ldi out_fig_code, LLHLHHHL; вывод .

rcall out_pp; вызов подпрограммы вывода

ldi out_seg, 6; на сегмент 6

ldi out_fig_code, LLHLHLHL; вывод *

rcall out_pp; вызов подпрограммы вывода

rcall delay05

ldi out_seg, 7; на сегмент7

ldi out_fig_code, LHLLHLLL; вывод H

rcall out_pp; вызов подпрограммы вывода

ldi out_seg, 8; на сегмент 8

ldi out_fig_code, LHLLLHLH; вывод E

rcall out_pp; вызов подпрограммы вывода

ldi out_seg, 9; на сегмент 9

ldi out_fig_code, LHLLHHLL; вывод L

rcall out_pp; вызов подпрограммы вывода

rcall delay05

ldi out_seg, A; на сегмент 10

ldi out_fig_code, LHLLHHLL; вывод L

rcall out_pp; вызов подпрограммы вывода

ldi out_seg, B; на сегмент 11

ldi out_fig_code, LHLLHHHH; вывод O

rcall out_pp; вызов подпрограммы вывода

ldi out_seg, C; на сегмент 12

ldi out_fig_code, LLHLHLHL; вывод *

rcall out_pp; вызов подпрограммы вывода

rcall delay05

ldi out_seg, D; на сегмент 13

ldi out_fig_code, LLHLHHHL; вывод .

rcall out_pp; вызов подпрограммы вывода

ldi out_seg, E; на сегмент 14

ldi out_fig_code, LLHLHHHL; вывод .

rcall out_pp; вызов подпрограммы вывода

ldi out_seg, F; на сегмент 15

ldi out_fig_code, LLHLHHHL; вывод .

rcall out_pp; вызов подпрограммы вывода

rcall delay05

ldi out_seg, 10; на сегмент 16

ldi out_fig_code, LLHLHHHL; вывод .

rcall out_pp; вызов подпрограммы вывода

;——————;

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

out_pp:

out PORTC, r20

sts PORTF, out_fig_code

out PORTC, out_seg

ret

Рис.

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