Kazalo:

Zbirka terminalov ANSI: 10 korakov
Zbirka terminalov ANSI: 10 korakov

Video: Zbirka terminalov ANSI: 10 korakov

Video: Zbirka terminalov ANSI: 10 korakov
Video: Мой ребенок преследует: 20 страшных видео на Хэллоуин 2022 2024, Julij
Anonim
Zbirka terminalov ANSI
Zbirka terminalov ANSI

Ta projekt se je začel kot način prikaza 80-stolpnega besedila na LCD-zaslonu, primernem za izvajanje staromodnega urejevalnika besedil, kot je Wordstar. Dodani so bili različni drugi zasloni velikosti od 0,96 do 6 palcev. Zasloni uporabljajo eno samo tiskano vezje in eno skico/program Arduino.

Obstaja serijska povezava RS232 za povezavo z računalnikom in vtičnica PS/2 za tipkovnico. Zasloni so bili izbrani tako, da predstavljajo tiste, ki so običajno na voljo po razumnih cenah. Odvisno od potrebnega pomnilnika, zasloni uporabljajo Arduino Nano, Uno ali Mega.

1. korak: Povzetek prikazov

Povzetek prikazov
Povzetek prikazov

Obstajajo različni zasloni z ločljivostjo 480x320. To omogoča pisavo 9x5 in 80 stolpcev. Obstajajo različne plošče z ločljivostjo 320x240, s pisavami 9x5 in tudi zelo majhno pisavo 7x3, ki omogoča 80 stolpcev besedila. Obstajajo tudi manjše plošče s 160x120 in 128x64 slikovnimi pikami. Tudi besedilni zasloni velikosti 20x4 in 16x2 in na koncu 12x2 štirinajst segmentna prikazovalna plošča Starburst.

Nekateri zasloni uporabljajo I2C, nekateri so SPI, za večje zaslone pa 16 -bitno podatkovno vodilo za hitrejše posodabljanje.

Manjši zasloni uporabljajo Arduino Uno. Večje plošče potrebujejo več pomnilnika, zato uporabite Mega. Zaslonska plošča Starburst uporablja Nano.

Na tem mestu bi lahko omenil, da fotografije ne ustrezajo mnogim prikazom. Drobni zaslon z belo oleto je zelo svež in svetel, zaradi česar je fotoaparat težje izostril, zaslon v obliki zvezde pa je v resničnem življenju precej ostrejši.

2. korak: Strojna oprema

Strojna oprema
Strojna oprema

PCB je bil zasnovan za delo s čim več zasloni. Preprosto preklapljate med Mega in Uno s štirimi skakalci. Za zaslone, ki delujejo na 3V, obstajajo delilniki uporov. Zatiči I2C so prikazani v skupini, tako da je mogoče prikazovalnike priključiti neposredno. Terminal deluje s hitrostjo 9600 baudov, in čeprav se to lahko poveča, se številni večji zasloni ne bodo risali veliko hitreje od tega. Tipkovnica PS2 se priključi v vtičnico DIN6. USB tipkovnice bodo delovale tudi s poceni adapterjem. Preprost test povratne zanke lahko izvedete tako, da se pridružite zatičema 2 in 3 na D9, nato pa se na zaslonu prikažejo znaki, vpisani na tipkovnici.

V nekaterih primerih tiskano vezje ni potrebno in je mogoče delovati z vnaprej pripravljenimi moduli, ki so na voljo na ebayu, npr. Vmesniki PS2, vmesniške plošče RS232 in zasloni, ki se priključijo neposredno na arduino plošče.

Obstaja tudi ločena plošča za LED prikazovalnik z zvezdico - glej kasneje v tem navodilu.

3. korak: Programska oprema

Spodaj je datoteka z imenom Package.txt To je dejansko datoteka.zip, zato jo prenesite in preimenujte (Instructables ne dovoljuje zip datotek). Vključena je skica/program Arduino in to je en sam program, ki ga uporabljajo vsi zasloni. Za vsak zaslon so tudi vse datoteke.zip.

Na začetku programa je vrsta stavkov #define. Odkomentirajte tisto, ki ustreza zaslonu. Z orodji/ploščo izberite Uno, Mega ali Nano. Menjava plošč je tako preprosta kot spreminjanje ene vrstice v kodi.

Eden od izzivov pri delu s številnimi zasloni je, da vsi potrebujejo lastne gonilnike programske opreme. Vse to je vključeno v paket. Testiranje je vključevalo prevzem paketa in ponovno namestitev na nov stroj popolnoma iz nič. Izvorno kodo lahko dobite tudi iz Github in Adafruit ter LCDWiki. Obstaja nekaj primerov, ko novejše različice ne delujejo, zato so vse delovne različice vključene v zip. Občasno so se pojavili primeri, ko je en gonilnik ustavil delo drugega, saj so uporabljali isto ime datoteke, vendar različne različice. V komentarjih na vrhu programa je opis, ki prikazuje, kako namestiti vsak gonilnik. Večina jih je nameščenih iz Arduino IDE s knjižnico Sketch/Include Library/Add ZIP, kar vzame datoteko zip in jo postavi v c: / users / computername / mydocuments / arduino / libraries.

Če uporabljate samo en zaslon, nekaterih teh knjižnic ni treba namestiti. Potrebujete najmanj dve datoteki tipkovnice in eno za določen zaslon. Nekateri prikažejo kodo za skupno rabo. Podrobnejša navodila so v komentarjih na vrhu programa, vključno s pridobivanjem knjižnice gfx od Adafruit.

Ker vsi zasloni uporabljajo isto skico Arduino, je pri spreminjanju zaslonov le treba razkomentirati eno od spodnjih vrstic:

// Različni zasloni, pustite eno od naslednjih razkomentiranih#define DISPLAY_480X320_LCDWIKI_ILI9486 // 3,5 ", 480x320, besedilo 80x32, mega, 16 bit, priključi se na mega 36 -polni (in 2 napajalna zatiča).https://www.lcdwiki.com /3.5inch_Arduino_Display-Mega2560. Počasnejši od nekaterih spodaj navedenih možnosti, vendar bolj berljiva pisava in večji zaslon, 5-sekundni zagon //#definiraj DISPLAY_480X320_MCUFRIEND_ILI9486 // 3,5 ", 480x320, besedilo 80x32, mega, 5x9 pisav, samo za mega, vendar uporablja samo za mega uno zatiči, moč, D0-D14, A0-A5, lepša pisava od 40-polnega modula ssd1289, vendar veliko počasnejša https://www.arduinolibraries.info/libraries/mcufriend_kbv https://github.com/adafruit/Adafruit -GFX-Library //#define DISPLAY_320X240_MCUFRIEND_ILI9341 // 2.4 ", 320x240, besedilo 53x24, mega //#define DISPLAY_320X240_SSD1289_40COL // 3.5", 320x240, besedilo 40x20, mega, knjižnica UTFT (brez pisav, manjših od 8x12). Hitro //#opredeli DISPLAY_320X240_SSD1289_53COL // 3,5 ", 320x240, besedilo 53x24, mega, pisava 9x5, lahko ureja pisavo. Hitro //#definiraj DISPLAY_320X240_SSD1289_80COL // 3,5", 320x240, besedilo 80x30, mega, drobna pisava 7x3, lahko urejate pisavo, hitrejši gonilnik od zgornjih dveh, najhitrejši od vseh teh 16 -bitni neposredni pogon na zaslon in ne spi/i2c //#define DISPLAY_160X128_ST7735 // 1.8 ", 160x128, besedilo 26x12, uno (ILI9341) SPI 128x160 //#define DISPLAY_128X64_OLED_WHITE // 0,96 ", 128x64, besedilo 21x6, mega, I2C, oledno belo na črno (knjižnici tft za to ploščo skupaj z vso kodo in tipkovnico zmanjka prostora za shranjevanje programa, čeprav so potrebe po ramu zelo majhne, zato samo deluje na mega) //#definiraj DISPLAY_20X4 // besedilo 20x4, uno, LCD z I2C, besedilni LCD https://www.arduino.cc/en/Reference/LiquidCrystal //#definiraj DISPLAY_16X2 // besedilo 16x2, uno, priklopi na uno, uporablja zatiče od 4 do 10 //#definiraj DISPLAY_STARBURST // besedilo 12x2, nano, prikaz zvezdastih žarkov z nano krmilnikom //#določi DISPLAY_320X240_QVGA_SPI_ILI9341 / /2,2 ", 320x240, besedilo 11x8, uno, velika pisava, uno, 3v signali, 9-polni SPI zaslon, glejte Bodmer's Instructables-uno https://www.instructables.com/id/Arduino-TFT-display-and-font- library/ get zip na dnu in ročno vstavite gfx in 9341 v mapo knjižnice arduino

4. korak: Standard ANSI

