Модель светофора


Главная / ЭКВМ / Программы для ЭКВМ / Учебные задачи

Описание

макет модели светофора

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

Изучение управляющей программы клавишной ЭВМ "Электроника МК" и самостоятельное изменение диаграмм работы модели светофора позволяет получить навыки в программировании.

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

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

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

Сборка модели

Принципиальная электрическая схема модели и перечень элементов приведены на рисунке.

Схема электрическая модели светофора

Устройство состоит из шести ключей, выполненных на n-p-n транзисторах VT1 - VT6 и резисторах R1-R12 по схеме с общим эмиттером. Входы ключей подключены к соответствующим линиям шины данных параллельного порта ЭВМ (разъем "ИПР"). В цепь коллектора каждого транзистора включен токоограничивающий резистор R13-R18 и светодиоды VD1-VD12.

Питание устройства может производится от разъема "ВУ" ЭКВМ, как указано в схеме, или от любого внешнего источника напряжением от 9 до 15 В. Ток потребления устройства от источника питающего напряжения - не более 200 мА. При питании напряжением менее 15 В количество светодиодов в канале увеличивать не рекомендуется.

плата макета

Транзисторы КТ503Б могут быть заменены на любые низкочастотные кремниевые n-p-n транзисторы с допустимым напряжением коллектор-эмиттер не менее 20В и коэффициентом передачи не менее 80. Светоизлучающие диоды АЛ307 могут быть заменены на светодиоды другого типа, с постоянным прямым током 20-25 мА.

Программа с хранением диаграмм в памяти программ ЭКВМ

Программа (табл. 1) размещается в памяти программ ЭКВМ с начала любой страницы (адрес кратный числу 100) и занимает две страницы. Далее предполагается, что программа загружена с адреса 0000.

Программа состоит из двух частей - собственно управляющей программы (41 байт с нулевого адреса) и одной или нескольких таблиц, размещенных в памяти программ ЭКВМ и описывающих временные диаграммы работы модели светофора (с адреса 100).

Перед запуском программы в регистр RA записывается адрес начала нужной таблицы в памяти программ - значения 100, 120 или 160 соответственно.

Запуск программы производится нажатием клавиш "В/О", "С/П". Остановка программы - нажатием "С/П".

Таблица 1

  xx0 xx1 xx2 xx3 xx4 xx5 xx6 xx7 xx8 xx9
00x 2 F 102 П 9 1 РР П 90 90 РР П 90 93
01x ИП А РР П 90 42 РР ИП 90 44 ИП 9 × РР ИП
02x 90 44 + F x≠0 10 РР П 90 50 РР ИП 90
03x 44 РР П 90 91 РР ИП 90 50 F x=0 34 БП
04x 14                  
Диаграмма 1
10x 0Ah 00h 21h 02h 00h 12h 0Ah 00h 0Ch 02h
11x 00h 12h 00h 00h            
Диаграмма 2
12x 08h 00h 21h 00h 32h 01h 00h 32h 21h 00h
13x 32h 01h 00h 32h 21h 02h 00h 13h 08h 00h
14x 0Ch 00h 32h 08h 00h 32h 0Ch 00h 32h 08h
15x 00h 32h 0Ch 02h 00h 1Ah 00h 00h    
Диаграмма 3
16x 00h 32h 12h 00h 32h 00h 00h 00h    

В адресах 00-02 в регистр R9 заносится число 100. В адресах 03-09 число 1 записывается в регистры функций R9090 (устанавливается режим параллельного порта - статический) и R9093 (тип операции - передача данных во внешнее устройство).

В 10-13 адрес начала таблицы диаграммы из RA передается в R9042 (индексный регистр памяти программ).

В 14-22 из таблицы считывается и вычисляется продолжительность очередного шага диаграммы. Считывание значения производится из регистра R9044 (чтение содержимого памяти программ с автоинкрементом). Автоинкремент в данном случае означает увеличение значения индексного регистра R9042 на единицу после выполнения операции чтения. Первый считанный байт умножается на число 100 из R9. Второй байт складывается с полученным результатом. В 23-24 полученное значение сравнивается с нулем. Если значение продолжительности шага равно нулю, происходит переход на адрес 10. Таким образом диаграмма повторяется циклически до останова программы пользователем. В 25-27 ненулевое значение продолжительности, выраженное в сотых долях секунды, записывается в R9050 (таймер 0).

