Система регулирования дорожного движения

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информатика, ВТ, телекоммуникации
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    108,1 Кб
  • Опубликовано:
    2012-11-15
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Система регулирования дорожного движения

Содержание

Техническое задание

. Объект автоматизации

.1 Описание и анализ функций, выполняемых МПС устройством

.1 Причины выбора микроконтроллера PIC 16F84

. Принцип действия устройства

.1 Функциональная схема

.2 Описание элементов схемы

. Программное обеспечение

.1 Алгоритм программы

.2 Листинг программы

Приложение

Техническое задание

Спроектировать систему регулирования дорожного движения на перекрестке, т. е. систему управления светофорами. Также создать программное обеспечение для этой системы. Система должна реализовываться на основе микроконтроллера группы PIC 16F84. Основным инструментом для разработки программного обеспечения использовать язык ассемблера контроллера данной группы.

В системе должен, предусмотрен 8 - разрядных параллельных порт CENTRONICS. Через этот порт должно осуществляться управление со стороны компьютера.

регулирование светофор программа

1.  Объект автоматизации

1.1 Описание и анализ функций, выполняемых МПС устройством

У данной системы две основные задачи:

) Управление светофорами в обычном режиме.

) Прием данных от компьютера и анализируя эти данные выполнять определенные действия в управлении (например: включить во всех направлениях красный свет или зеленый).

.2 Причины выбора микроконтроллера PIC 16F84

Микроконтроллер PIC16F8X относятся к семейству 8-разрядных КМОП микроконтроллеров группы PIC16CXXX, для которых характерны низкая стоимость, полностью статическая КМОП - технология и высокая производительность.

Микроконтроллер PIC16F8X использует гарвардскую архитектуру с RISC-процессором, обладающую следующими основными особенностями:

используются только 35 простых команд;

все команды выполняются за один цикл (400 нс при частоте 10 МГц), кроме команд перехода, которые требуют 2 циклов;

рабочая частота 0 Гц ... 10 МГц;

раздельные шины данных (8 бит) и команд (14 бит);

х 14 или 1024 х 14 память программ, выполненная на ПЗУ или электрически перепрограммируемой Flash- памяти;

восьмиразрядных регистров специальных функций (SFR);

восьмиуровневый аппаратный стек;

прямая, косвенная и относительная адресация данных и команд;

или 68 восьмиразрядных регистров общего назначения (GPR) или ОЗУ;

четыре источника прерывания:

внешний вход RB0/INT;

переполнение таймера TMR0;

изменение сигналов на линиях порта B;

завершение записи данных в память EEPROM;

x 8 электрически перепрограммируемая EEPROM память данных с возможностью выполнения 1000000 циклов стирания/записи;

сохранение данных в EEPROM в течение как минимум 40 лет.

Упрощенная структурная схема МК подгруппы PIC16F8X приведена на рис. 1.

Рис. 1. Структурная схема МК подгруппы PIC16F8X.

Архитектура основана на концепции раздельных шин и областей памяти для данных и для команд (гарвардская архитектура). Шина данных и память данных (ОЗУ) - имеют ширину 8 бит, а программная шина и программная память (ПЗУ) имеют ширину 14 бит. Такая концепция обеспечивает простую, но мощную систему команд, разработанную так, что битовые, байтовые и регистровые операции работают с высокой скоростью и с перекрытием по времени выборок команд и циклов выполнения. 14-битовая ширина программной памяти обеспечивает выборку 14-битовой команды в один цикл. Двухступенчатый конвейер обеспечивает одновременную выборку и исполнение команды. Все команды выполняются за один цикл, исключая команды переходов.

Микроконтроллеры PIC16F83 и PIC16CR83 адресуют 512х14 памяти программ, а PIC16F84 и PIC16CR84 - 1Кх14 памяти программ. Вся память программ является внутренней.

Микроконтроллер может прямо или косвенно обращаться к регистрам или памяти данных. Все регистры специальных функций, включая счетчик команд, отображаются на память данных. Ортогональная (симметричная) система команд позволяет выполнять любую команду над любым регистром с использованием произвольного метода адресации. Ортогональная архитектура и отсутствие специальных исключений делает программирование МК группы PIC16F8X простым и эффективным.

Назначение выводов МК подгруппы PIC16F8X приведено в табл. 1

Табл. 1 Назначение выводов МК подгруппы PIC16F8X.

Обозначение

Тип

Буфер

Описание

OSC1/CLKIN

I

ТШ/КМОП3)

Вход кристалла генератора, RC-цепочки или вход внешнего тактового сигнала

OSC2/CLKOUT

O

Выход кристалла генератора. В RC-режиме - выход 1/4 частоты OSC1

/MCLR