Standard ANSI
Standard ANSI

ANSI omogoča preproste ukaze za brisanje zaslona, premikanje kurzorja in spreminjanje barv. Na nekaj fotografijah je predstavitev, ki prikazuje vse barve ospredja in ozadja. To so rdeča, rumena, zelena, modra, cijan, škrlatna, črna, bela, temno siva, svetlo siva, barve pa so lahko svetle ali zatemnjene, zato je na voljo 16 barv ospredja in 16 barv ozadja.

Možno je razmišljati o dodajanju v "grafičnem" načinu, kjer lahko narišete slike z veliko višjo ločljivostjo na ravni slikovnih pik in s 256 ali več barvami. Glavne omejitve so notranji pomnilnik Arduina in čas, ki je potreben za pošiljanje slike po serijski povezavi pri 9600 baud.

Koda potrebuje en bajt za shranjevanje znaka in en bajt za shranjevanje barv (3 bita za ospredje, 3 za ozadje, enega za svetlo/zatemnjeno in enega za krepko). Zaslon 80x30 bo torej potreboval 2400x2 = 4800 bajtov, kar bo ustrezalo Mega, ne pa Uno.

5. korak: Zasloni

Zasloni
Zasloni
Zasloni
Zasloni
Zasloni
Zasloni

Zgoraj so fotografije vsakega posameznega zaslona. Na sprednji in zadnji strani vsakega zaslona so fotografije, ki predstavljajo številne blagovne znamke, ki so na voljo na ebayu ali podobnem. Nekateri so I2C, nekateri so vzporedni, nekateri imajo večje pisave, nekateri lahko prikažejo polnih 80 stolpcev, primernih za Wordstar in druge stare programe za urejanje besedil. Več podrobnosti je v besedilu kode arduino.

6. korak: Shema

Spodaj sta dve datoteki. Imenujejo se kot.txt, saj Instructables ne obravnava datotek.zip. Prenesite jih in preimenujte v.zip.

Shema in postavitev plošče sta pdf datoteki. Obstaja tudi paket za Seeed PCB. To so gerberi in če greste na Seeed in naložite to, bi morali prikazati gerberje in nato lahko naredite PCB. 14 -segmentna plošča je velika in stane precej več, manjša pa ustreza formatu Seeed 10x10cm, zato je za 5 ali 10 plošč povsem razumno - v resnici so stroški pošiljanja dražji od plošč.

Povsem mogoče je uporabljati številne zaslone, ne da bi potrebovali tiskano vezje. Na ebayu ali podobnem so na voljo vtični moduli PS2, ščitniki/moduli RS232. Nekateri zasloni, kot so I2C, lahko uporabljajo le nekaj priključnih žic. Nekateri, kot so zasloni SSD1289, imajo vmesne plošče in se lahko priključijo naravnost v Mega.

7. korak: Zaslon Starburst

Zaslon Starburst
Zaslon Starburst

Zaslon Starburst je večja plošča in za izvedbo multipleksiranja uporablja Nano in številne čipe 74xx. Bilo je veliko poskusov, da bi ugotovili, koliko zaslonov bi lahko multipleksirali, preden bi postali pretemni ali utripanje postalo preveč opazno. Zasloni so prišli iz Futurlec https://www.futurlec.com/LEDDisp.shtml Na 14 segmentnih zaslonih so lahko tudi male črke, ki jih po potrebi lahko spremenite v kodi. Preimenujte te datoteke iz.txt v.zip

8. korak: Dodajanje kode za druge zaslone

Možno je dodati kodo za druge zaslone. Prvi korak je, da nekaj, karkoli, prikažete. Lahko je slikovna pika ali črka. To v glavnem vključuje iskanje gonilnikov, prenos enega, njegovo preizkušanje, ugotovitev, da se ne bo prevedel, nato odstranitev gonilnika, da pozneje ne bo povzročil zmede, nato pa poskusite novega. Naslednji korak je, da se črka prikaže v pravilni barvi, saj bodo nekateri zasloni, ki so videti enaki, dejansko spremenili barve. Na srečo običajno to popravi le ena številka v zagonski kodi. Naslednji korak je, da napišete nekaj vrstic, da določite, ali želite uporabiti uno ali mega, širino zaslona, višino, velikost pisave, zatiče tipkovnice in katere gonilniške datoteke uporabiti. Začnejo se pri 39. vrstici kode in lahko kopirate obliko obstoječih zaslonov.