В 28-33 значение маски, описывающей состояние светодиодов, считывается из R9044 (чтение содержимого памяти программ с автоинкрементом) и заносится в R9091 (регистр сигналов D0-D7 параллельного порта).

В 34-38 проверяется значение регистра R9050 (таймер 0). Пока значение не равно нулю команда перехода возвращает программу на повторное чтение регистра таймера. При этом каждые 0,01 секунды число записанное в R9050 уменьшается на единицу.

В 39-40 происходит безусловный переход на адрес 14. С него начинается разбор очередной строки таблицы диаграммы.

В адресах 100-113 расположена таблица, соответствующая диаграмме работы простого светофора. В 120-157 размещена диаграмма работы более сложной модели с мигающим зеленым сигналом и одновременным включением красного и желтого перед зеленым. В 160-167 находится диаграмма предупреждающего светофора (мигающий желтый). Подробно диаграммы работы описаны в приложении.

Каждая таблица состоит из строк по три байта. В первых двух байтах хранится продолжительность шага диаграммы. В первом - целые секунды, во втором - сотые доли. В третьем байте находится маска. Если продолжительность равна нулю, значение маски не считывается, поэтому последняя строка каждой таблицы может состоять только из двух байт.

Программа с хранением диаграмм в регистрах памяти

Программа (табл. 2) размещается в памяти программ ЭКВМ с начала любой страницы и занимает 33 байта. Далее предполагается, что программа загружена с адреса 0000.

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

Запуск программы производится нажатием клавиш "В/О", "С/П". Остановка программы - нажатием "С/П".

Таблица 2

  x0 x1 x2 x3 x4 x5 x6 x7 x8 x9
0x 2 F 102 П 9 1 РР П 90 90 РР П 90 93
1x ИП А 1 - П 4 К ИП 4 F x≠0 10 ИП 9 × РР П
2x 90 50 К ИП 4 РР П 90 91 РР ИП 90 50 F x=0
3x 26 БП 14              

В адресах 00-02 в регистр R9 заносится число 100. В адресах 03-09 число 1 записывается в регистры функций R9090 (устанавливается режим параллельного порта - статический) и R9093 (тип операции - передача данных во внешнее устройство).

В 10-13 номер регистра начала таблицы диаграммы из RA передается в R4. Поскольку при косвенном обращении к R4 автоикремент (автоматическое прибавление единицы к содержимому регистра) происходит перед выполнением операции, из содержимого RA предварительно вычитается единица. Таким образом, при первом обращении к диаграмме командой КИП4 будет считано первое число из таблицы.

В 14-16 из таблицы считывается продолжительность очередного шага диаграммы и сравнивается с нулем. Если значение продолжительности шага равно нулю, происходит переход на адрес 10. Таким образом диаграмма повторяется циклически до останова программы пользователем.

В 17-21 считанное из регистра памяти время в секундах умножается на 100 (из R9) для получения значения в сотых долях секунды. Ненулевое значение продолжительности, выраженное в сотых долях секунды, записывается в R9050 (таймер 0).

В 22-25 значение маски, описывающей состояние светодиодов, считывается из таблицы (косвенно по содержимому R4) и заносится в R9091 (регистр сигналов D0-D7 параллельного порта).

В 26-30 проверяется значение регистра R9050 (таймер 0). Пока значение не равно нулю команда перехода возвращает программу на повторное чтение регистра таймера. При этом каждые 0,01 секунды число записанное в R9050 уменьшается на единицу.

В 31-32 происходит безусловный переход на адрес 14. С него начинается разбор очередной строки таблицы диаграммы. Подробно диаграммы работы описаны в приложенииБ.

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

В табл. 3 приведены диаграммы, аналогичные содержащимся в программе из табл. 1. Указанные в таблице значения следует занести в регистры памяти перед запуском программы. Для приведенных в таблице номеров регистров в RA следует занести значения 100, 120 или 160 соответственно. Можно перенести таблицы в другие регистры памяти, одновременно изменяя содержимое RA.

Таблица 3

