Obsah:

Zbierka terminálov ANSI: 10 krokov
Zbierka terminálov ANSI: 10 krokov

Video: Zbierka terminálov ANSI: 10 krokov

Video: Zbierka terminálov ANSI: 10 krokov
Video: Расчет защит трансформатора 10/0,4 кВ - Максимальный рабочий ток 2024, Júl
Anonim
Zbierka terminálov ANSI
Zbierka terminálov ANSI

Tento projekt začal ako spôsob zobrazenia 80 stĺpcového textu na LCD displeji, ktorý je vhodný na spustenie staromódneho textového procesora, akým je napríklad Wordstar. Pribudli rôzne ďalšie displeje s veľkosťou od 0,96 do 6 palcov. Displeje používajú jednu dosku plošných spojov a jednu skicu/program Arduino.

K dispozícii je sériové pripojenie RS232 na pripojenie k počítaču a zásuvka PS/2 pre klávesnicu. Displeje boli vybrané tak, aby predstavovali displeje bežne dostupné za rozumné ceny. V závislosti od potrebnej pamäte displeje používajú Arduino Nano, Uno alebo Mega.

Krok 1: Súhrn zobrazení

Súhrn zobrazení
Súhrn zobrazení

Existujú rôzne displeje s rozlíšením 480 x 320. To umožňuje písmo 9x5 a 80 stĺpcového textu. Existujú rôzne dosky s rozlíšením 320x240, s písmami 9x5 a tiež veľmi malým písmom 7x3, ktoré umožňujú text v stĺpci 80. Existujú aj menšie dosky s rozmermi 160x120 a 128x64 pixelov. Tiež textové displeje 20x4 a 16x2 a nakoniec štrnásť segmentová zobrazovacia doska 12burx starburst.

Niektoré displeje používajú I2C, niektoré sú SPI a pre väčšie displeje 16 -bitová dátová zbernica pre rýchlejšie rýchlosti aktualizácie.

Menšie displeje používajú Arduino Uno. Väčšie dosky vyžadujú viac pamäte, a preto použite Mega. Doska displeja starburst používa nano.

Na tomto mieste by som mohol spomenúť, že fotografie nevyhovujú mnohým displejom. Malý biely oledový displej je veľmi ostrý a jasný, vďaka čomu bolo pre fotoaparát ťažšie zaostriť a LED dióda starburst vyzerá v reálnom živote oveľa ostrejšie.

Krok 2: Hardvér

Hardvér
Hardvér

Doska plošných spojov bola navrhnutá tak, aby pracovala s čo najväčším počtom displejov. Prepínanie medzi Mega a Uno je jednoduché pomocou štyroch prepojok. Pre displeje, ktoré pracujú na 3V, existujú odpory s deličom napätia. Piny I2C sú vyvedené v skupine, takže displeje je možné priamo zapojiť. Terminál beží na 9600 baudoch, a aj keď sa to dá zvýšiť, mnohé z väčších displejov nebudú prekresľovať oveľa rýchlejšie. Klávesnica PS2 sa zapája do zásuvky DIN6. Klávesnice USB budú fungovať aj s lacným konektorom adaptéra. Môžete vykonať jednoduchý test spätnej slučky spojením pinov 2 a 3 na D9 a potom sa na displeji zobrazia znaky napísané na klávesnici.

V niektorých prípadoch nie je PCB potrebný a je možné získať prácu s vopred pripravenými modulmi dostupnými na ebay, napr. Adaptéry PS2, dosky adaptérov RS232 a displeje, ktoré sa pripájajú priamo na dosky arduino.

K dispozícii je tiež samostatná doska pre LED diódu starburst - pozri ďalej v tomto návode na obsluhu.

Krok 3: Softvér

Nasleduje súbor s názvom Package.txt Toto je vlastne súbor.zip, takže ho stiahnite a premenujte (Instructables nepovoľuje súbory zip). Súčasťou je skica/program Arduino a toto je jediný program, ktorý používajú všetky displeje. K dispozícii sú tiež všetky súbory.zip pre každé z displejov.

Na začiatku programu je séria príkazov #definovať. Odkomentujte ten, ktorý zodpovedá zobrazeniu. Pomocou Nástroje/Doska vyberte Uno, Mega alebo Nano. Výmena tabúľ je taká jednoduchá ako zmena jedného riadka v kóde.

Jednou z výziev pri práci s mnohými displejmi je, že všetci zrejme potrebujú svoje vlastné softvérové ovládače. To všetko je súčasťou balenia. Testovanie zahŕňalo prevzatie balíka a jeho úplnú reinštaláciu na nový stroj úplne od začiatku. Môžete tiež získať zdrojový kód z Github a Adafruit a LCDWiki. Existuje niekoľko prípadov, keď novšie verzie nefungujú, takže všetky pracovné verzie sú zahrnuté v zip. Občas sa vyskytli prípady, keď jeden ovládač zastavil druhý, pretože používal rovnaký názov súboru, ale rôzne verzie. V komentároch v hornej časti programu je popis, ktorý ukazuje, ako nainštalovať jednotlivé ovládače. Väčšina je nainštalovaná z IDE Arduino s knižnicou Sketch/Include Library/Add ZIP a to vezme súbor zip a vloží ho do c: / users / computername / mydocuments / arduino / libraries.

Ak používate iba jeden displej, niektoré z týchto libarií nemusí byť nainštalované. Minimálne potrebujete dva súbory klávesnice a jeden pre konkrétny displej. Niektoré displeje zdieľajú kód. Podrobnejšie pokyny sú v komentároch v hornej časti programu vrátane získania knižnice gfx od spoločnosti Adafruit.

Pretože všetky displeje používajú rovnakú skicu Arduino, zmena displejov je len otázkou odkomentovania jedného z nižšie uvedených riadkov:

// Rôzne displeje, ponechajte jeden z nasledujúcich komentárov#define DISPLAY_480X320_LCDWIKI_ILI9486 // 3,5 ", 480x320, text 80x32, mega, 16 bit, zapojí sa do mega 36 pinov (a 2 napájacích pinov). Http://www.lcdwiki.com /3.5inch_Arduino_Display-Mega2560. Pomalšie ako niektoré z nižšie uvedených možností, ale čitateľnejšie písmo a väčšia obrazovka, 5-sekundové spustenie //#define DISPLAY_480X320_MCUFRIEND_ILI9486 // 3,5 ", 480x320, text 80x32, mega, 5x9 písmo, iba pre mega, ale používa iba kolíky uno, napájanie, D0-D14, A0-A5, krajšie písmo ako 40pinový modul ssd1289, ale oveľa pomalšie https://www.arduinolibraries.info/libraries/mcufriend_kbv https://github.com/adafruit/Adafruit -Knižnica -GFX //#definujte DISPLAY_320X240_MCUFRIEND_ILI9341 // 2,4 ", 320x240, text 53x24, mega //#definujte DISPLAY_320X240_SSD1289_40COL // 3,5", 320x240, text 40x20, mega, UTFT knižnica (žiadne fonty menšie ako 8x12). Rýchle //#definovanie DISPLAY_320X240_SSD1289_53COL // 3,5 ", 320x240, text 53x24, mega, 9x5 písmo, môže upravovať písmo. Rýchle //#definovanie DISPLAY_320X240_SSD1289_80COL // 3,5", 320x240, text 80x30, mega, drobné 7x3 písmo, môže upravovať písmo, rýchlejší ovládač ako dva vyššie uvedené, najrýchlejší zo všetkých týchto spôsobov je 16 -bitový priamy pohon na displej, a nie 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, olovo biele na čiernom (v knižnici tft pre túto dosku plus všetok kód plus klávesnica dochádza pamäť programu, aj keď potreby pamäte RAM sú veľmi malé, takže iba beží na mega) //#define DISPLAY_20X4 // text 20x4, uno, LCD s I2C, textový LCD https://www.arduino.cc/en/Reference/LiquidCrystal //#define DISPLAY_16X2 // text 16x2, uno, zapojí sa do uno, používa piny 4 až 10 //#definuje DISPLAY_STARBURST // text 12x2, nano, starburst displej s nano ovládačom //#define DISPLAY_320X240_QVGA_SPI_ILI9341 / /2,2 ", 320x240, text 11x8, uno, veľké písmo, uno, signály 3v, 9-pinový SPI displej pozri Bodmer's Instructables-uno https://www.instructables.com/id/Arduino-TFT-display-and-font- knižnica/ v spodnej časti získajte zip a ručne vložte gfx a 9341 do priečinka knižnice arduino

Krok 4: Štandard ANSI

Štandard ANSI
Štandard ANSI

ANSI umožňuje jednoduché príkazy na vyčistenie obrazovky, pohyb kurzora a zmenu farieb. Na niekoľkých fotografiách je ukážka všetkých farieb popredia a pozadia. Sú to červená, žltá, zelená, modrá, azúrová, purpurová, čierna, biela, tmavošedá, svetlošedá a farby môžu byť jasné alebo slabé, takže je k dispozícii 16 farieb v popredí a 16 v pozadí.

Je celkom možné uvažovať o pridaní v „grafickom“režime, kde môžete kresliť obrázky s oveľa vyšším rozlíšením na úrovni pixelov a 256 alebo viac farieb. Hlavnými obmedzeniami sú vnútorná pamäť Arduina a čas potrebný na odoslanie obrázka po sériovom prepojení pri 9600 baudoch.

Kód potrebuje jeden bajt na uloženie znaku a jeden bajt na uloženie farieb (3 bity pre popredie, 3 pre pozadie, jeden pre jasné/tmavé a jeden pre tučné). Displej s rozmermi 80 x 30 bude teda potrebovať 2 400 x 2 = 4 800 bajtov, ktorý sa zmestí do Mega, ale nie do Uno.

Krok 5: Displeje

Displeje
Displeje
Displeje
Displeje
Displeje
Displeje

Hore sú fotografie každého jednotlivého displeja. Na prednom a zadnom paneli každého displeja sú fotografie, ktoré predstavujú mnoho značiek dostupných na ebay alebo podobných stránkach. Niektoré sú I2C, niektoré sú paralelné, niektoré majú väčšie písma, niektoré môžu zobrazovať celých 80 stĺpcov vhodných pre Wordstar a ďalšie staré programy na spracovanie textu. V texte arduino kódu je viac podrobností.

Krok 6: Schéma

Nasledujú dva súbory. Sú pomenované ako.txt, pretože Instructables nespracováva súbory.zip. Stiahnite si ich a premenujte ich na.zip.

Existuje schéma a rozloženie dosky ako súbory PDF. Existuje aj balík pre Seeed PCB. Toto sú Gerbery a ak pôjdete na Seeed a odovzdáte to, malo by sa vám zobraziť Gerbery a potom si môžete dať vyrobiť DPS. 14 -segmentová doska je veľká a stojí o niečo viac, ale menšia sa zmestí do preferovaného formátu Seeed 10 x 10 cm, takže je celkom rozumná pre 5 alebo 10 dosiek - v skutočnosti sú náklady na dopravu vyššie ako dosky.

Je celkom možné použiť mnoho displejov bez potreby dosky plošných spojov. Na ebay alebo podobné sú k dispozícii zásuvkové moduly PS2, štíty/moduly RS232. Niektoré displeje, ako napríklad I2C, môžu používať iba niekoľko káblov. Niektoré ako displeje SSD1289 sú dodávané s doskami adaptéra a je ich možné zapojiť priamo do zariadenia Mega.

Krok 7: Displej Starburst

Displej Starburst
Displej Starburst

Displej starburst je väčšia doska a na multiplexovanie používa čipy Nano a niekoľko 74xx. Vykonalo sa veľa experimentov, aby sa zistilo, koľko displejov je možné multiplexovať, kým sa nestanú príliš tmavé alebo blikanie príliš nápadné. Displeje pochádzajú z webu Futurlec https://www.futurlec.com/LEDDisp.shtml 14 -segmentové displeje môžu používať aj malé písmená a v prípade potreby ich je možné v kóde zmeniť. Premenujte tieto súbory z.txt na.zip

Krok 8: Pridanie kódu pre iné displeje

Pre ostatné displeje je možné pridať kód. Prvým krokom je niečo, čokoľvek zobraziť. Môže to byť pixel alebo písmeno. Ide predovšetkým o hľadanie ovládačov, ich stiahnutie, testovanie, zistenie, že sa nebudú kompilovať, potom odinštalovanie tohto ovládača, aby to neskôr nespôsobilo zmätok, a potom vyskúšajte nový. Ďalším krokom je získanie písmena na zobrazenie v správnej farbe, pretože niektoré displeje, ktoré v skutočnosti vyzerajú rovnako, invertujú farby. Našťastie to zvyčajne vyrieši iba jedno číslo v spúšťacom kóde. Ďalším krokom je napísať niekoľko riadkov a definovať, či sa má používať uno alebo mega, šírka displeja, výška, veľkosť písma, kolíky klávesnice a súbory ovládačov, ktoré sa majú použiť. Začínajú na riadku 39 v kóde a môžete skopírovať formát existujúcich displejov.

Ďalej musíte prejsť na riadok 451 a pridať štartovací kód. Tu nastavíte farbu pozadia a rotáciu a spustíte zobrazenie.

Ďalej musíte prejsť na riadok 544 a pridať kód na zobrazenie znaku. V niektorých prípadoch je to iba jeden riadok, napr

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

Ďalej musíte prejsť na riadok 664 a pridať kód na nakreslenie pixelu. Opäť platí, že niekedy je to iba jeden riadok, napríklad:

tft.drawPixel (xPixel, yPixel, tftForecolor);

Nakoniec prejdite na riadok 727 a pridajte kód, aby ste napríklad nakreslili zvislú čiaru pre kurzor

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

Program triedi veci, ako je množstvo pamäte, ktoré je potrebné vyhradiť pre vyrovnávaciu pamäť obrazovky, na základe šírky obrazovky a veľkosti písma.

Krok 9: Demonštrácia Wordstar

To sa uskutočnilo pomocou počítača CP/M a tu je k dispozícii veľa možností. Potreboval som niečo rýchlo nastaviť, takže som použil emuláciu na ESP32 (Google ESP32 CP/M). K dispozícii je mnoho ďalších retro počítačov, napríklad emulácia Grant Searle FPGA a RC2014 pre tých, ktorí uprednostňujú používanie skutočného Z80. Mnoho retropočítačov má tendenciu používať ako displej terminálový program na počítači, napr. Teraterm. Veľa ladenia tohto projektu ANSI zahŕňalo paralelné spustenie terminálového programu a programu ANSI a zabezpečenie toho, aby obrazovky vyzerali identicky.

Krok 10: Ďalšie myšlienky

Ako sa displeje zväčšujú, sú stále pomalšie. Prekreslenie znaku zahŕňa prekreslenie každého pixelu v tomto znaku, pretože je potrebné nakresliť aj farbu pozadia, takže všetko závisí od toho, ako rýchlo môžete nakresliť pixel. Existuje niekoľko vylepšení, napríklad ak displej nemôže držať krok s prichádzajúcimi údajmi, stačí uložiť text do vyrovnávacej pamäte obrazovky a potom, keď už neprichádza žiadny text, prekresliť celú obrazovku. Mnoho displejov, ktoré vidíte výpredaj ukazuje pekný obrázok na obrazovke, ale to, čo nemusia, je to, ako dlho trvalo zobrazenie tohto obrázka, a v niektorých prípadoch to môže byť 5 sekúnd alebo viac. I2C a SPI sú skvelé pre menšie displeje, ale čokoľvek nad asi 50 stĺpcami potrebuje 8 alebo 16 bitovú dátovú zbernicu.

Wordstar je trochu nepraktický na 9600 baudov a 19200 je oveľa viac použiteľný na posúvanie textu, ale displeje naozaj nestíhajú.

Najrýchlejší displej, ktorý som použil, bol na vrtuľovom čipe s dvoma 8 -bitovými externými 512k RAM čipmi, aby sa vytvorila 16 -bitová paralelná dátová zbernica. Každé písmo bolo vopred načítané do barana. Na vytlačenie údajov na displej bola použitá kaskáda 74xx čítacích čipov. To znamenalo, že v rámci načítavania a odosielania údajov procesora nedochádzalo k internému spracovaniu a obnovovacia frekvencia bola taká rýchla, ako dokázal čip Propeller prepnúť pin. Displeje s tým prekvapivo dokázali držať krok, dokonca aj pri 20 MHz, a tak bolo možné vykonať aktualizáciu celej obrazovky iba za 30 milisekúnd. Takáto sadzba je dostatočne rýchla na to, aby posúvala plynulo, ako vidíte na mobilných telefónoch.

Vrtuľový čip bol špičkový pred viac ako desiatimi rokmi a v súčasnosti existuje viac možností vrátane modelov ESP8266 a ESP32, ktoré majú veľké množstvo vnútorného RAM. Tieto čipy však stále nemajú veľký počet pinov, takže stále môže byť prospešné použiť spôsob old-skool externého RAM RAM čipu, ktorý je vytesnený na displej.

Pri väčších displejoch môže byť lacnejšie použiť LCD TV obrazovku alebo VGA obrazovku a pozrieť sa na niektoré kódované ANSI emulátory, napr. ESP32, ktoré poháňajú VGA priamo.

Dúfam, že vám tento projekt bude užitočný.

James Moxham

Adelaide, Austrália

Odporúča: