Автор работы: Пользователь скрыл имя, 03 Марта 2011 в 16:43, курсовая работа
В современном обществе по мере познания им природы все более возрастает роль измерений. Соответственно непрерывно увеличивается объем измерительной информации – информации о значениях измеряемых физических величин, повышаются требования к качеству и способам ее обработки и использования.
Введение ……………………………………………………….……4
Структурной схема устройства……………………………………4
Описание принципа работы структурной схемы устройства….....5
Алгоритм функционирования устройства………………………....6
Описание и расчёт основных элементов схемы электрической
Принципиальной………….….……………………………….…...7
Алгоритм работы микроконтроллера …………………………….17
Текст программы…………………………………………………. 19
Литература. ………………………………………………………….24
INCF FSR
DECFSZ S_TMP
B $-3
CLRF TMR0
CLRF TMR1H
CLRF TMR1L
BSF INTCON,GIE ;глобальное разрешение прер.
;*****************************
;* опрос кнопки *
;*****************************
START CALL D10mS ;с интервалом в 10мс
BTFSC GPIO,BTN ;происходит опрос кнопки BTN
B ST2 ;
INCF TIME ;при нажатой BTN инкрементируем счётчик TIME
BTFSC FLAG,LONG_CLICK ;долгое нажатие кнопки произошло?
B ST2 ;
BTFSC FLAG,SHOT_CLICK ;короткое нажатие кнопки произошло?
B ST1 ;
MOVF TIME,W ;если TIME=TIME_MIN
SUBLW TIME_MIN ;устанавливаем флажок
SKPNZ ;короткого нажатия
BSF FLAG,SHOT_CLICK ;кнопки SHOT_CLICK
ST1 MOVF TIME,W ;если TIME=TIME_MAX
SUBLW TIME_MAX ;устанавливаем флажок
BNZ START ;долгого нажатия
SKPNZ ;кнопки LONG_CLICK
BSF FLAG,LONG_CLICK
B START
ST2 CLRF TIME
BTFSS FLAG,LONG_CLICK ;долгое нажатие кнопки ?
B ST6
BCF FLAG,LONG_CLICK ;здесь начинается обработчик по
BCF FLAG,SHOT_CLICK ;долгому нажатию кнопки , при
MOVF MODE,W ;каждом нажатии происходит смена
SUBLW 0x01 ;режима(0,1)->(2,3)->(4,5,6)
BNC ST3
MOVLW 0x02
B ST4
ST3 MOVF MODE,W
SUBLW 0x03
MOVLW 0x00
SKPNC
MOVLW 0x04
ST4 BCF INTCON,GIE ;принудительный переход к
MOVWF MODE ;программе прерывания,устанавливаем
BSF FLAG,CHANGE ;флажок смены режима CHANGE
BSF PIR1,T1IF
CALL INTER
ST5 BTFSS GPIO,BTN
B ST5
B START
ST6 BTFSS FLAG,SHOT_CLICK ;короткое нажатие кнопки ?
B ST5
BCF FLAG,SHOT_CLICK ;здесь начинается обработчик по
MOVF MODE,W ;короткому нажатию кнопки , при
CALL MODTBL
;каждом нажатии происходит
B ST4
;режима по таблице MODTBL
;*****************************
;* начало
программы обработчика
;*****************************
INTER MOVWF W_TMP
SWAPF STATUS,W
MOVWF S_TMP
BTFSC INTCON,T0IF
B IMPINC
MOVF MODE,W
ADDWF PCL
B FR_mS
B FR_mS_dF
B FR_S
B FR_S_dF
B CN_WAIT
B CN_START
B CN_STOP
;*****************************
;* инкрементирование счётчика импульсов *
;*****************************
IMPINC BCF INTCON,T0IF
INCF IMP3
SKPNZ
INCF IMP4
B
ENDINT
;*****************************
;* измерение частоты с периодом 100мс *
;*****************************
FR_mS BCF PIR1,TMR1IF
BSF GPIO,INS
BSF STATUS,RP0 ;банк0
BCF TRISIO,INS ;остановка счёта импульсов,прошла 0,1с
BCF STATUS,RP0 ;банк1
BTFSS FLAG,CHANGE ;проиозшла смена режима ?
B FR1
CALL INITPRES ;если да - то инициализация TMR0,TMR1
B FR2
FR1 CALL CLRPRES ;досчёт импульсов в предделителе TMR0
MOVF IMP1,W ;сохраняем счётчик импульсов, так как
MOVWF IMP1_TMP ;программа BINDEC изменит его
MOVF IMP2,W
MOVWF TMR0
MOVWF IMP2_TMP
MOVF IMP3,W
MOVWF IMP3_TMP
MOVF IMP4,W
MOVWF IMP4_TMP
FR2 CALL BINDEC ;двоично-десятичная перекодировка
MOVLW IND8 ;счётчика импульсов IMP4:IMP3:IMP2:IMP1
MOVWF FSR ;преобразование чисел по таблице INDTBL
MOVF TMP4,W
CALL TABLCON
MOVF TMP3,W
CALL TABLCON
MOVF TMP2,W
CALL TABLCON
MOVF TMP1,W
CALL TABLCON
MOVLW IND7
CALL CLRIND ;убираем незначащие нули
MOVLW 0x0A ;символ 0 всегда в
MOVWF IND0 ;нулевом разряде индикатора
MOVLW 0x01 ;символ 1 всегда в
MOVWF IND9 ;девятом разряде индикатора
MOVLW 0x0B ;символ F всегда в
MOVWF IND8 ;восьмом разряде индикатора
CALL SHOWIND ;вывод на индикатор
MOVLW 0x3C ;установка TMR1 на 0,1с
MOVWF TMR1H
MOVLW 0xB5
MOVWF TMR1L
CLRF IMP1
CLRF IMP2
CLRF IMP3
CLRF IMP4
CLRF TMR0
BSF GPIO,INS
BSF STATUS,RP0 ;банк1
BSF TRISIO,INS ;старт счёта импульсов
BCF STATUS,RP0 ;банк0
BSF T1CON,TMR1ON
B ENDINT
;*****************************
;* измерение частоты с периодом 1с *
;*****************************
FR_S BCF PIR1,TMR1IF
INCF ZIKL
MOVLW 0x0A
SUBWF ZIKL,W
BZ FR3 ;прошло 10 циклов*0,1с=1с ?
MOVLW 0x3C ;если нет,то устанавливаем
MOVWF TMR1H ;TMR1 ещё на 0,1с
MOVLW 0xBB
MOVWF TMR1L
B ENDINT
FR3 BCF T1CON,TMR1ON
BSF GPIO,INS
BSF STATUS,RP0 ;банк1
BCF TRISIO,INS ;остановка счёта импульсов,прошла 1с
BCF STATUS,RP0 ;банк0
BTFSS FLAG,CHANGE ;проиозшла смена режима ?
B FR4
CALL INITPRES ;если да - то инициализация TMR0,TMR1
B FR5
FR4 CALL CLRPRES ;досчёт импульсов в предделителе TMR0
MOVF IMP1,W ;сохраняем счётчик импульсов, так как
MOVWF IMP1_TMP ;программа BINDEC изменит его
MOVF IMP2,W ;счётчика импульсов IMP4:IMP3:IMP2:IMP1
MOVWF TMR0 ;преобразование чисел по таблице INDTBL
MOVWF IMP2_TMP
MOVF IMP3,W
MOVWF IMP3_TMP
MOVF IMP4,W
MOVWF IMP4_TMP
FR5 CALL BINDEC ;двоично-десятичная перекодировка
MOVLW IND7
MOVWF FSR
MOVF TMP4,W
CALL TABLCON
MOVF TMP3,W
CALL TABLCON
MOVF TMP2,W
CALL TABLCON
MOVF TMP1,W
CALL TABLCON
MOVLW IND7
CALL CLRIND ;убираем незначащие нули
MOVLW 0x02 ;символ 2 всегда в
MOVWF IND9 ;девятом разряде индикатора
MOVLW 0x0B ;символ F всегда в
MOVWF IND8 ;восьмом разряде индикатора
CALL SHOWIND ;вывод на индикатор
CLRF ZIKL
MOVLW 0x3C ;установка TMR1 на 0,1с
MOVWF TMR1H
MOVLW 0xD0
MOVWF TMR1L
CLRF IMP1
CLRF IMP2
CLRF IMP3
CLRF IMP4
CLRF TMR0
BSF GPIO,INS
BSF STATUS,RP0 ;банк1
BSF TRISIO,INS ;старт счёта импульсов,прошла 1с
BCF STATUS,RP0 ;банк0
BSF T1CON,TMR1ON
B ENDINT
;*****************************
;* измерение девиации частоты с периодом 100мс *
;*****************************
FR_mS_dF BCF PIR1,TMR1IF
BSF GPIO,INS
BSF STATUS,RP0 ;банк1
BCF TRISIO,INS ;остановка счёта импульсов,прошла 0,1с
BCF STATUS,RP0 ;банк0
BCF FLAG,CHANGE
CALL CLRPRES ;досчёт импульсов в предделителе TMR0
CALL DIFFERN ;вычисление dF = IMP4:..:IMP1 =
MOVWF IND7 ;IMP4_TMP:..:IMP1_TMP - IMP4:..:IMP1
CALL BINDEC ;двоично-десятичная перекодировка
MOVLW IND6 ;преобразование dF по таблице INDTBL
MOVWF FSR
MOVF TMP3,W
CALL TABLCON
MOVF TMP2,W
CALL TABLCON
Информация о работе Измеритель частоты синусоидального сигнала