技术热线: 4007-888-234

50M频率表的电路图及源程序

更新时间: 2019-03-26
阅读量:2593

50M频率表的电路图及源程序

 

电路图:

1.png

源程序:

 

;*******************************************************************
;                          FMETER.ASM
;             4 digits auto-ranging frequency-meter
;           made by Simone Benvenuti & Andrea Geniola
;       e-mail: simone.benvenuti@studenti.ing.unipi.it
;               andrea.geniola@studenti.ing.unipi.it
;*******************************************************************
;

; A frequency counter which can read frequencies from 0Hz to 50MHz is
; here implemented using a PIC microcontroller. The basic hardware for
; the measurement circuit is shown below: the measure result can be read
; on 4 seven-segments displays in the engeneering notation (A.BC * 10^D).
; The displays are driven using only 11 output pins and 4 transistors;
; during a refresh cycle each digit is turned on for 62.5 usec
; The imput frequency is "gated" for a precise duration of time. The gate
; is implemented in software as an accurate delay. In order to minimize
; the error the gate is 1msec wide if the frequency is above 256KHz,
; otherwise is 1msec wide. If the frequency is below 128Hz the digits
; blink to warn that the error can be greater than the device resolution.
; To minimize the energy consumption the PIC turns in sleep mode if no

; input signal is detected for 10sec (this period is software tunable),
; but it wake-up itself immediately when the input is stimulated.
; The program is written for the PIC16C84 but cheaper PICs (as PIC16C61)
; can be used.
;
;                        ________________
;             cents gnd -| RA2      RA1 |- tenths gnd      
;             esp   gnd -| RA3      RA0 |- units gnd       

; input -/\/\/\/\--+-----| RA4/TOCKI    |-                    ___a___
;         470ohm   |    -|              |- 4 MHz cristal      |     |
;                  | gnd-|              |- VDD 3..5 Volt     f|     |b
;   input control  +-----| RB0      Rb7 |- "g" segment        |  g  |
;          "a" segment  -| RB1      RB6 |- "f" segment        |-----|
;          "b" segment  -| RB2      RB5 |- "e" segment       e|     |c
;          "c" segment  -| RB3      RB4 |- "d" segment        |  d  |
;                        ----------------                     -------
;*******************************************************************
;
        LIST    p=16C84, wdte=0 ; PIC16C84 is the target processor

;
;status registers:
pc equ 02 ;program counter
porta   equ     05      ;I/O register
portb   equ     06      ;I/O register
status  equ     03      ;status register
tmr     equ     01      ;8 bits counter
trisa   equ     0x5     ;port "a" direction register
trisb   equ     0x6     ;port "b" direction register
intcon  equ     0x0B    ;interrupt control register

;general registers:
unita   equ     0x0C      ;display units 
decimi  equ     0x1D      ;display tenths 
cents   equ     0x1E      ;display cents 
esp     equ     0x1F      ;display exponent 
H_byte  equ     0x10      ;high_byte of the read number (N)
L_byte  equ     0x11      ;low_byte of the read number (N)
conta_r equ     0x12      ;refresh counter
cifra   equ     0x13      ;parameter
U       equ     0x14      ;units
D       equ     0x15      ;tens
H       equ     0x16      ;hundreds
M       equ     0x17      ;thousands
DM      equ     0x18      ;tens of thousands

addwf   DM
movlw   0x05
addwf   M
movlw   0x05
        addwf   H
movlw   0x03
addwf   D
movlw   0x06
        addwf   U               ;add 65536
return
     END