Sadržaj:

Zbirka ANSI terminala: 10 koraka
Zbirka ANSI terminala: 10 koraka

Video: Zbirka ANSI terminala: 10 koraka

Video: Zbirka ANSI terminala: 10 koraka
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Juli
Anonim
Zbirka ANSI terminala
Zbirka ANSI terminala

Ovaj projekt je započeo kao način prikazivanja teksta od 80 kolona na LCD ekranu pogodnom za rad na staromodnom procesoru teksta kao što je Wordstar. Dodani su različiti drugi ekrani u veličinama od 0,96 do 6 inča. Zasloni koriste jednu PCB kao i jednu Arduino skicu/program.

Postoji serijska RS232 veza za povezivanje sa računarom i PS/2 utičnica za tastaturu. Ekrani su odabrani tako da predstavljaju one koji su općenito dostupni po razumnim cijenama. Ovisno o potrebnoj memoriji, zasloni koriste Arduino Nano, Uno ili Mega.

Korak 1: Sažetak prikaza

Sažetak prikaza
Sažetak prikaza

Postoje različiti ekrani rezolucije 480x320. Ovo omogućava font veličine 9x5 i tekst u koloni od 80. Postoje razne ploče rezolucije 320x240, sa fontovima 9x5 i takođe vrlo malim fontom 7x3 koji omogućava tekst od 80 kolona. Postoje i manje ploče sa 160x120 i 128x64 piksela. Takođe 20x4 i 16x2 tekstualni ekrani, i na kraju 12x2 četrnaest segmentna ploča sa prikazom zvezda.

Neki zasloni koriste I2C, neki su SPI, a za veće zaslone 16 -bitna sabirnica podataka za veće brzine ažuriranja.

Manji ekrani koriste Arduino Uno. Većim pločama je potrebno više memorije, pa koristite Mega. Zvjezdana ploča za prikaz koristi Nano.

U ovom trenutku mogu spomenuti da fotografije ne odgovaraju mnogim ekranima. Sićušni bijeli oled ekran je vrlo oštar i svijetao što je otežavalo fokusiranje fotoaparata, a LED zaslon sa sjajnim zvjezdicama izgleda mnogo oštrije u stvarnom životu.

Korak 2: Hardver

Hardver
Hardver

PCB je dizajniran za rad sa što više ekrana. Lako se mijenja između Mega i Uno pomoću četiri kratkospojnika. Postoje otpornici razdjelnika napona za zaslone koji rade na 3V. I2C pinovi su izvedeni u grupi tako da se ekrani mogu direktno priključiti. Terminal radi na 9600 bauda, i iako se to može povećati, mnogi veći ekrani neće se iscrtavati mnogo brže od ovoga. PS2 tastatura se priključuje na DIN6 utičnicu. USB tastature će raditi i sa jeftinim utikačem za adapter. Možete napraviti jednostavan test povratne veze spajanjem iglica 2 i 3 na D9, a zatim će se na ekranu pojaviti znakovi otkucani na tastaturi.

U nekim slučajevima PCB nije potreban i moguće je raditi na unaprijed izrađenim modulima dostupnim na ebayu, npr. PS2 adapteri, RS232 adapterske ploče i ekrani koji se priključuju direktno na arduino ploče.

Postoji i zasebna ploča za LED displej starburst - pogledajte kasnije u ovom uputstvu.

Korak 3: Softver

Ispod je datoteka pod nazivom Package.txt Ovo je zapravo.zip datoteka pa je preuzmite i preimenujte (Instructables ne dopušta zip datoteke). Uključena je Arduino skica/program i ovo je jedan program koji koriste svi ekrani. Tu su i sve.zip datoteke za svaki od ekrana.

Na početku programa je niz izjava #define. Odkomentirajte onu koja odgovara ekranu. Pomoću Alati/ploča odaberite Uno, Mega ili Nano. Promjena ploča je jednostavna kao i promjena jedne linije u kodu.

