'Programme en PicBasic pour programmer le module Comtech RX2400 'avec affichage de la fréquence sur un LCD en mode 4-bit. 'Fmin =2300 MHz, F max= 2500 MHz 'Sélection du pas 125, 250, 500, 1000 kHz, 10 000 kHz 'Mémorisation de la fréquence par bouton poussoir 'Fréquence Intermédiaire 479.5 MHZ, OL infradyne 'Deux fréquences mémorisées sélectionnées par pin 2 du PIC 'Version pour afficheur 2 lignes de 8 caractères ' *** Copyright - F6CSX Décembre 2002 / décembre 2005 *** ' LCD PIC ' ------ -------- ' DB4 PortB.4 ' DB5 PortB.5 ' DB6 PortB.6 ' DB7 PortB.7 ' RS PortB.1 ' E PortB.3 ' RW à la masse, toujours en écriture ' Vdd 5 volts ' Vss Ground ' Vo potentiometre de 10K ' ' ** DÉCLARATION DE LA CONFIGURATION HARD DEFINE LCD_DREG PORTB 'Selection du port B DEFINE LCD_DBIT 4 'Selection de RB4 à RB7 DEFINE LCD_RSREG PORTB 'RS sur port B DEFINE LCD_RSBIT 1 'RS sur RB1 DEFINE LCD_EREG PORTB DEFINE LCD_EBIT 3 'E sur RB3 DEFINE LCD_BITS 4 'Mode 4 bits DEFINE LCD_LINES 2 '2 lignes de 8 caractères DEFINE I2C_SCLOUT 1 ' ** DÉFINITION DES ENTREES - SORTIES ' Sorties I2C SCL var PORTB.1 ' SCL sur RB1 (pin 7) SDA var PORTB.0 ' SDA sur RB0 (pin 6) 'Boutons MEMO var PORTA.2 ' Bouton de mémorisation sur RA2 (pin 1) UP var PORTA.0 'augmente la fréquence (sur RA0) DOWN var PORTA.1 'diminue la fréquence (sur RA1) CH_PAS var PORTA.4 'Change le pas du synthé (sur RA4) SEL var PORTA.3 'Choix VFO A ou B INPUT UP 'Up et Down sont des entrées INPUT DOWN INPUT MEMO INPUT CH_PAS INPUT SEL ' ** DÉCLARATION DES VARIABLES b1 var BYTE b2 var BYTE b3 var BYTE b5 var BYTE b6 var BYTE b7 var BYTE F1 var WORD F2 var WORD F3 var WORD W1 var BYTE W2 var WORD ADDR1 VAR BYTE TMP VAR WORD TMP_LO VAR TMP.LOWBYTE TMP_HI VAR TMP.HIGHBYTE PLLBASE VAR WORD PLL VAR WORD RXPLL VAR WORD LO VAR RXPLL.LOWBYTE HI VAR RXPLL.HIGHBYTE PAS VAR WORD '1=125kHz, 2=250kHz, 4=500kHz, 8=1MHz, 80=10MHz '*** DONNEES INITIALES *** ADDR1=$C2 'adresse I2C du SDA5055 PLLBASE=18400 'début à 2300 MHz : 2300 / 0,125 = 18400 PAS = 8 ' pas de 1 MHZ par défaut PAUSE 100 LOW PORTB.2 'Met RB2 = R/W à 0 W1=0 W2="A" LCDOUT $FE, 1 ' Clear LCD screen LCDOUT "RX 2.3 " ' affiche numéro de version pendant 1 seconde LCDOUT $FE,$C0 LCDOUT "GHz v1.4" PAUSE 1000 EEPROM 0,[$A0,$00,$A0,$00] 'données initiales TMP = 160 ($A0) correspond à F = 2320 MHz ' Le point de départ est 2300 MHz donné par PLLBASE. On rajoute un décalage de 125kHz * TMP 'TMP est sur 16 bits, donc 65535 fréquences possibles. ' '*** LECTURE DU DECALAGE TMP *** LECTURE: READ W1,TMP_LO 'lit les 8 bits de poids faible READ W1+1,TMP_HI 'lit les 8 bits de poids fort ' *** DÉBUT DU PROGRAMME *** MAIN: PLL = PLLBASE + TMP RXPLL=PLL - 3836 'on retranche la valeur de la FI 479.500 MHz I2CWRITE SDA,SCL,ADDR1,[HI,LO,$8E] 'Envoi des données au module GOSUB CALCUL 'calcule la fréquence pour l'affichage GOSUB AFFICHAGE 'affiche la fréquence PAUSE 500 '*** BOUCLE PRINCIPALE *** BOUCLE: BUTTON SEL,0,255,0,b6,1,VFO_A 'surveille le bouton SEL: 0=VFO A BUTTON SEL,1,255,0,b7,1,VFO_B BUTTON UP,0,10,2,b1,1,MONTE 'surveille le bouton UP BUTTON DOWN,0,10,2,b2,1,DESCEND 'surveille le bouton DOWN BUTTON MEMO,0,255,0,b5,1,STORE 'surveille le bouton MEMO BUTTON CH_PAS,0,255,0,b3,1, CHOIX 'surveille le bouton PAS PAUSE 100 'pause de 0.1s GOTO BOUCLE VFO_A: '*** CHANGE VFO *** W1=0 W2="A" GOTO LECTURE VFO_B: W1=2 W2="B" GOTO LECTURE MONTE: '** AUGMENTE LA FRÉQUENCE DE 1 PAS TMP = TMP + PAS IF TMP > 1600 THEN TMP = 0 'Fmax = 2500 MHz GOTO MAIN DESCEND: '** DIMINUE LA FREQUENCE DE 1 PAS IF TMP