Satura rādītājs:

ANSI termināļu kolekcija: 10 soļi
ANSI termināļu kolekcija: 10 soļi

Video: ANSI termināļu kolekcija: 10 soļi

Video: ANSI termināļu kolekcija: 10 soļi
Video: Топ 10 лучших игр на 8-битных системах | NES [Денди, Сюбор] 2024, Novembris
Anonim
ANSI termināļu kolekcija
ANSI termināļu kolekcija

Šis projekts sākās kā veids, kā parādīt 80 kolonnu tekstu LCD displejā, kas piemērots vecmodīga tekstapstrādes, piemēram, Wordstar, darbināšanai. Tika pievienoti dažādi citi displeji, kuru izmērs bija no 0,96 līdz 6 collām. Displejos tiek izmantota viena PCB, kā arī viena Arduino skice/programma.

Ir seriāls RS232 savienojums savienošanai ar datoru un PS/2 ligzda tastatūrai. Displeji tika izvēlēti tā, lai tie būtu parasti pieejami par saprātīgām cenām. Atkarībā no nepieciešamās atmiņas displeji izmanto Arduino Nano, Uno vai Mega.

1. darbība. Displeju kopsavilkums

Displeju kopsavilkums
Displeju kopsavilkums

Ir dažādi displeji ar 480x320 izšķirtspēju. Tas ļauj izmantot 9x5 fontu un 80 kolonnu tekstu. Ir dažādi dēļi ar 320x240 izšķirtspēju, ar 9x5 fontiem un arī ļoti niecīgs 7x3 fonts, lai varētu ievietot 80 kolonnu tekstu. Ir arī mazāki dēļi ar 160x120 un 128x64 pikseļiem. Arī 20x4 un 16x2 teksta displeji, un visbeidzot 12x2 četrpadsmit segmentu zvaigžņu uzliesmošanas dēlis.

Daži displeji izmanto I2C, daži ir SPI, bet lielākiem displejiem - 16 bitu datu kopne, lai nodrošinātu ātrāku atjaunināšanas ātrumu.

Mazāki displeji izmanto Arduino Uno. Lielākiem dēļiem ir nepieciešama lielāka atmiņa, tāpēc izmantojiet Mega. Starburst displeja dēlis izmanto Nano.

Šajā brīdī es varētu pieminēt, ka fotogrāfijas neatbilst daudziem displejiem. Mazais, baltais esat displejs ir ļoti kraukšķīgs un spilgts, kas apgrūtināja kameras fokusēšanu, un starburst LED displejs reālajā dzīvē izskatās daudz asāks.

2. darbība. Aparatūra

Aparatūra
Aparatūra

PCB ir paredzēts darbam ar pēc iespējas vairāk displeju. Izmantojot četrus džemperus, ir viegli pārslēgties starp Mega un Uno. Displejiem, kas darbojas ar 3 V, ir sprieguma dalītāja rezistori. I2C tapas tiek izvestas grupā, lai displejus varētu tieši pievienot. Terminālis darbojas ar 9600 baudiem, un, lai gan to var palielināt, daudzi lielākie displeji netiks pārzīmēti daudz ātrāk nekā šis. PS2 tastatūra tiek pievienota DIN6 ligzdai. USB tastatūras darbosies arī ar lētu adaptera spraudni. Jūs varat veikt vienkāršu atgriezeniskās saites pārbaudi, pievienojot D9 2. un 3. tapu, un pēc tam displejā parādīsies tastatūrā ievadītās rakstzīmes.

Dažos gadījumos PCB nav nepieciešams, un ir iespējams sākt darbu, izmantojot iepriekš izgatavotus moduļus, kas pieejami ebay, piemēram, PS2 adapterus, RS232 adapteru plates un displejus, kas pievienojami tieši arduino plates.

Ir arī atsevišķa dēlis zvaigžņu uzliesmojuma vadītajam displejam - skatiet tālāk šajā pamācībā.

3. darbība: programmatūra

Zemāk ir fails ar nosaukumu Package.txt Šis patiesībā ir.zip fails, tāpēc lejupielādējiet un pārdēvējiet to (Instructables neatļauj zip failus). Iekļauta ir Arduino skice/programma, un šī ir viena programma, ko izmanto visi displeji. Katram displejam ir arī visi.zip faili.

Programmas sākumā ir virkne #definēt paziņojumu. Noņemiet komentāru, kas atbilst displejam. Izmantojiet Tools/Board, lai atlasītu Uno, Mega vai Nano. Dēļu maiņa ir tikpat vienkārša kā vienas rindas maiņa kodā.

