Автор работы: Пользователь скрыл имя, 26 Января 2013 в 01:30, курсовая работа
В результате выполнения курсовой работы, с применением компьютерных технологий, а именно, программы Keil μVision2, был разработан программируемый генератор на базе однокристальной микроконтроллера 87C52 с тактовой частотой 24 МГц. Спроектированы электрическая, структурная, принципиальная и функциональная схемы генератора сигнала в соответствии с техническим заданием. Получен шестнадцатеричный код для программирования микросхемы памяти.
Анализ задания…………………………………………………………..…5
Формирование кодовой таблицы аналогового сигнала…………....…….5
Общая характеристика микроконтроллера………………………….…....8
Размещение кодовой таблицы в памяти……………………………..….22
Порт вывода аналогового сигнала..…………………………...…………23
Режим и порядок работы генератора сигнала……………………..…...23
Разработка структурной схемы генератора сигнала..…………….…….25
Разработка функциональной схемы генератора сигнала...……………..28
Разработка принципиальной схемы генератора………………………...30
Разработка алгоритма работы и управляющей программы микроконтроллера……..……………………………………………………..….31
Анализ результатов проектирования…………………….………………...…...33
Список литературы………………………………………………………………40
1.2.2 Параллельные порты ввода/вывода
В микроконтроллере имеется 4 многофункциональных 8-битовых порта ввода/вывода Р0, Р1, Р2 и Р3, предназначенные для обмена информацией с различными внешними устройствами, такими, как внешняя память программ и данных. Каждый порт является фиксатором-защелкой и может адресоваться как побайтно, так и побитно.
Порт P0 – двунаправленный порт ввода/вывода, выходные каскады с открытым стоком. Через порт Р0 выводится младший байт адреса, а также выдается и принимается в микроконтроллер байт данных при работе с внешней памятью программ/данных. Также задаются данные при программировании внутренней памяти программ и читается ее содержимое.
Порт Р1 является
двунаправленным портом ввода/вывода,
выходные каскады которого «подтянуты»
к единице внутренними
Через порт Р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 Таймеры/счетчики
В составе микроконтроллера
имеются независимые
При работе в качестве таймера содержимое 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 |
SР |
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 |
Бит глобального разрешения/ |
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.
Кодовые комбинации, соответствующие отсчетам аналогового сигнала, хранятся во внешней памяти программ по адресу 3000h. Обращение к ВПП при чтении кодовой таблицы производится по управляющему сигналу PSEN^. Для обеспечения энергонезависимости и надежности хранения информации, не обновляемой в процессе работы генератора, в качестве внешней памяти программ удобно использовать постоянную память - ПЗУ.
Минимальный объем внешней памяти программ, необходимый для хранения кодовой таблицы сигнала, соответствует количеству отсчетов. Следовательно, кодовая таблица располагается в 32 ячейках памяти, начиная с адреса 3000h по 301Fh.
Таким образом, с учетом размера и начального адреса кодовой таблицы, для внешней памяти программ можно использовать ПЗУ объемом не менее 16 Кбайт (с адресным пространством от 0000h до 3FFFh). При этом PSEN^ должен подаваться непосредственно на микросхему ПЗУ.
Порт вывода предназначен для формирования и выдачи аналогового сигнала. Обращение к порту вывода производится в адресном пространстве внешней памяти данных. Поэтому кодовые комбинации, поступающие на входы порта, сопровождаются сигналом WR^ микроконтроллера. Это предполагает наличие в схеме генератора устройства дешифрации адреса порта вывода аналогового сигнала.
Особенностью порта вывода является то, что его работу активизирует обращение по любому адресу от A400h-A4FFh.
Следовательно, любой из 256 адресов, соответствующих маске 1010 0100 XXXX XXXXb принадлежит порту вывода и восемь младших битов его адреса не имеют определяющего значения.
Таким образом, для устройства дешифрации адреса можно использовать принцип частичной дешифрации по восьми старшим разрядам.
Передача сигнала WR^ в порт вывода аналогового сигнала осуществляется через дешифратор адреса порта вывода, и производится только при обращении по адресу из указанного диапазона.
По заданию предусмотрено два режима работы программируемого генератора сигналов «Ожидание» и «Пуск». Индикация режимов производится светодиодами.
Информация о работе Разработка программируемого генератора сигнала