Taula de continguts:

Una col·lecció de terminals ANSI: 10 passos
Una col·lecció de terminals ANSI: 10 passos

Vídeo: Una col·lecció de terminals ANSI: 10 passos

Vídeo: Una col·lecció de terminals ANSI: 10 passos
Vídeo: Я открываю 2 упаковки издания Modern 2 Horizons 2024, Desembre
Anonim
Una col·lecció de terminals ANSI
Una col·lecció de terminals ANSI

Aquest projecte va començar com una manera de mostrar text de 80 columnes en una pantalla LCD adequada per executar un processador de text a l'antiga com Wordstar. Es van afegir altres pantalles que van des de 0,96 fins a 6 polzades. Les pantalles utilitzen un sol PCB així com un esbós / programa Arduino.

Hi ha una connexió sèrie RS232 per a la connexió a un ordinador i un sòcol PS / 2 per a un teclat. Les pantalles es van escollir per representar-ne de comunament disponibles a preus raonables. Depenent de la memòria necessària, les pantalles utilitzen un Arduino Nano, Uno o Mega.

Pas 1: resum de les pantalles

Resum de les pantalles
Resum de les pantalles

Hi ha diverses pantalles amb resolució de 480x320. Això permet un tipus de lletra de 9x5 i un text de 80 columnes. Hi ha diversos taulers amb resolució de 320x240, amb fonts 9x5 i també un tipus de lletra 7x3 molt petit per permetre text de 80 columnes. També hi ha taules més petites amb 160x120 i 128x64 píxels. També es mostren textos de 20x4 i 16x2 i, finalment, un tauler de visualització starburst de catorze segments de 12x2.

Algunes pantalles utilitzen I2C, d’altres són SPI i, per a les pantalles més grans, un bus de dades de 16 bits per a velocitats d’actualització més ràpides.

Les pantalles més petites utilitzen l’Arduino Uno. Les taules més grans necessiten més memòria i, per tant, utilitzeu un Mega. El tauler de visualització starburst utilitza un Nano.

En aquest punt, podria mencionar que les fotos no fan justícia a moltes de les pantalles. La petita pantalla de color blanc és molt nítida i brillant, cosa que va dificultar l'enfocament de la càmera i la pantalla LED Starburst sembla molt més nítida a la vida real.

Pas 2: maquinari

Maquinari
Maquinari

El PCB ha estat dissenyat per funcionar amb el màxim nombre de pantalles possibles. És fàcil canviar entre un Mega i un mitjançant quatre ponts. Hi ha resistències divisores de voltatge per a pantalles que funcionen a 3V. Els pins I2C es publiquen en un grup perquè les pantalles es puguin endollar directament. El terminal funciona a 9600 baud i, tot i que es pot augmentar, moltes de les pantalles més grans no es tornaran a dibuixar molt més ràpid que això. El teclat PS2 es connecta a una presa DIN6. Els teclats USB també funcionaran amb un endoll adaptador econòmic. Podeu fer una prova de bucle simple unint els passos 2 i 3 del D9 i apareixeran a la pantalla els caràcters que s’escriuen al teclat.

En alguns casos, no es necessita cap PCB i és possible que funcions amb mòduls prefabricats estiguin disponibles a eBay, per exemple, adaptadors PS2, plaques adaptadores RS232 i pantalles que es connectin directament a les plaques arduino.

També hi ha un tauler separat per a la pantalla led starburst (vegeu més endavant en aquest manual).

Pas 3: programari

A continuació es mostra un fitxer anomenat Package.txt. En realitat és un fitxer.zip, per tant, descarregueu-lo i canvieu-lo (Instructables no permet els fitxers zip). S'inclou l'esbós / programa Arduino i aquest és un programa únic utilitzat per totes les pantalles. També hi ha tots els fitxers.zip de cadascuna de les pantalles.

Al principi del programa hi ha una sèrie d’instruccions #define. Deixeu el comentari al que correspongui a la pantalla. Utilitzeu Eines / Tauler per seleccionar Uno, Mega o Nano. Canviar taulers és tan senzill com canviar una línia del codi.

Un dels reptes de treballar amb moltes pantalles és que sembla que tots necessiten els seus propis controladors de programari. Totes estan incloses al paquet. Les proves inclouen agafar el paquet i tornar-lo a instal·lar completament des de zero en una màquina nova. També podeu obtenir codi font de Github i Adafruit i LCDWiki. Hi ha un parell d’instàncies en què les versions més recents no funcionen, de manera que totes les versions de treball s’inclouen al zip. De vegades, hi havia casos en què un controlador deixava de funcionar un altre, ja que feien servir el mateix nom de fitxer però versions diferents. Als comentaris de la part superior del programa hi ha una descripció que mostra com instal·lar cada controlador. La majoria s’instal·len des de l’IDE Arduino amb Sketch / Include Library / Add ZIP library, que pren el fitxer zip i el posa a c: / users / computername / mydocuments / arduino / libraries.

Si només utilitzeu una pantalla, no caldrà instal·lar algunes d'aquestes biblioteques. Com a mínim necessiteu els dos fitxers de teclat i el de la pantalla en particular. Algunes mostren codi compartit. Hi ha instruccions més detallades als comentaris a la part superior del programa, inclosa la obtenció de la biblioteca gfx d'Adafruit.

Com que totes les pantalles utilitzen el mateix esbós Arduino, canviar les pantalles només és qüestió de descomentar una de les línies següents:

// Diferents pantalles, deixeu un dels següents # sense comentar: define DISPLAY_480X320_LCDWIKI_ILI9486 // 3,5 ", 480x320, text 80x32, mega, 16 bits, es connecta a mega 36 pins (i 2 pins d'alimentació). Http://www.lcdwiki.com /3.5inch_Arduino_Display-Mega2560. Més lent que algunes de les opcions següents, però una font més llegible i una pantalla més gran, arrencada de 5 segons // # define DISPLAY_480X320_MCUFRIEND_ILI9486 // 3.5 ", 480x320, text 80x32, mega, font 5x9, només per a mega, però només utilitza els pins UN, potència, D0-D14, A0-A5, tipus de lletra més bonic que el mòdul ssd1289 de 40 pins, però molt més lent 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, text 40x20, mega, biblioteca UTFT (sense tipus de lletra menors a 8x12). Ràpid // # define DISPLAY_320X240_SSD1289_53COL // 3,5 ", 320x240, text 53x24, mega, font 9x5, pot editar el tipus de lletra. Ràpid // # define DISPLAY_320X240_SSD1289_80COL // 3,5", 320x240, text 80x30, mega, diminut tipus 7x3, pot editar, controlador més ràpid que els dos anteriors, el més ràpid de tots aquests: unitat directa de 16 bits a la pantalla en lloc de 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, de color blanc sobre negre (la biblioteca tft d'aquesta placa més tot el codi i el teclat es queda sense emmagatzematge de programa, tot i que les necessitats de memòria RAM són molt petites, tan sols s'executa en un mega) // # define DISPLAY_20X4 // text 20x4, uno, LCD amb I2C, text LCD https://www.arduino.cc/en/Reference/LiquidCrystal // # define DISPLAY_16X2 // text 16x2, uno, es connecta a uno, utilitza els pins 4 a 10 // # define DISPLAY_STARBURST // text 12x2, nano, pantalla starburst amb nano controlador // # define DISPLAY_320X240_QVGA_SPI_ILI9341 / / 2.2 ", 320x240, text 11x8, uno, tipus de lletra gran, uno, senyals de 3v, pantalla SPI de 9 pins vegeu Bodmer's Instructables - uno https://www.instructables.com/id/Arduino-TFT-display-and-font- library / obteniu el zip a la part inferior i poseu manualment el gfx i el 9341 a la carpeta de la biblioteca arduino

Pas 4: l'estàndard ANSI

La norma ANSI
La norma ANSI

ANSI permet comandes senzilles per netejar la pantalla, moure el cursor i canviar els colors. En algunes de les fotos hi ha una demostració que mostra tots els colors de primer pla i de fons. Aquests són el vermell, el groc, el verd, el blau, el cian, el magenta, el negre, el blanc, el gris fosc, el gris clar i els colors poden ser brillants o tints, de manera que hi ha 16 colors de primer pla i 16 de fons.

