Автор: Пользователь скрыл имя, 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.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 –
Підпрограма обробки
Підпрограма ButtonInterrupt декрементує значення, записане в регістр R4, і, якщо значення регістру дорівнює 0, викликає підпрограму SwitchRed. Зчитування сигналу у кількості, записаній в регістр раз необхідно для усунення брязкоту контактів. Зазвичай, число зчитувань становить 5-50 разів і установлюється дослідним шляхом. У даній програмі обрано число зчитувань 20.
Рисунок 1.10 –
Підпрограма обробки
Рисунок 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_Информация о работе Модель світлофора зі звуковою сигналізацією на базі мікроконтролера i8051