Tartalomjegyzék:

ANSI terminálok gyűjteménye: 10 lépés
ANSI terminálok gyűjteménye: 10 lépés

Videó: ANSI terminálok gyűjteménye: 10 lépés

Videó: ANSI terminálok gyűjteménye: 10 lépés
Videó: Leap Motion SDK 2024, Július
Anonim
ANSI terminálok gyűjteménye
ANSI terminálok gyűjteménye

Ez a projekt úgy indult, hogy 80 oszlopos szöveget jeleníthet meg egy LCD kijelzőn, amely alkalmas egy régimódi szövegszerkesztő, például a Wordstar futtatására. Különböző egyéb kijelzőket adtak hozzá, 0,96 és 6 hüvelyk közötti méretben. A kijelzők egyetlen PCB -t és egy Arduino vázlatot/programot használnak.

Van egy soros RS232 csatlakozó a számítógéphez való csatlakoztatáshoz, és egy PS/2 aljzat a billentyűzethez. A kijelzőket úgy választottuk ki, hogy azok képviseljék az elfogadható áron általánosan elérhetőket. A szükséges memóriától függően a kijelzők Arduino Nano, Uno vagy Mega készülékeket használnak.

1. lépés: A megjelenítések összefoglalása

A megjelenítések összefoglalása
A megjelenítések összefoglalása

Különféle kijelzők vannak 480x320 felbontással. Ez 9x5 betűtípust és 80 oszlopos szöveget tesz lehetővé. Különféle táblák vannak 320x240 felbontásban, 9x5 betűtípussal és egy nagyon apró 7x3 betűtípussal, amely 80 oszlopos szöveget tesz lehetővé. Vannak kisebb, 160x120 és 128x64 képpontos táblák is. Szintén 20x4 és 16x2 szövegkijelzők, és végül egy 12x2 tizennégy szegmenses csillagszóró kijelző tábla.

Néhány kijelző I2C -t használ, néhány SPI -t, a nagyobb kijelzőn pedig 16 bites adatbuszt a gyorsabb frissítési sebesség érdekében.

A kisebb kijelzők az Arduino Uno -t használják. A nagyobb tábláknak több memóriára van szükségük, ezért használjon Mega -t. A csillagszóró kijelző tábla Nano -t használ.

Ezen a ponton megemlíthetem, hogy a fényképek nem tesznek igazságot sok kijelző számára. Az apró fehér OLED kijelző nagyon éles és világos, ami megnehezítette a fényképezőgép fókuszálását, és a csillagszórós LED kijelző a valós életben sokkal élesebbnek tűnik.

2. lépés: Hardver

Hardver
Hardver

A NYÁK -ot úgy tervezték, hogy a lehető legtöbb kijelzővel működjön. Könnyű váltani Mega és Uno között négy jumper segítségével. Vannak feszültségosztó ellenállások a 3 V -on működő kijelzőkhöz. Az I2C csapokat egy csoportban hozzák ki, így a kijelzők közvetlenül csatlakoztathatók. A terminál 9600 baudon működik, és bár ez növelhető, sok nagyobb kijelző nem rajzol át ennél sokkal gyorsabban. A PS2 billentyűzet csatlakoztatható a DIN6 aljzathoz. Az USB billentyűzetek olcsó adapter csatlakozóval is működnek. Egy egyszerű loopback tesztet elvégezhet, ha összekapcsolja a 2. és a 3. tűt a D9 -en, majd a billentyűzeten beírt karakterek jelennek meg a kijelzőn.

Bizonyos esetekben PCB-re nincs szükség, és az ebayen elérhető előre elkészített modulokkal, például PS2 adapterekkel, RS232 adapterlapokkal és közvetlenül az arduino kártyákhoz csatlakoztatható kijelzőkkel is működtethető.

Van egy külön tábla is a csillagkezelt LED kijelzőhöz - lásd később ebben az utasításban.

3. lépés: Szoftver

Az alábbiakban egy Package.txt nevű fájl található. Ez valójában egy.zip fájl, ezért töltse le és nevezze át (az Instructables nem engedélyezi a zip fájlokat). Tartalmazza az Arduino vázlatot/programot, és ez egyetlen program, amelyet az összes kijelző használ. Minden kijelzőhöz megtalálható az összes.zip fájl is.

A program elején #definált állítások sora található. Szüntesse meg a megjegyzés megjegyzését a kijelzővel. Az Eszközök/Fórum segítségével válassza ki az Uno, Mega vagy Nano lehetőséget. A táblák cseréje olyan egyszerű, mint egy sor megváltoztatása a kódban.

