Разработка измерителя частот для сетей переменного тока

Автор работы: Пользователь скрыл имя, 19 Апреля 2011 в 10:18, курсовая работа

Краткое описание

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

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

Введение……………………………... .…………………………………….... 4
1 Обзор аналогичных устройств........................................................................ 6
2 Обоснование выбранного варианта технического решения……………… 10
3 Разработка принципиальной схемы устройства…………………………… 12
4 Разработка алгоритма и программы функционирования устройства……. 19
5 Результаты эмуляции программы в пакете Proteus 7 professional…........... 26
6 Анализ временных соотношений и оценка погрешностей………...... 28
Выводы…………………………………………………………………………. 31
Литература…………………………………………………...............................

Содержимое работы - 1 файл

курс_ЦФ.doc

— 1.84 Мб (Скачать файл)

                  ORG 4               ; start at location 0

               goto main             ; jump over to main routine      

   ClearVar            

              clrf LED1

              clrf LED2

              clrf LED3

              clrf LED4

              clrf LED5

              clrf NumH

              clrf NumL

              clrf Tens

              clrf Ones

              clrf Thou

              clrf TenK

              clrf Hund

              clrf SelFr

                      

              return

   ;----------------------------------------------------------------------;

   ;            Инициализация портов и таймера 1                   

   ;----------------------------------------------------------------------; 

   init:

              

              clrf   PORTA

               movlw  0x07

               movwf  CMCON

               bsf    STATUS,RP0

               movlw  0x00                 ;порт А все выходы

               movwf  TRISA

               movlw  0x40                 ;порт В все выходы

               movwf  TRISB

               bcf    STATUS,RP0

               clrf   PORTA

               clrf   PORTB

               movlw  B'00000110'

               movwf  T1CON

               bcf    T1CON,0

               return 

   ;----------------------------------------------------------------------;

   ;                 Инициализация LCD                                   ;

   ;----------------------------------------------------------------------;

   initlcd:

     movlw D'40'

     call   nmsec                  ;  Wait 40 msecs before Reset

     bcf    RS                       ;  send an 8 bit instruction

     movlw  0x03                ;  Reset Command

     call   NybbleOut         ;  Send the Nybble

     call   Dlay5                  ;  Wait 5 msecs before Sending Again

     EStrobe

     call Dlay160               ;  Wait 160 usecs before Sending 2nd Time

     EStrobe

     call Dlay160               ;  Wait 160 usecs before Sending 3rd Time

     bcf    RS                      ;  send an 8 bit instruction

     movlw  0x02               ;  Set 4 Bit Mode

     call   NybbleOut             

     call Dlay160

     movlw  0x028             ;  4 bit, 2 Line, 5x7 font

     call   SendINS

     movlw  0x010            ;  display shift off

     call   SendINS

     movlw  0x001            ;  Clear the Display RAM

     call   SendINS

     call   Dlay5                ;  Note, Can take up to 4.1 msecs

    

     return 

   ;----------------------------------------------------------------------;

   ;              установка свойств LCD                  ;

   ;----------------------------------------------------------------------;

   SendASCII

                                       ;  Send nbr as ASCII character

                                       ;  Send the Character to the LCD

     movwf  Temp                   ;  Save the Temporary Value

     swapf  Temp, w                ;  Send the High Nybble

     bsf    RS                     ;  RS = 1

     call   NybbleOut

     movf   Temp, w                ;  Send the Low Nybble

     bsf    RS

     call   NybbleOut

     return 

   ;----------------------------------------------------------------------;

   ;              передача инструкций на LCD                           ;

   ;----------------------------------------------------------------------;

     SendINS                           ;  Send the Instruction to the LCD

     movwf  Temp                   ;  Save the Temporary Value

     swapf  Temp, w                ;  Send the High Nybble

     bcf    RS                            ;  RS = 0

     call   NybbleOut

     movf   Temp, w                ;  Send the Low Nybble

     bcf    RS

     call   NybbleOut

     return 

   NybbleOut                       ;  Send a Nybble to the LCD

     andlw  B'00001111'

     movwf  PORTB                           

     EStrobe                       ;  Strobe out the LCD Data

     call Dlay160                  ;  delay for 160 usec

     return 

   ;----------------------------------------------------------------------;

   ;                        Задержка 200uS                              ;

   ;----------------------------------------------------------------------;

   Delay200

           movlw D'100'

            movwf Temp2

            decfsz Temp2,1

            goto $-1

            return

   ;----------------------------------------------------------------------;

   ;                              LCD  Line1                              ;

   ;----------------------------------------------------------------------;

   Line1

          movlw  0x080                

          call   SendINS

          movlw  0x00C                 

          call   SendINS

          return

   Line2

          movlw  " "

          call   SendASCII

          movlw " "

          call   SendASCII

          movlw  " "

          call   SendASCII

          movlw  " "

          call   SendASCII

          movlw  " "

          call   SendASCII      

          movlw  " "

          call   SendASCII

          movlw  " "

          call   SendASCII

          movlw  " "

          call   SendASCII 

          movlw  0x0C0                

          call   SendINS

          movlw  0x00C                 

          call   SendINS

          return 
 

   ;-----------------------------------------------------------------------;

   ;                Вывод на LCD freq xxxxx Hz                              ;

   ;-----------------------------------------------------------------------;

   FreqHz

         

          movf  LED1,0

          addlw "0"

          call  SendASCII

          movf  LED2,0

          addlw "0"

          call  SendASCII

          movf  LED3,0

          addlw "0"

          call  SendASCII

          call  Line2

          movf  LED4,0

          addlw "0"

          call  SendASCII

          movf  LED5,0

          addlw "0"

          call  SendASCII

          movlw " "

          call  SendASCII 

          movlw " "

          call  SendASCII

          movlw "H"

          call  SendASCII

          movlw "z"

          call  SendASCII

          movlw " "

          call  SendASCII

          return 

   ;----------------------------------------------------------------------;

   ;                Конвертация битов в десятичный код              ;

   ;----------------------------------------------------------------------;

   Convert   

         movf    NumH,0  

         swapf NumH,w

         andlw 0x0F  

         addlw 0xF0  

         movwf Thou

         addwf Thou,f

         addlw 0xE2

         movwf Hund

         addlw 0x32

         movwf Ones 

         movf NumH,w

         andlw 0x0F

         addwf Hund,f

         addwf Hund,f

         addwf Ones,f

         addlw 0xE9

         movwf Tens

         addwf Tens,f

         addwf Tens,f 

         swapf NumL,w

         andlw 0x0F

         addwf Tens,f

         addwf Ones,f 

         rlf Tens,f

         rlf Ones,f

         comf Ones,f

         rlf Ones,f 

         movf NumL,w

         andlw 0x0F

         addwf Ones,f

         rlf Thou,f 

         movlw 0x07

         movwf TenK 
 

         movlw 0A 

   Lb1:

         addwf Ones,f

         decf Tens,f

         btfss 3,0

         goto Lb1

   Lb2:

         addwf Tens,f

         decf Hund,f

         btfss 3,0

         goto Lb2

   Lb3:

         addwf Hund,f

         decf Thou,f

         btfss 3,0

         goto Lb3

   Lb4:

         addwf Thou,f

         decf TenK,f

         btfss 3,0

         goto Lb4

         retlw   00 

   ;----------------------------------------------------------------------;

   ; Передача  данных на выводы D4-D7     LCD                  ;

   ;----------------------------------------------------------------------;

   OutFrDis

         

           movf    FrHig,0

           movwf   NumH

           movf    FrLow,0

           movwf   NumL

        

           call    Convert

           movf    TenK,0

Информация о работе Разработка измерителя частот для сетей переменного тока