TUNER SHARP

Cet article concerne l'utilisation de modules additionnels au démodulateur
SHARP, il permet pour ceux qui on une version "BSFD75G01" ou tout autre tuner du même style pourvu d'un pré diviseur de fréquence, d'afficher la fréquence reçue sur un afficheur 2 lignes 16 caractères de type "lcd". Par un truchement de trois boutons (menu plus et moins)  et d'un Pic 16F84-04/P on affiche : la bande intermédiaire satellite, la fréquence de sortie du pré diviseur, une fréquence d'ol pour le 10Giga (sauver en mémoire), la fréquence de réception 10 Giga. 

A signaler que sur la platine Sharp il y a un régulateur 7805 (a droite sur le circuit ci-dessous).

Voici les sources du programme ... (pas comme certains... non je ne donne pas de noms !) par contre attention une partie est en basic l'autre en assembleur....

Pour ceux que la programmation rebute envoyez moi un pic 16F84-04/P je me ferais un plaisir de vous le renvoyer programmé. Mais n'oubliez pas l'enveloppe retour affranchie a votre adresse.

Téléchargez le "FMETRE10.HEX"

' **************************************************************************
' Version 1.0
' Fréquence mètre pour platine avec tuner style sharp BSFD7501G.
' Pré-diviseur 128 ol tuner 479.5 MHz
' Réglage de l' OL 10 gigas ou autre, réglable et mémorisée
' Affichage fréquence directe entrée du pic
' Affichage fréquence BIS (bande intermediaire salelite)
' Affichage fréquence BIS + OL tete
'                         ________________
'                        -| RA2  \/  RA1 |- LCD 04 RS
' control  mesure        -| RA3      RA0 |- LCD 06 E
' entrée mesure          -| RA4     OSC1 |- 4 Mhz
' + 5 Volts              -| MCLR    OSC2 |- 4 MHz
'            MASSE       -| GND      VCC |- + 5 Volts
'                        -| RB0      Rb7 |- LCD 14 DATA
'bouton menu plus moins  -| RB1      RB6 |- LCD 13 DATA
'                        -| RB2      RB5 |- LCD 12 DATA
'                        -| RB3      RB4 |- LCD 11 DATA
'                         ----------------
'
'
' LCD 01 MASSE
' LCD 02 +5 volts
' LCD 03 point milieu d'un potar de 20k les 2 autres points sont masse et 5v
' LCD 05 RW a la masse
' LCD 07 à 10 non conecté
' commun des boutons a une capa de 100nf a la masse
' MENU 330 Ohms vers RB1
' PLUS 100 Ohms vers RB1
' Moins 220 Ohms vers RB1
' RA3 ET RA4 sont reliées entre elles et forment l'entrée du fréquencemètre
' par une résistance de 470 Ohms série
'*******************************************************************
' L'amplificateur est constitué d'un 2N2222 en émetteur commun (à la masse),
' résistance de 560 Ohms
' (reliée au +5volts) dans le collecteur et résistance de 39K entre collecteur et
' base.
' Entrée par la base via une capa, sortie sur le collecteur vers la résistance
' d'entrée du fréquencemètre(470 Ohms -> RA4).
' Vu le système de polarisation, le point de repos collecteur devrait se situer
' vers 0,8 Volt.
' La fréquence de fonctionnement est limitée par la fréquence de coupure de la
' charge collecteur (résistance et capacité de charge) donc vers quelques
' mégahertz.
'******************************** LCD ***********************************
DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 4

DEFINE LCD_RSREG PORTA
DEFINE LCD_RSBIT 1

DEFINE LCD_EREG PORTA
DEFINE LCD_EBIT 0

DEFINE LCD_BITS 4
DEFINE LCD_LINES 2

'*********************************** variables *********************
FREQ0    var word
FREQ var word
FREQH    var word
FREQL var word
FHI var BYTE
FLO     var BYTE
flag var BYTE
COUNT1 var BYTE
trisabuf var BYTE
potar    var BYTE   
BMENU    var portb.3
PLUS    var portb.1
MOINS    var portb.2
MENU    var byte   
OL var word   
G10     var word
TEMPS var byte
bou     var byte
'*********************************** initialisations asm ***************
ASM
    movlw 0x10    ;porta 4 en entrée
    movwf 0x5
    MOVLW    0x37
option         ;charge 00100111 dans le registre option
    MOVLW    0x10         ;init freq avec RA4 en entrée
    MOVWF    _trisabuf
ENDASM
'********************************* initialisations basic **************
MENU =2
temps=2
'****************** recup memoire OL
read 1, flag
If flag = 55 then
READ 2,OL.byte0
READ 3,OL.byte1
else
OL= 9000
endif

LCDOUT $FE,1,"F8BYC TELEVISION" ; ou votre call hi
'************************************************************************
main:
'****************** lecture des boutons *********************************
POT portb.1,255,potar
' rien
bou = 0

