Модель світлофора зі звуковою сигналізацією на базі мікроконтролера i8051

Автор: Пользователь скрыл имя, 07 Июня 2013 в 17:01, курсовая работа

Описание работы

Основними етапами розвитку обчислювальної техніки є:
I. Ручний — з 50-го тисячоліття до н. э.;
II. Механічний — з середини XVII століття;
III. Електромеханічний — з дев'яностих років XIX століття

Содержание

ВСТУП……………………………………………………………………………
1 Загальний розділ……………………………………………………………..
1.1 Призначення пристрою………………………………………………….
1.2 Розробка структурної схеми пристрою на мікроконтролері…………
2 Спеціальний розділ……………………………………………………………
2.1 Технічні характеристики пристрою…………………………………….
2.2 Аналіз роботи пристрою по принциповій електричній схемі………...
3 Проектно-розрахунковий розділ……………………………………………..
3.1 Обґрунтування використаної елементної бази………………………...
3.2 Розрахунок окремих функціональних вузлів…………………………..
3.3 Розрахунки на надійність………………………………………………..
4 Експлуатаційний розділ………………………………………………………
4.1 Інструкція по експлуатації пристрою…………………………………..
4.1.1 Загальна блок-схема алгоритму програми………………………..
4.1.2 Програма, під керівництвом якої працює пристрій……………...
4.2 Методи налагодження та контролю розроблюваного пристрою…….
4.3 Методи пошуку та усунення несправностей…………………………..
5 Охорона праці…………………………………………………………………
5.1 Загальні вимоги техніки безпеки……………………………………….
5.2 Вимоги техніки електробезпеки при виконанні та налагоджуванні пристрою…………………………………………………………………
ВИСНОВКИ……………………………………………………………………..
Список використаних джерел…………………………………………………..

Работа содержит 1 файл

Zapiska.doc

— 715.50 Кб (Скачать)

Рисунок 1.4 –  Графік імовірностей безвідмовної роботи моделі світлофору

 

 

 

 

4  ЕКСПЛУАТАЦІЙНИЙ РОЗДІЛ

4.1 Інструкція по експлуатації пристрою

4.1.1 Загальна блок-схема алгоритму програм


 

У даному курсовому проекті програма, під керівництвом якої працює світлофор, оформлена у вигляді підпрограм, відображених із символічними іменами SwitchRed, SwitchYellow, SwitchGreen. Підпрограма SwitchRed вмикає червоне світло для світлофору транспорту та зелене світло для пішохідного транспорту, сигналізацію дозволу руху пішоходів і таймер на 25 секунд. Підпрограма SwitchYellow викликається після періоду 25 секунд, вмикає жовте світло транспортного світлофору та збільшує частоту звукового сигналу, а також налаштовує таймер на 5 секунд. Підпрограма SwitchGreen викликається після 5 секундного інтервалу часу, вмикає зелене світло пішохідного транспорту, вимикає червоне та жовте, а також вимикає сигналізацію і перемикає світло пішохідного  транспорту з зеленого на червоне. Дані підпрограми викликаються обробником переривань таймера 0  мікроконтролера. При натисненні кнопок заборони транспортного руху примусово викликається підпрограма SwitchRed. Підпрограма обробника зовнішнього переривання має символічне ім’я ButtonInterrupt, обробників переривань таймерів відповідно Timer0Interrupt, Timer1Interrupt.






 



 



Рисунок 1.5 –  Блок-схема основної програми моделі світлофора



 



 


 


 



 



 



 



 

Рисунок 1.6 –  Підпрограма вмикання червоного  світла транспортного світлофору



 



 

 


 





 




 



 

 

Рисуно1.7 – Підпрограма  вмикання жовтого світла транспортного  світлофору




 



 



 



 

 

 




 



 


 

 

Рисунок 1.8 –  Підпрограма вмикання зеленого світла транспортного світлофору




 












 

Рисунок 1.9 –  Підпрограма обробки переривання  від лічильника 0


 

Підпрограма ButtonInterrupt декрементує значення, записане в регістр R4, і, якщо значення регістру дорівнює 0, викликає підпрограму SwitchRed. Зчитування сигналу у кількості, записаній в регістр раз необхідно для усунення брязкоту контактів. Зазвичай, число зчитувань становить 5-50 разів і установлюється дослідним шляхом. У даній програмі обрано число зчитувань 20.

 


 

 


 



 

Рисунок 1.10 –  Підпрограма обробки переривання  таймера 1


 

 

 

 

 

 






 

 


 

Рисунок 1.11 –  Підпрограма обробки зовнішнього  переривання по натисненню кнопки заборони транспортного руху

Підпрограма Timer0Interrupt викликається після надходження кожного імпульсу генератора прямокутних імпульсів, і працює як лічильник імпульсів. Оскільки період імпульсу становить 0,25 с, для вирахування інтервалів часу  5, 25 і 30 секунд необхідно відповідно 20, 100 і 120 імпульсів. Початково необхідний інтервал заданого часу у вигляді кількості імпульсів заноситься в регістр R0. Після надходження кожного імпульсу значення R0 декрементується і якщо він дорівнює 0, аналізується значення регістру R3, відповідно до якого викликається необхідна підпрограма перемикання світлового сигналу.