Номер регистра Продолжительность шага, сек. Номер регистра Маска
Диаграмма 1
100 10 101 33
102 2 103 18
104 10 105 12
106 2 107 18
108 0    
Диаграмма 2
120 8 121 33
122 0,5 123 1
124 0,5 125 1
126 0,5 127 33
128 0,5 129 33
130 2 131 19
132 8 133 12
134 0,5 135 8
136 0,5 137 12
138 0,5 139 8
140 0,5 141 12
142 2 143 26
144 0    
Диаграмма 3
160 0,5 161 18
162 0,5 163 0
164 0    

Программа с автоматическим переключением диаграммы работы

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

Для отключения светофора в ночное время достаточно дополнить программу из табл 2. несколькими командами (см. табл. 4). Длина программы при этом увеличивается с 33 до 49 байт.

Таблицы, описывающие временные диаграммы работы модели светофора, размещаются в регистрах данных и аналогичны таблицам предыдущей программы. Перед запуском программы в регистр RA записывается номер регистра, соответствующий началу диаграммы для дневного времени, в RC - для ночного. В RB и RD записывается время переключения в дневной и ночной режим (RD>RB) в часах и минутах.

В качестве примера можно указать значения RA=120; RC=160; RB=6,30; RD=23,30. В этом случае светофор будет работать по диаграмме 2 с 6-30 до 23-30 и по диаграмме 3 в остальное время.

Запуск программы производится нажатием клавиш "В/О", "С/П". Остановка программы - нажатием "С/П".

Таблица 4

  x0 x1 x2 x3 x4 x5 x6 x7 x8 x9
0x 2 F 102 П 9 1 РР П 90 90 РР П 90 93
1x РР ИП 90 55 П 8 ИП В - F x<0 21 ИП А БП
2x 27 ИП 8 ИП D - F x≥0 18 ИП С 1 - П 4
3x К ИП 4 F x≠0 10 ИП 9 × РР П 90 50 К ИП 4 РР П
4x 90 91 РР ИП 90 50 F x=0 42 БП 30  

В адресах 00-02 в регистр R9 заносится число 100. В адресах 03-09 число 1 записывается в регистры функций R9090 (устанавливается режим параллельного порта - статический) и R9093 (тип операции - передача данных во внешнее устройство).

В 10-13 из регистра функции R9055(часы реального времени) считывается значение текущего времени в часах и минутах и заносится в R8.

В 14-17 значение сравнивается с содержимым RB, если время больше RB, происходит переход на адрес 21.

В 18-20 в стек вызывается содержимое RA - адрес начала дневной диаграммы и происходит переход на адрес 27.

В 21-25 значение текущего времени извлекается из R8 и сравнивается с RD. Если текущее время меньше RD происходит переход на адрес 18.

В 26 в стек вызывается содержимое RС - адрес начала ночной диаграммы.

В 27-29 из адреса начала диаграммы вычитается единица и полученное значение заносится в R4.

В 30-32 из таблицы считывается продолжительность очередного шага диаграммы и сравнивается с нулем. Если значение продолжительности шага равно нулю, происходит переход на адрес 10.

В 33-37 считанное из регистра памяти время в секундах умножается на 100 (из R9) для получения значения в сотых долях секунды. Ненулевое значение продолжительности, выраженное в сотых долях секунды, записывается в R9050 (таймер 0).

В 38-41 значение маски, описывающей состояние светодиодов, считывается из таблицы (косвенно по содержимому R4) и заносится в R9091 (регистр сигналов D0-D7 параллельного порта).

В 42-46 проверяется значение регистра R9050 (таймер 0). Пока значение не равно нулю команда перехода возвращает программу на повторное чтение регистра таймера. При этом каждые 0,01 секунды число записанное в R9050 уменьшается на единицу.

В 47-48 происходит безусловный переход на адрес 30. С него начинается разбор очередной строки таблицы диаграммы.


Диаграммы работы светофора

Диаграмма 1 - простой светофор

Диаграмма 1. Простой светофор.


Диаграмма 2 - светофор с мигающим зеленым сигналом

Диаграмма 2. Светофор с мигающим зеленым сигналом.


Диаграмма 3 - предупреждающий светофор

Диаграмма 3. Предупреждающий светофор (мигающий желтый).




Описание модели светофора в формате PDF: swetofor.pdf (574 kB).



НПП "СЕМИКО" (383) 271-01-25 (многоканальный)