Измеритель частоты синусоидального сигнала

Автор работы: Пользователь скрыл имя, 03 Марта 2011 в 16:43, курсовая работа

Описание работы

В современном обществе по мере познания им природы все более возрастает роль измерений. Соответственно непрерывно увеличивается объем измерительной информации – информации о значениях измеряемых физических величин, повышаются требования к качеству и способам ее обработки и использования.

Содержание работы

Введение ……………………………………………………….……4
Структурной схема устройства……………………………………4
Описание принципа работы структурной схемы устройства….....5
Алгоритм функционирования устройства………………………....6
Описание и расчёт основных элементов схемы электрической
Принципиальной………….….……………………………….…...7
Алгоритм работы микроконтроллера …………………………….17
Текст программы…………………………………………………. 19
Литература. ………………………………………………………….24

Файлы: 1 файл

Расчетная Р.docx

— 751.49 Кб (Скачать файл)

          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             ;с числом импульсов за последнюю  1с

      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            ;преобразование по таблице 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

      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

Информация о работе Измеритель частоты синусоидального сигнала