A sok kijelzővel való munkavégzés egyik kihívása, hogy mindegyiknek szüksége van saját szoftver -illesztőprogramokra. Ezeket mind tartalmazza a csomag. A tesztelés magában foglalta a csomag elvételét és újratelepítését egy új gépre teljesen a semmiből. Forráskódot a Githubból és az Adafruitból és az LCDWikiből is készíthet. Van néhány olyan eset, amikor az újabb verziók nem működnek, így az összes működő verzió szerepel a ZIP -ben. Időnként előfordultak olyan esetek, amikor az egyik illesztőprogram leállította a másik működését, mivel ugyanazt a fájlnevet, de különböző verziókat használták. A program tetején található megjegyzésekben található egy leírás, amely bemutatja az egyes illesztőprogramok telepítését. A legtöbbet az Arduino IDE -ből telepítették Sketch/Include Library/Add ZIP könyvtárral, és ez elveszi a zip fájlt, és a c: / users / computername / mydocuments / arduino / libraries könyvtárba helyezi.

Ha csak egy kijelzőt használ, akkor néhány ilyen könyvtárat nem kell telepíteni. Legalább a két billentyűzetfájlra és az adott kijelzőhöz szükséges fájlra van szüksége. Néhány kijelző megosztási kódot használ. Részletesebb utasítások találhatók a program tetején található megjegyzésekben, beleértve a gfx könyvtár beszerzését az Adafruitból.

Mivel minden kijelző ugyanazt az Arduino vázlatot használja, a kijelzők megváltoztatása csupán az alábbi sorok egyikének megjegyzésének megszüntetése:

// Különböző kijelzők esetén hagyja megjegyzés nélkül az alábbiak egyikét#define DISPLAY_480X320_LCDWIKI_ILI9486 // 3.5 ", 480x320, 80x32, mega, 16 bit, mega 36 tűs (és 2 tápcsatlakozó).https://www.lcdwiki.com /3.5inch_Arduino_Display-Mega2560. Lassabb, mint az alábbi lehetőségek némelyike, de olvashatóbb betűtípus és nagyobb képernyő, 5 másodperces rendszerindítás //#define DISPLAY_480X320_MCUFRIEND_ILI9486 // 3.5 ", 480x320, 80x32, mega, 5x9 betűtípus, csak mega, de csak az uno csapok, tápellátás, D0-D14, A0-A5, szebb betűtípus, mint az ssd1289 40 tűs modul, de sokkal lassabb 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, szöveg 40x20, mega, UTFT könyvtár (8x12-nél kisebb betűtípusok nélkül). Gyors //#definíció DISPLAY_320X240_SSD1289_53COL // 3,5 ", 320x240, szöveg 53x24, mega, 9x5 betűtípus, betűtípus szerkeszthető. Gyors //#DISPLAY_320X240_SSD1289_80COL // 3,5", 320x240, szöveg 80x30, mega, pici 7x3 betűtípus, szerkeszthető betűtípus, gyorsabb meghajtó, mint a fenti kettő, leggyorsabb, mint 16 bites közvetlen meghajtó a kijelzőre, nem pedig spi/i2c //#define DISPLAY_160X128_ST7735 // 1.8 ", 160x128, text 26x12, uno (ILI9341) SPI 128x160 //#define DISPLAY_128X64_OLED_WHITE // 0,96 ", 128x64, szöveg 21x6, mega, I2C, fehér, fekete mega -n fut) //#define DISPLAY_20X4 // text 20x4, uno, LCD with I2C, text LCD https://www.arduino.cc/en/Reference/LiquidCrystal //#define DISPLAY_16X2 // text 16x2, uno, bedugja az uno -ba, 4-10 -es csapokat használ // // define DISPLAY_STARBURST // szöveg 12x2, nano, csillagszóró kijelző nano vezérlővel //#define DISPLAY_320X240_QVGA_SPI_ILI9341 / /2.2 ", 320x240, szöveg 11x8, uno, nagy betűtípus, uno, 3v jelek, 9 tűs SPI kijelző, lásd Bodmer utasításai-uno https://www.instructables.com/id/Arduino-TFT-display-and-font- könyvtár/ kapja meg a zip alját, és manuálisan tegye a gfx -et és a 9341 -et az arduino könyvtár mappájába

4. lépés: Az ANSI szabvány

Az ANSI szabvány
Az ANSI szabvány