I/P

ТШ

Сигнал сброса/вход программирующего напряжения. Сброс низким уровнем.

RA0 RA1 RA2 RA3 RA4 /T0CKI

I/O I/O I/O I/O I/O

ТТЛ ТТЛ ТТЛ ТТЛ ТШ

PORTA - двунаправленный порт ввода/вывода RA4/T0CKI может быть выбран как тактовый вход таймера/счетчика TMR0. Выход с открытым стоком.

RB0/INT RB1 RB2 RB3 RB4 RB5 RB6 RB7

I/O I/O I/O I/O I/O I/O I/O I/O

PORTB - двунаправленный порт ввода/вывода. Может быть запрограммирован в режиме внутренних активных нагрузок на линию питания по всем выводам. Вывод RB0/INT может быть выбран как внешний вход прерывания. Выводы RB4...RB7 могут быть программно настроены как входы прерывания по изменению состояния на любом из входов. При программировании МК RB6 используется как тактовый, а RB7 как вход/выход данных.


) Этот буфер имеет вход триггера Шмитта, когда конфигурируется в качестве входа внешнего прерывания.

) Этот буфер имеет вход триггера Шмитта, когда используется в режиме последовательного программирования.

) Этот буфер имеет вход триггера Шмитта, когда конфигурируется в режиме RC-генератора и КМОП-вход в остальных случаях.

Табл.1 Назначение выводов МК подгруппы PIC16F8X

Обозначение

Тип

Буфер

Описание

 

Vdd

P

-

Положительное напряжение питания

 

Vss

P

-

Общий провод (земля)

 

 В таблице использованы следующие обозначения: I - вход; O - выход; I/O - вход/выход; P - питание; - - не используется; ТТЛ - ТТЛ вход; ТШ - вход триггера Шмитта.

Микроконтроллер содержит 8-разрядное АЛУ и рабочий регистр W. АЛУ является арифметическим модулем общего назначения и выполняет арифметические и логические функции над содержимым рабочего регистра и любого из регистров контроллера. АЛУ может выполнять операции сложения, вычитания, сдвига и логические операции. Если не указано иное, то арифметические операции выполняются в дополнительном двоичном коде.

В зависимости от результата операции, АЛУ может изменять значения бит регистра STATUS: C (Carry), DC (Digit carry) и Z (Zero).

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

2.  Принцип действия устройства

2.1 Функциональная схема

Система управления

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

нормальный режим

все красные

все зеленые

2.2 Описание элементов схемы

Схема питается от источника стабилизированного напряжения +5В. Тактовая частота микроконтроллера задается RC - цепью и составляет около 2 МГц. Порты RA0 - RA4 и RB0 используются для синхронизации с компьютером. Порты RA0 - RA3 (используются на вход) принимают данные от компьютера. Порт RA4 (используется на выход) выдает сигнал подтверждения приема данных. Порт RB0 (используется на вход) строб данных от компьютера. К линиям RB2 - RB7 посредствам транзисторов подключены 12 лампочек, которые имитируют светофоры. Лампочка загорается при низком уровне сигнала на выходе RB2 - RB7.

3.  Программное обеспечение

.1 Алгоритм программы

Словесное изложение алгоритма

Программа включает в себя бесконечный цикл в котором выполняется подпрограммы. Первая подпрограмма отвечает за инициализацию портов ввода/вывода. Вторая подпрограмма отвечает за нормальный режим работы системы. В ней выполняется включение лампочек светофоров через определенный промежуток времени. Задержка - вложенные циклы и выполняются они указанное количество раз. Третья подпрограмма отвечает за работу светофоров, учитывая информацию поступившую от компьютера. В ней анализируется полученная информация и выбирается вариант работы системы.

.2 Листинг программы с комментариями

;******************************************************

;*листинг исходной программы

;******************************************************

;ыp=16c84, r=hex ;директива, определяющая тип

;процессора и систему счисления

;по умолчанию

;

;******************************************************

;*описание используемых переменных и назначения адресов

;*ячеек для хранения переменных пользователя

;******************************************************

PCL EQU 0x02EQU 0x03EQU 5EQU 0x05EQU 0x06EQU 0x05EQU 0x06EQU 0EQU 1 EQU 0x0CEQU 0x0DEQU 0x0EEQU 0x0F EQU 0x10

;

;******************************************************

;*определение меток замены текста

;******************************************************

;

#DEFINE Z STATUS,2 ;бит нулевого результата

#DEFINE VD1 PORTB,2 ;красный светодиод

#DEFINE VD2 PORTB,3 ;желтый светодиод

#DEFINE VD3 PORTB,4 ;зеленый светодиод

#DEFINE VD4 PORTB,5 ;красный светодиод

