СКАЧАТЬ:
Вычислительные машины, сети и системы
Проектирование цифровых устройств на микроконтроллере
Отчет по лабораторной работе № 1
Цель работы: спроектировать цифровое устройство «таймер обратного отсчёта» на микроконтроллере в подпрограмме ISIS программной среды Proteus, после чего написать прошивку для микроконтроллера в программе mikroPascal PRO for AVR, после окончания времени зажечь светодиод.
Ход работы:
Для реализации быстродействующих цифровых устройств (в том числе и предназначенных для обработки аналоговых сигналов) обычно применяются программируемые логические интегральные схемы.
Рассмотрим пример разработки схемы и написания программы для микроконтроллера. Прежде всего, не нужно забывать, что программа не может существовать отдельно независимо от схемы устройства. Поместим в рабочее поле микроконтроллер AT90S8535 (рисунок 1).
Рисунок 1 - Микроконтроллер AT90S8535
Следующий блок, который обязательно должен входить в состав часов - это устройство индикации. Выберем в качестве устройства отображения светодиодные семисегментные индикаторы. Так как у данного микроконтроллера есть четыре восьмиразрядных параллельных порта, то к ним можно подключить четыре семисегментных светодиодных индикатора. Четырёх индикаторов достаточно для отображения информации о текущем времени. Это десятки и единицы минут и десятки и единицы секунд. Кроме того, присоединим к ножке микроконтроллера, а именно порту С, светодиод красного цвета и изобразим перечисленные соединения на рисунке 2.
Рисунок 2 – Присоединение семисегментных индикаторов и светодиода к микроконтроллеру
Помимо того, поместим регулятор напряжения (рисунок 3).
Рисунок 3 – Регулятор напряжения
Он будет обеспечивать бесперебойную подачу напряжения в соединениях данного устройства.
Таким образом, получим общую схему устройства (рисунок 4).
Рисунок 4 – Схема разрабатываемого устройства
На языке Pascal напишем программу для прошивки микроконтроллера, учитывая особенности его работы, после написания которого, скомпилировав, получим файл прошивки.
Текст процедур:
program net;
var cifers:array[0..9] of integer;
var minH,minL,sekH,sekL: integer;
{ Declarations section }
procedure FillArray;
begin
cifers[0] :=64;
cifers[1] :=121;
cifers[2] :=36;
cifers[3] :=48;
cifers[4] :=25;
cifers[5] :=18;
cifers[6] :=2;
cifers[7] :=120;
cifers[8] :=0;
cifers[9] :=16;
minH:=0;
minL:=0;
sekH:=3;
sekL:=0;
end;
procedure ShowTime;
begin
PortD:=cifers[minH];
PortB:=cifers[minL];
PortA:=cifers[sekH];
PortC:=cifers[sekL];
end;
procedure Tick;
begin
if(minH=0) and (minL=0) and (sekL=0) and (sekH=0) then begin minH:=0; minL:=0; sekH:=0; sekL:=0; PortC.7:=1; end else begin sekL:=sekL-1; if sekL<0 then begin sekH:=sekH-1; sekL:=9; end; if sekH<0 then begin minL:=minL-1;sekH:=5; end; if minL<0 then begin minH:=minH-1; minL:=9;end; if minH<0 then minH:=5; end;
end;
begin
FillArray;
ddra:=$FF;
ddrb:=$FF;
ddrc:=$FF;
ddrd:=$FF;
while true do begin
ShowTime;
Tick;
delay_ms(1000);
end;
end.
Согласно тексту процедур будем производить отсчёт с тридцати секунд, покажем текущие показания на рисунке 5.
Рисунок 5 – Текущее показание таймера
И затем покажем конечный результат его показания (рисунок 6).
Рисунок 6 – Конечный результат показания таймера
Как видно на рисунке, светодиод в конце времени зажёгся.
Вывод
Сделав данную лабораторную работу, было спроектировано цифровое устройство «таймер обратного отсчёта» на микроконтроллере, при этом получены начальные навыки проектирования в программе Proteus, которая оказалась удобной для этих целей, так как в ней имеется большое количество различных электронных устройств.