Az ANSI egyszerű parancsokat ad a képernyő törléséhez, a kurzor mozgatásához és a színek megváltoztatásához. Néhány képen egy demó látható, amely az összes előtér és háttérszínt mutatja. Ezek piros, sárga, zöld, kék, ciánkék, bíbor, fekete, fehér, sötétszürke, világosszürke, és a színek lehetnek világosak vagy halványak, így 16 előtér és 16 háttérszín van.

Elképzelhető egy „grafikus” mód hozzáadása, ahol sokkal nagyobb felbontású képeket rajzolhat képpont szinten és 256 vagy több színnel. A fő korlátozások az Arduino belső memóriája és az idő, amely egy kép 9600 baudos soros kapcsolaton keresztül történő elküldéséhez szükséges.

A kódnak egy bájtra van szüksége a karakter tárolásához, és egy bájtnak a színek tárolásához (3 bit az előtérhez, 3 a háttérhez, egy a világos/halványhoz és egy a félkövérhez). Tehát egy 80x30 -as kijelzőnek 2400x2 = 4800 bájtra lesz szüksége, ami belefér egy Mega -ba, de nem az Uno -ba.

5. lépés: Megjelenítés

Kijelzők
Kijelzők
Kijelzők
Kijelzők
Kijelzők
Kijelzők

A fenti képek az egyes kijelzőkről vannak. Mindegyik kijelző elölről és hátuljáról vannak fényképek, és az eBay -en vagy hasonló webhelyen elérhető márkák nagy részét képviselik. Némelyik I2C, néhány párhuzamos, néhány nagyobb betűtípussal rendelkezik, némelyik teljes 80 oszlopot jelenít meg, amelyek alkalmasak a Wordstar és más régi szövegszerkesztő programok számára. Az arduino kód szövege részletesebb.

6. lépés: Vázlatos

Az alábbiakban két fájl található.. Txt néven vannak, mivel az Instructables nem kezeli a.zip fájlokat. Töltse le és nevezze át őket.zip -re.

Van a sematikus és a tábla elrendezés pdf fájlként. Van egy csomag a Seeed PCB -hez is. Ezek a gerberek, és ha a Seeed oldalra lép, és feltölti ezt, akkor a gerberieket kell megjelenítenie, és PCB -ket készíthet. A 14 szegmenses tábla nagy, és jóval többe kerül, de a kisebbik a Seeed preferált 10x10 cm -es formátumába illeszkedik, így teljesen ésszerű 5 vagy 10 táblához - valójában a szállítás többe kerül, mint a táblák.

Teljesen lehetséges, hogy számos kijelzőt NYÁK nélkül használ. Vannak PS2 aljzatmodulok, RS232 pajzsok/modulok, mind elérhetőek az ebay -en vagy hasonlókon. Néhány kijelző, például az I2C, csak néhány csatlakoztató vezetéket használhat. Egyesek, például az SSD1289 kijelzők adapterkártyákkal rendelkeznek, és közvetlenül csatlakoztathatók a Mega -hoz.

7. lépés: Starburst kijelző

Starburst kijelző
Starburst kijelző

A csillagszóró kijelző egy nagyobb tábla, és Nano -t és számos 74xx chipet használ a multiplexeléshez. Sok kísérletet végeztek annak meghatározására, hogy hány kijelzőt lehet multiplexelni, mielőtt túl homályossá válna vagy a villódzás túlságosan észrevehetővé válna. A kijelzők a Futurlec cégtől származnak https://www.futurlec.com/LEDDisp.shtml A 14 szegmenses kijelző kisbetűket is tud készíteni, és ezek szükség esetén módosíthatók a kódban. Nevezze át ezeket a fájlokat.txt fájlból.zip fájlba

8. lépés: Kód hozzáadása más kijelzőkhöz

Lehetőség van kód hozzáadására más kijelzőkhöz. Az első lépés az, hogy valamit, bármit megjelenítsen. Ez lehet képpont vagy betű. Ez elsősorban az illesztőprogramok keresését, letöltését, tesztelését, megtalálását nem fordítja le, majd eltávolítja az illesztőprogramot, hogy később ne okozzon zavart, majd új illesztőprogramot próbáljon ki. A következő lépés egy betű megjelenítése a megfelelő színben, mivel néhány azonos megjelenés valóban megfordítja a színeket. Szerencsére ezt általában csak az indító kód egyik száma javítja. A következő lépésben írjon néhány sort, hogy meghatározza, hogy uno -t vagy mega -t használjon -e, a kijelző szélességét, magasságát, betűméretét, billentyűzet -rögzítőit és a használni kívánt illesztőprogram -fájlokat. Ezek a kód 39. sorától kezdődnek, és lemásolhatja a meglévő kijelzők formátumát.

