incf Reg1_hour, f
goto Main_loop
clrf Reg1_hour
movfw Reg2_hour
xorlw 2
BZ $+3
incf Reg2_hour, f
goto Main_loop
clrf Reg1_hour
clrf Reg2_hour
goto Main_loop
endm
; ------------- Підпрограма зменшення хвилин ---------------
DEC_MINmacroReg1_min,Reg2_min
localDEC_min10,Clr
movfwReg1_min ; зменшуєм хвилини
xorlw 0
BZ DEC_min10
decf Reg1_min,f
goto Main_loop
DEC_min10 movlw 9 ; установлюємчислохвилин = 9
movwf Reg1_min ; ізменшуємдесяткихвилин
movfw Reg2_min
xorlw 0
BZ Clr
decfReg2_min, f
goto Main_loop
movlw 5
movwf Reg2_min
goto Main_loop
endm
; ------------- Підпрограмазменшеннягодин ---------------
DEC_HOUR macro Reg1_hour,Reg2_hour
local Set_hour,Clr,If_hour10_1,If_hour10_2,Dec_hour10
movfw Reg1_hour ; зменшуємгодини
xorlw 0
BZ Set_hour
decf Reg1_hour, f
goto Main_loop
movfwReg2_hour ; якщодесяткигодин = 0,
xorlw 0 ; установлюємогодинирівні 3
btfssSTATUS, Z
gotoIf_hour10_1
movlw 3
movwfReg1_hour
gotoDec_hour10
If_hour10_1 movfw Reg2_hour ; якщодесяткигодин = 1,
xorlw 1 ; установлюємчислогодин = 9
btfss STATUS, Z
goto If_hour10_2
movlw 9
movwf Reg1_hour
goto Dec_hour10
If_hour10_2 movlw 9 ; якщодесяткигодин = 2,
movwf Reg1_hour ; установлюємогодинирівні 9
Dec_hour10 movfw Reg2_hour ; зменшуємдесяткигодин
xorlw 0
BZ Clr
decf Reg2_hour,f
goto Main_loop
Clr movlw 2
movwf Reg2_hour
goto Main_loop
endm
; ------------- Підпрограма запису в EEPROM ---------------
EE_write macro Adress,Data
movlw Adress
movwf EEADR
movfw Data
movwf EEDATA
call Write_to_EEPROM
endm
; ------------- Підпрограмачитання EEPROM ---------------
EE_read macro Adress,Destination
movlw Adress
movwf EEADR
call Read_from_EEPROM
movfw EEDATA
movwf Destination
endm
; ------------------- ІНІЦІАЛІЗАЦІЯ ----------------------
PROGRAM
bsf STATUS,RP0 ; банк 1
clrfTRISA ; порт А на вихід
movlwB'11110000' ; RB7..RB4 - на вхід, RB3..RB0 - на вихід
movwfTRISB
movlwB'00001000' ; відключений від таймеру
movwf OPTION_REG
bcf STATUS, RP0 ; банк 0
clrf TIME_SET
clrf FLAGS
clrf FLAGS_2
clrf sec
clrf sec10
clrf min
clrf min10
clrf hour
clrf hour10
clrf SB_delay
clrf Bit_counter
clrf Alarm_count
clrf PORTB
clrf SB4_count
clrf IntCount_H
clrf IntCount_L
movlwB'00010001'
movwfPORTA
movlwH'16' ; починаєм індикацію з десятків годин
movwf Ind_start
movfw Ind_start
movwf Fig_pointer
bsf FLAGS,PT ; ввімкненнякрапокнаіндикаторі
bsf FLAGS_2, HL1
movlw D'16' ; запускаємотаймерномер 0
movwf TMR0
EE_read 1, TIME_SET ; читаємозначеннякоэфіціэнту
movwf TIME_SET ; корекціїчасу
EE_read 2, min_al_1 ; читаємпоказпоказникиобох
EE_read 3, min10_al_1 ; будильниківз EEPROM
EE_read 4, hour_al_1
EE_read 5, hour10_al_1
EE_read 6, min_al_2
EE_read 7, min10_al_2
EE_read 8, hour_al_2
EE_read 9, hour10_al_2
movfwmin_al_1 ; якщо в регістрах будильника
xorlwH'11' ; були числа 0х11, тоді,
btfssSTATUS,Z ; він був вімкнений при останньому
bsf FLAGS, Al_on ; записів EEPROM
movfw min_al_2
xorlw H'11'
btfss STATUS, Z
bsf FLAGS_2, Al_on2
bsf PORTB, 3 ; вмикаємсвітлодіод
btfsc FLAGS, Al_on
bcf PORTB, 3
btfsc FLAGS_2, Al_on2
bcf PORTB, 3
bsf INTCON, T0IE ; дозволяємпереривання
bsf INTCON, GIE
movlw H'E' ; ініціалізаціярегістрівдляправельноїіндикації
movwf EEP_Ind_1 ; режимроботи EEPROM
movlw H'E'
movwf EEP_Ind_2
movfw TIME_SET ; розбиваємозмінну TIME_SET
andlwB'00001111' ; на 16-розрядні десятки та одениці
movwfEEP_Ind_4 ; одениці
movfw TIME_SET
movwf EEP_Ind_3 ; десятки
swapf EEP_Ind_3, f
movlw B'00001111'
andwf EEP_Ind_3,f
;******************************************************************
; ГОЛОВНИЙ ЦИКЛ ПРОГРАМИ
******************************************************************
movlw H'21' ; задаємо верхню границю
movwf MaxInt_L ; лічби переривань = 3873
movlw H'F'
movwf MaxInt_H
movfwTIME_SET ; добавляєм TIME_SET до границі
bcf STATUS, C ; лічби переповнення таймера
addwfMaxInt_L, f
btfscSTATUS, C
incfMaxInt_H, f
movfwIntCount_H ; порівнюємстаршийбайт
xorwfMaxInt_H, w
btfssSTATUS, Z
gotoMain_loop
movfwIntCount_L ; порівнюєммолотшийбайт
xorwfMaxInt_L, w
btfssSTATUS, Z
gotoMain_loop
gotoADD1s ; секунда пройшла
; ------- Процедура перекодування числа в семисегментний код --------
Table
addwfPCL,f
retlwB'00000010' ; цифра 0
retlw B'10011110' ; цифра 1
retlw B'00100100' ; цифра 2
retlw B'00001100' ; цифра 3
retlw B'10011000' ; цифра 4
retlw B'01001000' ; цифра 5
retlw B'01000000' ; цифра 6
retlw B'00011110' ; цифра 7
retlw B'00000000' ; цифра 8
retlw B'00001000' ; цифра 9
retlw B'11111110' ; пустемісце(код 10h)
retlw B'11111100' ; тире (код 11h)
;********************* Режиміндикаціїсекунд ***********************
Show_seconds
clrf SB4_count
btfsc FLAGS,Sec ; якщонаіндикаторіпоказанісекунди
gotoShow_hour ; повертаємся до нормального вигляду
movlw H'14'
movwf Ind_start
bsf FLAGS, Sec
movwf SB_delay
goto Main_loop
Show_hour
movlw H'16'
movwf Ind_start
bcf FLAGS,Sec
movwf SB_delay
gotoMain_loop
;***************** Добавляєм менути реального часу ******************
ADDmin_button
clrf sec
clrf sec10
INC_MIN min, min10
goto Main_loop
;******************Добавляєм години реального часу ******************
ADDh_button
clrf sec
clrf sec10
INC_HOUR hour, hour10
goto Main_loop
END ; кінецьпрограми
Рисунок 3.2.1 - Блок-схема роботи пристрою
3.3 Розрахунок надійності пристрою
Надійність – властивість пристрою виконувати задані функції в заданих режимах і умовах застосування, обслуговування, ремонту, збереження, транспортування на протязі необхідного інтервалу часу.
Показники надійності:
1. Безвідмовність.
2. Довговічність.
3. Ремонтопридатність.
4. Збереження.
Безвідмовність – властивість безупинно зберігати працездатність до граничного стану, після настання, якого подальша експлуатація виробу економічно недоцільна.
Ремонтопридатність – пристосованість пристрою до попередження відмовлень, до можливості виявлення та усунення несправностей шляхом проведення ремонту і технічного обслуговування.
До термінів ремонтопридатності відносяться: відмовлення, збереження.
Відмовлення – подія, що полягає в повній або частковій утраті працездатності пристрою.
Відмовлення бувають:
Раптові (катастрофічні) – стрибкоподібна зміна параметрів робочого виробу.
Поступові (параметричні) – постійна зміна одного або декількох параметрів з часом, що виходять за припустимі межі.
Збереження – термін, протягом якого при дотриманні режимів збереження виріб зберігає працездатний стан.
Розрахунок надійності поділяється на три розділи:
1.Визначення значення інтенсивності відмовлення всіх елементів за принциповою схемою вузла пристрою.
2.Визначення значення імовірності безвідмовної роботи всієї схеми.
Визначення середнього наробітку до першого відмовлення.
Виконання розрахунків проходить наступним чином:
1. Інтенсивність відмовлення всіх елементів визначається за формулою:
(3.3.1)де:
ni– кількість елементів у схемі;
li– інтенсивність відмовлень і-го елемента;
m – кількість типів елементів.
При розрахунку також потрібно враховувати інтенсивність відмовлень через пайки радіоелементів на друкованій платі.
Інтенсивність відмовлень елементів розраховуємо за формулою:
(3.3.2)де:
lо – інтенсивність відмовлень елементів у режимі номінального навантаження;
Кe– експлуатаційний коефіцієнт;
Кр – коефіцієнт навантаження.
Усі ці параметри беруться з довідника з розрахунку надійності.
2. Ймовірністю безвідмовної роботи називається ймовірність того, що за певних умов експлуатації в заданому інтервалі часу не відбудеться жодного відмовлення.
Ймовірність безвідмовної роботи визначається за формулою:
(3.3.3)де:
-інтенсивність відмов всіх елементів;
t – час, (год).
За результатами розрахунків складається таблиця і графік.
3. Середній наробіток до першого відмовлення – це час роботи пристрою до першої відмови.
Середній наробіток на відмовлення визначається за формулою:
(3.3.4)Розрахунок надійності пристрою приведено далі.
Анотація
Завданням даної курсової роботи є створення схеми електричної принципової годинника-будильника-термометра з ІЧ ПК. В ході виконання курсової роботи розроблено структурну та електричну принципову схему пристрою та програму тестування роботи пристрою, та проведено розрахунок надійності його роботи.
Виконання даної курсової роботи змусило повторити та закріпити вивчений протягом навчального року матеріал з предмету «Мікропроцесорні системи», а також звернутися до додаткової літератури та вивчити багато нового.
Література
1. Бороволоков Э.П. Фролов В.В. «Радиолюбительские схемы» // К.: Кондор – 1995 – 6 с.
2. Якименко Ю.І. Терещенко Т.О. Сокол Є.І. «Мікропроцесорна техніка» // К.: Кондор – 2004 – 24 с.
3. Методичні вказівки щодо виконання курсової роботи.
4. Вершинин О.Е. «Применениемикропроцессоров для автоматизациитехнологическихпроцессов» // Л.: Энергоатомиздат, 1986.
5. Самофалов К.Г., Викторов О.В., Кузняк А.К. «Микропроцессоры» // К.: Техника, 1986.