#DEFINE VD5 PORTB,6 ;желтый светодиод

#DEFINE VD6 PORTB,7 ;зеленый светодиод

#DEFINE KONT PORTB,0 ;подтверждение приема данных

#DEFINE KOMP PORTA,4 ;строб данных от компьютера

#DEFINE D0 PORTA,0 ;данные от компьютера

#DEFINE D1 PORTA,1 ;данные от компьютера

#DEFINE D2 PORTA,2 ;данные от компьютера

#DEFINE D3 PORTA,3 ;данные от компьютера

;

;******************************************************

;*исполняемая программа

;******************************************************

CALL SVETOFOR TEMPA,0PROCESSING_DATA

GOTO LOOP ;переход к метке LOOP для повторения процесса _PORTS ;подпрограмма инициализации портов

0xFF ;установка линий портов PORTA ;A и B в единичное PORTB ;состояниеSTATUS,RP0 ;переход на банк 10xFF ;установка RB0-RB7 TRISB ;на выходSTATUS,RP0 ;возврат в банк 0 ;возврат из подпрограммы

;************************ горит VD1 и VD6 (красный и зеленый) ******************VD1 ;зажечь красный светVD6 ;зажечь зеленый светH'32' ;пересылка константы 50 в W

MOVWF COUNT2 ;загрузка 50 в COUNT2COUNT1 ;загрузка 50 в COUNT1COUNT1,F ;декремент COUNT1INPUT_DATA TEMPA,0 ; пропустить команду если (TEMPA,0) = 1

GOTO END_P

GOTO LOOPD ;;сброс сторожевого таймераCOUNT1COUNT2,F ;декремент COUNT2LOOPD

;

;******* горит VD2 (желтый где горит красный) **********

;VD2 ;зажечь желтый свет H'A' ;пересылка константы 50 в W

MOVWF COUNT2 ;загрузка 50 в COUNT2COUNT1 ;загрузка 50 в COUNT1COUNT1,F ;декремент COUNT1INPUT_DATA TEMPA,0 ; пропустить команду если (TEMPA,0) = 1

GOTO END_P

GOTO LOOPD1 ;;сброс сторожевого таймераCOUNT1COUNT2,F ;декремент COUNT2LOOPD1

;

;****** гаснет красный, желтый и зеленый ***********

;VD2 VD1VD6

;

;***** горят другой красный и зеленый **************

;VD3VD4

H'32' ;пересылка константы 50 в W

MOVWF COUNT2 ;загрузка 50 в COUNT2COUNT1 ;загрузка 50 в COUNT1COUNT1,F ;декремент COUNT1INPUT_DATA TEMPA,0 ; пропустить команду если (TEMPA,0) = 1

GOTO END_P

GOTO LOOPD2 ;;сброс сторожевого таймераCOUNT1COUNT2,F ;декремент COUNT2LOOPD2

;

;***** горит желтый где горит красный **********

;VD5 ;зажечь желтый свет H'A' ;пересылка константы 50 в W

MOVWF COUNT2 ;загрузка 50 в COUNT2COUNT1 ;загрузка 50 в COUNT1COUNT1,F ;декремент COUNT1INPUT_DATA TEMPA,0 ; пропустить команду если (TEMPA,0) = 1

GOTO END_P

GOTO LOOPD3 ;;сброс сторожевого таймераCOUNT1COUNT2,F ;декремент COUNT2LOOPD3

;

;***** гаснут красный, желтый и зеленый ***********

;VD5 VD4VD3_P _DATA ;подпрограмма проверки порта АPORTA,W ;чтение состояния порта А в WTEMPA ;пересылка W в TEMPA_DATA ;подпрограмма анализирования принятых данныхPORTA,W ;чтение состояния порта А в WTEMPA ;пересылка W в TEMPA0x7 ;наложение на W маски b'00000111'TEMPA,W ;вычитание W из TEMPAZ ;пропустить команду, если результат нулевой

GOTO TWOEND_PP

;

;************красный свет во всех направлениях*************

;

COUNT1 ;обнуление регистра COUNT1COUNT1 ;пересылка W в COUNT1COUNT1 ;инкрементирование COUNT1COUNT1,W TEMPA,W ZTHREE

BSF VD1VD4INPUT_DATATEMPA,0BEGINV1

;

;**********зеленый свет во всех направлениях************

;

THREECOUNT1COUNT1COUNT1COUNT1,WTEMPA,W

BTFSC Z;пустая команда предназначение здесь т. к. все варианты проверены)

BSF VD3VD6INPUT_DATATEMPA,0BEGINV2_PP

END ;конец программы

Приложение

 

Похожие работы на - Система регулирования дорожного движения

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!