Nato pojdite na vrstico 451 in dodajte zagonsko kodo. Tu nastavite barvo ozadja in zasuk ter zaženete prikaz.

Nato pojdite na vrstico 544 in dodajte kodo za prikaz znaka. V nekaterih primerih je to le ena vrstica, npr

my_lcd. Draw_Char (xPixel, yPixel, c, tftForecolor, tftBackcolor, 1, 0); // x, y, char, spredaj, zadaj, velikost, način

Nato pojdite na vrstico 664 in dodajte kodo, da narišete slikovno piko. Tudi to je včasih samo ena vrstica, na primer:

tft.drawPixel (xPixel, yPixel, tftForecolor);

Na koncu pojdite na vrstico 727 in dodajte kodo, da na primer narišete navpično črto za kazalec

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

Program razvrsti stvari, na primer koliko pomnilnika nameni za medpomnilnik zaslona glede na širino zaslona in velikost pisave.

9. korak: Predstavitev programa Wordstar

To je bilo storjeno z računalnikom CP/M in tukaj je na voljo veliko možnosti. Potreboval sem nekaj hitrega nastavitve, zato sem uporabil emulacijo na ESP32 (Google ESP32 CP/M). Na voljo je veliko drugih retro računalnikov, na primer emulacija FPGA Grant Searle in RC2014 za tiste, ki raje uporabljajo pravi Z80. Mnogi retroračunalniki običajno uporabljajo terminalski program v računalniku kot zaslon, na primer Teraterm. Veliko odpravljanja napak pri tem projektu ANSI je vključevalo vzporedni zagon terminalskega programa in programa ANSI ter zagotavljanje enakega zaslona.

10. korak: Nadaljnje misli

Z naraščanjem velikosti zaslonov postajajo vse počasnejši. Ponovno risanje znaka vključuje prerisovanje vsake slikovne pike v tem znaku, saj je treba narisati tudi barvo ozadja, zato je vse odvisno od tega, kako hitro lahko narišete slikovno piko. Obstaja nekaj prilagoditev, na primer, če zaslon ne more slediti prihajajočim podatkom, samo shranite besedilo v medpomnilnik zaslona in nato, ko ne prihaja več besedila, naredite celozaslonsko risbo. Številni prikazi, ki jih vidite sale na zaslonu prikažejo lepo sliko, vendar morda ne bodo prikazali, koliko časa je trajalo, da je bila prikazana, v nekaterih primerih pa je to lahko 5 sekund ali več. I2C in SPI sta odlična za manjše zaslone, vendar vse, kar ima več kot 50 stolpcev, potrebuje 8 ali 16 -bitno podatkovno vodilo.

Wordstar je nekoliko težaven za uporabo pri 9600 baudih, 19200 pa je veliko bolj uporaben za drsenje besedila, vendar zasloni res ne morejo slediti.

Najhitrejši zaslon, ki sem ga uporabil, je bil na čipu Propeller z dvema 8 -bitnima zunanjima 512k ram čipoma za ustvarjanje 16 -bitnega vzporednega podatkovnega vodila. Vsaka pisava je bila vnaprej naložena v ram. Za ukazovanje podatkov na zaslon je bila uporabljena kaskada števcev 74xx. To je pomenilo, da v procesorju ni bilo nobene notranje obdelave podatkov za pridobivanje in izpisovanje podatkov, hitrost osveževanja pa je bila tako hitra, kot bi čip Propeller lahko preklopil pin. Presenetljivo je, da so zasloni uspeli slediti temu tudi pri 20 Mhz, zato je bilo mogoče celozaslonsko posodobitev opraviti v samo 30 milisekundah. Ta vrsta hitrosti je dovolj hitra, da se pomikanje gladko, kot vidite na mobilnih telefonih.

Propelerski čip je bil najsodobnejši pred več kot desetimi leti, zdaj pa obstaja več možnosti, vključno z ESP8266 in ESP32, ki imata velike količine notranjega ovna. Vendar ti čipi še vedno nimajo velikega števila zatičev, zato bi lahko bila še vedno koristna uporaba načina old-skool za zunanji čip ram, ki deluje na zaslonu.

Za večje zaslone je morda ceneje uporabiti zaslon LCD televizorja ali zaslon VGA in si oglejte nekatere kodirane emulatorje ANSI, npr. ESP32, ki neposredno poganja VGA.

Upam, da vam bo ta projekt koristen.

James Moxham

Adelaide, Avstralija

Priporočena: