scan display for ILI934x

pull/249/head
Hansi, dl9rdz 2021-10-30 23:27:28 +02:00
rodzic cf612659e1
commit f7b87b6ba5
1 zmienionych plików z 18 dodań i 12 usunięć

Wyświetl plik

@ -20,12 +20,13 @@ struct scancfg {
int NCHAN; // number of channels to scan, PLOT_W * SMPL_PIX int NCHAN; // number of channels to scan, PLOT_W * SMPL_PIX
int SMOOTH; int SMOOTH;
int ADDWAIT; int ADDWAIT;
int VSCALE;
}; };
//struct scancfg scanLCD={ 121, 7, 120/6, 120/6/4, 6000.0/120.0/20.0, 20, 120*20, 1 }; //struct scancfg scanLCD={ 121, 7, 120/6, 120/6/4, 6000.0/120.0/20.0, 20, 120*20, 1 };
struct scancfg scanLCD={ 121, 7, 120/6, 120/6/4, 6000.0/120.0/10.0, 10, 120*10, 2, 40 }; struct scancfg scanLCD={ 121, 7, 120/6, 120/6/4, 6000.0/120.0/10.0, 10, 120*10, 2, 40, 1 };
struct scancfg scanTFT={ 210, 16, 210/6, 210/6/5, 6000.0/210.0/10.0, 10, 210*10, 1, 0 }; struct scancfg scanTFT={ 210, 16, 210/6, 210/6/5, 6000.0/210.0/10.0, 10, 210*10, 1, 0, 1 };
struct scancfg scan9341={ 210, 16, 210/6, 210/6/5, 6000.0/210.0/10.0, 10, 210*10, 1, 0 }; struct scancfg scan934x={ 300, 22, 300/6, 300/6/5, 6000.0/300.0/7.0, 7, 300*5, 1, 10, 2 };
struct scancfg &scanconfig = scanTFT; struct scancfg &scanconfig = scanTFT;
@ -35,9 +36,12 @@ struct scancfg &scanconfig = scanTFT;
// max of 120*5 and 210*3 // max of 120*5 and 210*3
//#define MAXN 210*10 //#define MAXN 210*10
#define MAXN 120*20 //#define MAXN 120*20
// max of 120 and 210 (ceil(210/8)*8)) #define MAXN 300*10
#define MAXDISP 216
// max of 120 and 210 (ceil(210/8)*8)) -- now ceil(300/8)*8
//#define MAXDISP 216
#define MAXDISP 304
int scanresult[MAXN]; int scanresult[MAXN];
int scandisp[MAXDISP]; int scandisp[MAXDISP];
@ -50,7 +54,7 @@ double peakf=0;
const byte tilepatterns[9]={0,0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,0xFF}; const byte tilepatterns[9]={0,0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,0xFF};
void Scanner::fillTiles(uint8_t *row, int value) { void Scanner::fillTiles(uint8_t *row, int value) {
for(int y=0; y<scanconfig.PLOT_H8; y++) { for(int y=0; y<scanconfig.PLOT_H8; y++) {
int nbits = value - 8*(scanconfig.PLOT_H8-1-y); int nbits = scanconfig.VSCALE*value - 8*(scanconfig.PLOT_H8-1-y);
if(nbits<0) { row[8*y]=0; continue; } if(nbits<0) { row[8*y]=0; continue; }
if(nbits>=8) { row[8*y]=255; continue; } if(nbits>=8) { row[8*y]=255; continue; }
row[8*y] = tilepatterns[nbits]; row[8*y] = tilepatterns[nbits];
@ -66,8 +70,8 @@ void Scanner::fillTiles(uint8_t *row, int value) {
*/ */
///// unused???? uint8_t tiles[16] = { 0x0f,0x0f,0x0f,0x0f,0xf0,0xf0,0xf0,0xf0, 1, 3, 7, 15, 31, 63, 127, 255}; ///// unused???? uint8_t tiles[16] = { 0x0f,0x0f,0x0f,0x0f,0xf0,0xf0,0xf0,0xf0, 1, 3, 7, 15, 31, 63, 127, 255};
// type 0: lcd, 1: tft, 2: lcd(sh1106) // type 0: lcd, 1: tft(ILI9225), 2: lcd(sh1106) 3:TFT(ili9341), 4: TFT(ili9342)
#define ISTFT (sonde.config.disptype==1 || sonde.config.disptype==3) #define ISTFT (sonde.config.disptype!=0 && sonde.config.disptype!=2)
void Scanner::plotResult() void Scanner::plotResult()
{ {
int yofs = 0; int yofs = 0;
@ -77,9 +81,9 @@ void Scanner::plotResult()
if (sonde.config.marker != 0) { if (sonde.config.marker != 0) {
itoa((sonde.config.startfreq), buf, 10); itoa((sonde.config.startfreq), buf, 10);
disp.rdis->drawString(0, 1, buf); disp.rdis->drawString(0, 1, buf);
disp.rdis->drawString(95, 1, "MHz"); disp.rdis->drawString(scanconfig.PLOT_W/2-10, 1, "MHz");
itoa((sonde.config.startfreq + 6), buf, 10); itoa((sonde.config.startfreq + 6), buf, 10);
disp.rdis->drawString(195, 1, buf); disp.rdis->drawString(scanconfig.PLOT_W-15, 1, buf);
} }
} }
else { else {
@ -120,8 +124,10 @@ void Scanner::scan()
{ {
if(!ISTFT) { // LCD small if(!ISTFT) { // LCD small
scanconfig = scanLCD; scanconfig = scanLCD;
} else { } else if (sonde.config.disptype==1) {
scanconfig = scanTFT; scanconfig = scanTFT;
} else {
scanconfig = scan934x;
} }
// Configure // Configure
STARTF = (sonde.config.startfreq * 1000000); STARTF = (sonde.config.startfreq * 1000000);