Ezután lépjen le a 451. sorba, és adja hozzá az indítási kódot. Itt állíthatja be a háttérszínt és a forgatást, és kezdeményezheti a megjelenítést.

Ezután lépjen az 544. sorba, és adja hozzá a kódot egy karakter megjelenítéséhez. Bizonyos esetekben ez csak egy sor, pl

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

Ezután lépjen a 664 -es sorba, és adja hozzá a kódot egy pixel rajzolásához. Ismétlem, ez néha csak egy sor, pl.

tft.drawPixel (xPixel, yPixel, tftForecolor);

Végül lépjen a 727 -es sorra, és adja hozzá a kódot, hogy például függőleges vonalat rajzoljon a kurzorhoz

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

A program a képernyő szélessége és a betűméret alapján válogatja le a memóriamennyiséget a képernyőpuffernek.

9. lépés: Wordstar bemutató

Ez egy CP/M számítógép segítségével történt, és itt számos lehetőség áll rendelkezésre. Gyors beállításra volt szükségem, ezért emulációt használtam egy ESP32 -n (Google ESP32 CP/M). Sok más retro számítógép is rendelkezésre áll, például Grant Searle FPGA emulációja és az RC2014 azok számára, akik inkább valódi Z80 -at használnak. Sok retrószámítógép általában terminálprogramot használ a számítógépen, például Teraterm. Ennek az ANSI projektnek a sok hibakeresése magában foglalta a terminálprogram és az ANSI program párhuzamos futtatását, valamint a képernyők azonos megjelenésének biztosítását.

10. lépés: További gondolatok

Ahogy a kijelző növekszik, egyre lassabb lesz. A karakter újrarajzolása magában foglalja a karakter minden pixelének átrajzolását, mivel a háttérszínt is meg kell rajzolni, így minden attól függ, hogy milyen gyorsan rajzolhat egy képpontot. Van néhány csípés, például ha egy kijelző nem tud lépést tartani a beérkező adatokkal, akkor csak tárolja a szöveget a képernyőpufferben, majd végezzen teljes képernyős újrarajzolást, amikor már nem érkezik szöveg. Sok kijelző az eladások szép képet mutatnak a képernyőn, de előfordulhat, hogy nem mutatják meg, mennyi ideig tartott a kép megjelenítése, és bizonyos esetekben ez akár 5 másodperc is lehet. Az I2C és az SPI nagyszerűek a kisebb kijelzőkhöz, de 50 oszlop felett bármi 8 vagy 16 bites adat buszt igényel.

A Wordstar 9600 baudon kissé nehézkesen használható, az 19200 pedig sokkal jobban használható szöveg görgetésére, de a kijelzők tényleg nem tudnak lépést tartani.

A leggyorsabb kijelző, amelyet használtam, a Propeller chip volt, két 8 bites külső 512k ram chipkel, hogy 16 bites párhuzamos adat buszt hozzon létre. Minden betűtípust előre betöltöttek a ramba. A 74xx számláló chipekből álló kaszkádot használták az adatok órára vitelére a kijelzőn. Ez azt jelentette, hogy nem volt belső feldolgozás a CPU -n belül az adatok lekérésében és kiadásában, és a frissítési gyakoriság olyan gyors volt, mint amennyire a propeller chip képes volt áthelyezni. Meglepő módon a kijelzők képesek voltak lépést tartani ezzel, még 20Mhz -en is, és így teljes képernyős frissítést lehetett végezni mindössze 30 milliszekundum alatt. Ez a fajta sebesség elég gyors ahhoz, hogy a görgetés zökkenőmentesen történjen, mint a mobiltelefonokon.

A légcsavar chip a legmodernebb volt több mint tíz éve, és most több lehetőség is rendelkezésre áll, beleértve az ESP8266 és az ESP32 nagy mennyiségű belső ramot. Mindazonáltal ezeknek a chipeknek még mindig nincs nagy számú csapja, így továbbra is érdemes lehet használni a kijelzőn megjelenített külső RAM chip régi módját.

Nagyobb kijelzők esetén olcsóbb lehet LCD TV vagy VGA képernyő használata, és nézzen meg néhány kódolt ANSI emulátort, például az ESP32 -t, amelyek közvetlenül a VGA -t hajtják.

Remélem, hasznosnak találja ezt a projektet.

James Moxham

Adelaide, Ausztrália

Ajánlott: