Cuprins:

O colecție de terminale ANSI: 10 pași
O colecție de terminale ANSI: 10 pași

Video: O colecție de terminale ANSI: 10 pași

Video: O colecție de terminale ANSI: 10 pași
Video: Valeriu Coadă te învață cum să scapi într-o SITUAȚIE EXTREMĂ!! 😱😅 #tiktokromania #valeriucoada 2024, Noiembrie
Anonim
O colecție de terminale ANSI
O colecție de terminale ANSI

Acest proiect a început ca o modalitate de afișare a textului cu 80 de coloane pe un ecran LCD adecvat pentru rularea unui procesor de text de modă veche, cum ar fi Wordstar. Au fost adăugate diverse alte afișaje cu dimensiuni cuprinse între 0,96 și 6 inci. Afișajele utilizează un singur PCB, precum și o schiță / program Arduino.

Există o conexiune serial RS232 pentru conectarea la un computer și o priză PS / 2 pentru tastatură. Afișajele au fost alese pentru a reprezenta cele disponibile în mod obișnuit la prețuri rezonabile. În funcție de memoria necesară, afișajele utilizează un Arduino Nano, Uno sau Mega.

Pasul 1: Rezumatul afișajelor

Rezumatul afișajelor
Rezumatul afișajelor

Există diverse afișaje cu rezoluție 480x320. Aceasta permite un font 9x5 și un text de 80 coloane. Există diverse plăci cu rezoluție 320x240, cu fonturi 9x5 și, de asemenea, un font 7x3 foarte mic pentru a permite textul cu 80 de coloane. Există, de asemenea, plăci mai mici, cu 160x120 și 128x64 pixeli. De asemenea, afișajele de text 20x4 și 16x2 și, în cele din urmă, o placă de afișare starburst de 12x2 paisprezece segmente.

Unele afișaje utilizează I2C, altele sunt SPI, iar pentru afișajele mai mari, o magistrală de date pe 16 biți pentru viteze mai mari de actualizare.

Afișajele mai mici folosesc Arduino Uno. Plăcile mai mari au nevoie de mai multă memorie și așadar folosiți un Mega. Placa de afișare starburst folosește un Nano.

În acest moment aș putea menționa că fotografiile nu fac dreptate multor afișaje. Micul afișaj alb-negru este foarte clar și luminos, ceea ce a făcut mai dificilă focalizarea camerei, iar afișajul cu LED starburst arată mult mai clar în viața reală.

Pasul 2: Hardware

Hardware
Hardware

PCB-ul a fost proiectat să funcționeze cu cât mai multe afișaje posibil. Este ușor să schimbați între un Mega și unul folosind patru jumperi. Există rezistențe divizoare de tensiune pentru afișaje care rulează pe 3V. Pinii I2C sunt scoși într-un grup, astfel încât afișajele să poată fi conectate direct. Terminalul funcționează la 9600 baud și, deși acest lucru poate fi mărit, multe dintre afișajele mai mari nu vor redesena mult mai repede decât acesta. Tastatura PS2 se conectează la o priză DIN6. Tastaturile USB vor funcționa și cu un adaptor ieftin. Puteți face un test de loopback simplu prin conectarea pinilor 2 și 3 pe D9 și apoi pe ecran vor apărea caractere tastate pe tastatură.

În unele cazuri nu este necesar un PCB și este posibil ca lucrurile să funcționeze cu module pre-fabricate disponibile pe ebay, de exemplu adaptoare PS2, plăci adaptoare RS232 și afișaje care se conectează direct la plăci arduino.

Există, de asemenea, o placă separată pentru afișajul cu LED starburst - vezi mai târziu în acest manual.

Pasul 3: Software

Mai jos este un fișier numit Package.txt Acesta este de fapt un fișier.zip, așa că descărcați-l și redenumiți-l (Instructables nu permite fișierele zip). Include schița / programul Arduino și acesta este un singur program utilizat de toate afișajele. Există, de asemenea, toate fișierele.zip pentru fiecare dintre afișaje.

La începutul programului sunt o serie de declarații #define. Decomentați-l pe cel care corespunde afișajului. Utilizați Instrumente / Placă pentru a selecta Uno, Mega sau Nano. Schimbarea plăcilor este la fel de simplă ca schimbarea unei linii din cod.