Підпрограма Timer1Interrupt викликається після проходження інтервалу часу 0,001 с при частоті звукового сигналу сигналізації 1кГц, або 0,003 с при частоті звукового сигналу 3кГц. У даній підпрограмі виконується інвертування рівня сигналу на виході лінії порту Р1.5, до якого підключено сигналізацію.

Основна програма має символічне ім’я MAIN та виконує початкове налаштування таймерів, переривань та ініціалізації регістрів та портів вводу/виводу.

4.1.2 Програма, під керівництвом якої працює пристрій

T_LAMP_RED   .EQU P1.0

T_LAMP_YELLOW .EQU P1.1

T_LAMP_GREEN .EQU P1.2

P_LAMP_RED   .EQU P1.3

P_LAMP_GREEN .EQU P1.4

P_SIGNALING   .EQU P1.6

BUTTON     .EQU P3.2

.ORG 0

LJMP START

.ORG 03H

 


 

LJMP ButtonInterrupt ;обробник зовнішнього переривання

.ORG 0Bh

LJMP Timer0Interrupt ;обробник переривання від лічильника 0

.ORG 1Bh

LJMP Timer1Interrupt; обробник переривання від таймера 1

.ORG 100h

MAIN: ; початок основної програми

MOV  P1, #07Fh ; налаштування ліній порту Р1.0-Р1.6 на вихід

MOV R3, #0  ;заносимо число, що відображає поточне світло світлофору 0-червоний, 1- жовтий, 2-зелений

MOV  TMOD, #15h ;16разрядний режим для лічильника 0 та таймера 1

LCALL SwitchRedTr ; виклик підпрограми увімкнення червоного світла для траспорту

SETB  ET0   ;дозволяємо переривання від лічильника 0

SETB ET1  ; дозволяємо переривання від таймера 1

SETB  EA   ;глобальний дозвіл переривань

CLR  IT0  ;налаштування зовнішнього переривання за низьким рівнем

mov R4,#20  ;усунення брязкоту контактів (число зчитувань 20)

SETB  EX0  ;дозволяємо зовнішнє переривання

loop: ;зациклення

jmp loop

 

;Описання підпрограм

Timer0Interrupt:

CLR  TF0 ;очистити флаг переповнення лічильника 0

CJNE R3,#0,next ;якщо поточне світло червоне, перейти на підпрограму увімкнення жовтого

LCALL SwitchYellowTr

jmp skip


 

next:

CJNE R3,#1,next1;інакше якщо поточне світло жовте, перейти на підпрограму увімкнення зеленого

LCALL SwitchGreenTr

jmp skip

next1:

CJNE  R3,#2,skip;інакше перейти на підпрограму увімкнення червоного

LCALL SwitchRedTr

skip:

RETI

 

Timer1Interrupt:

CLR TF1 ;очистити флаг переповнення таймера 1

CPL P_SIGNALING; інвертувати сигнал на виході Р1.5

RETI

 

ButtonInterrupt:

CLR IE0;очитсити флаг обробника зовнішнього переривання

DJNZ R4,ext ;якщо кількість позитивних зчитувань 20, кнопка вважається нажатою

mov R4,#20

SwitchRedTr; примусово перейти на підпрограму увімкнення червоного світла

ext:

RETI

 

SwitchRedTr:

SETB T_LAMP_RED ;увімкнути червоне світло для транспорту

CLR T_LAMP_YELLOW ;


 

CLR T_LAMP_GREEN ; вимкнути зелене світло для транспорту

 

SETB P_LAMP_GREEN ;увімкнути зелене світло для пішоходів

CLR P_LAMP_RED ;вимкнути червоне світло для пішоходів

CLR  TCON.4   ;вимикаємо лічильник

CLR TCON.6  ;вимикаємо таймер (сигналізацію) 

 

MOV  TH0, #0ffh  ;в лічильник заносимо число

MOV  TL0, #09Bh  ; що дорівнює 100 імпульсам (25 секунд)

mov  R3,#0

 

mov TH1,#0FDh ;налаштовуємо таймер 1 на частоту 1кГц

mov TL1,#064h //

 

SETB  TCON.4   ;вмикаємо лічильник 0

SETB  TCON.6  ;вмикаємо таймер 1(сигналізацію)

RET

 

SwitchYellowTr:

SETB T_LAMP_YELLOW ;вмикаємо жовте світло для транспорту

INC R3

CLR TCON.6  

mov TH1,#0FFh ;налаштовуємо лічильник на 20 імпульсів (5 секунд)

mov TL1,#0EBh //

 

mov TH1,#0FFh ; налаштовуємо таймер 1 на потроєну частоту 3кГц

mov TL1,#038h //

SETB TCON.6  

SETB  TCON.4  


 

RET

 

 

SwitchGreenTr:

CLR T_LAMP_RED 

CLR T_LAMP_YELLOW 

SETB T_LAMP_GREEN 

 

CLR TCON.4 

СLR TCON.6  

mov TH1,#0FFh ;налаштовуємо лічильник на 120 імпульсів (30 секунд)

mov TL1,#087h //

 

SETB P_LAMP_RED 

CLR P_LAMP_GREEN 

<p class="dash041e_0431_044b_0447_043d_044b_0439" style=" margi

Информация о работе Модель світлофора зі звуковою сигналізацією на базі мікроконтролера i8051