'plus
if (potar > 5) and (potar < 16) then
bou = 1
endif

'moins
if (potar > 16) and (potar < 25) then
bou = 2
endif

'menu
if (potar > 25) and (potar < 50) then
bou = 3
endif
'************************************************************************
if bou = 3 then        '*** bouton MENU ***
    menu=menu+1
    pause 300
    if menu=7 then
    menu=3
    endif
endif
'************************************************************************
if menu = 3 then        '*** FREQUENCE LU SUR ENTREE DU PIC ***
    FREQ= (FHI*256)+FLO   
    FREQH=freq / 10
    FREQL=freq //10
    freqh=freqh*4
    freql=freql*4
    freql=freql/10
    freq=freqh+freql
    LCDOUT $FE,1,"IN: ",#freq," KHz "
endif
'************************************************************************
if menu = 4 then        ' *** MODIFICATION OL ***
    if bou=1 then        ' incremente la frequence OL
    OL=OL+1
    endif

    if bou=2 then        ' decremente la frequence OL
    OL=OL-1
    endif
               
    write 2 , OL.byte0 ' sauve la frequence OL
write 3 , OL.byte1
    write 1 , 55
    LCDOUT $FE,1,"OL:",#OL," Mhz " 'affiche la frequence OL
endif
'***********************************************************************
if menu = 5 then        '*** AFFICHAGE FREQ + OL ***
    G10 = OL+FREQH
    LCDOUT $FE,1,"10G: ",#G10,".",#freql," Mhz "
endif
'**********************************************************************
gosub mesure

FREQ= (FHI*256)+FLO
'FREQ= 33877 ' -> 17345.024 -> 12550.024 valeures de test pour le calcul
FREQH=freq / 125
FREQL=freq //125
freqh=freqh*64
freql=freql*64
freql=freql/125
freq=freqh+freql
FREQ=FREQ-4795
freqh= freq/10
freql= freq-(freqh*10)

' affichage

LCDOUT $FE,$C0,"BIS: ",#freqh,".",#freql," Mhz "
pause 100
goto main

mesure:
ASM
;;;;;;;;;;;;;;;;;;;;;;;;;;;; AUTORISATION DU COMPTAGE
    clrf    TMR0        ; RAZ timer
    bsf    _trisabuf,3    ; RA4 en entrée et RA3 en entrée autorisation comptage
    movf     _trisabuf,W
    tris    PORTA
;;;;;;;;;;;;;;;;;;;;;;;;;;;; BASE DE TEMPS
    movf    _TEMPS,W
    movwf    _COUNT1
dxxx    nop
    decfsz    _COUNT1
    goto    dxxx
    nop
    nop
    call delay
    call delay
    call delay
    call delay
    call delay
;;;;;;;;;;;;;;;;;;;;;;;;;;; ARRET DU COMPTAGE
    bcf    _trisabuf,3    ;RA4 en entrée et RA3 en Sortie pour bloquer le comptage
    movf     _trisabuf,W
    tris    PORTA
;;;;;;;;;;;;;;;;;;;;;;;;;;; RECUPERATION DES COMPTEURS
calcul    MOVF TMR0,W        ;timer -> travail
    MOVWF _FHI    ;travail -> FHI    8bits de poids fort comptage
    clrf    _COUNT1         ;remise a zero compteur
toggle    incf    _COUNT1,F     ;incrementation du compteur
    bsf    PORTA,3         ;RA3 a 1
    bcf    PORTA,3         ;RA3 a 0
    movf    TMR0,W         ;lecture du timer
    subwf    _FHI,w         ;on regarde si le prediviseur a incrementer le timer
    btfsc    STATUS,2    ;comparaison
    goto    toggle         ;si le timer a pas incrementer on recommence
    comf    _COUNT1,F    ;complement au compteur
    incf    _COUNT1,W    ;incrementation du compteur
    movwf    _FLO         ;travail -> FLO 8bits de poids faible comptage
    goto fin
;;;;;;;;;;;;;;;;;;;;;;;;;;; BASE DE TEMPS
delay movlw    97 ; 1 1    pour 0.5 ms 100-3 =97
    movwf    _COUNT1 ; 1 2
    nop ; 1 3
    goto    $+1 ; 2 5
    goto    $+1 ; 2 7
    goto    $+1 ; 2 9
dly    goto    $+1 ; 2 2 cycles
    decfsz    _COUNT1 ; 1 1 3 cycles
    goto    dly ; 2 5 cycles fois compteur 97 x 5 = 485 + 11 =496
    return        ; 2 11 497 x 5 = 2485µs
fin
ENDASM
return

 

Comme dab je n'ais rien inventé, j'ai plutot adapter ce qui existait pour le tuner Sharp un grand merci a alain F1CJN pour ces nombreuses infos qui m'ont bien aidé au départ.

Bonne réalisation, 73  à tous de F8BYC