Una dintre provocările care lucrează cu multe ecrane este că toate par să aibă nevoie de propriile lor drivere software. Toate acestea sunt incluse în pachet. Testarea a inclus preluarea pachetului și reinstalarea acestuia pe o mașină nouă complet de la zero. Puteți, de asemenea, codul sursă de la Github și Adafruit și LCDWiki. Există câteva cazuri în care versiunile mai noi nu funcționează, astfel încât toate versiunile de lucru sunt incluse în zip. Ocazional au existat cazuri în care un șofer l-a oprit pe celălalt să funcționeze, deoarece au folosit același nume de fișier, dar versiuni diferite. Există o descriere în comentariile din partea de sus a programului care arată cum se instalează fiecare driver. Majoritatea sunt instalate din Arduino IDE cu Sketch / Include Library / Add ZIP library și aceasta preia fișierul zip și îl pune în c: / users / computername / mydocuments / arduino / libraries.

Dacă utilizați un singur afișaj, unele dintre aceste biblioteci nu vor trebui instalate. Cel puțin aveți nevoie de cele două fișiere de la tastatură și de cel pentru afișajul special. Unele afișează codul de partajare. Există instrucțiuni mai detaliate în comentariile din partea de sus a programului, inclusiv obținerea bibliotecii gfx de la Adafruit.

Deoarece toate afișajele utilizează aceeași schiță Arduino, schimbarea afișajelor este doar o chestiune de necomentat una dintre liniile de mai jos:

// Afișaje diferite, lăsați unul dintre următoarele necomentate # define DISPLAY_480X320_LCDWIKI_ILI9486 // 3,5 ", 480x320, text 80x32, mega, 16 biți, se conectează la mega 36 pini (și 2 pini de alimentare).https://www.lcdwiki.com /3.5inch_Arduino_Display-Mega2560. Mai lent decât unele dintre opțiunile de mai jos, dar un font mai lizibil și un ecran mai mare, boot de 5 sec. // # define DISPLAY_480X320_MCUFRIEND_ILI9486 // 3.5 ", 480x320, text 80x32, mega, font 5x9, doar pentru mega, dar folosește doar pinii uno, putere, D0-D14, A0-A5, font mai frumos decât modulul ssd1289 40 pini, dar mult mai lent https://www.arduinolibraries.info/libraries/mcufriend_kbv https://github.com/adafruit/Adafruit -GFX-Library // # define DISPLAY_320X240_MCUFRIEND_ILI9341 // 2.4 ", 320x240, text 53x24, mega // # define DISPLAY_320X240_SSD1289_40COL // 3.5", 320x240, text 40x20, mega, bibliotecă UTFT (fără fonturi mai mici de 8x12). Rapid // # define DISPLAY_320X240_SSD1289_53COL // 3.5 ", 320x240, text 53x24, mega, font 9x5, poate edita font. Fast // # define DISPLAY_320X240_SSD1289_80COL // 3.5", 320x240, text 80x30, mega, minuscul 7x3, driver mai rapid decât cele două de mai sus, cel mai rapid dintre toate acestea ca unitatea de 16 biți direct pe afișaj, mai degrabă decât spi / i2c // # define DISPLAY_160X128_ST7735 // 1.8 ", 160x128, text 26x12, uno (ILI9341) SPI 128x160 // # define DISPLAY_128X64_OLED_WHITE // 0,96 ", 128x64, text 21x6, mega, I2C, alb alb pe negru (biblioteca TFT pentru această placă plus tot codul plus tastatura rămâne fără spațiu de stocare a programului, chiar dacă nevoile RAM sunt foarte mici, deci numai rulează pe un mega) // # define DISPLAY_20X4 // text 20x4, uno, LCD cu I2C, text LCD https://www.arduino.cc/en/Reference/LiquidCrystal // # define DISPLAY_16X2 // text 16x2, uno, se conectează la uno, folosește pinii 4 până la 10 // # define DISPLAY_STARBURST // text 12x2, nano, afișare starburst cu nano controller // # define DISPLAY_320X240_QVGA_SPI_ILI9341 / / 2.2 ", 320x240, text 11x8, uno, font mare, uno, semnale 3v, afișaj SPI cu 9 pini, consultați Instrucțiunile Bodmer - uno https://www.instructables.com/id/Arduino-TFT-display-and-font- bibliotecă / obțineți fișierul zip în partea de jos și puneți manual gfx și 9341 în dosarul bibliotecii arduino

Pasul 4: Standardul ANSI

Standardul ANSI
Standardul ANSI

