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

Dependencies:   mbed QEI

Committer:
jp1nom
Date:
Fri Sep 15 07:26:48 2017 +0000
Revision:
1:ee890adf56ea
Parent:
0:5cdf1a556e60
DDS VFO for Double Super Heterodyne Radio.

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 1:ee890adf56ea 3 #include "QEI.h"
jp1nom 1:ee890adf56ea 4 #define ROTATE_PER_REVOLUTIONS 24
jp1nom 0:5cdf1a556e60 5
jp1nom 0:5cdf1a556e60 6 DigitalOut DATA(dp9);
jp1nom 0:5cdf1a556e60 7 DigitalOut W_CLK(dp17);
jp1nom 0:5cdf1a556e60 8 DigitalOut FQ_UD(dp11);
jp1nom 1:ee890adf56ea 9 DigitalOut RESET(dp26);
jp1nom 0:5cdf1a556e60 10 DigitalOut LED(dp14);
jp1nom 0:5cdf1a556e60 11 DigitalOut PTT_OUT(dp18);
jp1nom 1:ee890adf56ea 12 DigitalIn PTT_ON(dp1);
jp1nom 1:ee890adf56ea 13 DigitalOut RL1(dp13); //BFO,AUDIO
jp1nom 1:ee890adf56ea 14 DigitalOut RL2(dp15); //AGC
jp1nom 1:ee890adf56ea 15 DigitalIn BAND_SW(dp10);
jp1nom 1:ee890adf56ea 16 DigitalIn JOG_3(dp25); //FREQ STEP
jp1nom 1:ee890adf56ea 17 DigitalIn RIT_SW(dp16); //RIT
jp1nom 1:ee890adf56ea 18 DigitalIn jmh(dp24);
jp1nom 1:ee890adf56ea 19 DigitalIn MODE_IN(dp6);
jp1nom 1:ee890adf56ea 20 //DigitalIn test(dp15);
jp1nom 0:5cdf1a556e60 21
jp1nom 0:5cdf1a556e60 22 double FQX;
jp1nom 0:5cdf1a556e60 23 double FQD;
jp1nom 1:ee890adf56ea 24 double FQDD;
jp1nom 0:5cdf1a556e60 25
jp1nom 1:ee890adf56ea 26 // double FQD_18 = 1810000;
jp1nom 1:ee890adf56ea 27 // double FQD_19 = 1907500;
jp1nom 0:5cdf1a556e60 28 double FQD_351 = 3500000;
jp1nom 0:5cdf1a556e60 29 double FQD_352 = 3599000;
jp1nom 0:5cdf1a556e60 30 double FQD_353 = 3680000;
jp1nom 0:5cdf1a556e60 31 double FQD_381 = 3702000;
jp1nom 0:5cdf1a556e60 32 double FQD_382 = 3745000;
jp1nom 0:5cdf1a556e60 33 double FQD_383 = 3791000;
jp1nom 0:5cdf1a556e60 34 double FQD_4 = 4630000;
jp1nom 0:5cdf1a556e60 35 double FQD_7 = 7000000;
jp1nom 0:5cdf1a556e60 36 double FQD_10 = 10100000;
jp1nom 1:ee890adf56ea 37 //double FQD_14 = 522000;
jp1nom 1:ee890adf56ea 38 double FQD_JMH = 3620600;
jp1nom 1:ee890adf56ea 39 double FQD_JMH1 = 7793100;
jp1nom 1:ee890adf56ea 40 double FQD_VOK1 = 6070000;
jp1nom 1:ee890adf56ea 41 double FQD_VOK2 = 9650000;
jp1nom 1:ee890adf56ea 42 double FQD_KCBS = 6400000;
jp1nom 1:ee890adf56ea 43 double FQD_NSB1 = 6055000;
jp1nom 1:ee890adf56ea 44 double FQD_NSB2 = 6115000;
jp1nom 1:ee890adf56ea 45 double FQD_NSB3 = 9595000;
jp1nom 1:ee890adf56ea 46 double FQD_NSB4 = 9760000;
jp1nom 1:ee890adf56ea 47 double FQD_NSB5 = 3925000;
jp1nom 1:ee890adf56ea 48 double FQD_NSB6 = 3945000;
jp1nom 1:ee890adf56ea 49 double FQD_CRI = 7325000;
jp1nom 1:ee890adf56ea 50 double FQD_NHK = 9750000;
jp1nom 1:ee890adf56ea 51 double FQD_14 = 14000000;
jp1nom 1:ee890adf56ea 52 double FQD_181 = 18068000;
jp1nom 1:ee890adf56ea 53 double FQD_M = 0;
jp1nom 1:ee890adf56ea 54 double FQD_MM = 0;
jp1nom 1:ee890adf56ea 55 double FQD_jmh = 0;
jp1nom 0:5cdf1a556e60 56
jp1nom 0:5cdf1a556e60 57 double FQ;
jp1nom 0:5cdf1a556e60 58
jp1nom 1:ee890adf56ea 59 // double FQ_18 = 43191352;
jp1nom 1:ee890adf56ea 60 // double FQ_19 = 45517913;
jp1nom 1:ee890adf56ea 61 double FQ_351 = 83517187;
jp1nom 1:ee890adf56ea 62 double FQ_352 = 85879508;
jp1nom 1:ee890adf56ea 63 double FQ_353 = 87812323;
jp1nom 1:ee890adf56ea 64 double FQ_381 = 88337282;
jp1nom 1:ee890adf56ea 65 double FQ_382 = 89363339;
jp1nom 1:ee890adf56ea 66 double FQ_383 = 90460995;
jp1nom 1:ee890adf56ea 67 double FQ_4 = 110481248;
jp1nom 1:ee890adf56ea 68 double FQ_7 = 167034290;
jp1nom 1:ee890adf56ea 69 double FQ_10 = 241006742;
jp1nom 1:ee890adf56ea 70 //double FQ_14 = 12455974;
jp1nom 1:ee890adf56ea 71 double FQ_JMH = 86397023;
jp1nom 1:ee890adf56ea 72 double FQ_JMH1 = 185963684;
jp1nom 1:ee890adf56ea 73 double FQ_VOK1 = 144846025;
jp1nom 1:ee890adf56ea 74 double FQ_VOK2 = 230274159;
jp1nom 1:ee890adf56ea 75 double FQ_KCBS = 152720685;
jp1nom 1:ee890adf56ea 76 double FQ_NSB1 = 144488086;
jp1nom 1:ee890adf56ea 77 double FQ_NSB2 = 145919842;
jp1nom 1:ee890adf56ea 78 double FQ_NSB3 = 228961619;
jp1nom 1:ee890adf56ea 79 double FQ_NSB4 = 232898947;
jp1nom 1:ee890adf56ea 80 double FQ_NSB5 = 93660807;
jp1nom 1:ee890adf56ea 81 double FQ_NSB6 = 94138060;
jp1nom 1:ee890adf56ea 82 double FQ_CRI = 174793597;
jp1nom 1:ee890adf56ea 83 double FQ_NHK = 232660321;
jp1nom 1:ee890adf56ea 84 double FQ_14 = 334078686;
jp1nom 1:ee890adf56ea 85 double FQ_181 = 431152407;
jp1nom 1:ee890adf56ea 86 double FQ_M = 0;
jp1nom 1:ee890adf56ea 87 double FQ_MM =0;
jp1nom 1:ee890adf56ea 88 double FQ_jmh = 0;
jp1nom 0:5cdf1a556e60 89
jp1nom 0:5cdf1a556e60 90 double f1 = 7000000;
jp1nom 0:5cdf1a556e60 91 double f2 = 7200000;
jp1nom 0:5cdf1a556e60 92 double f1_CW = 7000000;
jp1nom 0:5cdf1a556e60 93 double f2_CW = 7045000;
jp1nom 1:ee890adf56ea 94 double f1_M = 0;
jp1nom 1:ee890adf56ea 95 double f2_M = 0;
jp1nom 1:ee890adf56ea 96 double f1_MM = 0;
jp1nom 1:ee890adf56ea 97 double f2_MM = 0;
jp1nom 1:ee890adf56ea 98 double f1_CW_M = 0;
jp1nom 1:ee890adf56ea 99 double f2_CW_M = 0;
jp1nom 1:ee890adf56ea 100 double f1_CW_MM = 0;
jp1nom 1:ee890adf56ea 101 double f2_CW_MM = 0;
jp1nom 1:ee890adf56ea 102 double f1_jmh = 0;
jp1nom 1:ee890adf56ea 103 double f2_jmh = 0;
jp1nom 1:ee890adf56ea 104 double f1_CW_jmh = 0;
jp1nom 1:ee890adf56ea 105 double f2_CW_jmh = 0;
jp1nom 1:ee890adf56ea 106 int BAND_jmh;
jp1nom 1:ee890adf56ea 107 int mem;
jp1nom 1:ee890adf56ea 108 int mem_jmh;
jp1nom 0:5cdf1a556e60 109 int BAND;
jp1nom 1:ee890adf56ea 110 int BAND_M;
jp1nom 1:ee890adf56ea 111 int BAND_MM;
jp1nom 0:5cdf1a556e60 112 double IF;
jp1nom 0:5cdf1a556e60 113 double STEPD;
jp1nom 1:ee890adf56ea 114 double STEP = 2.3863380645591;
jp1nom 1:ee890adf56ea 115 int ritd = 0;
jp1nom 0:5cdf1a556e60 116 float wt = 0.1;
jp1nom 0:5cdf1a556e60 117 const int a=1;
jp1nom 0:5cdf1a556e60 118 int s;
jp1nom 1:ee890adf56ea 119 int fbuf1;
jp1nom 1:ee890adf56ea 120 int fbuf2;
jp1nom 1:ee890adf56ea 121 int fbuf3;
jp1nom 1:ee890adf56ea 122 int fbuf4;
jp1nom 1:ee890adf56ea 123 int fbuf5;
jp1nom 1:ee890adf56ea 124 int fbuf6;
jp1nom 1:ee890adf56ea 125 int mode = 0;
jp1nom 1:ee890adf56ea 126 int riton = 0;
jp1nom 1:ee890adf56ea 127 int sig;
jp1nom 1:ee890adf56ea 128 int CW_MODE = 0;
jp1nom 1:ee890adf56ea 129 int CW_MODE_M;
jp1nom 1:ee890adf56ea 130 double CW_OFFSET;
jp1nom 0:5cdf1a556e60 131 float del = 0.1;
jp1nom 1:ee890adf56ea 132 int CW_IN = 0;;
jp1nom 0:5cdf1a556e60 133
jp1nom 0:5cdf1a556e60 134 void DDS(void);
jp1nom 0:5cdf1a556e60 135 void DDS_U(void);
jp1nom 0:5cdf1a556e60 136 void DDS_D(void);
jp1nom 0:5cdf1a556e60 137 void DDS_T(void);
jp1nom 0:5cdf1a556e60 138 void GET_LCD_DATA(void);
jp1nom 0:5cdf1a556e60 139 void STEPS(void);
jp1nom 0:5cdf1a556e60 140 void QSY(void);
jp1nom 0:5cdf1a556e60 141 void STEPSS(void);
jp1nom 0:5cdf1a556e60 142 void PTT_OFF(void);
jp1nom 1:ee890adf56ea 143 void RIT(void);
jp1nom 1:ee890adf56ea 144 // void MEMIN(void);
jp1nom 1:ee890adf56ea 145 // void MEMOUT(void);
jp1nom 1:ee890adf56ea 146 void JMH(void);
jp1nom 1:ee890adf56ea 147 void JOZ(void);
jp1nom 1:ee890adf56ea 148 void CW1(void);
jp1nom 1:ee890adf56ea 149 void CW2(void);
jp1nom 1:ee890adf56ea 150 void MODEX(void);
jp1nom 1:ee890adf56ea 151 void MODEY(void);
jp1nom 0:5cdf1a556e60 152
jp1nom 0:5cdf1a556e60 153 I2cLCD lcd(dp5, dp27);
jp1nom 1:ee890adf56ea 154 QEI wheel(dp2, dp28, NC, ROTATE_PER_REVOLUTIONS, QEI::X4_ENCODING);
jp1nom 1:ee890adf56ea 155 //QEI wheel(dp2, dp28, NC, ROTATE_PER_REVOLUTIONS);
jp1nom 0:5cdf1a556e60 156
jp1nom 0:5cdf1a556e60 157 int main() {
jp1nom 0:5cdf1a556e60 158
jp1nom 0:5cdf1a556e60 159 STEPD = 10;
jp1nom 0:5cdf1a556e60 160 BAND = 7;
jp1nom 0:5cdf1a556e60 161 FQD = FQD_7;
jp1nom 0:5cdf1a556e60 162 FQ = FQ_7;
jp1nom 1:ee890adf56ea 163
jp1nom 1:ee890adf56ea 164 RL1 = 1;
jp1nom 1:ee890adf56ea 165 RL2 = 0;
jp1nom 1:ee890adf56ea 166 lcd.locate(3,1);
jp1nom 1:ee890adf56ea 167 lcd.printf("SSB");
jp1nom 0:5cdf1a556e60 168
jp1nom 1:ee890adf56ea 169 // IF = 10857171;//IF 455KHz
jp1nom 1:ee890adf56ea 170 CW_OFFSET = 22167;//CW OFSET 1KHz
jp1nom 1:ee890adf56ea 171 IF = 255259586;// IF 10.7MHz
jp1nom 0:5cdf1a556e60 172 LED = 0;
jp1nom 0:5cdf1a556e60 173 s = 1;
jp1nom 0:5cdf1a556e60 174
jp1nom 0:5cdf1a556e60 175 RESET=0;
jp1nom 0:5cdf1a556e60 176 RESET=1;
jp1nom 0:5cdf1a556e60 177 wait_us(100);
jp1nom 0:5cdf1a556e60 178 RESET=0;
jp1nom 0:5cdf1a556e60 179 DATA=0;
jp1nom 0:5cdf1a556e60 180 FQ_UD=0;
jp1nom 0:5cdf1a556e60 181 W_CLK=0;
jp1nom 0:5cdf1a556e60 182
jp1nom 0:5cdf1a556e60 183 W_CLK=1;
jp1nom 0:5cdf1a556e60 184 wait_us(100);
jp1nom 0:5cdf1a556e60 185 W_CLK=0;
jp1nom 0:5cdf1a556e60 186 FQ_UD=1;
jp1nom 0:5cdf1a556e60 187 wait_us(100);
jp1nom 0:5cdf1a556e60 188 FQ_UD=0;
jp1nom 0:5cdf1a556e60 189 wait_us(100);
jp1nom 1:ee890adf56ea 190 FQDD = FQD;
jp1nom 0:5cdf1a556e60 191 GET_LCD_DATA();
jp1nom 0:5cdf1a556e60 192
jp1nom 0:5cdf1a556e60 193 FQX = FQ + IF;
jp1nom 0:5cdf1a556e60 194 DDS();
jp1nom 0:5cdf1a556e60 195 DDS();
jp1nom 1:ee890adf56ea 196 lcd.locate(9,0);
jp1nom 0:5cdf1a556e60 197 lcd.printf("0MHz");
jp1nom 0:5cdf1a556e60 198 lcd.locate(12,1);
jp1nom 0:5cdf1a556e60 199 lcd.printf("1KHz");
jp1nom 0:5cdf1a556e60 200 lcd.locate(14,0);
jp1nom 0:5cdf1a556e60 201 lcd.printf("RX");
jp1nom 1:ee890adf56ea 202
jp1nom 1:ee890adf56ea 203 fbuf2 = 0;
jp1nom 1:ee890adf56ea 204
jp1nom 0:5cdf1a556e60 205 while(1) {
jp1nom 1:ee890adf56ea 206 if (PTT_ON == 0) {DDS_T();}
jp1nom 1:ee890adf56ea 207 if (BAND_SW == 0) {QSY();}
jp1nom 1:ee890adf56ea 208 if (JOG_3 == 1) {STEPS();}
jp1nom 1:ee890adf56ea 209 fbuf1 = wheel.getPulses();
jp1nom 1:ee890adf56ea 210 if (RIT_SW == 1) {RIT();}
jp1nom 1:ee890adf56ea 211 if (fbuf1 > fbuf2) {DDS_U();}
jp1nom 1:ee890adf56ea 212 if (fbuf1 < fbuf2) {DDS_D();}
jp1nom 1:ee890adf56ea 213 fbuf2 = fbuf1;
jp1nom 1:ee890adf56ea 214 if (jmh == 1) {JOZ();}
jp1nom 1:ee890adf56ea 215 // if (memin == 0) {MEMIN();}
jp1nom 1:ee890adf56ea 216 // if (memout== 0) {MEMOUT();}
jp1nom 1:ee890adf56ea 217 // if (CW_MODE == 0 & CW_IN == 1 ) {CW1();}
jp1nom 1:ee890adf56ea 218 // if (CW_MODE == 1 & CW_IN == 0 ) {CW2();}
jp1nom 1:ee890adf56ea 219 if (MODE_IN == 1 ) {MODEX();}
jp1nom 0:5cdf1a556e60 220 }
jp1nom 0:5cdf1a556e60 221 }
jp1nom 0:5cdf1a556e60 222
jp1nom 0:5cdf1a556e60 223 void DDS(void) {
jp1nom 0:5cdf1a556e60 224
jp1nom 0:5cdf1a556e60 225 unsigned long int DDS_DATA;
jp1nom 0:5cdf1a556e60 226 unsigned long int BIT_DATA;
jp1nom 0:5cdf1a556e60 227
jp1nom 0:5cdf1a556e60 228 int i = 0;
jp1nom 0:5cdf1a556e60 229
jp1nom 0:5cdf1a556e60 230 DDS_DATA = FQX;
jp1nom 0:5cdf1a556e60 231
jp1nom 0:5cdf1a556e60 232 for (i=0; i<32; i++) {
jp1nom 0:5cdf1a556e60 233 BIT_DATA = DDS_DATA & 1;
jp1nom 0:5cdf1a556e60 234 if(BIT_DATA==1) {
jp1nom 0:5cdf1a556e60 235 DATA = 1;
jp1nom 0:5cdf1a556e60 236 } else {
jp1nom 0:5cdf1a556e60 237 DATA = 0;
jp1nom 0:5cdf1a556e60 238 }
jp1nom 0:5cdf1a556e60 239 W_CLK = 1;
jp1nom 0:5cdf1a556e60 240 DDS_DATA = DDS_DATA >> 1;
jp1nom 0:5cdf1a556e60 241 wait_us(10);
jp1nom 0:5cdf1a556e60 242 W_CLK = 0;
jp1nom 0:5cdf1a556e60 243 wait_us(10);
jp1nom 0:5cdf1a556e60 244 }
jp1nom 0:5cdf1a556e60 245
jp1nom 0:5cdf1a556e60 246 DDS_DATA = a;
jp1nom 0:5cdf1a556e60 247
jp1nom 0:5cdf1a556e60 248 for (i=0; i<8; i++) {
jp1nom 0:5cdf1a556e60 249 BIT_DATA = DDS_DATA & 1;
jp1nom 0:5cdf1a556e60 250 if(BIT_DATA==1) {
jp1nom 0:5cdf1a556e60 251 DATA = 1;
jp1nom 0:5cdf1a556e60 252 } else {
jp1nom 0:5cdf1a556e60 253 DATA = 0;
jp1nom 0:5cdf1a556e60 254 }
jp1nom 0:5cdf1a556e60 255 W_CLK = 1;
jp1nom 0:5cdf1a556e60 256 DDS_DATA = DDS_DATA >> 1;
jp1nom 0:5cdf1a556e60 257 wait_us(10);
jp1nom 0:5cdf1a556e60 258 W_CLK = 0;
jp1nom 0:5cdf1a556e60 259 wait_us(10);
jp1nom 0:5cdf1a556e60 260 }
jp1nom 0:5cdf1a556e60 261 FQ_UD = 1;
jp1nom 0:5cdf1a556e60 262 wait_us(10);
jp1nom 0:5cdf1a556e60 263 FQ_UD = 0;
jp1nom 0:5cdf1a556e60 264 wait_us(10);
jp1nom 0:5cdf1a556e60 265 }
jp1nom 0:5cdf1a556e60 266
jp1nom 0:5cdf1a556e60 267 void DDS_U(void) {
jp1nom 0:5cdf1a556e60 268
jp1nom 1:ee890adf56ea 269 if (riton==1) {
jp1nom 1:ee890adf56ea 270 if (ritd < 99) {
jp1nom 1:ee890adf56ea 271 ritd++;
jp1nom 1:ee890adf56ea 272 if ( CW_IN == 1 ) {
jp1nom 1:ee890adf56ea 273 FQX = FQ + STEP * ritd * 100 + IF + CW_OFFSET;
jp1nom 1:ee890adf56ea 274 }else{
jp1nom 1:ee890adf56ea 275 FQX = FQ + STEP * ritd * 100 + IF;
jp1nom 1:ee890adf56ea 276 }
jp1nom 1:ee890adf56ea 277 DDS();
jp1nom 1:ee890adf56ea 278 lcd.locate( 7,1 );
jp1nom 1:ee890adf56ea 279 lcd.printf("%d0 ",ritd);
jp1nom 1:ee890adf56ea 280 }
jp1nom 1:ee890adf56ea 281 } else {
jp1nom 1:ee890adf56ea 282
jp1nom 0:5cdf1a556e60 283 if (s==0) {
jp1nom 0:5cdf1a556e60 284 if ((FQD + STEPD) <= f2) {
jp1nom 0:5cdf1a556e60 285 FQD = FQD + STEPD;
jp1nom 0:5cdf1a556e60 286 FQ = FQ + STEP * 100;
jp1nom 0:5cdf1a556e60 287 }
jp1nom 0:5cdf1a556e60 288 }else{
jp1nom 0:5cdf1a556e60 289 if ((FQD + STEPD * 100) <= f2) {
jp1nom 0:5cdf1a556e60 290 FQD = FQD + STEPD * 100;
jp1nom 0:5cdf1a556e60 291 FQ = FQ + STEP * 10000;
jp1nom 0:5cdf1a556e60 292 }
jp1nom 0:5cdf1a556e60 293 }
jp1nom 1:ee890adf56ea 294
jp1nom 1:ee890adf56ea 295 FQDD = FQD;
jp1nom 0:5cdf1a556e60 296 GET_LCD_DATA();
jp1nom 1:ee890adf56ea 297
jp1nom 1:ee890adf56ea 298 if ( CW_IN == 1 ) {
jp1nom 1:ee890adf56ea 299 FQX = FQ + IF + CW_OFFSET;
jp1nom 1:ee890adf56ea 300 }else{
jp1nom 1:ee890adf56ea 301 FQX = FQ + IF;
jp1nom 1:ee890adf56ea 302 }
jp1nom 1:ee890adf56ea 303
jp1nom 0:5cdf1a556e60 304 DDS();
jp1nom 1:ee890adf56ea 305 }
jp1nom 0:5cdf1a556e60 306 }
jp1nom 0:5cdf1a556e60 307
jp1nom 0:5cdf1a556e60 308 void DDS_D(void) {
jp1nom 0:5cdf1a556e60 309
jp1nom 1:ee890adf56ea 310 if (riton==1) {
jp1nom 1:ee890adf56ea 311 if (ritd > -99) {
jp1nom 1:ee890adf56ea 312 ritd--;
jp1nom 1:ee890adf56ea 313 if ( CW_IN == 1 ) {
jp1nom 1:ee890adf56ea 314 FQX = FQ + STEP * ritd * 100 + IF + CW_OFFSET;
jp1nom 1:ee890adf56ea 315 }else{
jp1nom 1:ee890adf56ea 316 FQX = FQ + STEP * ritd * 100 + IF;
jp1nom 1:ee890adf56ea 317 }
jp1nom 1:ee890adf56ea 318 DDS();
jp1nom 1:ee890adf56ea 319 lcd.locate( 7,1 );
jp1nom 1:ee890adf56ea 320 lcd.printf("%d0 ",ritd);
jp1nom 1:ee890adf56ea 321 }
jp1nom 1:ee890adf56ea 322 } else {
jp1nom 0:5cdf1a556e60 323 if (s==0) {
jp1nom 0:5cdf1a556e60 324 if ((FQD - STEPD) >= f1) {
jp1nom 0:5cdf1a556e60 325 FQD = FQD - STEPD;
jp1nom 0:5cdf1a556e60 326 FQ = FQ - STEP * 100;
jp1nom 0:5cdf1a556e60 327 }
jp1nom 0:5cdf1a556e60 328 }else{
jp1nom 0:5cdf1a556e60 329 if ((FQD - STEPD * 100) >= f1) {
jp1nom 0:5cdf1a556e60 330 FQD = FQD - STEPD * 100;
jp1nom 0:5cdf1a556e60 331 FQ = FQ - STEP * 10000;
jp1nom 0:5cdf1a556e60 332 }
jp1nom 0:5cdf1a556e60 333 }
jp1nom 1:ee890adf56ea 334 FQDD = FQD;
jp1nom 0:5cdf1a556e60 335 GET_LCD_DATA();
jp1nom 1:ee890adf56ea 336
jp1nom 1:ee890adf56ea 337 if ( CW_IN == 1 ) {
jp1nom 1:ee890adf56ea 338 FQX = FQ + IF + CW_OFFSET;
jp1nom 1:ee890adf56ea 339 }else{
jp1nom 1:ee890adf56ea 340 FQX = FQ + IF;
jp1nom 1:ee890adf56ea 341 }
jp1nom 0:5cdf1a556e60 342 DDS();
jp1nom 1:ee890adf56ea 343 }
jp1nom 0:5cdf1a556e60 344 }
jp1nom 0:5cdf1a556e60 345
jp1nom 0:5cdf1a556e60 346 void DDS_T(void) {
jp1nom 0:5cdf1a556e60 347
jp1nom 0:5cdf1a556e60 348 if (FQD > f1 && FQD < f2) {
jp1nom 0:5cdf1a556e60 349 GET_LCD_DATA();
jp1nom 0:5cdf1a556e60 350 lcd.locate( 14, 0 );
jp1nom 1:ee890adf56ea 351 lcd.printf( "TX" );
jp1nom 0:5cdf1a556e60 352
jp1nom 0:5cdf1a556e60 353 FQX = FQ;
jp1nom 0:5cdf1a556e60 354 DDS();
jp1nom 0:5cdf1a556e60 355 LED = 1;
jp1nom 0:5cdf1a556e60 356 PTT_OUT = 1;
jp1nom 0:5cdf1a556e60 357 while( PTT_ON == 0) {}
jp1nom 0:5cdf1a556e60 358 PTT_OUT = 0;
jp1nom 0:5cdf1a556e60 359 LED = 0;
jp1nom 0:5cdf1a556e60 360 FQX = FQ + IF;
jp1nom 0:5cdf1a556e60 361 DDS();
jp1nom 0:5cdf1a556e60 362 }else{
jp1nom 0:5cdf1a556e60 363 LED=1;
jp1nom 0:5cdf1a556e60 364 wait(0.2);
jp1nom 0:5cdf1a556e60 365 LED=0;
jp1nom 0:5cdf1a556e60 366 wait(0.2);
jp1nom 0:5cdf1a556e60 367 }
jp1nom 0:5cdf1a556e60 368 GET_LCD_DATA();
jp1nom 0:5cdf1a556e60 369 lcd.locate( 14,0 );
jp1nom 1:ee890adf56ea 370 lcd.printf( "RX" );
jp1nom 0:5cdf1a556e60 371 }
jp1nom 0:5cdf1a556e60 372
jp1nom 0:5cdf1a556e60 373 void GET_LCD_DATA(void) {
jp1nom 0:5cdf1a556e60 374
jp1nom 0:5cdf1a556e60 375 char f[9];
jp1nom 0:5cdf1a556e60 376
jp1nom 1:ee890adf56ea 377 sprintf(f,"%8.5lf",FQDD / 1000000);
jp1nom 0:5cdf1a556e60 378 lcd.locate( 0,0 );
jp1nom 1:ee890adf56ea 379 lcd.printf( "%c%c%c%c%c%c",f[0],f[1],f[2],f[3],f[4],f[5] );
jp1nom 1:ee890adf56ea 380 lcd.printf( ".%c%c%",f[6],f[7] );
jp1nom 1:ee890adf56ea 381
jp1nom 1:ee890adf56ea 382 if (FQDD >= f1_CW && FQDD < f2_CW) {
jp1nom 1:ee890adf56ea 383 lcd.locate( 0,1 );
jp1nom 1:ee890adf56ea 384 lcd.printf("CW");
jp1nom 0:5cdf1a556e60 385 }else{
jp1nom 1:ee890adf56ea 386 if(FQDD >= f2_CW && FQDD < f2 ) {
jp1nom 1:ee890adf56ea 387 lcd.locate( 0,1 );
jp1nom 1:ee890adf56ea 388 lcd.printf("Ph");
jp1nom 0:5cdf1a556e60 389 }else{
jp1nom 1:ee890adf56ea 390 lcd.locate( 0,1 );
jp1nom 1:ee890adf56ea 391 lcd.printf("no");
jp1nom 0:5cdf1a556e60 392 }
jp1nom 0:5cdf1a556e60 393 }
jp1nom 0:5cdf1a556e60 394 }
jp1nom 0:5cdf1a556e60 395
jp1nom 0:5cdf1a556e60 396 void STEPS( void ) {
jp1nom 1:ee890adf56ea 397
jp1nom 0:5cdf1a556e60 398 if (s==1) {
jp1nom 0:5cdf1a556e60 399 s = 0;
jp1nom 1:ee890adf56ea 400 lcd.locate(12,1);
jp1nom 1:ee890adf56ea 401 lcd.printf("10");
jp1nom 0:5cdf1a556e60 402 }else{
jp1nom 0:5cdf1a556e60 403 s = 1;
jp1nom 1:ee890adf56ea 404 lcd.locate(12,1);
jp1nom 1:ee890adf56ea 405 lcd.printf("1K");
jp1nom 1:ee890adf56ea 406 }
jp1nom 0:5cdf1a556e60 407 wait(0.3);
jp1nom 1:ee890adf56ea 408
jp1nom 0:5cdf1a556e60 409 }
jp1nom 0:5cdf1a556e60 410
jp1nom 0:5cdf1a556e60 411 void QSY(void) {
jp1nom 1:ee890adf56ea 412
jp1nom 1:ee890adf56ea 413 switch ( BAND ) {
jp1nom 0:5cdf1a556e60 414 case 7:
jp1nom 0:5cdf1a556e60 415 BAND = 10;
jp1nom 0:5cdf1a556e60 416 FQD_7 = FQD;
jp1nom 0:5cdf1a556e60 417 FQD = FQD_10;
jp1nom 0:5cdf1a556e60 418 FQ_7 = FQ;
jp1nom 0:5cdf1a556e60 419 FQ = FQ_10;
jp1nom 0:5cdf1a556e60 420 f1 = 10100000;
jp1nom 0:5cdf1a556e60 421 f2 = 10150000;
jp1nom 0:5cdf1a556e60 422 f1_CW = 10100000;
jp1nom 0:5cdf1a556e60 423 f2_CW = 10150000;
jp1nom 0:5cdf1a556e60 424 break;
jp1nom 1:ee890adf56ea 425
jp1nom 0:5cdf1a556e60 426
jp1nom 0:5cdf1a556e60 427 case 10:
jp1nom 1:ee890adf56ea 428 BAND = 14;
jp1nom 0:5cdf1a556e60 429 FQD_10 = FQD;
jp1nom 1:ee890adf56ea 430 FQD = FQD_14;
jp1nom 0:5cdf1a556e60 431 FQ_10 = FQ;
jp1nom 1:ee890adf56ea 432 FQ = FQ_14;
jp1nom 1:ee890adf56ea 433 f1 = 14000000;
jp1nom 1:ee890adf56ea 434 f2 = 14350000;
jp1nom 1:ee890adf56ea 435 f1_CW =14000000;
jp1nom 1:ee890adf56ea 436 f2_CW =14100000;
jp1nom 0:5cdf1a556e60 437 break;
jp1nom 1:ee890adf56ea 438 /////////////
jp1nom 1:ee890adf56ea 439 case 14:
jp1nom 1:ee890adf56ea 440 BAND = 351;
jp1nom 1:ee890adf56ea 441 FQD_14 = FQD;
jp1nom 1:ee890adf56ea 442 FQD = FQD_351;
jp1nom 1:ee890adf56ea 443 FQ_14 = FQ;
jp1nom 1:ee890adf56ea 444 FQ = FQ_351;
jp1nom 1:ee890adf56ea 445 f1 = 3500000;
jp1nom 1:ee890adf56ea 446 f2 = 3575000;
jp1nom 1:ee890adf56ea 447 f1_CW =3500000;
jp1nom 1:ee890adf56ea 448 f2_CW =3535000;
jp1nom 0:5cdf1a556e60 449 break;
jp1nom 1:ee890adf56ea 450 /////////////
jp1nom 0:5cdf1a556e60 451 case 351:
jp1nom 0:5cdf1a556e60 452 BAND = 352;
jp1nom 0:5cdf1a556e60 453 FQD_351 = FQD;
jp1nom 0:5cdf1a556e60 454 FQD = FQD_352;
jp1nom 0:5cdf1a556e60 455 FQ_351 = FQ;
jp1nom 0:5cdf1a556e60 456 FQ = FQ_352;
jp1nom 0:5cdf1a556e60 457 f1 = 3599000;
jp1nom 0:5cdf1a556e60 458 f2 = 3612000;
jp1nom 0:5cdf1a556e60 459 f1_CW = 3599000;
jp1nom 0:5cdf1a556e60 460 f2_CW = 3599000;
jp1nom 0:5cdf1a556e60 461 break;
jp1nom 0:5cdf1a556e60 462
jp1nom 0:5cdf1a556e60 463 case 352:
jp1nom 0:5cdf1a556e60 464 BAND = 353;
jp1nom 0:5cdf1a556e60 465 FQD_352 = FQD;
jp1nom 0:5cdf1a556e60 466 FQD = FQD_353;
jp1nom 0:5cdf1a556e60 467 FQ_352 = FQ;
jp1nom 0:5cdf1a556e60 468 FQ = FQ_353;
jp1nom 0:5cdf1a556e60 469 f1 = 3680000;
jp1nom 0:5cdf1a556e60 470 f2 = 3687000;
jp1nom 0:5cdf1a556e60 471 f1_CW = 3680000;
jp1nom 0:5cdf1a556e60 472 f2_CW = 3680000;
jp1nom 0:5cdf1a556e60 473 break;
jp1nom 0:5cdf1a556e60 474
jp1nom 0:5cdf1a556e60 475 case 353:
jp1nom 0:5cdf1a556e60 476 BAND = 381;
jp1nom 0:5cdf1a556e60 477 FQD_353 = FQD;
jp1nom 0:5cdf1a556e60 478 FQD = FQD_381;
jp1nom 0:5cdf1a556e60 479 FQ_353 = FQ;
jp1nom 0:5cdf1a556e60 480 FQ = FQ_381;
jp1nom 0:5cdf1a556e60 481 f1 = 3702000;
jp1nom 0:5cdf1a556e60 482 f2 = 3716000;
jp1nom 0:5cdf1a556e60 483 f1_CW = 3702000;
jp1nom 0:5cdf1a556e60 484 f2_CW = 3702000;
jp1nom 0:5cdf1a556e60 485 break;
jp1nom 0:5cdf1a556e60 486
jp1nom 0:5cdf1a556e60 487 case 381:
jp1nom 0:5cdf1a556e60 488 BAND = 382;
jp1nom 0:5cdf1a556e60 489 FQD_381 = FQD;
jp1nom 0:5cdf1a556e60 490 FQD = FQD_382;
jp1nom 0:5cdf1a556e60 491 FQ_381 = FQ;
jp1nom 0:5cdf1a556e60 492 FQ = FQ_382;
jp1nom 0:5cdf1a556e60 493 f1 = 3745000;
jp1nom 0:5cdf1a556e60 494 f2 = 3770000;
jp1nom 0:5cdf1a556e60 495 f1_CW = 3745000;
jp1nom 0:5cdf1a556e60 496 f2_CW = 3745000;
jp1nom 0:5cdf1a556e60 497 break;
jp1nom 0:5cdf1a556e60 498
jp1nom 0:5cdf1a556e60 499 case 382:
jp1nom 0:5cdf1a556e60 500 BAND = 383;
jp1nom 0:5cdf1a556e60 501 FQD_382 = FQD;
jp1nom 0:5cdf1a556e60 502 FQD = FQD_383;
jp1nom 0:5cdf1a556e60 503 FQ_382 = FQ;
jp1nom 0:5cdf1a556e60 504 FQ = FQ_383;
jp1nom 0:5cdf1a556e60 505 f1 = 3791000;
jp1nom 0:5cdf1a556e60 506 f2 = 3805000;
jp1nom 0:5cdf1a556e60 507 f1_CW = 3791000;
jp1nom 0:5cdf1a556e60 508 f2_CW = 3791000;
jp1nom 0:5cdf1a556e60 509 break;
jp1nom 0:5cdf1a556e60 510
jp1nom 0:5cdf1a556e60 511 case 383:
jp1nom 0:5cdf1a556e60 512 BAND = 4;
jp1nom 0:5cdf1a556e60 513 FQD_383 = FQD;
jp1nom 0:5cdf1a556e60 514 FQD = FQD_4;
jp1nom 0:5cdf1a556e60 515 FQ_383 = FQ;
jp1nom 0:5cdf1a556e60 516 FQ = FQ_4;
jp1nom 0:5cdf1a556e60 517 f1 = 4629999;
jp1nom 0:5cdf1a556e60 518 f2 = 4630001;
jp1nom 0:5cdf1a556e60 519 f1_CW = 4630000;
jp1nom 0:5cdf1a556e60 520 f2_CW = 4630001;
jp1nom 0:5cdf1a556e60 521 break;
jp1nom 0:5cdf1a556e60 522
jp1nom 1:ee890adf56ea 523
jp1nom 0:5cdf1a556e60 524 case 4:
jp1nom 0:5cdf1a556e60 525 BAND = 7;
jp1nom 0:5cdf1a556e60 526 FQD_4 = FQD;
jp1nom 0:5cdf1a556e60 527 FQD = FQD_7;
jp1nom 0:5cdf1a556e60 528 FQ_4 = FQ;
jp1nom 0:5cdf1a556e60 529 FQ = FQ_7;
jp1nom 0:5cdf1a556e60 530 f1 = 7000000;
jp1nom 0:5cdf1a556e60 531 f2 = 7200000;
jp1nom 0:5cdf1a556e60 532 f1_CW = 7000000;
jp1nom 0:5cdf1a556e60 533 f2_CW = 7045000;
jp1nom 1:ee890adf56ea 534 break;
jp1nom 1:ee890adf56ea 535
jp1nom 1:ee890adf56ea 536
jp1nom 0:5cdf1a556e60 537 default:
jp1nom 0:5cdf1a556e60 538 BAND = 7;
jp1nom 0:5cdf1a556e60 539 FQD = FQD_7;
jp1nom 0:5cdf1a556e60 540 FQ = FQ_7;
jp1nom 0:5cdf1a556e60 541 break;
jp1nom 0:5cdf1a556e60 542 }
jp1nom 1:ee890adf56ea 543 FQDD = FQD;
jp1nom 0:5cdf1a556e60 544 GET_LCD_DATA();
jp1nom 0:5cdf1a556e60 545 FQX = FQ + IF;
jp1nom 0:5cdf1a556e60 546 DDS();
jp1nom 0:5cdf1a556e60 547 wait(0.3);
jp1nom 0:5cdf1a556e60 548 }
jp1nom 0:5cdf1a556e60 549
jp1nom 0:5cdf1a556e60 550 void STEPSS( void ) {
jp1nom 0:5cdf1a556e60 551 if (s==0) {
jp1nom 0:5cdf1a556e60 552 lcd.locate(13,1);
jp1nom 0:5cdf1a556e60 553 lcd.printf("0");
jp1nom 0:5cdf1a556e60 554 }else{
jp1nom 0:5cdf1a556e60 555 lcd.locate(13,1);
jp1nom 0:5cdf1a556e60 556 lcd.printf("K");
jp1nom 0:5cdf1a556e60 557 }
jp1nom 0:5cdf1a556e60 558 }
jp1nom 0:5cdf1a556e60 559
jp1nom 0:5cdf1a556e60 560 void PTT_OFF(void) {
jp1nom 0:5cdf1a556e60 561 PTT_OUT = 0;
jp1nom 0:5cdf1a556e60 562 LED = 0;
jp1nom 0:5cdf1a556e60 563 FQX = FQ + IF;
jp1nom 0:5cdf1a556e60 564 DDS();
jp1nom 0:5cdf1a556e60 565 GET_LCD_DATA();
jp1nom 0:5cdf1a556e60 566 lcd.locate( 14,0 );
jp1nom 1:ee890adf56ea 567 lcd.printf( "RX" );
jp1nom 1:ee890adf56ea 568 }
jp1nom 1:ee890adf56ea 569
jp1nom 1:ee890adf56ea 570 void RIT(void) {
jp1nom 1:ee890adf56ea 571
jp1nom 1:ee890adf56ea 572 if ( riton == 0) {
jp1nom 1:ee890adf56ea 573 riton = 1;
jp1nom 1:ee890adf56ea 574 lcd.locate(3,1);
jp1nom 1:ee890adf56ea 575 lcd.printf("RIT:");
jp1nom 1:ee890adf56ea 576 lcd.locate( 7,1 );
jp1nom 1:ee890adf56ea 577 lcd.printf("%d0 ",ritd);
jp1nom 1:ee890adf56ea 578
jp1nom 1:ee890adf56ea 579 if ( CW_IN == 1 ) {
jp1nom 1:ee890adf56ea 580 FQX = FQ + STEP * ritd * 100+ IF + CW_OFFSET;
jp1nom 1:ee890adf56ea 581 }else{
jp1nom 1:ee890adf56ea 582 FQX = FQ + STEP * ritd * 100+ IF;
jp1nom 1:ee890adf56ea 583 }
jp1nom 1:ee890adf56ea 584
jp1nom 1:ee890adf56ea 585 DDS();
jp1nom 1:ee890adf56ea 586 } else {
jp1nom 1:ee890adf56ea 587 riton = 0;
jp1nom 1:ee890adf56ea 588 lcd.locate(3,1);
jp1nom 1:ee890adf56ea 589 lcd.printf(" ");
jp1nom 1:ee890adf56ea 590 MODEY();
jp1nom 1:ee890adf56ea 591 if ( CW_IN == 1 ) {
jp1nom 1:ee890adf56ea 592 FQX = FQ + STEP + IF + CW_OFFSET;
jp1nom 1:ee890adf56ea 593 }else{
jp1nom 1:ee890adf56ea 594 FQX = FQ + STEP + IF;
jp1nom 1:ee890adf56ea 595 }
jp1nom 1:ee890adf56ea 596 DDS();
jp1nom 1:ee890adf56ea 597 }
jp1nom 1:ee890adf56ea 598 wait(0.2);
jp1nom 1:ee890adf56ea 599 }
jp1nom 1:ee890adf56ea 600
jp1nom 1:ee890adf56ea 601
jp1nom 1:ee890adf56ea 602 //void MEMIN(void) {
jp1nom 1:ee890adf56ea 603 // if(mem == 0 ) {
jp1nom 1:ee890adf56ea 604 // BAND_M = BAND;
jp1nom 1:ee890adf56ea 605 // FQD_M = FQD;
jp1nom 1:ee890adf56ea 606 // FQ_M = FQ;
jp1nom 1:ee890adf56ea 607 // f1_M = f1;
jp1nom 1:ee890adf56ea 608 // f2_M = f2;
jp1nom 1:ee890adf56ea 609 // f1_CW_M = f1_CW;
jp1nom 1:ee890adf56ea 610 // f2_CW_M = f2_CW;
jp1nom 1:ee890adf56ea 611 // mem = 1;
jp1nom 1:ee890adf56ea 612 // CW_MODE_M = CW_MODE;
jp1nom 1:ee890adf56ea 613 // lcd.locate(11,1);
jp1nom 1:ee890adf56ea 614 // lcd.printf("M");
jp1nom 1:ee890adf56ea 615 // }else{
jp1nom 1:ee890adf56ea 616 // mem = 0;
jp1nom 1:ee890adf56ea 617 // lcd.locate(11,1);
jp1nom 1:ee890adf56ea 618 // lcd.printf(" ");
jp1nom 1:ee890adf56ea 619 // }
jp1nom 1:ee890adf56ea 620 // wait(0.3);
jp1nom 1:ee890adf56ea 621 //}
jp1nom 1:ee890adf56ea 622
jp1nom 1:ee890adf56ea 623 //void MEMOUT(void) {
jp1nom 1:ee890adf56ea 624 // if (mem == 1) {
jp1nom 1:ee890adf56ea 625 // BAND_MM = BAND;
jp1nom 1:ee890adf56ea 626 // FQD_MM = FQD;
jp1nom 1:ee890adf56ea 627 // FQ_MM = FQ;
jp1nom 1:ee890adf56ea 628 // f1_MM = f1;
jp1nom 1:ee890adf56ea 629 // f2_MM = f2;
jp1nom 1:ee890adf56ea 630 // f1_CW_M = f1_CW;
jp1nom 1:ee890adf56ea 631 // f2_CW_M = f2_CW;
jp1nom 1:ee890adf56ea 632 // FQD = FQD_M;
jp1nom 1:ee890adf56ea 633 // FQ = FQ_M;
jp1nom 1:ee890adf56ea 634 // f1 = f1_M;
jp1nom 1:ee890adf56ea 635 // f2 = f2_M;
jp1nom 1:ee890adf56ea 636 // f1_CW = f1_CW_M;
jp1nom 1:ee890adf56ea 637 // f2_CW = f2_CW_M;
jp1nom 1:ee890adf56ea 638 // FQDD = FQD;
jp1nom 1:ee890adf56ea 639 // GET_LCD_DATA();
jp1nom 1:ee890adf56ea 640 // if (CW_MODE_M == 1) {
jp1nom 1:ee890adf56ea 641 // FQX = FQ + IF + CW_OFFSET;
jp1nom 1:ee890adf56ea 642 // }else{
jp1nom 1:ee890adf56ea 643 // FQX = FQ + IF;
jp1nom 1:ee890adf56ea 644 // }
jp1nom 1:ee890adf56ea 645 // DDS();
jp1nom 1:ee890adf56ea 646 // mem = 0;
jp1nom 1:ee890adf56ea 647 // lcd.locate(11,1);
jp1nom 1:ee890adf56ea 648 // lcd.printf(" ");
jp1nom 1:ee890adf56ea 649 // } else {
jp1nom 1:ee890adf56ea 650 // BAND = BAND_MM;
jp1nom 1:ee890adf56ea 651 // FQD = FQD_MM;
jp1nom 1:ee890adf56ea 652 // FQ = FQ_MM;
jp1nom 1:ee890adf56ea 653 // f1 = f1_MM;
jp1nom 1:ee890adf56ea 654 // f2 = f2_MM;
jp1nom 1:ee890adf56ea 655 // f1_CW = f1_CW_M;
jp1nom 1:ee890adf56ea 656 // f2_CW = f2_CW_M;
jp1nom 1:ee890adf56ea 657 // FQDD = FQD;
jp1nom 1:ee890adf56ea 658 // GET_LCD_DATA();
jp1nom 1:ee890adf56ea 659 // if (CW_MODE_M == 1) {
jp1nom 1:ee890adf56ea 660 // FQX = FQ + IF + CW_OFFSET;
jp1nom 1:ee890adf56ea 661 // }else{
jp1nom 1:ee890adf56ea 662 // FQX = FQ + IF;
jp1nom 1:ee890adf56ea 663 // }
jp1nom 1:ee890adf56ea 664 // FQX = FQ + IF;
jp1nom 1:ee890adf56ea 665 // DDS();
jp1nom 1:ee890adf56ea 666 // }
jp1nom 1:ee890adf56ea 667 // wait(0.1);
jp1nom 1:ee890adf56ea 668 //}
jp1nom 1:ee890adf56ea 669
jp1nom 1:ee890adf56ea 670 void JMH(void) {
jp1nom 1:ee890adf56ea 671
jp1nom 1:ee890adf56ea 672 if (mem_jmh == 0) {
jp1nom 1:ee890adf56ea 673 FQD = FQD_JMH;
jp1nom 1:ee890adf56ea 674 FQ = FQ_JMH;
jp1nom 1:ee890adf56ea 675 f1 = FQD_JMH;
jp1nom 1:ee890adf56ea 676 f2 = FQD_JMH;
jp1nom 1:ee890adf56ea 677 f1_CW = FQD_JMH;
jp1nom 1:ee890adf56ea 678 f2_CW = FQD_JMH;
jp1nom 1:ee890adf56ea 679 FQDD = FQD;
jp1nom 1:ee890adf56ea 680 FQX = FQ + IF;
jp1nom 1:ee890adf56ea 681 GET_LCD_DATA();
jp1nom 1:ee890adf56ea 682 DDS();
jp1nom 1:ee890adf56ea 683 lcd.locate(7,1);
jp1nom 1:ee890adf56ea 684 lcd.printf("JMH ");
jp1nom 1:ee890adf56ea 685
jp1nom 1:ee890adf56ea 686 }else{
jp1nom 1:ee890adf56ea 687 if (mem_jmh == 1) {
jp1nom 1:ee890adf56ea 688 FQD = FQD_JMH1;
jp1nom 1:ee890adf56ea 689 FQ = FQ_JMH1;
jp1nom 1:ee890adf56ea 690 f1 = FQD_JMH1;
jp1nom 1:ee890adf56ea 691 f2 = FQD_JMH1;
jp1nom 1:ee890adf56ea 692 f1_CW = FQD_JMH1;
jp1nom 1:ee890adf56ea 693 f2_CW = FQD_JMH1;
jp1nom 1:ee890adf56ea 694 FQDD = FQD;
jp1nom 1:ee890adf56ea 695 FQX = FQ + IF;
jp1nom 1:ee890adf56ea 696 GET_LCD_DATA();
jp1nom 1:ee890adf56ea 697 DDS();
jp1nom 1:ee890adf56ea 698 lcd.locate(7,1);
jp1nom 1:ee890adf56ea 699 lcd.printf("JMH ");
jp1nom 1:ee890adf56ea 700
jp1nom 1:ee890adf56ea 701 }else{
jp1nom 1:ee890adf56ea 702 if (mem_jmh == 2) {
jp1nom 1:ee890adf56ea 703 FQD = FQD_VOK1;
jp1nom 1:ee890adf56ea 704 FQ = FQ_VOK1;
jp1nom 1:ee890adf56ea 705 f1 = FQD_VOK1;
jp1nom 1:ee890adf56ea 706 f2 = FQD_VOK1;
jp1nom 1:ee890adf56ea 707 f1_CW = FQD_JMH1;
jp1nom 1:ee890adf56ea 708 f2_CW = FQD_JMH1;
jp1nom 1:ee890adf56ea 709 FQDD = FQD;
jp1nom 1:ee890adf56ea 710 FQX = FQ + IF;
jp1nom 1:ee890adf56ea 711 GET_LCD_DATA();
jp1nom 1:ee890adf56ea 712 DDS();
jp1nom 1:ee890adf56ea 713 lcd.locate(7,1);
jp1nom 1:ee890adf56ea 714 lcd.printf("VOK ");
jp1nom 1:ee890adf56ea 715
jp1nom 1:ee890adf56ea 716 }else{
jp1nom 1:ee890adf56ea 717 if (mem_jmh == 3) {
jp1nom 1:ee890adf56ea 718 FQD = FQD_VOK2;
jp1nom 1:ee890adf56ea 719 FQ = FQ_VOK2;
jp1nom 1:ee890adf56ea 720 f1 = FQD_VOK2;
jp1nom 1:ee890adf56ea 721 f2 = FQD_VOK2;
jp1nom 1:ee890adf56ea 722 f1_CW = FQD_JMH1;
jp1nom 1:ee890adf56ea 723 f2_CW = FQD_JMH1;
jp1nom 1:ee890adf56ea 724 FQDD = FQD;
jp1nom 1:ee890adf56ea 725 FQX = FQ + IF;
jp1nom 1:ee890adf56ea 726 GET_LCD_DATA();
jp1nom 1:ee890adf56ea 727 DDS();
jp1nom 1:ee890adf56ea 728 lcd.locate(7,1);
jp1nom 1:ee890adf56ea 729 lcd.printf("VOK ");
jp1nom 1:ee890adf56ea 730
jp1nom 1:ee890adf56ea 731 }else{
jp1nom 1:ee890adf56ea 732 if (mem_jmh == 4) {
jp1nom 1:ee890adf56ea 733 FQD = FQD_KCBS;
jp1nom 1:ee890adf56ea 734 FQ = FQ_KCBS;
jp1nom 1:ee890adf56ea 735 f1 = FQD_KCBS;
jp1nom 1:ee890adf56ea 736 f2 = FQD_KCBS;
jp1nom 1:ee890adf56ea 737 f1_CW = FQD_JMH1;
jp1nom 1:ee890adf56ea 738 f2_CW = FQD_JMH1;
jp1nom 1:ee890adf56ea 739 FQDD = FQD;
jp1nom 1:ee890adf56ea 740 FQX = FQ + IF;
jp1nom 1:ee890adf56ea 741 GET_LCD_DATA();
jp1nom 1:ee890adf56ea 742 DDS();
jp1nom 1:ee890adf56ea 743 lcd.locate(7,1);
jp1nom 1:ee890adf56ea 744 lcd.printf("KCBS");
jp1nom 1:ee890adf56ea 745
jp1nom 1:ee890adf56ea 746
jp1nom 1:ee890adf56ea 747 }else{
jp1nom 1:ee890adf56ea 748 if (mem_jmh == 5) {
jp1nom 1:ee890adf56ea 749 FQD = FQD_NSB1;
jp1nom 1:ee890adf56ea 750 FQ = FQ_NSB1;
jp1nom 1:ee890adf56ea 751 f1 = FQD_NSB1;
jp1nom 1:ee890adf56ea 752 f2 = FQD_NSB1;
jp1nom 1:ee890adf56ea 753 f1_CW = FQD_JMH1;
jp1nom 1:ee890adf56ea 754 f2_CW = FQD_JMH1;
jp1nom 1:ee890adf56ea 755 FQDD = FQD;
jp1nom 1:ee890adf56ea 756 FQX = FQ + IF;
jp1nom 1:ee890adf56ea 757 GET_LCD_DATA();
jp1nom 1:ee890adf56ea 758 DDS();
jp1nom 1:ee890adf56ea 759 lcd.locate(7,1);
jp1nom 1:ee890adf56ea 760 lcd.printf("NSB1");
jp1nom 1:ee890adf56ea 761
jp1nom 1:ee890adf56ea 762
jp1nom 1:ee890adf56ea 763 }else{
jp1nom 1:ee890adf56ea 764 if (mem_jmh == 6) {
jp1nom 1:ee890adf56ea 765 FQD = FQD_NSB2;
jp1nom 1:ee890adf56ea 766 FQ = FQ_NSB2;
jp1nom 1:ee890adf56ea 767 f1 = FQD_NSB2;
jp1nom 1:ee890adf56ea 768 f2 = FQD_NSB2;
jp1nom 1:ee890adf56ea 769 f1_CW = FQD_JMH1;
jp1nom 1:ee890adf56ea 770 f2_CW = FQD_JMH1;
jp1nom 1:ee890adf56ea 771 FQDD = FQD;
jp1nom 1:ee890adf56ea 772 FQX = FQ + IF;
jp1nom 1:ee890adf56ea 773 GET_LCD_DATA();
jp1nom 1:ee890adf56ea 774 DDS();
jp1nom 1:ee890adf56ea 775 lcd.locate(7,1);
jp1nom 1:ee890adf56ea 776 lcd.printf("NSB2");
jp1nom 1:ee890adf56ea 777
jp1nom 1:ee890adf56ea 778 }else{
jp1nom 1:ee890adf56ea 779 if (mem_jmh == 7) {
jp1nom 1:ee890adf56ea 780 FQD = FQD_NSB3;
jp1nom 1:ee890adf56ea 781 FQ = FQ_NSB3;
jp1nom 1:ee890adf56ea 782 f1 = FQD_NSB3;
jp1nom 1:ee890adf56ea 783 f2 = FQD_NSB3;
jp1nom 1:ee890adf56ea 784 f1_CW = FQD_JMH1;
jp1nom 1:ee890adf56ea 785 f2_CW = FQD_JMH1;
jp1nom 1:ee890adf56ea 786 FQDD = FQD;
jp1nom 1:ee890adf56ea 787 FQX = FQ + IF;
jp1nom 1:ee890adf56ea 788 GET_LCD_DATA();
jp1nom 1:ee890adf56ea 789 DDS();
jp1nom 1:ee890adf56ea 790 // mem_jmh = 8;
jp1nom 1:ee890adf56ea 791 lcd.locate(7,1);
jp1nom 1:ee890adf56ea 792 lcd.printf("NSB1");
jp1nom 1:ee890adf56ea 793
jp1nom 1:ee890adf56ea 794 }else{
jp1nom 1:ee890adf56ea 795 if (mem_jmh == 8) {
jp1nom 1:ee890adf56ea 796 FQD = FQD_NSB4;
jp1nom 1:ee890adf56ea 797 FQ = FQ_NSB4;
jp1nom 1:ee890adf56ea 798 f1 = FQD_NSB4;
jp1nom 1:ee890adf56ea 799 f2 = FQD_NSB4;
jp1nom 1:ee890adf56ea 800 f1_CW = FQD_JMH1;
jp1nom 1:ee890adf56ea 801 f2_CW = FQD_JMH1;
jp1nom 1:ee890adf56ea 802 FQDD = FQD;
jp1nom 1:ee890adf56ea 803 FQX = FQ + IF;
jp1nom 1:ee890adf56ea 804 GET_LCD_DATA();
jp1nom 1:ee890adf56ea 805 DDS();
jp1nom 1:ee890adf56ea 806 // mem_jmh = 9;
jp1nom 1:ee890adf56ea 807 lcd.locate(7,1);
jp1nom 1:ee890adf56ea 808 lcd.printf("NSB2");
jp1nom 1:ee890adf56ea 809
jp1nom 1:ee890adf56ea 810 }else{
jp1nom 1:ee890adf56ea 811 if (mem_jmh == 9) {
jp1nom 1:ee890adf56ea 812 FQD = FQD_NSB5;
jp1nom 1:ee890adf56ea 813 FQ = FQ_NSB5;
jp1nom 1:ee890adf56ea 814 f1 = FQD_NSB5;
jp1nom 1:ee890adf56ea 815 f2 = FQD_NSB5;
jp1nom 1:ee890adf56ea 816 f1_CW = FQD_JMH1;
jp1nom 1:ee890adf56ea 817 f2_CW = FQD_JMH1;
jp1nom 1:ee890adf56ea 818 FQDD = FQD;
jp1nom 1:ee890adf56ea 819 FQX = FQ + IF;
jp1nom 1:ee890adf56ea 820 GET_LCD_DATA();
jp1nom 1:ee890adf56ea 821 DDS();
jp1nom 1:ee890adf56ea 822 lcd.locate(7,1);
jp1nom 1:ee890adf56ea 823 lcd.printf("NSB1");
jp1nom 1:ee890adf56ea 824
jp1nom 1:ee890adf56ea 825 }else{
jp1nom 1:ee890adf56ea 826 if (mem_jmh == 10) {
jp1nom 1:ee890adf56ea 827 FQD = FQD_NSB6;
jp1nom 1:ee890adf56ea 828 FQ = FQ_NSB6;
jp1nom 1:ee890adf56ea 829 f1 = FQD_NSB6;
jp1nom 1:ee890adf56ea 830 f2 = FQD_NSB6;
jp1nom 1:ee890adf56ea 831 f1_CW = FQD_JMH1;
jp1nom 1:ee890adf56ea 832 f2_CW = FQD_JMH1;
jp1nom 1:ee890adf56ea 833 FQDD = FQD;
jp1nom 1:ee890adf56ea 834 FQX = FQ + IF;
jp1nom 1:ee890adf56ea 835 GET_LCD_DATA();
jp1nom 1:ee890adf56ea 836 DDS();
jp1nom 1:ee890adf56ea 837 // mem_jmh = 11;
jp1nom 1:ee890adf56ea 838 lcd.locate(7,1);
jp1nom 1:ee890adf56ea 839 lcd.printf("NSB2");
jp1nom 1:ee890adf56ea 840
jp1nom 1:ee890adf56ea 841
jp1nom 1:ee890adf56ea 842 }else{
jp1nom 1:ee890adf56ea 843 if (mem_jmh == 11) {
jp1nom 1:ee890adf56ea 844 FQD = FQD_CRI;
jp1nom 1:ee890adf56ea 845 FQ = FQ_CRI;
jp1nom 1:ee890adf56ea 846 f1 = FQD_CRI;
jp1nom 1:ee890adf56ea 847 f2 = FQD_CRI;
jp1nom 1:ee890adf56ea 848 f1_CW = FQD_JMH1;
jp1nom 1:ee890adf56ea 849 f2_CW = FQD_JMH1;
jp1nom 1:ee890adf56ea 850 FQDD = FQD;
jp1nom 1:ee890adf56ea 851 FQX = FQ + IF;
jp1nom 1:ee890adf56ea 852 GET_LCD_DATA();
jp1nom 1:ee890adf56ea 853 DDS();
jp1nom 1:ee890adf56ea 854 // mem_jmh = 12;
jp1nom 1:ee890adf56ea 855 lcd.locate(7,1);
jp1nom 1:ee890adf56ea 856 lcd.printf("CRI ");
jp1nom 1:ee890adf56ea 857
jp1nom 1:ee890adf56ea 858
jp1nom 1:ee890adf56ea 859 }else{
jp1nom 1:ee890adf56ea 860 if (mem_jmh == 12) {
jp1nom 1:ee890adf56ea 861 FQD = FQD_NHK;
jp1nom 1:ee890adf56ea 862 FQ = FQ_NHK;
jp1nom 1:ee890adf56ea 863 f1 = FQD_NHK;
jp1nom 1:ee890adf56ea 864 f2 = FQD_NHK;
jp1nom 1:ee890adf56ea 865 f1_CW = FQD_JMH1;
jp1nom 1:ee890adf56ea 866 f2_CW = FQD_JMH1;
jp1nom 1:ee890adf56ea 867 FQDD = FQD;
jp1nom 1:ee890adf56ea 868 FQX = FQ + IF;
jp1nom 1:ee890adf56ea 869 GET_LCD_DATA();
jp1nom 1:ee890adf56ea 870 DDS();
jp1nom 1:ee890adf56ea 871 lcd.locate(7,1);
jp1nom 1:ee890adf56ea 872 lcd.printf("NHK ");
jp1nom 1:ee890adf56ea 873
jp1nom 1:ee890adf56ea 874 } else {
jp1nom 1:ee890adf56ea 875 lcd.locate(7,1);
jp1nom 1:ee890adf56ea 876 lcd.printf(" ");
jp1nom 1:ee890adf56ea 877 }
jp1nom 1:ee890adf56ea 878 }
jp1nom 1:ee890adf56ea 879 }
jp1nom 1:ee890adf56ea 880 }
jp1nom 1:ee890adf56ea 881 }
jp1nom 1:ee890adf56ea 882 }
jp1nom 1:ee890adf56ea 883 }
jp1nom 1:ee890adf56ea 884 }
jp1nom 1:ee890adf56ea 885 }
jp1nom 1:ee890adf56ea 886 }
jp1nom 1:ee890adf56ea 887 }
jp1nom 1:ee890adf56ea 888 }
jp1nom 1:ee890adf56ea 889 }
jp1nom 1:ee890adf56ea 890 wait(0.2);
jp1nom 1:ee890adf56ea 891 }
jp1nom 1:ee890adf56ea 892
jp1nom 1:ee890adf56ea 893 void CW1(void) {
jp1nom 1:ee890adf56ea 894
jp1nom 1:ee890adf56ea 895 if ( riton == 1 ) {
jp1nom 1:ee890adf56ea 896 FQX = FQ + STEP * ritd * 100 + IF + CW_OFFSET;
jp1nom 1:ee890adf56ea 897 } else {
jp1nom 1:ee890adf56ea 898 FQX = FQ + IF + CW_OFFSET;
jp1nom 1:ee890adf56ea 899 }
jp1nom 1:ee890adf56ea 900 DDS();
jp1nom 1:ee890adf56ea 901
jp1nom 1:ee890adf56ea 902 FQDD = FQD;
jp1nom 1:ee890adf56ea 903 GET_LCD_DATA();
jp1nom 1:ee890adf56ea 904
jp1nom 1:ee890adf56ea 905 CW_MODE = 1;
jp1nom 1:ee890adf56ea 906 DDS();
jp1nom 1:ee890adf56ea 907 }
jp1nom 1:ee890adf56ea 908
jp1nom 1:ee890adf56ea 909 void CW2(void) {
jp1nom 1:ee890adf56ea 910 if ( riton == 1 ) {
jp1nom 1:ee890adf56ea 911 FQX = FQ + STEP * ritd * 100 + IF;
jp1nom 1:ee890adf56ea 912 } else {
jp1nom 1:ee890adf56ea 913 FQX = FQ + IF;
jp1nom 1:ee890adf56ea 914 }
jp1nom 1:ee890adf56ea 915 DDS();
jp1nom 1:ee890adf56ea 916
jp1nom 1:ee890adf56ea 917 FQDD = FQD;
jp1nom 1:ee890adf56ea 918 GET_LCD_DATA();
jp1nom 1:ee890adf56ea 919
jp1nom 1:ee890adf56ea 920 CW_MODE = 0;
jp1nom 1:ee890adf56ea 921 DDS();
jp1nom 1:ee890adf56ea 922 }
jp1nom 1:ee890adf56ea 923
jp1nom 1:ee890adf56ea 924 void JOZ(void) {
jp1nom 1:ee890adf56ea 925
jp1nom 1:ee890adf56ea 926 BAND_jmh = BAND;
jp1nom 1:ee890adf56ea 927 FQD_jmh = FQD;
jp1nom 1:ee890adf56ea 928 FQ_jmh = FQ;
jp1nom 1:ee890adf56ea 929 f1_jmh = f1;
jp1nom 1:ee890adf56ea 930 f2_jmh = f2;
jp1nom 1:ee890adf56ea 931 f1_CW_jmh = f1_CW;
jp1nom 1:ee890adf56ea 932 f2_CW_jmh = f2_CW;
jp1nom 1:ee890adf56ea 933 fbuf5 = fbuf1;
jp1nom 1:ee890adf56ea 934 fbuf6 = fbuf2;
jp1nom 1:ee890adf56ea 935 fbuf3 = 0;
jp1nom 1:ee890adf56ea 936 fbuf4 = 0;
jp1nom 1:ee890adf56ea 937
jp1nom 1:ee890adf56ea 938 JMH();
jp1nom 1:ee890adf56ea 939 wait(0.5);
jp1nom 1:ee890adf56ea 940
jp1nom 1:ee890adf56ea 941 while (jmh == 0) {
jp1nom 1:ee890adf56ea 942
jp1nom 1:ee890adf56ea 943 if (MODE_IN == 1 ) {MODEX();}
jp1nom 1:ee890adf56ea 944
jp1nom 1:ee890adf56ea 945 if (CW_MODE == 1 ) {CW1();}
jp1nom 1:ee890adf56ea 946 if (CW_MODE != 1 ) {CW2();}
jp1nom 1:ee890adf56ea 947
jp1nom 1:ee890adf56ea 948 fbuf3 = wheel.getPulses();
jp1nom 1:ee890adf56ea 949 if (fbuf3 > fbuf4) {
jp1nom 1:ee890adf56ea 950 if (mem_jmh <12 ) {
jp1nom 1:ee890adf56ea 951 mem_jmh++;
jp1nom 1:ee890adf56ea 952 JMH();
jp1nom 1:ee890adf56ea 953 }
jp1nom 1:ee890adf56ea 954 }
jp1nom 1:ee890adf56ea 955 if (fbuf3 < fbuf4) {
jp1nom 1:ee890adf56ea 956 if (mem_jmh > 0) {
jp1nom 1:ee890adf56ea 957 mem_jmh--;
jp1nom 1:ee890adf56ea 958 JMH();
jp1nom 1:ee890adf56ea 959 }
jp1nom 1:ee890adf56ea 960 }
jp1nom 1:ee890adf56ea 961 fbuf4 = fbuf3;
jp1nom 1:ee890adf56ea 962
jp1nom 1:ee890adf56ea 963 }
jp1nom 1:ee890adf56ea 964
jp1nom 1:ee890adf56ea 965 fbuf3 = 0;
jp1nom 1:ee890adf56ea 966 fbuf4 = 0;
jp1nom 1:ee890adf56ea 967 fbuf1 = fbuf5;
jp1nom 1:ee890adf56ea 968 fbuf2 = fbuf6;
jp1nom 1:ee890adf56ea 969 BAND = BAND_jmh;
jp1nom 1:ee890adf56ea 970 FQD = FQD_jmh;
jp1nom 1:ee890adf56ea 971 FQ = FQ_jmh;
jp1nom 1:ee890adf56ea 972 f1 = f1_jmh;
jp1nom 1:ee890adf56ea 973 f2 = f2_jmh;
jp1nom 1:ee890adf56ea 974 f1_CW = f1_CW_jmh;
jp1nom 1:ee890adf56ea 975 f2_CW = f2_CW_jmh;
jp1nom 1:ee890adf56ea 976 FQDD = FQD;
jp1nom 1:ee890adf56ea 977 FQX = FQ + IF;
jp1nom 1:ee890adf56ea 978 GET_LCD_DATA();
jp1nom 1:ee890adf56ea 979 DDS();
jp1nom 1:ee890adf56ea 980
jp1nom 1:ee890adf56ea 981 lcd.locate(7,1);
jp1nom 1:ee890adf56ea 982 lcd.printf(" ");
jp1nom 1:ee890adf56ea 983 MODEY();
jp1nom 1:ee890adf56ea 984 wait(0.3);
jp1nom 1:ee890adf56ea 985 }
jp1nom 1:ee890adf56ea 986
jp1nom 1:ee890adf56ea 987 void MODEX(void) {
jp1nom 1:ee890adf56ea 988 if (CW_IN == 0) {
jp1nom 1:ee890adf56ea 989 CW_IN++;
jp1nom 1:ee890adf56ea 990 RL1 = 1;
jp1nom 1:ee890adf56ea 991 RL2 = 1;
jp1nom 1:ee890adf56ea 992 CW1();
jp1nom 1:ee890adf56ea 993 lcd.locate(3,1);
jp1nom 1:ee890adf56ea 994 lcd.printf("CW ");
jp1nom 1:ee890adf56ea 995 wait(0.3);
jp1nom 1:ee890adf56ea 996 }else{
jp1nom 1:ee890adf56ea 997 if (CW_IN == 1) {
jp1nom 1:ee890adf56ea 998 CW_IN++;
jp1nom 1:ee890adf56ea 999 RL1 = 0;
jp1nom 1:ee890adf56ea 1000 RL2 = 0;
jp1nom 1:ee890adf56ea 1001 CW2();
jp1nom 1:ee890adf56ea 1002 lcd.locate(3,1);
jp1nom 1:ee890adf56ea 1003 lcd.printf("AM ");
jp1nom 1:ee890adf56ea 1004 wait(0.3);
jp1nom 1:ee890adf56ea 1005 }else{
jp1nom 1:ee890adf56ea 1006 if (CW_IN == 2) {
jp1nom 1:ee890adf56ea 1007 CW_IN = 0;
jp1nom 1:ee890adf56ea 1008 RL1= 1;
jp1nom 1:ee890adf56ea 1009 RL2= 0;
jp1nom 1:ee890adf56ea 1010 lcd.locate(3,1);
jp1nom 1:ee890adf56ea 1011 lcd.printf("SSB");
jp1nom 1:ee890adf56ea 1012 wait(0.3);
jp1nom 1:ee890adf56ea 1013 CW2();
jp1nom 1:ee890adf56ea 1014 CW_IN = 0;
jp1nom 1:ee890adf56ea 1015 }
jp1nom 1:ee890adf56ea 1016 }
jp1nom 1:ee890adf56ea 1017 }
jp1nom 1:ee890adf56ea 1018 // DDS_U();
jp1nom 1:ee890adf56ea 1019 }
jp1nom 1:ee890adf56ea 1020
jp1nom 1:ee890adf56ea 1021 void MODEY(void) {
jp1nom 1:ee890adf56ea 1022 if (CW_IN == 0) {
jp1nom 1:ee890adf56ea 1023 lcd.locate(3,1);
jp1nom 1:ee890adf56ea 1024 lcd.printf("SSB");
jp1nom 1:ee890adf56ea 1025 }else{
jp1nom 1:ee890adf56ea 1026 if (CW_IN == 1) {
jp1nom 1:ee890adf56ea 1027 lcd.locate(3,1);
jp1nom 1:ee890adf56ea 1028 lcd.printf("CW ");
jp1nom 1:ee890adf56ea 1029 }else{
jp1nom 1:ee890adf56ea 1030 if (CW_IN == 2) {
jp1nom 1:ee890adf56ea 1031 lcd.locate(3,1);
jp1nom 1:ee890adf56ea 1032 lcd.printf("AM ");
jp1nom 1:ee890adf56ea 1033 }
jp1nom 1:ee890adf56ea 1034 }
jp1nom 1:ee890adf56ea 1035 }
jp1nom 1:ee890adf56ea 1036 // DDS_U();
jp1nom 1:ee890adf56ea 1037 }