Автор работы: Пользователь скрыл имя, 03 Марта 2011 в 16:43, курсовая работа
В современном обществе по мере познания им природы все более возрастает роль измерений. Соответственно непрерывно увеличивается объем измерительной информации – информации о значениях измеряемых физических величин, повышаются требования к качеству и способам ее обработки и использования.
Введение ……………………………………………………….……4
Структурной схема устройства……………………………………4
Описание принципа работы структурной схемы устройства….....5
Алгоритм функционирования устройства………………………....6
Описание и расчёт основных элементов схемы электрической
Принципиальной………….….……………………………….…...7
Алгоритм работы микроконтроллера …………………………….17
Текст программы…………………………………………………. 19
Литература. ………………………………………………………….24
MOVF TMP1,W
CALL TABLCON
MOVLW IND6
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 0xB8
MOVWF TMR1L
CLRF IMP1
CLRF IMP2
CLRF IMP3
CLRF IMP4
CLRF TMR0
BSF GPIO,INS
BSF STATUS,RP0 ;банк1
BSF TRISIO,INS ;старт счёта импульсов,прошла 0,1с
BCF STATUS,RP0 ;банк0
BSF T1CON,TMR1ON
B ENDINT
;*****************************
;* измерение девиации частоты с периодом 1с *
;*****************************
FR_S_dF BCF PIR1,TMR1IF
INCF ZIKL
MOVLW 0x0A
SUBWF ZIKL,W
BZ FR6 ;прошло 10 циклов*0,1с=1с ?
MOVLW 0x3C ;если нет,то устанавливаем
MOVWF TMR1H ;TMR1 ещё на 0,1с
MOVLW 0xBB
MOVWF TMR1L
B ENDINT
FR6 BCF T1CON,TMR1ON
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 TMP6 ;IMP4_TMP:..:IMP1_TMP - IMP4:..:IMP1
CALL BINDEC ;двоично-десятичная перекодировка
MOVLW IND7 ;преобразование dF по таблице INDTBL
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 ;убираем незначащие нули
MOVF TMP6,W ;символ знака в
MOVWF IND7 ;нулевом разряде индикатора
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 ;старт счёта импульсов,прошла 0,1с
BCF STATUS,RP0 ;банк0
BSF T1CON,TMR1ON
B ENDINT
;*****************************
;*
счётчик на старте
;*****************************
CN_WAIT BCF PIR1,TMR1IF
BSF GPIO,INS
BSF STATUS,RP0 ;банк1
BSF TRISIO,INS ;остановка счёта импульсов
BCF STATUS,RP0 ;банк0
BCF FLAG,CHANGE
MOVLW 0x0A ;нули в разрядах
MOVWF IND0 ;0,8,9 индикатора
MOVWF IND8
MOVWF IND9
CLRF IND1
CLRF IND2
CLRF IND3
CLRF IND4
CLRF IND5
CLRF IND6
CLRF IND7
CALL SHOWIND ;вывод на индикатор
B ENDINT
;*****************************
;*
счётчик в работе
;*****************************
CN_START BCF PIR1,TMR1IF
BTFSS FLAG,CHANGE ;проиозошла смена режима ?
B CN1
CALL INITPRES ;если да - то инициализация TMR0,TMR1
B CN6
CN1 INCF ZIKL
MOVLW 0x0A
SUBWF ZIKL,W
BZ CN2 ;прошло 10 циклов*0,1с=1с ?
MOVLW 0x3C ;если нет,то устанавливаем
MOVWF TMR1H ;TMR1 ещё на 0,1с
MOVLW 0xBB
MOVWF TMR1L
B ENDINT
CN2 INCF SEC1,W ;увеличиваем время счёта
SUBLW 0x0A ;SEC2:SEC1=SEC2:SEC1+1
BNZ CN3
CLRF SEC1
INCF SEC2,W
SUBLW 0x0A
BNZ CN4
CLRF SEC2
B CN5
CN3 INCF SEC1
B CN5
CN4 INCF SEC2
CN5 BCF T1CON,TMR1ON
BSF GPIO,INS
BSF STATUS,RP0 ;банк1
BCF TRISIO,INS ;остановка счёта импульсов
BCF STATUS,RP0 ;банк0
CALL CLRPRES ;досчёт предделителя
MOVF IMP1_TMP,W ;на этом участке программы
ADDWF IMP1 ;число импульсов ,накопленное
BNC CN6 ;в прошлое время,складывается
INCF
IMP2
;с числом импульсов за
BNZ CN6 ;IMP4_TMP:..:IMP1_TMP=
INCF IMP3 ;IMP4_TMP:..:IMP1_TMP + IMP4:..:IMP1
SKPNZ
INCF IMP4
CN6 CLRF TMR0
MOVF IMP1,W
MOVWF IMP1_TMP
MOVF IMP2,W
MOVWF TMR0
MOVWF IMP2_TMP
MOVF IMP3,W
MOVWF IMP3_TMP
MOVF IMP4,W
MOVWF IMP4_TMP
MOVLW 0x3C ;установка TMR1 на 0,1с
MOVWF TMR1H
MOVLW 0xDC
MOVWF TMR1L
BSF T1CON,TMR1ON
BSF STATUS,RP0 ;банк1
BSF TRISIO,INS ;продолжение счёта импульсов
BCF STATUS,RP0 ;банк0
CN7 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
MOVWF FSR
MOVLW 0x07
MOVWF CNT1
CN8 MOVF INDF,W
SUBLW 0x0A
BNZ CN9
CLRF INDF
DECF FSR
DECFSZ CNT1
B CN8
CN9 CLRF IND7
MOVF SEC1,W
ANDLW 0x0F
CALL INDTBL
MOVWF IND8
MOVF SEC2,W
ANDLW 0x0F
CALL INDTBL
MOVWF IND9
CALL SHOWIND
MOVF IMP2_TMP,W
MOVWF IMP2
MOVF IMP3_TMP,W
MOVWF IMP3
MOVF IMP4_TMP,W
MOVWF IMP4
CLRF ZIKL
B ENDINT
;*****************************
;* счётчик остановлен *
;*****************************
CN_STOP BCF PIR1,TMR1IF
BCF T1CON,TMR1ON
BCF GPIO,INS
BSF STATUS,RP0 ;банк1
BSF TRISIO,INS ;остановка счёта импульсов
BCF STATUS,RP0 ;банк0
CALL CLRPRES
ENDINT SWAPF S_TMP,W
MOVWF STATUS
MOVF W_TMP,W
RETFIE
;*****************************
;* подпрограмма подготовки TMR0,TMR1 *
;*****************************
INITPRES BCF FLAG,CHANGE
MOVLW B'00010001'
MOVWF T1CON
BSF INTCON,T0IE
BSF STATUS,RP0
MOVLW B'00110111'
MOVWF OPTION_REG
BSF TRISIO,INS
BCF STATUS,RP0
CLRF IMP1
CLRF IMP2
CLRF IMP3
CLRF IMP4
CLRF SEC1
CLRF SEC2
CLRF IMP1_TMP
CLRF IMP2_TMP
CLRF IMP3_TMP
Информация о работе Измеритель частоты синусоидального сигнала