És molt possible pensar a afegir en un mode de "gràfics" on podeu dibuixar imatges de resolució molt més alta a nivell de píxels i amb 256 o més colors. Les principals limitacions són la memòria interna de l’Arduino i el temps que triga a enviar una imatge per un enllaç sèrie a 9600 baud.

El codi necessita un byte per emmagatzemar el caràcter i un byte per emmagatzemar els colors (3 bits per al primer pla, 3 per al fons, un per a brillants / tenebrosos i un per a negreta). Per tant, una pantalla de 80x30 necessitarà 2400x2 = 4800 bytes, que encaixaran en un Mega però no en un Uno.

Pas 5: pantalles

Pantalles
Pantalles
Pantalles
Pantalles
Pantalles
Pantalles

A la part superior hi ha fotos de cada pantalla individual. Hi ha fotos a la part frontal i posterior de cada pantalla i representen moltes de les marques disponibles a eBay o similars. Alguns són I2C, d'altres són paral·lels, d'altres tenen tipus de lletra més grans, d'altres poden mostrar 80 columnes completes adequades per a Wordstar i altres programes antics de processament de textos. Hi ha més detalls al text del codi arduino.

Pas 6: Esquema

A continuació hi ha dos fitxers. S’anomenen.txt ja que Instructables no gestiona fitxers.zip. Baixeu-los i canvieu-los amb el nom de.zip.

Hi ha l’esquema i el disseny del tauler com a fitxers pdf. També hi ha un paquet per a Seeed PCB. Aquests són els gerbers i, si aneu a Seeed i el pengeu, hauria de mostrar els gerbers i podreu fer PCBs. El tauler de 14 segments és gran i costa bastant més, però el més petit s’adapta al format preferit de Sex de 10x10cm, de manera que és bastant raonable per a 5 o 10 taules, de fet, l’enviament costa més que les taules.

És molt possible utilitzar moltes de les pantalles sense necessitat de PCB. Hi ha mòduls de sòcol PS2, protectors / mòduls RS232 tots disponibles a eBay o similar. Algunes pantalles com la I2C només poden utilitzar uns quants cables de connexió. Alguns, com ara les pantalles SSD1289, inclouen plaques adaptadores i es poden connectar directament a un Mega.

Pas 7: pantalla Starburst

Pantalla Starburst
Pantalla Starburst

La pantalla Starburst és un tauler més gran i utilitza un Nano i un nombre de xips 74xx per fer el multiplexat. Hi va haver molts experiments per determinar quantes pantalles es podrien multiplexar abans que es tornessin massa foscos o que el parpelleig es fes massa visible. Les pantalles provenen de Futurlec https://www.futurlec.com/LEDDisp.shtml Les pantalles de 14 segments també poden fer minúscules i es poden modificar al codi si cal. Canvieu el nom d’aquests fitxers de.txt a.zip

Pas 8: Afegir codi per a altres pantalles

És possible afegir codi per a altres pantalles. El primer pas és aconseguir que es mostri alguna cosa, qualsevol cosa. Pot ser un píxel o una lletra. Això consisteix principalment a buscar controladors, descarregar-ne un, provar-lo, comprovar que no es compila, desinstal·lar el controlador perquè no causi confusió més endavant i provar-ne un de nou. El següent pas és aconseguir que es mostri una lletra amb el color correcte, ja que algunes pantalles que tenen un aspecte idèntic invertiran els colors. Afortunadament, normalment només hi ha un número al codi d’inici que solucionarà això. El següent pas és escriure algunes línies per definir si voleu utilitzar un o mega, l'amplada de la pantalla, l'alçada, la mida de la lletra, els pins del teclat i els fitxers de control que cal utilitzar. Comencen a la línia 39 del codi i podeu copiar el format de les pantalles existents.

El següent és baixar a la línia 451 i afegir el codi d’inici. Aquí és on configureu el color de fons i la rotació i inicieu la visualització.