Jedan od izazova pri radu s mnogim ekranima je to što im svima izgledaju potrebni vlastiti upravljački programi. Sve je to uključeno u paket. Testiranje je uključivalo preuzimanje paketa i njegovu ponovnu instalaciju na novu mašinu potpuno od nule. Izvorni kôd možete pronaći i sa Github -a i Adafruit -a i LCDWikija. Postoji nekoliko slučajeva u kojima novije verzije ne rade pa su sve radne verzije uključene u zip. Povremeno su se događali slučajevi u kojima je jedan upravljački program zaustavljao drugi da radi jer su koristili isti naziv datoteke, ali različite verzije. U komentarima na vrhu programa postoji opis koji pokazuje kako instalirati svaki upravljački program. Većina se instalira iz Arduino IDE -a sa bibliotekom Sketch/Include Library/Add ZIP i uzima zip datoteku i stavlja je u c: / users / computername / mydocuments / arduino / libraries.

Ako koristite samo jedan ekran, neke od ovih biblioteka neće biti potrebno instalirati. Najmanje su vam potrebne dvije datoteke tipkovnice i jedna za određeni zaslon. Neki ekrani dijele kôd. Detaljnija uputstva postoje u komentarima na vrhu programa, uključujući preuzimanje biblioteke gfx od Adafruit -a.

Budući da svi ekrani koriste istu Arduino skicu, mijenjanje ekrana samo je pitanje komentara na jedan od donjih redova:

// Različiti ekrani, ostavite jedno od sljedećeg bez komentara#define DISPLAY_480X320_LCDWIKI_ILI9486 // 3.5 ", 480x320, tekst 80x32, mega, 16 bit, priključuje se u mega 36 pinova (i 2 pina za napajanje).https://www.lcdwiki.com /3.5inch_Arduino_Display-Mega2560. Sporije od nekih dolje navedenih opcija, ali čitljiviji font i veći ekran, podizanje 5 sekundi //#definirajte DISPLAY_480X320_MCUFRIEND_ILI9486 // 3.5 ", 480x320, tekst 80x32, mega, 5x9 font, samo za mega, ali koristi se samo za mega uno pinovi, snaga, D0-D14, A0-A5, ljepši font od 40-pinskog modula ssd1289, ali mnogo sporije https://www.arduinolibraries.info/libraries/mcufriend_kbv https://github.com/adafruit/Adafruit -GFX-Library //#define DISPLAY_320X240_MCUFRIEND_ILI9341 // 2.4 ", 320x240, tekst 53x24, mega //#define DISPLAY_320X240_SSD1289_40COL // 3.5", 320x240, tekst 40x20, mega, UTFT biblioteka (bez fontova manjih od 8x12). Brzo //#definiraj DISPLAY_320X240_SSD1289_53COL // 3.5 ", 320x240, tekst 53x24, mega, font 9x5, može uređivati font. Brzo //#definiraj DISPLAY_320X240_SSD1289_80COL // 3.5", 320x240, tekst 80x30, mega, sitni font 7x3, može uređivati font, brži upravljački program od gore navedena dva, najbrži od svih ovih kao 16 -bitni direktni pogon na ekran, a ne spi/i2c //#define DISPLAY_160X128_ST7735 // 1.8 ", 160x128, tekst 26x12, uno (ILI9341) SPI 128x160 //#define DISPLAY_128X64_OLED_WHITE // 0.96 ", 128x64, tekst 21x6, mega, I2C, oledano bijelo na crno (u biblioteci tft za ovu ploču plus sav kod i tastaturu ponestaje prostora za pohranu programa, iako su potrebe za ramom vrlo male, pa samo radi na mega) //#definiraj DISPLAY_20X4 // tekst 20x4, uno, LCD sa I2C, tekstualni LCD https://www.arduino.cc/en/Reference/LiquidCrystal //#definiraj DISPLAY_16X2 // tekst 16x2, uno, priključuje se na uno, koristi pinove 4 do 10 //#definiraj DISPLAY_STARBURST // tekst 12x2, nano, prikaz zvijezde sa nano kontrolerom //#definiraj DISPLAY_320X240_QVGA_SPI_ILI9341 / /2.2 ", 320x240, tekst 11x8, uno, veliki font, uno, 3v signali, 9-pinski SPI ekran, pogledajte Bodmerove instrukcije-uno https://www.instructables.com/id/Arduino-TFT-display-and-font- library/ get zip na dnu i ručno stavite gfx i 9341 u mapu arduino biblioteke

Korak 4: ANSI standard

ANSI standard
ANSI standard

ANSI omogućava jednostavnim naredbama za brisanje ekrana, pomicanje kursora i promjenu boja. Na nekoliko fotografija nalazi se demo koji prikazuje sve boje prednjeg plana i pozadine. To su crvena, žuta, zelena, plava, cijan, magenta, crna, bijela, tamno siva, svijetlo siva, a boje mogu biti svijetle ili prigušene pa postoji 16 boja u prvom planu i 16 boja pozadine.

Sasvim je moguće razmišljati o dodavanju u "grafičkom" načinu rada u kojem možete crtati slike veće rezolucije na razini piksela i sa 256 ili više boja. Glavna ograničenja su interna memorija Arduina i vrijeme potrebno za slanje slike niz serijsku vezu na 9600 bauda.

Kodu je potreban jedan bajt za pohranu znaka i jedan bajt za spremanje boja (3 bita za prednji plan, 3 za pozadinu, jedan za svijetlo/zatamnjeno i jedan za podebljano). Dakle, za prikaz veličine 80x30 bit će potrebno 2400x2 = 4800 bajtova, što će stati u Mega, ali ne u Uno.

Korak 5: Prikazi

Displeji
Displeji
Displeji
Displeji
Displeji
Displeji

Gore su fotografije svakog pojedinačnog ekrana. Postoje fotografije s prednje i stražnje strane svakog zaslona i predstavljaju mnoge marke dostupne na ebayu ili slično. Neki su I2C, neki su paralelni, neki imaju veće fontove, neki mogu prikazati punih 80 stupaca pogodnih za Wordstar i druge stare programe za obradu teksta. Više detalja postoji u tekstu arduino koda.

Korak 6: Shema

Ispod su dvije datoteke. Nazivaju se kao.txt jer Instructables ne obrađuje.zip datoteke. Preuzmite ih i preimenujte u.zip.

Shema i izgled ploče su pdf datoteke. Tu je i paket za Seeed PCB. Ovo su gerberi i ako odete na Seeed i učitate ovo, trebalo bi prikazati gerbere i tada možete napraviti PCB -e. 14 segmentna ploča velika je i košta prilično više, ali manja se uklapa u Seeed preferirani format 10x10cm pa je sasvim razumno za 5 ili 10 ploča - zapravo troškovi dostave više od ploča.

Sasvim je moguće koristiti mnoge zaslone bez potrebe za PCB -om. Postoje PS2 moduli utičnica, RS232 štitovi/moduli svi dostupni na ebay -u ili slično. Neki ekrani poput I2C mogu koristiti samo nekoliko žica za spajanje. Neki poput ekrana SSD1289 dolaze s adapterskim pločama i mogu se priključiti direktno u Mega.

Korak 7: Zaslon Starburst

Starburst Display
Starburst Display

Starburst displej je veća ploča i koristi Nano i brojne čipove od 74xx za obavljanje multipleksiranja. Bilo je mnogo eksperimenata kako bi se utvrdilo koliko ekrana možete multipleksirati prije nego što postanu previše zatamnjeni ili treperenje postane previše uočljivo. Zasloni su došli iz Futurlec -a https://www.futurlec.com/LEDDisp.shtml 14 -segmentni displeji mogu raditi i mala slova, a oni se po potrebi mogu promijeniti u kodu. Preimenujte ove datoteke iz.txt u.zip

Korak 8: Dodavanje koda za druge zaslone

Moguće je dodati kod za druge zaslone. Prvi korak je da dobijete nešto, bilo šta, za prikaz. To može biti piksel ili slovo. To uglavnom uključuje traženje upravljačkih programa, preuzimanje jednog, testiranje, otkrivanje da se neće kompajlirati, zatim deinstaliranje tog upravljačkog programa kako kasnije ne bi izazvalo zabunu, zatim isprobavanje novog. Sljedeći korak je da se slovo prikaže u ispravnoj boji jer će neki ekrani koji izgledaju identično zapravo promijeniti boje. Srećom, obično samo jedan broj u kodu za pokretanje to popravi. Sljedeći korak je da napišete nekoliko redova kako biste definirali da li ćete koristiti uno ili mega, širinu prikaza, visinu, veličinu fonta, pinove na tipkovnici i koje datoteke upravljačkog programa koristiti. Oni počinju u retku 39 koda i možete kopirati format postojećih prikaza.

Slijedi prelazak na red 451 i dodavanje koda za pokretanje. Ovdje postavljate boju pozadine i rotaciju te započinjete prikaz.

Slijedi prelazak na red 544 i dodavanje koda za prikaz znaka. U nekim slučajevima ovo je samo jedna linija, npr

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

Slijedi prelazak na red 664 i dodavanje koda za crtanje piksela. Opet, ponekad je ovo samo jedan redak, npr.

tft.drawPixel (xPixel, yPixel, tftForecolor);

Na kraju idite na red 727 i dodajte kôd da biste nacrtali okomitu liniju za kursor, na primjer

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

Program razvrstava stvari poput količine memorije koju treba dodijeliti za međuspremnik ekrana na osnovu širine ekrana i veličine fonta.

Korak 9: Wordstar demonstracija

To je učinjeno pomoću CP/M računara, a ovdje su dostupne mnoge opcije. Trebalo mi je nešto brzo za postavljanje, pa sam koristio emulaciju na ESP32 (Google ESP32 CP/M). Dostupni su mnogi drugi retro računari, na primjer, FPGA emulacija Granta Searla i RC2014 za one koji više vole koristiti pravi Z80. Mnogi retroračunari imaju tendenciju da koriste terminalski program na računaru kao ekran, npr. Teraterm. Mnogo otklanjanja grešaka u ovom ANSI projektu uključivalo je paralelno pokretanje terminalnog programa i ANSI programa i osiguravanje da ekrani izgledaju identično.

Korak 10: Dodatne misli

Kako se ekrani povećavaju, sve su sporiji. Ponovno iscrtavanje znaka uključuje ponovno iscrtavanje svakog piksela u tom znaku jer se mora izvući i boja pozadine, pa se sve svodi na to koliko brzo možete nacrtati piksel. Postoje neke izmjene, na primjer, ako zaslon ne može pratiti dolazne podatke, samo pohranite tekst u međuspremnik ekrana, a zatim izvršite ponovno iscrtavanje cijelog ekrana kada više ne dolazi tekst. Mnogi prikazi koje vidite sale pokazuju lijepu sliku na ekranu, ali ono što možda ne prikazuju je koliko je vremena trebalo za prikaz te slike, a u nekim slučajevima to može biti i 5 sekundi ili više. I2C i SPI odlični su za manje zaslone, ali sve što ima više od 50 kolona treba 8 ili 16 -bitnu sabirnicu podataka.

Wordstar je malo nezgrapan za upotrebu pri 9600 bauda, a 19200 je mnogo upotrebljiviji za pomicanje teksta, ali ekrani zaista ne mogu pratiti.

Najbrži ekran koji sam koristio bio je na Propeller čipu sa dva 8 -bitna vanjska 512k ram čipa, za stvaranje 16 -bitne paralelne sabirnice podataka. Svaki font je prethodno učitan u ram. Za slanje podataka na zaslon korištena je kaskada brojača od 74xx. To je značilo da nije bilo interne obrade unutar CPU -a za dohvaćanje i izlaz podataka, a brzina osvježavanja je bila onoliko brza koliko je čip Propelera mogao prebaciti pin. Iznenađujuće, ekrani su uspjeli to pratiti, čak i pri 20Mhz, pa je bilo moguće izvršiti ažuriranje na cijelom ekranu za samo 30 milisekundi. Takva brzina je dovoljno brza da se može glatko pomicati, kao što vidite na mobilnim telefonima.

Propelerski čip bio je najnoviji prije više od deset godina, a sada postoji više opcija uključujući ESP8266 i ESP32 koje imaju velike količine unutrašnjeg RAM-a. Međutim, ti čipovi još uvijek nemaju veliki broj pinova, pa bi ipak moglo biti vrijedno koristiti old-skool način vanjskog ram čipa koji radi do ekrana.

Za veće zaslone moglo bi biti jeftinije koristiti LCD TV ili VGA ekran i pogledati neke od kodiranih ANSI emulatora, npr. ESP32, koji direktno upravlja VGA.

Nadam se da će vam ovaj projekt biti od koristi.

James Moxham

Adelaide, Australija

Preporučuje se: