:1001C000C1309F001F1534211F19E4287F309E0085
:1001D0001E08A000FF30B300000000000000000077
:1001E000000000000000000000000000000000000F
:1001F00000000000000000000000B30BEC2803101A
:1002000021082002031C0D29031020082202031CD0
:100210000D29121187150712DF2807168711920181
:100220008C101211FC3091001215DF282708840071
:1002300000080710860067210714840A0008871049
:10024000860067218714840A000807118600672149
:100250000715840A03105E300402031C3129403064
:1002600084000408A7000800A301A401A501A30AB3
:100270006430A00203183729A3036430A007A40A3E
:100280000A30A00203183F29A4030A30A00720085F
:10029000A500AA208000840A2408AA208000840ADD
:1002A0002308AA208000840A03105E300402031C85
:1002B0005B29403084000800031001303202031C27
:1002C0006429B20387120800B20A87160800FF30BB
:1002D000B30000000000000000000000000000006B
:0602E000B30B69290800C0
:00000001FF
6.5.2. Моделирование
Моделирование производилось в интегрированной среде разработки MPLAB (кратко в разделе 6.5 этого документа).
Для проверки состояния регистров мы использовали окно «watch», а для подсчета времени выполнения процедур в программе были расставлены breakpoint’ы и использовалось окно «stopwatch» .
В результате моделирования установлена работоспособность программы. исследованы получившиеся временные характеристики:
Процедура BINTOSEVEN– в худшем случае (при преобразовании уровня 5В) – 99 мкс.
Процедура INDICATION– 7694 мкс
Интервал между вызовами INDICATION – 22741 мкс (44Гц)
Интервал между вызовами SOUNDINDICATION – 268 мкс (3731Гц)
Данные временные характеристики полностью удовлетворяют ТЗ.
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
1) В.В.Скороделов "Проектирование устройств на однокристальных микроконтроллерах с RISC-архитектурой". Ч1,Ч2, Учебное пособие.
2) Угрюмов Е. П. Проектирование элементов и узлов ЭВМ. М.: Высшая школа, 1991.
3) Шило В. Л. Популярные цифровые микросхемы. М.: Радио и связь, 1988.
4) Тули М. Справочное пособие по цифровой электронике. М.: “Энергоатомиздат”, 1990.
5) Бирюков С.А. “Применение интегральных микросхем серии ТТЛ”. М.: “Патриот”, 1992.
6) Применение интегральных микросхем в электронной вычислительной технике. Справочник (под ред. Б.И.Файзулаева, –М, Радио и связь, 1989)
7) ГОСТ 2.102-68. Виды и комплектность конструкторской докуметации. М.: 1988.
8) ГОСТ 2.708-81. Правила выполнения электрических схем цифровой вычислительной техники. М.: 1988.
9) Разработка и оформление конструкторской документации. РЭА. Справочник (под ред. Э.Г.Романычевой – М.: Радио и связь, 1989)
10) Ю.В.Новиков, О.А.Калашников "Разработка устройств сопряжения". Издательство "ЭКОМ", Москва, 1998г. 355 с.
Заключение
В данном проекте был разработано устройство контроля за уровнями аналоговых сигналов.
Это устройство предназначено для измерения уровней входных аналоговых сигналов, проверки попадания уровня в определенные границы и отображения на цифровом табло текущего значения уровня сигнала.
Устройство реализовано на однокристальном микроконтроллере типа PIC16С71.
Применение в устройстве данного однокристального микроконтроллера привело к экономии элементов, возможности меняя программу работы в широких пределах корректировать алгоритм обработки данных. Также улучшились весогабаритные параметры.
Устройство имеет следующие характеристики:
Потребляемая мощность не более 0,5 Вт;
Наработка на отказ около 35000 часов;
Уровни входных сигналов 0-5 В.
Промоделировав работу программы и проанализировав, полученные при моделировании, временные характеристики можем сказать что устройство полностью удовлетворяет требованиям, поставленным в ТЗ.
В качестве улучшения можно предложить доработать устройство, а конкретнее добавить возможность контроля за уровнями аналоговых сигналов, уровень которых выше 5В.
В качестве решения можно предложить поставить на входе АЦП делитель уровня и учитывать его коэффициент деления в программе (для перевода результата отображения в семисегментный код ).
При таком подходе получиться полноценный вольтметр постоянного тока.
Обозначение | Наименование | Количество |
Конденсаторы | ||
С1 | K50-6-20 мкФ – 16В | 1 |
С2-С3 | МРТ-111-20 пФ±10%-63В | 2 |
С4 | КМ – 6 – 9 - 0,47 +- 10% ОЖО 464. 023 ТУ | 1 |
Микросхемы | ||
DD1 | PIC16С72 | 1 |
HG | АЛС324А | 3 |
Кварц | ||
ZQ1 | 4 МГц | 1 |
Разъемы | ||
ХТ1 | СНО 4 | 1 |
Телефон | ||
BF1 | ТОН-2 | 1 |
Кнопки | ||
SA1 | П2К | 1 |
Резисторы | ||
R1 | ОМЛТ 0,125 – 300 Ом | 1 |
R2-R11 | ОМЛТ 0,125 – 1,2 КОм | 10 |
Текст программы:
list p=16C72
#include <P16C72.inc>
TMP EQU 20H
K1 EQU 21H
K2 EQU 22H
SOTNI EQU 23H
DESYATKI EQU 24H
EDINICI EQU 25H
SAVEW EQU 28H
SAVEW2 EQU 30H
SAVESTATUS EQU 29H
SAVESTATUS2 EQU 31H
SV EQU 26H ; STACK VERTEX
SP EQU 27H ; STACK POINTER
DINAMIK EQU 32H
CT EQU 33H ; FOR DELAY
;STK 40h-5Eh ; STACK ADDRES FOR TEN BCD TRIADS
ORG 0x00 ; processor reset vector
GOTO Start ; go to beginning of program
; -------------IRQ
ORG 0x04 ; обработка прерывания осуществляется за 9 циклов (4,5 мкс)
BTFSSPIR1, TMR1IF ; анализ
goto IRQTMR2 ; источника прерывания
IRQTMR1 ; обработчик прерывания от таймера
;------ PUSHREGISTERS---------
MOVWF SAVEW
MOVF STATUS,W
MOVWF SAVESTATUS
MOVF FSR,W
MOVWF SV
;------------------------------
BCF T1CON,TMR1ON ; TIMER STPR
MOVLW B'00111000'
MOVWF TMR1L
MOVLW B'10100111'
MOVWF TMR1H
BSF T1CON,TMR1ON ; TIMER ON
BCF PIR1, TMR1IF ; сбросфлагапереполненияоттаймера
CALL INDICATION
;------ POP REGISTERS ---------
MOVF SV,W
MOVWF FSR
MOVF SAVESTATUS,W
MOVWF STATUS
MOVF SAVEW,W
;------------------------------
IRQTMR2
BTFSS PIR1, TMR2IF; анализ
goto RET
T2BREAK
;------ PUSH REGISTERS---------
MOVWF SAVEW2
MOVF STATUS,W
MOVWF SAVESTATUS2
;------------------------------
BCF T2CON,TMR2ON ; TIMER2 STOP
MOVLW B'00000000'
MOVWF TMR2
BSF T2CON,TMR2ON ; TIMER2 ON
BCF PIR1, TMR2IF ; сброс флага переполнения от таймера
CALL SOUNDINDICATION
;------ POP REGISTERS ---------
MOVF SAVESTATUS2,W
MOVWF STATUS
MOVF SAVEW2,W
;------------------------------
RET
retfie ; возврат из прерывания
ORG 0xAA
TOSEVEN
addwf PCL,F ; W + PC -> PC
retlw b'00111111' ; ..FEDCBA = '0'
retlw b'00000110' ; .....CB. = '1'
retlw b'01011011' ; .G.ED.BA = '2'
retlw b'01001111' ; .G..DCBA = '3'
retlw b'01100110' ; .GF..CB. = '4'
retlw b'01101101' ; .GF.DC.A = '5'
retlw b'01111101' ; .GFEDC.A = '6'
retlw b'00000111' ; .....CBA = '7'
retlw b'01111111' ; .GFEDCBA = '8'
retlw b'01101111' ; .GF.DCBA = '9'
Start
BCF STATUS,6
BSF STATUS,5 ; BANK1
MOVLW B'11111111';INITA
MOVWF TRISA
MOVLW B'00000000';INITB
MOVWF TRISB
MOVLW B'00000000';INITC
MOVWF TRISC
BCF STATUS,5 ; BANK 0
;--------------------------- INIT VAR
;----------------- TESTS
MOVLW B'11111111'
MOVWF TMP
;----------------------
; CLRF TMP
CLRF EDINICI
CLRF SOTNI
CLRF DESYATKI
CLRF DINAMIK
CLRF PORTA
CLRF PORTB
CLRF PORTC
MOVLW B'00000111'
MOVWF PORTC
MOVLW B'11111111'
MOVWF CT
MOVLW .120
MOVWF K2
MOVLW .45
MOVWF K1
;--------------------------- INIT STACK
MOVLW 0x40
MOVWF FSR
MOVWF SP
MOVWF SV
;--------------------------- INIT TIMER1
MOVLW B'00111000'
MOVWF TMR1L
MOVLW B'10100111'
MOVWF TMR1H
;------------------------------- INIT TIMER 2
; --------------------------- RUN TIMER1
CLRF T1CON
BSF T1CON,TMR1ON ; TIMER ON
BCF PIR1,TMR1IF
BSF INTCON,GIE
BSF INTCON,PEIE
BSF STATUS,5 ; BANK1
BSF PIE1,TMR1IE
BSF PIE1,TMR2IE
; MOVLW B'00000001'
; MOVWF PIE1
MAIN
;--------------------------------------------- ADC ------------
BCF STATUS,5 ; BANK0
MOVLW B'11000001'
MOVWF ADCON0
BSF ADCON0,2 ; START CONV
CALL BINTOSEVEN
LOOP
BTFSC ADCON0,2
GOTO LOOP
;---------------------------- TEST VALUES
; MOVLW B'1100100' ; POADAET
; MOVLW B'0000000' ; NIJE
MOVLW B'1111111' ; VISHE
MOVWF ADRES
;---------------------------
MOVF ADRES,W
MOVWF TMP
;DELAY ;----5106-CYCLES 1CYCLE=1us
MOVLW .255
MOVWF CT
D2
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
DECFSZ CT,1
GOTO D2
COMP
; ----------------- COMPARE -----------
; K1< ADC <K2 ????
;---- K1< ADC ? ----------
BCF STATUS,0
MOVF K1,W
SUBWF TMP,0 ; ADFRES-K1
BTFSS STATUS,0 ; ЕСЛИ ADRES<ki, ТОПЕРЕЙТИНА NO (ИНАЧЕПРО
; ПРОПУСТИТЬ СЛЕД КОМАНДУ)
GOTONO
;---- ADC <=K2 ? --------
BCF STATUS,0
MOVF TMP,W
SUBWF K2,0 ; ADFRES-K1
BTFSS STATUS,0 ; ЕСЛИ ADRES>ki, ТОПЕРЕЙТИНА NO (ИНАЧЕПРО
; ПРОПУСТИТЬ СЛЕД КОМАНДУ)
GOTONO
;YES
;--------------- TIMER 2 STOP
BCF T2CON,TMR2ON ; TIMER STOP
BSF PORTC,3
BCF PORTC,4
GOTO MAIN
NO
;--------------- TIMER2 ON WITH IMMIDIATLY IRQ
BSF PORTC,4
BCF PORTC,3
CLRF T2CON
BCF PIR1, TMR2IF ; сброс флага переполнения от таймера
BCF T2CON,TMR2ON ; TIMER2 STOP
MOVLW B'11111100'
MOVWF TMR2
BSF T2CON,TMR2ON ; TIMER2 ON
;--------------------------------------------------
GOTO MAIN
; -------------------- DYNAMIC INDICATION PROCEDURE
INDICATION
;----------- RESTORE SP VALUE-----------
MOVF SP,W
MOVWF FSR
;---------------------------------------
MOVF INDF,W
BCF PORTC,0
MOVWF PORTB
CALL DELAY
BSF PORTC,0
INCF FSR,F
MOVF INDF,W
BCF PORTC,1
MOVWF PORTB
CALL DELAY
BSF PORTC,1
INCF FSR,F
MOVF INDF,W
BCF PORTC,2
MOVWF PORTB
CALL DELAY
BSF PORTC,2
INCF FSR,F
;-------------------CALCULATE SP (STACK POINTER)
;---- 5Eh< FSR ? ----------
BCF STATUS,0
MOVLW 0x5E
SUBWF FSR,0 ; ADFRES-K1
BTFSS STATUS,0 ; ЕСЛИ FSR<70h, ТОПЕРЕЙТИНА NO (ИНАЧЕПРОПРОПУСТИТЬСЛЕДКОМАНДУ)
GOTO SPFSRNO
MOVLW 0x40
MOVWF FSR
SPFSRNO
;------------ PUSH SP VALUE ----------
MOVF FSR,W
MOVWF SP
RETURN
;---------------------- BINARY TO SEVENSEGMENTS GODE CONVERTION
BINTOSEVEN
; ----------- MUL x2 --------------
clrf SOTNI
clrf DESYATKI
clrf EDINICI
; RLF TMP,1
; BTFSS STATUS,0 ;
; GOTO M1
;
; MOVLW .2
; MOVWF SOTNI
; MOVLW .5
; MOVWF DESYATKI
; MOVLW .6
; MOVWF EDINICI
M1
;----------- convert bin to bcd -------------
; clrf SOTNI
pr0
incf SOTNI,f ;разрядсотен
movlw .100
subwf TMP,f
btfsc STATUS,0
goto pr0
decf SOTNI,f
movlw .100
addwf TMP,F
; clrf DESYATKI
pr1
incf DESYATKI,F ;разряддесятков
movlw .10
subwf TMP,F
btfsc STATUS,0
goto pr1
decf DESYATKI,F
movlw .10
addwf TMP,F
; clrf EDINICI
movf TMP,W
movwf EDINICI
;----------- convert bcd to seven segments code -------------
TTTT
CALL TOSEVEN
MOVWF INDF
INCF FSR,F
MOVF DESYATKI,W
CALL TOSEVEN
MOVWF INDF
INCF FSR,F
MOVF SOTNI,W
CALL TOSEVEN
MOVWF INDF
INCF FSR,F
;-------------------CALCULATE SV (STACK VERTEX)
;---- 5Eh< FSR ? ----------
BCF STATUS,0
MOVLW 0x5E
SUBWF FSR,0 ; ADFRES-K1
BTFSSSTATUS,0 ; ЕСЛИ FSR<70h, ТО ПЕРЕЙТИ НА NO (ИНАЧЕ ПРОПРОПУСТИТЬ СЛЕД КОМАНДУ)
GOTO SVFSRNO
MOVLW 0x40
MOVWF FSR
SVFSRNO
RETURN
;---------------------- SOUND INDICATION PROCEDURE
SOUNDINDICATION
BCF STATUS,0
MOVLW 0x1
SUBWF DINAMIK,0 ; ADFRES-K1
BTFSS STATUS,0 ; ЕСЛИ FSR<70h, ТО ПЕРЕЙТИ НА NO (ИНАЧЕ ПРОПРОПУСТИТЬ СЛЕД КОМАНДУ)
GOTO DIN
DECF DINAMIK,F
BCF PORTC,5
RETURN
DIN
INCF DINAMIK,F
BSF PORTC,5
RETURN
DELAY ;----2555-CYCLES 1CYCLE=1us
MOVLW .255
MOVWF CT
D1
NOP
NOP
NOP
NOP
NOP
NOP
NOP
DECFSZ CT,1
GOTO D1
RETURN
END