A continuació, aneu a la línia 544 i afegiu el codi per mostrar un caràcter. En alguns casos, aquesta és només una línia, per exemple

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

A continuació, aneu a la línia 664 i afegiu el codi per dibuixar un píxel. Una vegada més, de vegades això és només una línia, per exemple:

tft.drawPixel (xPixel, yPixel, tftForecolor);

Finalment, aneu a la línia 727 i afegiu el codi per dibuixar una línia vertical per al cursor, per exemple

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

El programa ordena coses com la quantitat de memòria que s’ha d’assignar a la memòria intermèdia de pantalla en funció de l’amplada de la pantalla i la mida del tipus de lletra.

Pas 9: demostració de Wordstar

Això es va fer mitjançant un ordinador CP / M i aquí hi ha moltes opcions disponibles. Vaig necessitar alguna cosa ràpida per configurar, així que vaig utilitzar una emulació en un ESP32 (Google ESP32 CP / M). Hi ha molts altres equips retro disponibles, per exemple, l'emulació FPGA de Grant Searle i el RC2014 per a aquells que prefereixen utilitzar un Z80 real. Molts retroordinadors solen utilitzar un programa terminal en un PC com a pantalla, per exemple, Teraterm. Una gran quantitat de depuració d'aquest projecte ANSI implicava executar un programa de terminal i el programa ANSI en paral·lel i assegurar-vos que les pantalles tenien un aspecte idèntic.

Pas 10: altres pensaments

A mesura que les pantalles augmenten de mida, cada vegada són més lentes. Tornar a dibuixar un personatge implica tornar a dibuixar tots els píxels d’aquest caràcter, ja que també s’ha de dibuixar el color de fons, de manera que tot es redueix a la rapidesa amb què es pot dibuixar un píxel. Hi ha alguns ajustaments, per exemple, si una pantalla no pot mantenir-se al dia amb les dades que arriben, només cal que emmagatzemeu el text a la memòria intermèdia de pantalla i, a continuació, torneu a dibuixar la pantalla completa quan no arribi més text. Moltes pantalles que veieu per sale mostra una bonica imatge a la pantalla, però el que potser no mostren és el temps que va trigar a mostrar-se, i en alguns casos pot passar 5 segons o més. I2C i SPI són ideals per a pantalles més petites, però qualsevol cosa que superi les 50 columnes necessita un bus de dades de 8 o 16 bits.

Wordstar és una mica difícil d’utilitzar a 9600 baud i el 19200 és molt més útil per desplaçar-se al text, però les pantalles realment no poden mantenir-se al dia.

La pantalla més ràpida que he utilitzat ha estat al xip Propeller amb dos xips RAM externs de 5 bits de 512 k, per crear un bus de dades paral·lel de 16 bits. Cada tipus de lletra es va carregar prèviament al RAM. Es va utilitzar una cascada de xips de comptador 74xx per visualitzar les dades a la pantalla. Això significava que no hi havia processament intern dins de la recuperació i sortida de dades de la CPU, i la freqüència d’actualització era tan ràpida com el xip d’hèlix podia canviar un pin. Sorprenentment, les pantalles van poder mantenir-se al dia, fins i tot a 20 MHz, de manera que es va poder fer una actualització de pantalla completa en només 30 mil·lisegons. Aquest tipus de tarifa és prou ràpida per fer un desplaçament sense problemes, com es veu als telèfons mòbils.

El xip Propeller era d’avantguarda fa més de deu anys i ara hi ha més opcions, inclosos els ESP8266 i ESP32, que tenen una gran quantitat de RAM intern. Tanmateix, aquests xips encara no tenen un gran nombre de pins, de manera que encara podria haver-hi mèrit d’utilitzar la forma old-skool d’un xip RAM extern que es mostra a la pantalla.

Per a pantalles més grans, pot ser més barat utilitzar una pantalla de TV LCD o una pantalla VGA i mirar alguns dels emuladors ANSI que s'han codificat, per exemple, l'ESP32, que condueix directament VGA.

Espero que aquest projecte us sigui útil.

James Moxham

Adelaida, Austràlia

Recomanat: