Разработка программируемого генератора сигнала

Автор работы: Пользователь скрыл имя, 26 Января 2013 в 01:30, курсовая работа

Описание работы

В результате выполнения курсовой работы, с применением компьютерных технологий, а именно, программы Keil μVision2, был разработан программируемый генератор на базе однокристальной микроконтроллера 87C52 с тактовой частотой 24 МГц. Спроектированы электрическая, структурная, принципиальная и функциональная схемы генератора сигнала в соответствии с техническим заданием. Получен шестнадцатеричный код для программирования микросхемы памяти.

Содержание работы

Анализ задания…………………………………………………………..…5
Формирование кодовой таблицы аналогового сигнала…………....…….5
Общая характеристика микроконтроллера………………………….…....8
Размещение кодовой таблицы в памяти……………………………..….22
Порт вывода аналогового сигнала..…………………………...…………23
Режим и порядок работы генератора сигнала……………………..…...23
Разработка структурной схемы генератора сигнала..…………….…….25
Разработка функциональной схемы генератора сигнала...……………..28
Разработка принципиальной схемы генератора………………………...30
Разработка алгоритма работы и управляющей программы микроконтроллера……..……………………………………………………..….31
Анализ результатов проектирования…………………….………………...…...33
Список литературы………………………………………………………………40

Файлы: 1 файл

Kursach (3).doc

— 5.79 Мб (Скачать файл)



 

1.2.2 Параллельные порты ввода/вывода

В микроконтроллере имеется 4 многофункциональных 8-битовых  порта ввода/вывода Р0, Р1, Р2 и Р3, предназначенные  для обмена информацией с различными внешними устройствами, такими, как  внешняя память программ и данных. Каждый порт является фиксатором-защелкой и может адресоваться как побайтно, так и побитно.

Порт P0 – двунаправленный порт ввода/вывода, выходные каскады с открытым стоком. Через порт Р0 выводится младший байт адреса, а также выдается и принимается в микроконтроллер байт данных при работе с внешней памятью программ/данных. Также задаются данные при программировании внутренней памяти программ и читается ее содержимое.

Порт Р1 является двунаправленным портом ввода/вывода, выходные каскады которого «подтянуты»  к единице внутренними нагрузочными резисторами. Линии P1.0 и P1.1 используются для обслуживания третьего счётчика/таймера (T/C2).

Через порт Р2 выводится  старший байт адреса (разряды А8-А15) внешней памяти программ и данных.

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

Альтернативные функции порта 3 представлены в таблице 5

 

Таблица 5 - Альтернативные функции Р3

Бит

Мнемоника

Назначение

P3.0

R´D

Вход данных последовательного порта

P3.1

T´D

Выход передатчика  последовательного порта

P3.2

INT0

Внешнее прерывание 0

P3.3

INT1

Внешнее прерывание 1

P3.4

T0

Внешний вход Т/С0

P3.5

T1

Внешний вход Т/С1

P3.6

WR

Строб записи во ВПД

P3.7

RD

Строб чтения из ВПД


 

В схеме генератора сигнала порты Р0 и Р2 используются при обращении к внешней памяти. Порт Р1 используется для организации управления работой генератора и индикации.

 

1.2.3 Таймеры/счетчики

В составе микроконтроллера имеются независимые программно-управляемые таймеры/счётчики событий Т/С0, Т/С1 и Т/С2. Они функционируют на основе регистровых пар TH0, TL0, TH1, TL1 и TH2, TL2.

При работе в  качестве таймера содержимое T/C инкрементируется в каждом машинном цикле, через каждые 12 периодов резонатора.

При работе в  качестве счётчика содержимое T/C инкрементируется под воздействием перехода из 1 в 0 внешнего входного сигнала, подаваемого на соответствующий (T0, T1) вход микроконтроллера. Опрос сигналов выполняется в каждом машинном цикле. Так как на распознавание перехода требуется два машинных цикла, то максимальная частота подсчёта входных сигналов равна 1/24 частоты резонатора. На длительность периода входных сигналов ограничений сверху нет. Для гарантированного прочтения входного считываемого сигнала он должен удерживать значение 1 как минимум в течение одного машинного цикла.

Для управления режимами работы и для организации взаимодействия таймеров T/C0 и T/C1 с системой прерываний используются регистры специальных функций TMOD и TCON.

 

Таблица 6 - Формат регистра TMOD

7

6

5

4

3

2

1

0

GATE

C\T

M1

M0

GATE

C\T

M1

M0

T\C1

T\C0


 

Назначение  битов M1, M0, если M1, M0 равны 0 то режим 0, если M1=0, M0=1 то режим 1, если M1=1, M0=0 то режим 2, если M1, M0 равны 1 то режим 3.

Бит C\T, если C\T=1 то счётчик, если C\T=0 то таймер.

Бит GATE- управление режимом блокировки.

GATE=1 таймер/счётчик разрешён, если вход INT0=1(аппаратное разрешение).

GATE=0 таймер/счётчик разрешён, если бит разрешения TR0 в регистре TCON=1(программное разрешение).

 

Таблица 7 - Формат регистра TCON

7

6

5

4

3

2

1

0

TF1

TR2

TF0

TR0

IE1

IT1

IE0

IT0

К таймерам

К прерыванию


 

Бит IT, управление типом внешнего прерывания, 1-прерывание по срезу, 0- прерывание по уровню

Бит IE- флаг прерывания по внешнему уровню, флаг IE устанавливается в 1 при переходе запроса на соответствующий внешний уровень.

Бит TR управление работой таймера/счетчика  TR0=0-остановка, TR0=1-работа.

Бит TF флаг переполнения таймера, 1- переполнение таймера, 0 нет переполнения, формируется запрос на прерывание при переполнении таймера.

Для таймер/счетчиков  режимы работы 0, 1 и 2 одинаковы, режимы 3 различны.

Режим 0. Соответствует тринадцатиразрядному таймеру-счетчику, который состоит из регистра THx и пяти младших битов регистра TLx, выполняющего функцию предделителя частоты на 32.

Режим 1. В этом режиме TL0 и TH0 образуют единый 16 разрядный регистр При переходе из состояния «все единицы» в состояние «все нули», устанавливается флаг переполнения в регистре TCON и таймер продолжает счёт с нуля.

Режим 2. При переходе из состояния «все единицы» в состояние «все нули» 8-битного счётчика TL1 приводит не только к установке флага TF1, но и автоматически перезагружает в TL1 содержимое старшего байта (TH1) таймерного регистра, которое предварительно было задано программным путем. Перезагрузка оставляет содержимое TH1 неизменным.

Режим 3. Используется редко. T1 останавливается, T0 работает как два незавимимых 8 битных таймера/счётчика.

Длительность формирования каждой кодовой комбинации определяется таймером/счетчиком T0 микроконтроллера. При переполнении таймера формируется запрос прерывания, в процессе обслуживания которого микроконтроллер читает из памяти и выводит в порт следующую кодовую комбинацию и начинает отсчет длительности следующего такта.

Определим количество машинных циклов, соответствующих временному интервалу ts при заданной рабочей частоте микроконтроллера. Длительность одного машинного цикла при тактовой частоте 24 МГц составит:

,

.

 

Определим количество машинных циклов М, необходимых для формирования временного интервала 25 мкс:

.

Наиболее удобным  режимом работы таймера T0 является Режим 2, обеспечивающий автоматическую перезагрузку регистра TL0 при переполнении. Перед включением таймера в регистр TH0 необходимо записать число Х, с  которого начинает счет регистр TL0 (начальную уставку таймера). Так как счет производится по возрастанию, значение числа Х, соответствующее отсчету 50 машинных циклов до переполнения таймера (значение FFh+1), определяется выражением:

,

.

Таким образом, перед первым включением таймера T0 необходимо определить его режим работы, установив значения соответствующих битов в регистре TMOD, и запись в регистры TL0 и TH0 начальную уставку CEh.

 

1.2.4 Система  прерываний 87C52

 

Микроконтроллер 87C52 имеет четырехуровневую систему прерываний, поддерживает шесть векторов  прерывания: от внешнего источника, от таймеров, от последовательго порта.

 

Таблица 8 – Структура системы прерываний.

Источник

Приоритет опроса

Флаг запроса

Векторный адрес

Назначение

1

2

3

4

5

Х0

1

IE0

03Н

Внешнее событие  на выводе INT0

Т0

2

TF0

0ВН

Переполнение T/C0

Продолжение таблицы 8

1

2

3

4

5

Х1

3

IE1

13Н

Внешнее событие  на выводе INT1

Т1

4

TF1

1ВН

Переполнение T/C1

5

RI, TI

23Н

Последовательный  порт: приём или передача

Т2

6

TF2, EXF2    

2ВН

Прерывание  от T/C2


 

Каждое из прерываний может быть индивидуально разрешено или запрещено установкой или сбросом соответствующих битов в регистре IE. В этом регистре также присутствует бит глобального (одновременного) запрещения всех прерывании вне зависимости от состояния соответствующего бита индивидуального разрешения/запрещения.

 

Таблица 9 - Приоритеты прерываний

Биты приоритета

Уровень приоритета прерываний

IPH.x

IP.x

0

0

Уровень  0 (низкий)

0

1

Уровень 1

1

0

Уровень 2

1

1

Уровень 3 (высокий)


 

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

 

 

Таблица 10 - Регистр IE

БИТ

СИМВОЛ

ФУНКЦИЯ

1

2

3

IE.7

EA

Бит глобального разрешения/запрещения прерывания. Если ЕА=0, все прерывания запрещены. Если ЕА=1, каждое из прерываний может быть индивидуально разрешено или запрещено установкой или сбросом его индивидуального бита разрешения прерывания.

IE.6

ЕС

Не используется

IE.5

ЕТ2

Бит индивидуального  разрешения прерывания от таймера/счетчика 2

IE.4

ЕS

Бит индивидуального  разрешения прерывания от последовательного приемопередатчика

IE.3

ЕТ1

Бит индивидуального  разрешения прерывания от таймера/счетчика 1

IE.2

ЕХ1

Бит индивидуального  разрешения прерывания от внешнего сигнала 1

IE.1

ЕТ0

Бит индивидуального  разрешения прерывания от таймера/счетчика 0

IE.0

ЕХ0

Бит индивидуального  разрешения прерывания от внешнего сигнала 0


 

Для организации  обслуживания прерывания необходимо в  ячейку памяти программ с адресом  0Вh (вектор прерывания таймера Т0) записать код команды безусловного перехода к подпрограмме обработки прерывания таймера Т0. 

 

    1. Размещение кодовой таблицы сигнала в памяти

 

Кодовые комбинации, соответствующие отсчетам аналогового сигнала, хранятся во внешней памяти программ по адресу 3000h. Обращение к ВПП при чтении кодовой таблицы производится по управляющему сигналу PSEN^. Для обеспечения энергонезависимости и надежности хранения информации, не обновляемой в процессе работы генератора, в качестве внешней памяти программ удобно использовать постоянную память - ПЗУ.

Минимальный объем  внешней памяти программ, необходимый для хранения кодовой таблицы сигнала, соответствует количеству отсчетов. Следовательно, кодовая таблица располагается в 32 ячейках памяти,  начиная с адреса 3000h по 301Fh.

Таким образом, с учетом размера и начального адреса кодовой таблицы, для внешней памяти программ можно использовать ПЗУ объемом не менее 16 Кбайт (с адресным пространством от 0000h до 3FFFh). При этом PSEN^ должен подаваться непосредственно на микросхему ПЗУ.

 

    1. Порт вывода аналогового сигнала

 

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

Особенностью  порта вывода является то, что его  работу активизирует обращение по любому адресу от A400h-A4FFh.

Следовательно, любой из 256 адресов, соответствующих  маске      1010 0100 XXXX XXXXb принадлежит порту вывода и восемь младших битов его адреса не имеют определяющего значения.

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

Передача сигнала WR^ в порт вывода аналогового сигнала осуществляется через дешифратор адреса порта вывода, и производится только при обращении по адресу из указанного диапазона.

 

    1. Режимы работы генератора сигнала

 

По заданию  предусмотрено два режима работы программируемого генератора сигналов «Ожидание» и «Пуск». Индикация режимов производится светодиодами.

Информация о работе Разработка программируемого генератора сигнала