ANSI permite comenzi simple pentru a șterge ecranul, a muta cursorul și a schimba culorile. Pe câteva dintre fotografii există o demonstrație care arată toate culorile din prim-plan și fundal. Acestea sunt roșu, galben, verde, albastru, cyan, magenta, negru, alb, gri închis, gri deschis, iar culorile pot fi strălucitoare sau slabe, deci există 16 culori în prim plan și 16 culori de fundal.

Este foarte posibil să vă gândiți să adăugați într-un mod „grafică” unde puteți desena imagini cu rezoluție mult mai mare la nivel de pixeli și cu 256 sau mai multe culori. Principalele limitări sunt memoria internă a Arduino și timpul necesar pentru a trimite o imagine pe o legătură serială la 9600 baud.

Codul are nevoie de un octet pentru stocarea caracterului și un octet pentru stocarea culorilor (3 biți pentru prim-plan, 3 pentru fundal, unul pentru luminos / slab și unul pentru aldin). Deci, un afișaj de 80x30 va avea nevoie de 2400x2 = 4800 de octeți, care se vor potrivi într-un Mega, dar nu într-un Uno.

Pasul 5: Afișează

Afișează
Afișează
Afișează
Afișează
Afișează
Afișează

Mai sus sunt fotografii ale fiecărui afișaj individual. Există fotografii din fața și din spatele fiecărui afișaj și reprezintă multe dintre mărcile disponibile pe eBay sau similar. Unele sunt I2C, altele sunt paralele, altele au fonturi mai mari, altele pot afișa 80 de coloane complete potrivite pentru Wordstar și alte programe vechi de procesare a textului. Există mai multe detalii în textul codului arduino.

Pasul 6: Schematic

Mai jos sunt două fișiere. Acestea sunt denumite.txt deoarece Instructables nu gestionează fișierele.zip. Descărcați-le și redenumiți-le ca.zip.

Există schema și aspectul plăcii ca fișiere pdf. Există, de asemenea, un pachet pentru Seeed PCB. Acestea sunt gerber-urile și, dacă mergeți la Seeed și încărcați-l, acesta ar trebui să afișeze gerber-urile și apoi puteți obține PCB-uri. Placa cu 14 segmente este mare și costă ceva mai mult, dar cea mai mică se potrivește în formatul preferat de Sex de 10x10cm, deci este destul de rezonabilă pentru 5 sau 10 plăci - de fapt costurile de expediere sunt mai mari decât plăcile.

Este foarte posibil să utilizați multe dintre afișaje fără a avea nevoie de un PCB. Există module socket PS2, scuturi / module RS232 toate disponibile pe eBay sau similar. Unele afișaje precum cele I2C pot folosi doar câteva fire de conectare. Unele ca afișajele SSD1289 vin cu plăci adaptoare și se pot conecta direct la un Mega.

Pasul 7: Afișare Starburst

Afișare Starburst
Afișare Starburst

Afișajul starburst este o placă mai mare și folosește un Nano și un număr de jetoane 74xx pentru a face multiplexarea. Au existat o mulțime de experimente pentru a determina câte afișaje puteți multiplexa înainte ca acestea să devină prea slabe sau pâlpâirea să devină prea vizibilă. Afișajele provin de la Futurlec https://www.futurlec.com/LEDDisp.shtml Afișajele cu 14 segmente pot face și litere mici și pot fi modificate în cod, dacă este necesar. Redenumiți aceste fișiere din.txt în.zip

Pasul 8: Adăugarea codului pentru alte afișaje

Este posibil să adăugați cod pentru alte afișaje. Primul pas este să obții ceva, orice, pentru a afișa. Poate fi un pixel sau o literă. Aceasta implică în principal căutarea driverelor, descărcarea unuia, testarea acestuia, constatarea că nu se va compila, apoi dezinstalarea acelui driver, astfel încât să nu provoace confuzie ulterior, apoi încercarea unuia nou. Următorul pas este să obțineți o literă care să fie afișată în culoarea corectă, deoarece unele afișaje care arată identic vor inversa culorile. Din fericire, de obicei, doar un număr din codul de pornire va remedia problema. Următorul pas este să scrieți câteva linii pentru a defini dacă utilizați unul sau mega, lățimea afișajului, înălțimea, dimensiunea fontului, pinii tastaturii și ce fișiere de driver să utilizați. Acestea încep de la linia 39 din cod și puteți copia formatul afișajelor existente.

Următorul este să coborâți la linia 451 și să adăugați codul de pornire. Aici setați culoarea de fundal și rotația și inițiați afișajul.

Următorul este să mergeți la linia 544 și să adăugați codul pentru a afișa un caracter. În unele cazuri, aceasta este doar o linie, de exemplu

my_lcd. Draw_Char (xPixel, yPixel, c, tftForecolor, tftBackcolor, 1, 0); // x, y, char, fore, back, size, mode

Următorul este să mergeți la linia 664 și să adăugați codul pentru a desena un pixel. Din nou, uneori aceasta este doar o singură linie, de exemplu:

tft.drawPixel (xPixel, yPixel, tftForecolor);

În cele din urmă, mergeți la linia 727 și adăugați codul pentru a desena o linie verticală pentru cursor, de exemplu

tft.drawFastVLine (xPixel, yPixel, fontHeight, tftForecolor);

Programul sortează lucruri precum cantitatea de memorie care trebuie alocată pentru tamponul de ecran în funcție de lățimea ecranului și dimensiunea fontului.

Pasul 9: demonstrație Wordstar

Acest lucru a fost făcut folosind un computer CP / M și există multe opțiuni disponibile aici. Aveam nevoie de ceva rapid pentru a configura, așa că am folosit o emulație pe un ESP32 (Google ESP32 CP / M). Există multe alte computere retro disponibile, de exemplu, emulația FPGA a lui Grant Searle și RC2014 pentru cei care preferă să utilizeze un Z80 real. Multe retrocomputere au tendința de a utiliza un program terminal pe un computer ca afișaj, de exemplu Teraterm. O mulțime de depanare a acestui proiect ANSI presupunea rularea unui program terminal și a programului ANSI în paralel și asigurarea faptului că ecranele arătau identice.

Pasul 10: Gânduri suplimentare

Pe măsură ce ecranele cresc în dimensiune, acestea devin din ce în ce mai lente. Redesențierea unui personaj implică redesenarea fiecărui pixel din acel caracter, deoarece trebuie desenată și culoarea de fundal, astfel încât totul se reduce la cât de repede puteți desena un pixel. Există câteva modificări, de exemplu, dacă un afișaj nu poate ține pasul cu datele care intră, stocați doar textul în memoria tampon a ecranului și apoi efectuați o redesenare a ecranului complet când nu mai intră text. Multe afișaje pe care le vedeți pentru vânzarea arată o imagine frumoasă pe ecran, dar ceea ce ar putea să nu arate este cât a durat afișarea acelei imagini și, în unele cazuri, poate dura 5 secunde sau mai mult. I2C și SPI sunt excelente pentru afișajele mai mici, dar orice peste 50 de coloane are nevoie de o magistrală de date de 8 sau 16 biți.

Wordstar este puțin greu de utilizat la 9600 baud, iar 19200 este mult mai utilizabil pentru derularea textului, dar afișajele chiar nu pot ține pasul.

Cel mai rapid afișaj pe care l-am folosit a fost pe cipul Propeller cu două cipuri RAM externe de 5 biți de 8 biți, pentru a crea o magistrală de date paralelă pe 16 biți. Fiecare font a fost preîncărcat în berbec. O cascadă de cipuri de contor 74xx au fost folosite pentru a vizualiza datele pe afișaj. Aceasta a însemnat că nu a existat nicio procesare internă în procesarea și scoaterea datelor din CPU, iar rata de reîmprospătare a fost la fel de rapidă pe cât cipul Propeller ar putea comuta un pin. În mod surprinzător, afișajele au reușit să țină pasul cu acest lucru, chiar și la 20Mhz, astfel încât a fost posibil să se facă o actualizare pe ecran complet în doar 30 de milisecunde. Acest tip de tarif este suficient de rapid pentru a derula fără probleme, așa cum vedeți pe telefoanele mobile.

Cipul Propeller a fost de ultimă oră în urmă cu peste zece ani și există acum mai multe opțiuni, inclusiv ESP8266 și ESP32, care au cantități mari de RAM intern. Cu toate acestea, aceste cipuri încă nu au un număr mare de pini, așa că ar putea fi totuși merit să se utilizeze modul vechi-skool al unui cip RAM extern care este afișat pe ecran.

Pentru afișaje mai mari, poate fi mai ieftin să folosiți un ecran TV LCD sau un ecran VGA și să vă uitați la unele dintre emulatoarele ANSI care au fost codificate, de exemplu ESP32, care conduc VGA direct.

Sper să vă fie util acest proiect.

James Moxham

Adelaide, Australia

Recomandat: