First Programm.HF Lo Band VFO with LPC1114 and AD9851 module.Built in ELEKEY.Using ACM1602NI.

Dependencies:   mbed QEI

Committer:
jp1nom
Date:
Sun Nov 13 14:54:43 2016 +0000
Revision:
0:5cdf1a556e60
Child:
1:ee890adf56ea
DDS VFO for HF Lo BAND with LPC1114FN28 and AD9851 .using Shuttle Dial.Built in ELEKEY.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jp1nom 0:5cdf1a556e60 1 #include "mbed.h"
jp1nom 0:5cdf1a556e60 2 #include "I2cLCD.h"
jp1nom 0:5cdf1a556e60 3
jp1nom 0:5cdf1a556e60 4 DigitalOut DATA(dp9);
jp1nom 0:5cdf1a556e60 5 DigitalOut W_CLK(dp17);
jp1nom 0:5cdf1a556e60 6 DigitalOut FQ_UD(dp11);
jp1nom 0:5cdf1a556e60 7 DigitalOut RESET(dp26); //previously known as dp26
jp1nom 0:5cdf1a556e60 8 DigitalOut LED(dp14);
jp1nom 0:5cdf1a556e60 9 DigitalOut PTT_OUT(dp18);
jp1nom 0:5cdf1a556e60 10 DigitalIn PTT_ON(dp1);
jp1nom 0:5cdf1a556e60 11 DigitalIn DOT(dp4);
jp1nom 0:5cdf1a556e60 12 DigitalIn BAR(dp6);
jp1nom 0:5cdf1a556e60 13 DigitalOut KEY(dp13);
jp1nom 0:5cdf1a556e60 14 DigitalIn BAND_SW(dp10);
jp1nom 0:5cdf1a556e60 15 DigitalIn JOG_1(dp2);
jp1nom 0:5cdf1a556e60 16 DigitalIn JOG_2(dp28); //previously known as dp28
jp1nom 0:5cdf1a556e60 17 DigitalIn JOG_3(dp25);
jp1nom 0:5cdf1a556e60 18 DigitalIn JOG_4(dp16);
jp1nom 0:5cdf1a556e60 19
jp1nom 0:5cdf1a556e60 20 double FQX;
jp1nom 0:5cdf1a556e60 21 double FQD;
jp1nom 0:5cdf1a556e60 22
jp1nom 0:5cdf1a556e60 23 double FQD_18 = 1810000;
jp1nom 0:5cdf1a556e60 24 double FQD_19 = 1907500;
jp1nom 0:5cdf1a556e60 25 double FQD_351 = 3500000;
jp1nom 0:5cdf1a556e60 26 double FQD_352 = 3599000;
jp1nom 0:5cdf1a556e60 27 double FQD_353 = 3680000;
jp1nom 0:5cdf1a556e60 28 double FQD_381 = 3702000;
jp1nom 0:5cdf1a556e60 29 double FQD_382 = 3745000;
jp1nom 0:5cdf1a556e60 30 double FQD_383 = 3791000;
jp1nom 0:5cdf1a556e60 31 double FQD_4 = 4630000;
jp1nom 0:5cdf1a556e60 32 double FQD_7 = 7000000;
jp1nom 0:5cdf1a556e60 33 double FQD_10 = 10100000;
jp1nom 0:5cdf1a556e60 34
jp1nom 0:5cdf1a556e60 35 double FQ;
jp1nom 0:5cdf1a556e60 36
jp1nom 0:5cdf1a556e60 37 double FQ_18 = 43191352;
jp1nom 0:5cdf1a556e60 38 double FQ_19 = 45517913;
jp1nom 0:5cdf1a556e60 39 double FQ_351 = 83519190.5;
jp1nom 0:5cdf1a556e60 40 double FQ_352 = 85881750;
jp1nom 0:5cdf1a556e60 41 double FQ_353 = 87814470;
jp1nom 0:5cdf1a556e60 42 double FQ_381 = 88339811;
jp1nom 0:5cdf1a556e60 43 double FQ_382 = 89365820;
jp1nom 0:5cdf1a556e60 44 double FQ_383 = 90463357;
jp1nom 0:5cdf1a556e60 45 double FQ_4 = 110484088;
jp1nom 0:5cdf1a556e60 46 double FQ_7 = 167038250;
jp1nom 0:5cdf1a556e60 47 double FQ_10 = 241012230;
jp1nom 0:5cdf1a556e60 48
jp1nom 0:5cdf1a556e60 49 double f1 = 7000000;
jp1nom 0:5cdf1a556e60 50 double f2 = 7200000;
jp1nom 0:5cdf1a556e60 51 double f1_CW = 7000000;
jp1nom 0:5cdf1a556e60 52 double f2_CW = 7045000;
jp1nom 0:5cdf1a556e60 53 int BAND;
jp1nom 0:5cdf1a556e60 54 double IF;
jp1nom 0:5cdf1a556e60 55 double STEPD;
jp1nom 0:5cdf1a556e60 56 double STEP = 2.386;
jp1nom 0:5cdf1a556e60 57 float wt = 0.1;
jp1nom 0:5cdf1a556e60 58 const int a=1;
jp1nom 0:5cdf1a556e60 59 int s;
jp1nom 0:5cdf1a556e60 60
jp1nom 0:5cdf1a556e60 61 Ticker deley;
jp1nom 0:5cdf1a556e60 62 float del = 0.1;
jp1nom 0:5cdf1a556e60 63
jp1nom 0:5cdf1a556e60 64 void DDS(void);
jp1nom 0:5cdf1a556e60 65 void DDS_U(void);
jp1nom 0:5cdf1a556e60 66 void DDS_D(void);
jp1nom 0:5cdf1a556e60 67 void DDS_T(void);
jp1nom 0:5cdf1a556e60 68 void GET_LCD_DATA(void);
jp1nom 0:5cdf1a556e60 69 void STEPS(void);
jp1nom 0:5cdf1a556e60 70 void QSY(void);
jp1nom 0:5cdf1a556e60 71 void STEPSS(void);
jp1nom 0:5cdf1a556e60 72 void JOG(void);
jp1nom 0:5cdf1a556e60 73 void DDS_CW(void);
jp1nom 0:5cdf1a556e60 74 void PTT_OFF(void);
jp1nom 0:5cdf1a556e60 75
jp1nom 0:5cdf1a556e60 76 I2cLCD lcd(dp5, dp27);
jp1nom 0:5cdf1a556e60 77
jp1nom 0:5cdf1a556e60 78 int main() {
jp1nom 0:5cdf1a556e60 79
jp1nom 0:5cdf1a556e60 80 KEY = 0;
jp1nom 0:5cdf1a556e60 81 STEPD = 10;
jp1nom 0:5cdf1a556e60 82 BAND = 7;
jp1nom 0:5cdf1a556e60 83 FQD = FQD_7;
jp1nom 0:5cdf1a556e60 84 FQ = FQ_7;
jp1nom 0:5cdf1a556e60 85
jp1nom 0:5cdf1a556e60 86 IF = 10857458;//IF 455KHz
jp1nom 0:5cdf1a556e60 87 // IF = 255329316.50856;// IF 10.7MHz
jp1nom 0:5cdf1a556e60 88 // lcd.locate(1,1);
jp1nom 0:5cdf1a556e60 89 // lcd.printf("455K");
jp1nom 0:5cdf1a556e60 90 // lcd.locate(0,1);
jp1nom 0:5cdf1a556e60 91 // lcd.printf("10.7M");
jp1nom 0:5cdf1a556e60 92
jp1nom 0:5cdf1a556e60 93
jp1nom 0:5cdf1a556e60 94 LED = 0;
jp1nom 0:5cdf1a556e60 95 s = 1;
jp1nom 0:5cdf1a556e60 96
jp1nom 0:5cdf1a556e60 97 RESET=0;
jp1nom 0:5cdf1a556e60 98 RESET=1;
jp1nom 0:5cdf1a556e60 99 wait_us(100);
jp1nom 0:5cdf1a556e60 100 RESET=0;
jp1nom 0:5cdf1a556e60 101 DATA=0;
jp1nom 0:5cdf1a556e60 102 FQ_UD=0;
jp1nom 0:5cdf1a556e60 103 W_CLK=0;
jp1nom 0:5cdf1a556e60 104
jp1nom 0:5cdf1a556e60 105 W_CLK=1;
jp1nom 0:5cdf1a556e60 106 wait_us(100);
jp1nom 0:5cdf1a556e60 107 W_CLK=0;
jp1nom 0:5cdf1a556e60 108 FQ_UD=1;
jp1nom 0:5cdf1a556e60 109 wait_us(100);
jp1nom 0:5cdf1a556e60 110 FQ_UD=0;
jp1nom 0:5cdf1a556e60 111 wait_us(100);
jp1nom 0:5cdf1a556e60 112 GET_LCD_DATA();
jp1nom 0:5cdf1a556e60 113
jp1nom 0:5cdf1a556e60 114 FQX = FQ + IF;
jp1nom 0:5cdf1a556e60 115 DDS();
jp1nom 0:5cdf1a556e60 116 DDS();
jp1nom 0:5cdf1a556e60 117 lcd.locate(8,0);
jp1nom 0:5cdf1a556e60 118 lcd.printf("0MHz");
jp1nom 0:5cdf1a556e60 119 lcd.locate(12,1);
jp1nom 0:5cdf1a556e60 120 lcd.printf("1KHz");
jp1nom 0:5cdf1a556e60 121 lcd.locate(14,0);
jp1nom 0:5cdf1a556e60 122 lcd.printf("RX");
jp1nom 0:5cdf1a556e60 123 lcd.locate(0,1);
jp1nom 0:5cdf1a556e60 124 lcd.printf("Mode:");
jp1nom 0:5cdf1a556e60 125
jp1nom 0:5cdf1a556e60 126 while(1) {
jp1nom 0:5cdf1a556e60 127 if (PTT_ON==0) {DDS_T();}
jp1nom 0:5cdf1a556e60 128 // if (FQ_UP==0) {DDS_U();}
jp1nom 0:5cdf1a556e60 129 // if (FQ_DOWN==0) {DDS_D();}
jp1nom 0:5cdf1a556e60 130 // if (FSTEP==0) {STEPS();}
jp1nom 0:5cdf1a556e60 131 if (DOT==0) {DDS_CW();}
jp1nom 0:5cdf1a556e60 132 if (BAR==0) {DDS_CW();}
jp1nom 0:5cdf1a556e60 133 if (BAND_SW==0) {QSY();}
jp1nom 0:5cdf1a556e60 134 if (JOG_1==1) {JOG();}
jp1nom 0:5cdf1a556e60 135 }
jp1nom 0:5cdf1a556e60 136 }
jp1nom 0:5cdf1a556e60 137
jp1nom 0:5cdf1a556e60 138 void DDS(void) {
jp1nom 0:5cdf1a556e60 139
jp1nom 0:5cdf1a556e60 140 unsigned long int DDS_DATA;
jp1nom 0:5cdf1a556e60 141 unsigned long int BIT_DATA;
jp1nom 0:5cdf1a556e60 142
jp1nom 0:5cdf1a556e60 143 int i = 0;
jp1nom 0:5cdf1a556e60 144
jp1nom 0:5cdf1a556e60 145 DDS_DATA = FQX;
jp1nom 0:5cdf1a556e60 146
jp1nom 0:5cdf1a556e60 147 for (i=0; i<32; i++) {
jp1nom 0:5cdf1a556e60 148 BIT_DATA = DDS_DATA & 1;
jp1nom 0:5cdf1a556e60 149 if(BIT_DATA==1) {
jp1nom 0:5cdf1a556e60 150 DATA = 1;
jp1nom 0:5cdf1a556e60 151 } else {
jp1nom 0:5cdf1a556e60 152 DATA = 0;
jp1nom 0:5cdf1a556e60 153 }
jp1nom 0:5cdf1a556e60 154 W_CLK = 1;
jp1nom 0:5cdf1a556e60 155 DDS_DATA = DDS_DATA >> 1;
jp1nom 0:5cdf1a556e60 156 wait_us(10);
jp1nom 0:5cdf1a556e60 157 W_CLK = 0;
jp1nom 0:5cdf1a556e60 158 wait_us(10);
jp1nom 0:5cdf1a556e60 159 }
jp1nom 0:5cdf1a556e60 160
jp1nom 0:5cdf1a556e60 161 DDS_DATA = a;
jp1nom 0:5cdf1a556e60 162
jp1nom 0:5cdf1a556e60 163 for (i=0; i<8; i++) {
jp1nom 0:5cdf1a556e60 164 BIT_DATA = DDS_DATA & 1;
jp1nom 0:5cdf1a556e60 165 if(BIT_DATA==1) {
jp1nom 0:5cdf1a556e60 166 DATA = 1;
jp1nom 0:5cdf1a556e60 167 } else {
jp1nom 0:5cdf1a556e60 168 DATA = 0;
jp1nom 0:5cdf1a556e60 169 }
jp1nom 0:5cdf1a556e60 170 W_CLK = 1;
jp1nom 0:5cdf1a556e60 171 DDS_DATA = DDS_DATA >> 1;
jp1nom 0:5cdf1a556e60 172 wait_us(10);
jp1nom 0:5cdf1a556e60 173 W_CLK = 0;
jp1nom 0:5cdf1a556e60 174 wait_us(10);
jp1nom 0:5cdf1a556e60 175 }
jp1nom 0:5cdf1a556e60 176 FQ_UD = 1;
jp1nom 0:5cdf1a556e60 177 wait_us(10);
jp1nom 0:5cdf1a556e60 178 FQ_UD = 0;
jp1nom 0:5cdf1a556e60 179 wait_us(10);
jp1nom 0:5cdf1a556e60 180 }
jp1nom 0:5cdf1a556e60 181
jp1nom 0:5cdf1a556e60 182 void DDS_U(void) {
jp1nom 0:5cdf1a556e60 183
jp1nom 0:5cdf1a556e60 184 // if (FQD <= f1 && FQD <= f2) {
jp1nom 0:5cdf1a556e60 185 if (s==0) {
jp1nom 0:5cdf1a556e60 186 if ((FQD + STEPD) <= f2) {
jp1nom 0:5cdf1a556e60 187 FQD = FQD + STEPD;
jp1nom 0:5cdf1a556e60 188 FQ = FQ + STEP * 100;
jp1nom 0:5cdf1a556e60 189 }
jp1nom 0:5cdf1a556e60 190 }else{
jp1nom 0:5cdf1a556e60 191 if ((FQD + STEPD * 100) <= f2) {
jp1nom 0:5cdf1a556e60 192 FQD = FQD + STEPD * 100;
jp1nom 0:5cdf1a556e60 193 FQ = FQ + STEP * 10000;
jp1nom 0:5cdf1a556e60 194 }
jp1nom 0:5cdf1a556e60 195 }
jp1nom 0:5cdf1a556e60 196 // }
jp1nom 0:5cdf1a556e60 197 GET_LCD_DATA();
jp1nom 0:5cdf1a556e60 198 FQX = FQ + IF;
jp1nom 0:5cdf1a556e60 199 DDS();
jp1nom 0:5cdf1a556e60 200 wait(wt);
jp1nom 0:5cdf1a556e60 201 }
jp1nom 0:5cdf1a556e60 202
jp1nom 0:5cdf1a556e60 203 void DDS_D(void) {
jp1nom 0:5cdf1a556e60 204
jp1nom 0:5cdf1a556e60 205 // if (FQD <= f1 && FQD <= f2) {
jp1nom 0:5cdf1a556e60 206 if (s==0) {
jp1nom 0:5cdf1a556e60 207 if ((FQD - STEPD) >= f1) {
jp1nom 0:5cdf1a556e60 208 FQD = FQD - STEPD;
jp1nom 0:5cdf1a556e60 209 FQ = FQ - STEP * 100;
jp1nom 0:5cdf1a556e60 210 }
jp1nom 0:5cdf1a556e60 211 }else{
jp1nom 0:5cdf1a556e60 212 if ((FQD - STEPD * 100) >= f1) {
jp1nom 0:5cdf1a556e60 213 FQD = FQD - STEPD * 100;
jp1nom 0:5cdf1a556e60 214 FQ = FQ - STEP * 10000;
jp1nom 0:5cdf1a556e60 215 }
jp1nom 0:5cdf1a556e60 216 }
jp1nom 0:5cdf1a556e60 217 // }
jp1nom 0:5cdf1a556e60 218 GET_LCD_DATA();
jp1nom 0:5cdf1a556e60 219 FQX = FQ + IF;
jp1nom 0:5cdf1a556e60 220 DDS();
jp1nom 0:5cdf1a556e60 221 wait(wt);
jp1nom 0:5cdf1a556e60 222 }
jp1nom 0:5cdf1a556e60 223
jp1nom 0:5cdf1a556e60 224 void DDS_T(void) {
jp1nom 0:5cdf1a556e60 225
jp1nom 0:5cdf1a556e60 226 deley.detach();
jp1nom 0:5cdf1a556e60 227
jp1nom 0:5cdf1a556e60 228 if (FQD > f1 && FQD < f2) {
jp1nom 0:5cdf1a556e60 229 GET_LCD_DATA();
jp1nom 0:5cdf1a556e60 230 lcd.locate( 14, 0 );
jp1nom 0:5cdf1a556e60 231 lcd.printf( "T" );
jp1nom 0:5cdf1a556e60 232
jp1nom 0:5cdf1a556e60 233 FQX = FQ;
jp1nom 0:5cdf1a556e60 234 DDS();
jp1nom 0:5cdf1a556e60 235 LED = 1;
jp1nom 0:5cdf1a556e60 236 PTT_OUT = 1;
jp1nom 0:5cdf1a556e60 237 while( PTT_ON == 0) {}
jp1nom 0:5cdf1a556e60 238 PTT_OUT = 0;
jp1nom 0:5cdf1a556e60 239 LED = 0;
jp1nom 0:5cdf1a556e60 240 FQX = FQ + IF;
jp1nom 0:5cdf1a556e60 241 DDS();
jp1nom 0:5cdf1a556e60 242 }else{
jp1nom 0:5cdf1a556e60 243 LED=1;
jp1nom 0:5cdf1a556e60 244 wait(0.2);
jp1nom 0:5cdf1a556e60 245 LED=0;
jp1nom 0:5cdf1a556e60 246 wait(0.2);
jp1nom 0:5cdf1a556e60 247 }
jp1nom 0:5cdf1a556e60 248 GET_LCD_DATA();
jp1nom 0:5cdf1a556e60 249 lcd.locate( 14,0 );
jp1nom 0:5cdf1a556e60 250 lcd.printf( "R" );
jp1nom 0:5cdf1a556e60 251 }
jp1nom 0:5cdf1a556e60 252
jp1nom 0:5cdf1a556e60 253 void GET_LCD_DATA(void) {
jp1nom 0:5cdf1a556e60 254
jp1nom 0:5cdf1a556e60 255 char f[9];
jp1nom 0:5cdf1a556e60 256
jp1nom 0:5cdf1a556e60 257 sprintf(f,"%8.5lf",FQD / 1000000);
jp1nom 0:5cdf1a556e60 258 lcd.locate( 0,0 );
jp1nom 0:5cdf1a556e60 259 lcd.printf( f );
jp1nom 0:5cdf1a556e60 260 if (FQD >= f1_CW && FQD < f2_CW) {
jp1nom 0:5cdf1a556e60 261 lcd.locate( 5,1 );
jp1nom 0:5cdf1a556e60 262 lcd.printf("CW ");
jp1nom 0:5cdf1a556e60 263 }else{
jp1nom 0:5cdf1a556e60 264 if(FQD >= f2_CW && FQD < f2 ) {
jp1nom 0:5cdf1a556e60 265 lcd.locate( 5,1 );
jp1nom 0:5cdf1a556e60 266 lcd.printf("Phone");
jp1nom 0:5cdf1a556e60 267 }else{
jp1nom 0:5cdf1a556e60 268 lcd.locate( 5,1 );
jp1nom 0:5cdf1a556e60 269 lcd.printf("none ");
jp1nom 0:5cdf1a556e60 270 }
jp1nom 0:5cdf1a556e60 271 }
jp1nom 0:5cdf1a556e60 272 }
jp1nom 0:5cdf1a556e60 273
jp1nom 0:5cdf1a556e60 274 void STEPS( void ) {
jp1nom 0:5cdf1a556e60 275 if (s==1) {
jp1nom 0:5cdf1a556e60 276 s = 0;
jp1nom 0:5cdf1a556e60 277 lcd.locate(13,1);
jp1nom 0:5cdf1a556e60 278 lcd.printf("0");
jp1nom 0:5cdf1a556e60 279 }else{
jp1nom 0:5cdf1a556e60 280 s = 1;
jp1nom 0:5cdf1a556e60 281 lcd.locate(13,1);
jp1nom 0:5cdf1a556e60 282 lcd.printf("K");
jp1nom 0:5cdf1a556e60 283 }
jp1nom 0:5cdf1a556e60 284 wait(0.3);
jp1nom 0:5cdf1a556e60 285 }
jp1nom 0:5cdf1a556e60 286
jp1nom 0:5cdf1a556e60 287 void QSY(void) {
jp1nom 0:5cdf1a556e60 288 switch (BAND) {
jp1nom 0:5cdf1a556e60 289 case 7:
jp1nom 0:5cdf1a556e60 290 BAND = 10;
jp1nom 0:5cdf1a556e60 291 FQD_7 = FQD;
jp1nom 0:5cdf1a556e60 292 FQD = FQD_10;
jp1nom 0:5cdf1a556e60 293 FQ_7 = FQ;
jp1nom 0:5cdf1a556e60 294 FQ = FQ_10;
jp1nom 0:5cdf1a556e60 295 f1 = 10100000;
jp1nom 0:5cdf1a556e60 296 f2 = 10150000;
jp1nom 0:5cdf1a556e60 297 f1_CW = 10100000;
jp1nom 0:5cdf1a556e60 298 f2_CW = 10150000;
jp1nom 0:5cdf1a556e60 299 break;
jp1nom 0:5cdf1a556e60 300
jp1nom 0:5cdf1a556e60 301 case 10:
jp1nom 0:5cdf1a556e60 302 BAND = 18;
jp1nom 0:5cdf1a556e60 303 FQD_10 = FQD;
jp1nom 0:5cdf1a556e60 304 FQD = FQD_18;
jp1nom 0:5cdf1a556e60 305 FQ_10 = FQ;
jp1nom 0:5cdf1a556e60 306 FQ = FQ_18;
jp1nom 0:5cdf1a556e60 307 f1 = 1810000;
jp1nom 0:5cdf1a556e60 308 f2 = 1825000;
jp1nom 0:5cdf1a556e60 309 f1_CW = 1810000;
jp1nom 0:5cdf1a556e60 310 f2_CW = 1825000;
jp1nom 0:5cdf1a556e60 311 break;
jp1nom 0:5cdf1a556e60 312
jp1nom 0:5cdf1a556e60 313 case 18:
jp1nom 0:5cdf1a556e60 314 BAND = 19;
jp1nom 0:5cdf1a556e60 315 FQD_18 = FQD;
jp1nom 0:5cdf1a556e60 316 FQD = FQD_19;
jp1nom 0:5cdf1a556e60 317 FQ_18 = FQ;
jp1nom 0:5cdf1a556e60 318 FQ = FQ_19;
jp1nom 0:5cdf1a556e60 319 f1 = 1907500;
jp1nom 0:5cdf1a556e60 320 f2 = 1912500;
jp1nom 0:5cdf1a556e60 321 f1_CW = 1907500;
jp1nom 0:5cdf1a556e60 322 f2_CW = 1912500;
jp1nom 0:5cdf1a556e60 323 break;
jp1nom 0:5cdf1a556e60 324
jp1nom 0:5cdf1a556e60 325 case 19:
jp1nom 0:5cdf1a556e60 326 BAND = 351;
jp1nom 0:5cdf1a556e60 327 FQD_19 = FQD;
jp1nom 0:5cdf1a556e60 328 FQD = FQD_351;
jp1nom 0:5cdf1a556e60 329 FQ_19 = FQ;
jp1nom 0:5cdf1a556e60 330 FQ = FQ_351;
jp1nom 0:5cdf1a556e60 331 f1 = 3500000;
jp1nom 0:5cdf1a556e60 332 f2 = 3575000;
jp1nom 0:5cdf1a556e60 333 f1_CW = 3500000;
jp1nom 0:5cdf1a556e60 334 f2_CW = 3535000;
jp1nom 0:5cdf1a556e60 335 break;
jp1nom 0:5cdf1a556e60 336
jp1nom 0:5cdf1a556e60 337 case 351:
jp1nom 0:5cdf1a556e60 338 BAND = 352;
jp1nom 0:5cdf1a556e60 339 FQD_351 = FQD;
jp1nom 0:5cdf1a556e60 340 FQD = FQD_352;
jp1nom 0:5cdf1a556e60 341 FQ_351 = FQ;
jp1nom 0:5cdf1a556e60 342 FQ = FQ_352;
jp1nom 0:5cdf1a556e60 343 f1 = 3599000;
jp1nom 0:5cdf1a556e60 344 f2 = 3612000;
jp1nom 0:5cdf1a556e60 345 f1_CW = 3599000;
jp1nom 0:5cdf1a556e60 346 f2_CW = 3599000;
jp1nom 0:5cdf1a556e60 347 break;
jp1nom 0:5cdf1a556e60 348
jp1nom 0:5cdf1a556e60 349 case 352:
jp1nom 0:5cdf1a556e60 350 BAND = 353;
jp1nom 0:5cdf1a556e60 351 FQD_352 = FQD;
jp1nom 0:5cdf1a556e60 352 FQD = FQD_353;
jp1nom 0:5cdf1a556e60 353 FQ_352 = FQ;
jp1nom 0:5cdf1a556e60 354 FQ = FQ_353;
jp1nom 0:5cdf1a556e60 355 f1 = 3680000;
jp1nom 0:5cdf1a556e60 356 f2 = 3687000;
jp1nom 0:5cdf1a556e60 357 f1_CW = 3680000;
jp1nom 0:5cdf1a556e60 358 f2_CW = 3680000;
jp1nom 0:5cdf1a556e60 359 break;
jp1nom 0:5cdf1a556e60 360
jp1nom 0:5cdf1a556e60 361 case 353:
jp1nom 0:5cdf1a556e60 362 BAND = 381;
jp1nom 0:5cdf1a556e60 363 FQD_353 = FQD;
jp1nom 0:5cdf1a556e60 364 FQD = FQD_381;
jp1nom 0:5cdf1a556e60 365 FQ_353 = FQ;
jp1nom 0:5cdf1a556e60 366 FQ = FQ_381;
jp1nom 0:5cdf1a556e60 367 f1 = 3702000;
jp1nom 0:5cdf1a556e60 368 f2 = 3716000;
jp1nom 0:5cdf1a556e60 369 f1_CW = 3702000;
jp1nom 0:5cdf1a556e60 370 f2_CW = 3702000;
jp1nom 0:5cdf1a556e60 371 break;
jp1nom 0:5cdf1a556e60 372
jp1nom 0:5cdf1a556e60 373 case 381:
jp1nom 0:5cdf1a556e60 374 BAND = 382;
jp1nom 0:5cdf1a556e60 375 FQD_381 = FQD;
jp1nom 0:5cdf1a556e60 376 FQD = FQD_382;
jp1nom 0:5cdf1a556e60 377 FQ_381 = FQ;
jp1nom 0:5cdf1a556e60 378 FQ = FQ_382;
jp1nom 0:5cdf1a556e60 379 f1 = 3745000;
jp1nom 0:5cdf1a556e60 380 f2 = 3770000;
jp1nom 0:5cdf1a556e60 381 f1_CW = 3745000;
jp1nom 0:5cdf1a556e60 382 f2_CW = 3745000;
jp1nom 0:5cdf1a556e60 383 break;
jp1nom 0:5cdf1a556e60 384
jp1nom 0:5cdf1a556e60 385 case 382:
jp1nom 0:5cdf1a556e60 386 BAND = 383;
jp1nom 0:5cdf1a556e60 387 FQD_382 = FQD;
jp1nom 0:5cdf1a556e60 388 FQD = FQD_383;
jp1nom 0:5cdf1a556e60 389 FQ_382 = FQ;
jp1nom 0:5cdf1a556e60 390 FQ = FQ_383;
jp1nom 0:5cdf1a556e60 391 f1 = 3791000;
jp1nom 0:5cdf1a556e60 392 f2 = 3805000;
jp1nom 0:5cdf1a556e60 393 f1_CW = 3791000;
jp1nom 0:5cdf1a556e60 394 f2_CW = 3791000;
jp1nom 0:5cdf1a556e60 395 break;
jp1nom 0:5cdf1a556e60 396
jp1nom 0:5cdf1a556e60 397 case 383:
jp1nom 0:5cdf1a556e60 398 BAND = 4;
jp1nom 0:5cdf1a556e60 399 FQD_383 = FQD;
jp1nom 0:5cdf1a556e60 400 FQD = FQD_4;
jp1nom 0:5cdf1a556e60 401 FQ_383 = FQ;
jp1nom 0:5cdf1a556e60 402 FQ = FQ_4;
jp1nom 0:5cdf1a556e60 403 f1 = 4629999;
jp1nom 0:5cdf1a556e60 404 f2 = 4630001;
jp1nom 0:5cdf1a556e60 405 f1_CW = 4630000;
jp1nom 0:5cdf1a556e60 406 f2_CW = 4630001;
jp1nom 0:5cdf1a556e60 407 break;
jp1nom 0:5cdf1a556e60 408
jp1nom 0:5cdf1a556e60 409 case 4:
jp1nom 0:5cdf1a556e60 410 BAND = 7;
jp1nom 0:5cdf1a556e60 411 FQD_4 = FQD;
jp1nom 0:5cdf1a556e60 412 FQD = FQD_7;
jp1nom 0:5cdf1a556e60 413 FQ_4 = FQ;
jp1nom 0:5cdf1a556e60 414 FQ = FQ_7;
jp1nom 0:5cdf1a556e60 415 f1 = 7000000;
jp1nom 0:5cdf1a556e60 416 f2 = 7200000;
jp1nom 0:5cdf1a556e60 417 f1_CW = 7000000;
jp1nom 0:5cdf1a556e60 418 f2_CW = 7045000;
jp1nom 0:5cdf1a556e60 419 break;
jp1nom 0:5cdf1a556e60 420
jp1nom 0:5cdf1a556e60 421 default:
jp1nom 0:5cdf1a556e60 422 BAND = 7;
jp1nom 0:5cdf1a556e60 423 FQD = FQD_7;
jp1nom 0:5cdf1a556e60 424 FQ = FQ_7;
jp1nom 0:5cdf1a556e60 425 break;
jp1nom 0:5cdf1a556e60 426 }
jp1nom 0:5cdf1a556e60 427 GET_LCD_DATA();
jp1nom 0:5cdf1a556e60 428 FQX = FQ + IF;
jp1nom 0:5cdf1a556e60 429 DDS();
jp1nom 0:5cdf1a556e60 430 wait(0.3);
jp1nom 0:5cdf1a556e60 431 }
jp1nom 0:5cdf1a556e60 432
jp1nom 0:5cdf1a556e60 433 void STEPSS( void ) {
jp1nom 0:5cdf1a556e60 434 if (s==0) {
jp1nom 0:5cdf1a556e60 435 lcd.locate(13,1);
jp1nom 0:5cdf1a556e60 436 lcd.printf("0");
jp1nom 0:5cdf1a556e60 437 }else{
jp1nom 0:5cdf1a556e60 438 lcd.locate(13,1);
jp1nom 0:5cdf1a556e60 439 lcd.printf("K");
jp1nom 0:5cdf1a556e60 440 }
jp1nom 0:5cdf1a556e60 441 // wait(0.3);
jp1nom 0:5cdf1a556e60 442 }
jp1nom 0:5cdf1a556e60 443
jp1nom 0:5cdf1a556e60 444 void JOG( void ) {
jp1nom 0:5cdf1a556e60 445
jp1nom 0:5cdf1a556e60 446 int jog;
jp1nom 0:5cdf1a556e60 447 deley.detach();
jp1nom 0:5cdf1a556e60 448
jp1nom 0:5cdf1a556e60 449 jog = JOG_2 * 4 +JOG_3 * 2 + JOG_4 * 1;
jp1nom 0:5cdf1a556e60 450
jp1nom 0:5cdf1a556e60 451 switch( jog ) {
jp1nom 0:5cdf1a556e60 452
jp1nom 0:5cdf1a556e60 453 case 2:
jp1nom 0:5cdf1a556e60 454 wt = 0.3;
jp1nom 0:5cdf1a556e60 455 s = 0;
jp1nom 0:5cdf1a556e60 456 lcd.locate(12,0);
jp1nom 0:5cdf1a556e60 457 lcd.printf("> ");
jp1nom 0:5cdf1a556e60 458 STEPSS();
jp1nom 0:5cdf1a556e60 459 DDS_U();
jp1nom 0:5cdf1a556e60 460 lcd.locate(12,0);
jp1nom 0:5cdf1a556e60 461 lcd.printf(" ");
jp1nom 0:5cdf1a556e60 462 break;
jp1nom 0:5cdf1a556e60 463
jp1nom 0:5cdf1a556e60 464 case 6:
jp1nom 0:5cdf1a556e60 465 wt = 0.05;
jp1nom 0:5cdf1a556e60 466 s = 0;
jp1nom 0:5cdf1a556e60 467 lcd.locate(12,0);
jp1nom 0:5cdf1a556e60 468 lcd.printf(">>");
jp1nom 0:5cdf1a556e60 469 STEPSS();
jp1nom 0:5cdf1a556e60 470 DDS_U();
jp1nom 0:5cdf1a556e60 471 lcd.locate(12,0);
jp1nom 0:5cdf1a556e60 472 lcd.printf(" ");
jp1nom 0:5cdf1a556e60 473 break;
jp1nom 0:5cdf1a556e60 474
jp1nom 0:5cdf1a556e60 475 case 4:
jp1nom 0:5cdf1a556e60 476 wt = 0.3;
jp1nom 0:5cdf1a556e60 477 s =1;
jp1nom 0:5cdf1a556e60 478 lcd.locate(12,0);
jp1nom 0:5cdf1a556e60 479 lcd.printf("> ");
jp1nom 0:5cdf1a556e60 480 STEPSS();
jp1nom 0:5cdf1a556e60 481 DDS_U();
jp1nom 0:5cdf1a556e60 482 lcd.locate(12,0);
jp1nom 0:5cdf1a556e60 483 lcd.printf(" ");
jp1nom 0:5cdf1a556e60 484 break;
jp1nom 0:5cdf1a556e60 485
jp1nom 0:5cdf1a556e60 486 case 0:
jp1nom 0:5cdf1a556e60 487 wt = 0.05;
jp1nom 0:5cdf1a556e60 488 s =1;
jp1nom 0:5cdf1a556e60 489 lcd.locate(12,0);
jp1nom 0:5cdf1a556e60 490 lcd.printf(">>");
jp1nom 0:5cdf1a556e60 491 STEPSS();
jp1nom 0:5cdf1a556e60 492 DDS_U();
jp1nom 0:5cdf1a556e60 493 lcd.locate(12,0);
jp1nom 0:5cdf1a556e60 494 lcd.printf(" ");
jp1nom 0:5cdf1a556e60 495 break;
jp1nom 0:5cdf1a556e60 496
jp1nom 0:5cdf1a556e60 497
jp1nom 0:5cdf1a556e60 498 case 3:
jp1nom 0:5cdf1a556e60 499 wt = 0.3;
jp1nom 0:5cdf1a556e60 500 s = 0;
jp1nom 0:5cdf1a556e60 501 lcd.locate(12,0);
jp1nom 0:5cdf1a556e60 502 lcd.printf(" <");
jp1nom 0:5cdf1a556e60 503 STEPSS();
jp1nom 0:5cdf1a556e60 504 DDS_D();
jp1nom 0:5cdf1a556e60 505 lcd.locate(12,0);
jp1nom 0:5cdf1a556e60 506 lcd.printf(" ");
jp1nom 0:5cdf1a556e60 507 break;
jp1nom 0:5cdf1a556e60 508
jp1nom 0:5cdf1a556e60 509 case 7:
jp1nom 0:5cdf1a556e60 510 wt = 0.05;
jp1nom 0:5cdf1a556e60 511 s = 0;
jp1nom 0:5cdf1a556e60 512 lcd.locate(12,0);
jp1nom 0:5cdf1a556e60 513 lcd.printf("<<");
jp1nom 0:5cdf1a556e60 514 STEPSS();
jp1nom 0:5cdf1a556e60 515 DDS_D();
jp1nom 0:5cdf1a556e60 516 lcd.locate(12,0);
jp1nom 0:5cdf1a556e60 517 lcd.printf(" ");
jp1nom 0:5cdf1a556e60 518 break;
jp1nom 0:5cdf1a556e60 519
jp1nom 0:5cdf1a556e60 520 case 5:
jp1nom 0:5cdf1a556e60 521 wt = 0.3;
jp1nom 0:5cdf1a556e60 522 s =1;
jp1nom 0:5cdf1a556e60 523 lcd.locate(12,0);
jp1nom 0:5cdf1a556e60 524 lcd.printf(" <");
jp1nom 0:5cdf1a556e60 525 STEPSS();
jp1nom 0:5cdf1a556e60 526 DDS_D();
jp1nom 0:5cdf1a556e60 527 lcd.locate(12,0);
jp1nom 0:5cdf1a556e60 528 lcd.printf(" ");
jp1nom 0:5cdf1a556e60 529 break;
jp1nom 0:5cdf1a556e60 530
jp1nom 0:5cdf1a556e60 531 case 1:
jp1nom 0:5cdf1a556e60 532 wt = 0.05;
jp1nom 0:5cdf1a556e60 533 s =1;
jp1nom 0:5cdf1a556e60 534 lcd.locate(12,0);
jp1nom 0:5cdf1a556e60 535 lcd.printf("<<");
jp1nom 0:5cdf1a556e60 536 STEPSS();
jp1nom 0:5cdf1a556e60 537 DDS_D();
jp1nom 0:5cdf1a556e60 538 lcd.locate(12,0);
jp1nom 0:5cdf1a556e60 539 lcd.printf(" ");
jp1nom 0:5cdf1a556e60 540 break;
jp1nom 0:5cdf1a556e60 541
jp1nom 0:5cdf1a556e60 542
jp1nom 0:5cdf1a556e60 543 default:
jp1nom 0:5cdf1a556e60 544 wt = 0.05;
jp1nom 0:5cdf1a556e60 545 s =1;
jp1nom 0:5cdf1a556e60 546 STEPSS();
jp1nom 0:5cdf1a556e60 547 DDS_D();
jp1nom 0:5cdf1a556e60 548 lcd.locate(12,0);
jp1nom 0:5cdf1a556e60 549 lcd.printf(" ");
jp1nom 0:5cdf1a556e60 550 break;
jp1nom 0:5cdf1a556e60 551 }
jp1nom 0:5cdf1a556e60 552 }
jp1nom 0:5cdf1a556e60 553
jp1nom 0:5cdf1a556e60 554 void DDS_CW(void) {
jp1nom 0:5cdf1a556e60 555 if (FQD > f1 && FQD < f2) {
jp1nom 0:5cdf1a556e60 556 deley.detach();
jp1nom 0:5cdf1a556e60 557 GET_LCD_DATA();
jp1nom 0:5cdf1a556e60 558 lcd.locate( 14, 0 );
jp1nom 0:5cdf1a556e60 559 lcd.printf( "T" );
jp1nom 0:5cdf1a556e60 560
jp1nom 0:5cdf1a556e60 561 FQX = FQ;
jp1nom 0:5cdf1a556e60 562 DDS();
jp1nom 0:5cdf1a556e60 563 LED = 1;
jp1nom 0:5cdf1a556e60 564 PTT_OUT = 1;
jp1nom 0:5cdf1a556e60 565 KEY = 1;
jp1nom 0:5cdf1a556e60 566 if (BAR==0) {
jp1nom 0:5cdf1a556e60 567 wait(3.5*del);
jp1nom 0:5cdf1a556e60 568 KEY = 0;
jp1nom 0:5cdf1a556e60 569 wait(del);
jp1nom 0:5cdf1a556e60 570 }else{
jp1nom 0:5cdf1a556e60 571 if (DOT==0) {
jp1nom 0:5cdf1a556e60 572 wait(del);
jp1nom 0:5cdf1a556e60 573 KEY = 0;
jp1nom 0:5cdf1a556e60 574 wait(del);
jp1nom 0:5cdf1a556e60 575 }
jp1nom 0:5cdf1a556e60 576 }
jp1nom 0:5cdf1a556e60 577 deley.attach(&PTT_OFF,4*del);
jp1nom 0:5cdf1a556e60 578 }else{
jp1nom 0:5cdf1a556e60 579 LED=1;
jp1nom 0:5cdf1a556e60 580 wait(0.2);
jp1nom 0:5cdf1a556e60 581 LED=0;
jp1nom 0:5cdf1a556e60 582 wait(0.2);
jp1nom 0:5cdf1a556e60 583 }
jp1nom 0:5cdf1a556e60 584
jp1nom 0:5cdf1a556e60 585 }
jp1nom 0:5cdf1a556e60 586
jp1nom 0:5cdf1a556e60 587 void PTT_OFF(void) {
jp1nom 0:5cdf1a556e60 588 PTT_OUT = 0;
jp1nom 0:5cdf1a556e60 589 LED = 0;
jp1nom 0:5cdf1a556e60 590 KEY = 0;
jp1nom 0:5cdf1a556e60 591 FQX = FQ + IF;
jp1nom 0:5cdf1a556e60 592 DDS();
jp1nom 0:5cdf1a556e60 593 GET_LCD_DATA();
jp1nom 0:5cdf1a556e60 594 lcd.locate( 14,0 );
jp1nom 0:5cdf1a556e60 595 lcd.printf( "R" );
jp1nom 0:5cdf1a556e60 596 }