Viens no izaicinājumiem darbā ar daudziem displejiem ir tas, ka tiem visiem ir vajadzīgi savi programmatūras draiveri. Tie visi ir iekļauti iepakojumā. Pārbaude ietvēra iepakojuma ņemšanu un atkārtotu instalēšanu jaunā mašīnā no jauna. Jūs varat arī iegūt avota kodu no Github un Adafruit un LCDWiki. Ir daži gadījumi, kad jaunākās versijas nedarbojas, tāpēc visas darba versijas ir iekļautas ZIP failā. Reizēm bija gadījumi, kad viens draiveris apturēja cita darbību, jo izmantoja vienu un to pašu faila nosaukumu, bet dažādas versijas. Programmas augšpusē esošajos komentāros ir apraksts, kurā parādīts, kā instalēt katru draiveri. Lielākā daļa ir instalēta no Arduino IDE ar Sketch/Include Library/Add ZIP bibliotēku, un tas aizņem zip failu un ievieto to c: / users / computername / mydocuments / arduino / bibliotēkās.

Ja izmantojat tikai vienu displeju, dažas no šīm bibliotēkām nebūs jāinstalē. Vismaz jums ir nepieciešami divi tastatūras faili un viens konkrētajam displejam. Daži displeji koplieto kodu. Programmas augšdaļā esošajos komentāros ir sīkāki norādījumi, tostarp gfx bibliotēkas iegūšana no Adafruit.

Tā kā visi displeji izmanto vienu un to pašu Arduino skici, displeju maiņa ir tikai viena no tālāk norādītajām rindām.

// Dažādi displeji atstājiet nekomentētu vienu no šiem#define DISPLAY_480X320_LCDWIKI_ILI9486 // 3.5 ", 480x320, teksts 80x32, mega, 16 bitu, pievienojams mega 36 pin (un 2 strāvas tapām).https://www.lcdwiki.com /3.5inch_Arduino_Display-Mega2560. Lēnāk nekā dažas no tālāk norādītajām opcijām, bet vieglāk lasāms fonts un lielāks ekrāns, 5 sekunžu palaišana //#define DISPLAY_480X320_MCUFRIEND_ILI9486 // 3.5 ", 480x320, teksts 80x32, mega, 5x9 fonts, tikai mega, bet tikai uno tapas, jauda, D0-D14, A0-A5, jaukāks fonts nekā ssd1289 40 kontaktu modulis, bet daudz lēnāks https://www.arduinolibraries.info/libraries/mcufriend_kbv https://github.com/adafruit/Adafruit -GFX bibliotēka //#define DISPLAY_320X240_MCUFRIEND_ILI9341 // 2.4 ", 320x240, teksts 53x24, mega //#define DISPLAY_320X240_SSD1289_40COL // 3.5", 320x240, teksts 40x20, mega, UTFT bibliotēka (bez fontiem, kas ir mazāki par 8x12) Ātrs //#definēt DISPLAY_320X240_SSD1289_53COL // 3.5 ", 320x240, teksts 53x24, mega, 9x5 fonts, var rediģēt fontu. Ātra //#definēt DISPLAY_320X240_SSD1289_80COL // 3.5", 320x240, teksts 80x30, mega, niecīgs 7x3 fonts, var rediģēt fontu, ātrāks draiveris nekā iepriekš minētie, ātrākais no visiem šiem kā 16 bitu tiešais disks displejā, nevis spi/i2c //#definēt DISPLAY_160X128_ST7735 // 1.8 ", 160x128, teksts 26x12, uno (ILI9341) SPI 128x160 //#define DISPLAY_128X64_OLED_WHITE // 0,96 ", 128x64, teksts 21x6, mega, I2C, esat balts uz melna (šīs plates tft bibliotēkā, kā arī visā kodā un tastatūrā beidzas programmas krātuve, lai gan RAM nepieciešamība ir ļoti maza, tāpēc tikai darbojas ar mega) //#definēt DISPLAY_20X4 // teksts 20x4, uno, LCD ar I2C, teksta LCD https://www.arduino.cc/en/Reference/LiquidCrystal //#definēt DISPLAY_16X2 // teksts 16x2, uno, pievienots uno, izmanto tapas no 4 līdz 10 //#definēt DISPLAY_STARBURST // teksts 12x2, nano, zvaigznītes displejs ar nano kontrolieri //#definēt DISPLAY_320X240_QVGA_SPI_ILI9341 / /2,2 collas, 320x240, teksts 11x8, uno, liels fonts, uno, 3v signāli, 9 kontaktu SPI displejs skatīt Bodmera instrukcijas-uno https://www.instructables.com/id/Arduino-TFT-display-and-font- bibliotēka/ iegūstiet zip apakšā un manuāli ievietojiet gfx un 9341 arduino bibliotēkas mapē

4. solis: ANSI standarts

ANSI standarts
ANSI standarts

ANSI ļauj izmantot vienkāršas komandas, lai notīrītu ekrānu, pārvietotu kursoru un mainītu krāsas. Dažās fotogrāfijās ir demonstrācija, kurā redzamas visas priekšplāna un fona krāsas. Tās ir sarkanas, dzeltenas, zaļas, zilas, ciāna, purpursarkanas, melnas, baltas, tumši pelēkas, gaiši pelēkas, un krāsas var būt spilgtas vai blāvas, tāpēc ir 16 priekšplāna un 16 fona krāsas.

Ir pilnīgi iespējams domāt par pievienošanu grafikas režīmā, kur jūs varat uzzīmēt daudz augstākas izšķirtspējas attēlus pikseļu līmenī un ar 256 vai vairāk krāsām. Galvenie ierobežojumi ir Arduino iekšējā atmiņa un laiks, kas nepieciešams attēla nosūtīšanai pa seriālo saiti ar ātrumu 9600 baudas.

Kodam nepieciešams viens baits, lai saglabātu rakstzīmi, un viens baits, lai saglabātu krāsas (3 biti priekšplānam, 3 fonam, viens gaišam/blāvam un viens treknrakstam). Tātad 80x30 displejam būs nepieciešami 2400x2 = 4800 baiti, kas iederēsies mega, bet ne Uno.

5. darbība. Displeji

Displeji
Displeji
Displeji
Displeji
Displeji
Displeji

Augšpusē ir katra atsevišķa displeja fotoattēli. Katra displeja priekšpusē un aizmugurē ir fotoattēli, un tie pārstāv daudzus zīmolus, kas pieejami ebay vai tamlīdzīgi. Daži ir I2C, daži ir paralēli, dažiem ir lielāki fonti, daži var parādīt pilnas 80 kolonnas, kas piemērotas Wordstar un citām vecām tekstapstrādes programmām. Arduino koda tekstā ir sīkāka informācija.

6. darbība: shematisks

Zemāk ir divi faili. Tie ir nosaukti kā.txt, jo Instructables neapkalpo.zip failus. Lejupielādējiet tos un pārdēvējiet tos par.zip.

Ir shematisks un tāfeles izkārtojums kā pdf faili. Ir arī pakete redzētajam PCB. Tie ir gerberi, un, dodoties uz vietni Seeed un augšupielādējot to, tajā vajadzētu parādīt gerberus, un pēc tam varat iegūt izgatavotus PCB. 14 segmentu plāksne ir liela un maksā nedaudz vairāk, bet mazākā ietilpst Seeed vēlamajā 10x10 cm formātā, tāpēc ir diezgan saprātīga 5 vai 10 dēļiem - patiesībā piegāde maksā vairāk nekā dēļi.

Ir pilnīgi iespējams izmantot daudzus displejus bez PCB. Ir pieejami PS2 ligzdas moduļi, RS232 vairogi/moduļi, kas visi ir pieejami vietnē ebay vai tamlīdzīgi. Dažos displejos, piemēram, I2C, var izmantot tikai dažus savienojuma vadus. Daži, piemēram, SSD1289 displeji, ir aprīkoti ar adaptera plāksnēm un var tikt pievienoti tieši Mega.

7. solis: Starburst displejs

Starburst displejs
Starburst displejs

Starburst displejs ir lielāks dēlis, un multipleksēšanai izmanto Nano un vairākas 74xx mikroshēmas. Bija daudz eksperimentu, lai noteiktu, cik displeju varētu multipleksēt, pirms tie kļuva pārāk blāvi vai mirgošana kļuva pārāk pamanāma. Displeji tika iegūti no Futurlec. Pārdēvējiet šos failus no.txt uz.zip

8. darbība: koda pievienošana citiem displejiem

Ir iespējams pievienot kodu citiem displejiem. Pirmais solis ir iegūt kaut ko, lai parādītu. Tas var būt pikseļi vai burts. Tas galvenokārt ietver draiveru meklēšanu, draivera lejupielādi, tā pārbaudi, tā atrašanu netiks apkopots, pēc tam šī draivera atinstalēšanu, lai tas vēlāk neradītu neskaidrības, un pēc tam izmēģināt jaunu. Nākamais solis ir iegūt burtu, kas jāparāda pareizā krāsā, jo daži displeji, kas izskatās identiski, faktiski apgriež krāsas. Par laimi, parasti tikai viens numurs starta kodā to novērsīs. Nākamais solis ir uzrakstīt dažas rindiņas, lai definētu, vai izmantot uno vai mega, displeja platumu, augstumu, fonta lielumu, tastatūras tapas un izmantojamos draivera failus. Tie sākas ar koda 39. rindu, un jūs varat kopēt esošo displeju formātu.

Nākamais ir doties uz leju līdz 451. rindai un pievienot sākuma kodu. Šeit jūs iestatāt fona krāsu un pagriešanu un sākat displeju.

Nākamais ir doties uz 544. rindu un pievienot kodu, lai parādītu rakstzīmi. Dažos gadījumos šī ir tikai viena rinda, piemēram

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

Tālāk ir jāiet uz 664. rindu un jāpievieno kods, lai uzzīmētu pikseļu. Atkal dažreiz šī ir tikai viena rinda, piemēram:

tft.drawPixel (xPixel, yPixel, tftForecolor);

Visbeidzot pārejiet uz 727. rindu un pievienojiet kodu, lai, piemēram, uzzīmētu kursoram vertikālu līniju

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

Programma sakārto, piemēram, cik daudz atmiņas jāpiešķir ekrāna buferim, pamatojoties uz ekrāna platumu un fonta lielumu.

9. solis: Wordstar demonstrācija

Tas tika darīts, izmantojot CP/M datoru, un šeit ir pieejamas daudzas iespējas. Man vajadzēja kaut ko ātri izveidot, tāpēc es izmantoju emulāciju ESP32 (Google ESP32 CP/M). Ir pieejami daudzi citi retro datori, piemēram, Grant Searle FPGA emulācija un RC2014 tiem, kas dod priekšroku īstam Z80. Daudzi retro datori kā displeju mēdz izmantot datora termināļa programmu, piemēram, Teraterm. Daudzas šī ANSI projekta atkļūdošanas darbības ietvēra termināļa programmas un ANSI programmas paralēlu darbību un pārliecināšanos, ka ekrāni izskatījās identiski.

10. solis: turpmākās domas

Palielinoties displeju izmēram, tie kļūst lēnāki un lēnāki. Rakstzīmes pārzīmēšana ietver katra šīs rakstzīmes pikseļa pārzīmēšanu, jo ir jāzīmē arī fona krāsa, tāpēc viss ir atkarīgs no tā, cik ātri jūs varat uzzīmēt pikseļu. Ir daži uzlabojumi, piemēram, ja displejs nespēj sekot līdzi ienākošajiem datiem, vienkārši saglabājiet tekstu ekrāna buferī un pēc tam veiciet pilnekrāna pārzīmēšanu, kad vairs netiek ievadīts teksts. Daudzi displeji, kurus redzat izpārdošana ekrānā parāda skaistu attēlu, taču tas, iespējams, netiks parādīts, cik ilgs laiks bija nepieciešams šī attēla parādīšanai, un dažos gadījumos tas var būt 5 sekundes vai vairāk. I2C un SPI ir lieliski piemēroti mazākiem displejiem, taču visam, kas pārsniedz 50 kolonnas, ir nepieciešama 8 vai 16 bitu datu kopne.

Wordstar ir nedaudz apgrūtinošs lietošanai ar 9600 bodu, un 19200 ir daudz vairāk izmantojams teksta ritināšanai, taču displeji patiešām nevar sekot līdzi.

Ātrākais displejs, ko esmu izmantojis, bija propellera mikroshēmā ar divām 8 bitu ārējām 512 k RAM mikroshēmām, lai izveidotu 16 bitu paralēlu datu kopni. Katrs fonts bija iepriekš ielādēts aunā. Datu rādīšanai displejā tika izmantota 74xx skaitītāju mikroshēmu kaskāde. Tas nozīmēja, ka CPU, iegūstot un izvadot datus, nebija iekšējas apstrādes, un atsvaidzes intensitāte bija tik ātra, cik dzenskrūves mikroshēma varēja pārslēgt tapu. Pārsteidzoši, displeji spēja tam sekot līdzi pat 20Mhz, un tāpēc bija iespējams veikt pilnekrāna atjauninājumu tikai 30 milisekundēs. Šāda veida ātrums ir pietiekami ātrs, lai ritināšana notiktu vienmērīgi, kā redzat mobilajos tālruņos.

Propellera mikroshēma bija visprogresīvākā pirms vairāk nekā desmit gadiem, un tagad ir vairāk iespēju, ieskaitot ESP8266 un ESP32, kurām ir liels iekšējais ram daudzums. Tomēr šīm mikroshēmām joprojām nav milzīgs skaits tapu, tāpēc joprojām varētu būt lietderīgi izmantot veco skolu veidu ārējai austiņu mikroshēmai, kas tiek rādīta displejā.

Lielākiem displejiem var būt lētāk izmantot LCD TV ekrānu vai VGA ekrānu un apskatīt dažus kodētus ANSI emulatorus, piemēram, ESP32, kas tieši vada VGA.

Es ceru, ka šis projekts jums būs noderīgs.

Džeimss Moxham

Adelaidā, Austrālijā

Ieteicams: