Страница: 6/9
L – Сигнал низкого уровня
H – Сигнал высокого уровня
В качестве блока цифровых индикаторов используется блок АЛС318.
Этот блок состоящий из 9 индикаторов с общим катодом. На входы А-G подается код для высвечивания цифры. Соответствие сегментов цифры и входов показано на рисунке.
Индикаторы работают в динамическом режиме,
А т. е. Включаясь последовательно с большой частотой
Номер текущего индикатора задается путем подачи
F G В низкого уровня на входы К1-К9 (соответственно
порядковому номеру индикатора.
E С
D
2.4 Конструкция устройства.
Расположение элементов напечатной плате показано на рисунке 4. Обозначения соответствуют обозначениям на принципиальной электрической схеме. Разъемы для подключения внешних устройств и питания находятся на корпусе прибора и соединяются с платой шлейфами.
3. Программное обеспечение микроконтроллера.
3.1. Логическая структура устройства
После включения устройства начинает работать программа начальных установок . Производится сброс всех регистров и установка начальных параметров работы программы. После чего выполнение программы останавливается и происходит ожидание ввода данных включения/выключения каналов через последовательный порт СОМ. По окончании ввода программа вновь останавливается до нажатия кнопки ПУСК. После ее нажатия сначала запускается счетчик времени а затем основной цикл вывода времени на индикатор. Программа постоянно находится в этом цикле, а отсчет времени и проверка включения/выключения каналов производится по прерыванию таймера С/Т0.
Таким образом в работу системы можно разделить на три основных части:
1. Включение, установка начальных параметров и ожидание ввода данных.
2. Ввод данных, пуск и переход к основному циклу программы.
3. Обработка прерывания таймера.
Первые две части работы системы можно описать следующим алгоритмом (на схеме изображена логика работы программы, далее приводится подробное описание алгоритма ее работы)
Алгоритм работы программы
[Инициализация порта и ввод данных]
M1: While (RI=0) do { };
A := SBUF;
RI :=0;
C := A.3;
R0 := 20H+A*4;
For ( i = 0 to 4) do {
While (RI=0) do { };
A := SBUF;
RI :=0;
Write (@R0, A);
R0 := R0+1; }
If (C=0) then goto M1;
While (P3.4 = 1) do { };
[Инициализация и пуск таймера]
TMOD := 1
TF0 := 0
TL0 := low(15000);
TH0 := High(15000);
ET0 := 1
TR0:= 1
[Индикация времени]
M2: A := R4;
Gosub INDRAS [блок преобразования числа в код по одной цифре
[ Для вывода на индикатор (будет описан далее)]
P1/4 := 0 ; P1.5 :=0
P1 := A
Pause 5(ms)
P1 := B
P1/5 :=1
Pause 5(ms)
A := R3;
Gosub INDRAS
P1/4 := 1 ; P1.5 :=0
P1 := A
Pause 5(ms)
P1 := B
P1/5 :=1
Pause 5(ms)
Goto M2
В программе приняты следующие соглашения – регистры R1 – R4 хранят информацию об миллисекундах, секундах, минутах и часах соответственно.
Бит С служит показателем конца ввода данных с ком-порта (1 – последний канал, ноль – не последний канал). Сохранение времени включения и выключения для нулевого канала начинается с ячейки с адресом 20Н; сначала записываются часы, затем минуты включения, затем часы и минуты выключения. Таким образом для каждого канала в памяти отводится 4 байта, общее количество оперативной памяти используемое программой 32 байта. Структура использования памяти описана в следующей таблице:
Реферат опубликован: 26/06/2009