INHOUDSOPGAWE:

N Versameling ANSI -terminale: 10 stappe
N Versameling ANSI -terminale: 10 stappe

Video: N Versameling ANSI -terminale: 10 stappe

Video: N Versameling ANSI -terminale: 10 stappe
Video: НЕ ВЫБРОСИЛА СТАРЫЙ ТЮЛЬ И ХОРОШО СЭКОНОМИЛА СЕМЕЙНЫЙ БЮДЖЕТ! 4 КРУТЫЕ ИДЕИ ИЗ ТЮЛЯ! 2024, Julie
Anonim
'N Versameling ANSI -terminale
'N Versameling ANSI -terminale

Hierdie projek het begin as 'n manier om 80 kolomteks op 'n LCD-skerm te vertoon wat geskik is vir die gebruik van 'n outydse woordverwerker soos Wordstar. Verskeie ander skerms is bygevoeg, wat wissel in grootte van 0,96 tot 6 duim. Die uitstallings gebruik 'n enkele PCB sowel as een Arduino -skets/program.

Daar is 'n seriële RS232 -aansluiting vir aansluiting op 'n rekenaar en 'n PS/2 -aansluiting vir 'n sleutelbord. Die uitstallings is gekies om die algemeen voor te stel teen billike pryse. Afhangende van die benodigde geheue, gebruik die skerms 'n Arduino Nano, Uno of Mega.

Stap 1: Opsomming van vertonings

Opsomming van vertonings
Opsomming van vertonings

Daar is verskillende skerms met 'n resolusie van 480x320. Dit laat 'n lettertipe van 9x5 en 80 kolomteks toe. Daar is verskillende borde met 'n resolusie van 320x240, met 9x5 lettertipes en ook 'n baie klein 7x3 lettertipe om 80 kolomteks moontlik te maak. Daar is ook kleiner borde met 160x120 en 128x64 pixels. Ook 20x4 en 16x2 teks vertoon, en laastens 'n 12x2 veertien segment starburst vertoonbord.

Sommige skerms gebruik I2C, sommige is SPI en vir die groter skerms, 'n 16 bit databus vir vinniger opdateringsnelhede.

Kleiner skerms gebruik die Arduino Uno. Groter planke benodig meer geheue en gebruik dus 'n Mega. Die starburst -vertoonbord gebruik 'n Nano.

Op hierdie stadium kan ek noem dat die foto's nie baie van die uitstallings reg laat geskied nie. Die klein wit oled -skerm is baie skerp en helder, wat dit moeiliker gemaak het vir die kamera om te fokus, en die sterre -geleide skerm lyk baie skerper in die werklike lewe.

Stap 2: Hardeware

Hardeware
Hardeware

Die PCB is ontwerp om met soveel skerms as moontlik te werk. Dit is maklik om te wissel tussen 'n Mega en Uno met behulp van vier springers. Daar is spanningsverdelingsweerstande vir skerms wat op 3V werk. I2C -penne word in 'n groep uitgebring, sodat skerms direk ingeprop kan word. Die terminale loop op 9600 baud, en hoewel dit verhoog kan word, sal baie van die groter skerms nie veel vinniger as dit teken nie. Die PS2 -sleutelbord sluit aan by 'n DIN6 -aansluiting. USB -sleutelborde werk ook met 'n goedkoop adapterprop. U kan 'n eenvoudige terugboutoets doen deur pen 2 en 3 op die D9 aan te sluit, en dan verskyn karakters wat op die sleutelbord getik is, op die skerm.

In sommige gevalle is 'n PCB nie nodig nie en is dit moontlik om dinge wat werk met voorafgemaakte modules op eBay beskikbaar te stel, byvoorbeeld PS2-adapters, RS232-adapterborde en skerms wat direk in arduino-borde aansluit.

Daar is ook 'n aparte bord vir die starburst -geleide skerm - sien later in hierdie instruksies.

Stap 3: sagteware

Hieronder is 'n lêer genaamd Package.txt Dit is eintlik 'n.zip -lêer, laai dit af en hernoem dit (instruksies laat nie zip -lêers toe nie). Die Arduino -skets/-program is ingesluit, en dit is 'n enkele program wat deur alle skerms gebruik word. Daar is ook al die.zip -lêers vir elk van die skerms.

Aan die begin van die program is 'n reeks #define -stellings. Gee kommentaar op die een wat by die skerm pas. Gebruik Tools/Board om Uno, Mega of Nano te kies. Om bordjies te verander is net so eenvoudig soos om een reël in die kode te verander.

Een van die uitdagings om met baie skerms te werk, is dat hulle almal hul eie sagtewarebestuurders benodig. Dit is alles ingesluit in die pakket. Die toets het ingesluit om die pakket te neem en dit heeltemal van nuuts af weer op 'n nuwe masjien te installeer. U kan ook bronkode kry van Github en Adafruit en LCDWiki. Daar is 'n paar gevalle waar nuwer weergawes nie werk nie, sodat al die werkweergawes by die zip ingesluit is. Soms was daar gevalle waar een bestuurder 'n ander bestuurder gestaak het, aangesien hulle dieselfde lêernaam maar verskillende weergawes gebruik het. Daar is 'n beskrywing in die opmerkings bo -aan die program wat wys hoe om elke bestuurder te installeer. Die meeste word vanaf die Arduino IDE geïnstalleer met Sketch/Include Library/Add ZIP -biblioteek, en dit neem die zip -lêer in en plaas dit in c: / users / computername / mydocuments / arduino / libraries.

As u slegs een skerm gebruik, hoef sommige van hierdie biblioteke nie geïnstalleer te word nie. U het ten minste die twee sleutelbordlêers en die een vir die spesifieke skerm nodig. Sommige skerms deel kode. Daar is meer gedetailleerde instruksies in die kommentaar bo -aan die program, insluitend die verkryging van die gfx -biblioteek van Adafruit.

Aangesien alle skerms dieselfde Arduino -skets gebruik, is dit net nodig om een van die onderstaande reëls te verander:

// Verskillende skerms, laat een van die volgende ongekommenteerde#definieer DISPLAY_480X320_LCDWIKI_ILI9486 // 3.5 ", 480x320, teks 80x32, mega, 16 bit, aansluit in mega 36 -pen (en 2 kragpenne). Http: //www.lcdwiki.com /3.5inch_Arduino_Display-Mega2560. Stadiger as sommige van die onderstaande opsies, maar 'n meer leesbare lettertipe en 'n groter skerm, 5 sek. Opstart //#definieer DISPLAY_480X320_MCUFRIEND_ILI9486 // 3.5 ", 480x320, teks 80x32, mega, 5x9 lettertipe, slegs vir mega, maar gebruik net die uno-penne, krag, D0-D14, A0-A5, mooier lettertipe as die ssd1289 40-pen-module, maar baie stadiger https://www.arduinolibraries.info/libraries/mcufriend_kbv https://github.com/adafruit/Adafruit -GFX-biblioteek //#definieer DISPLAY_320X240_MCUFRIEND_ILI9341 // 2,4 ", 320x240, teks 53x24, mega //#definieer DISPLAY_320X240_SSD1289_40COL // 3,5", 320x240, teks 40x20, mega, UTFT biblioteek (geen lettertipes kleiner as 8x12) Fast //#define DISPLAY_320X240_SSD1289_53COL // 3.5 ", 320x240, teks 53x24, mega, 9x5 lettertipe, kan lettertipe wysig. Fast //#define DISPLAY_320X240_SSD1289_80COL // 3.5", 320x240, teks 80x30, mega, klein lettertipe 7x3 vinniger bestuurder as die twee hierbo, die vinnigste hiervan as 'n 16 -bis -direkte rit na die skerm eerder as spi/i2c //#definieer DISPLAY_160X128_ST7735 // 1.8 ", 160x128, teks 26x12, uno (ILI9341) SPI 128x160 //#definieer DISPLAY_128X64_OLED_WHITE // 0.96 ", 128x64, teks 21x6, mega, I2C, wit op swart (die tft -biblioteek vir hierdie bord plus al die kode plus die sleutelbord loop uit die programberging, al is die rambehoeftes baie klein, dus slegs loop op 'n mega) //#definieer DISPLAY_20X4 // teks 20x4, uno, LCD met I2C, teks LCD https://www.arduino.cc/en/Reference/LiquidCrystal //#definieer DISPLAY_16X2 // teks 16x2, uno, sluit aan by uno, gebruik penne 4 tot 10 //#definieer DISPLAY_STARBURST // teks 12x2, nano, starburst -skerm met nano -kontroleerder //#definieer DISPLAY_320X240_QVGA_SPI_ILI9341 / /2.2 ", 320x240, teks 11x8, uno, groot lettertipe, uno, 3v seine, 9-pins SPI-skerm sien Bodmer's Instructables-uno https://www.instructables.com/id/Arduino-TFT-display-and-font- biblioteek/ kry die zip aan die onderkant en plaas die gfx en 9341 handmatig in die arduino biblioteekmap

Stap 4: Die ANSI -standaard

Die ANSI -standaard
Die ANSI -standaard

ANSI maak eenvoudige opdragte moontlik om die skerm skoon te maak, die wyser rond te skuif en kleure te verander. Op 'n paar foto's is 'n demo wat al die voor- en agtergrondkleure toon. Dit is rooi, geel, groen, blou, siaan, magenta, swart, wit, donkergrys, liggrys, en die kleure kan helder of dowwe wees, dus is daar 16 voor- en 16 agtergrondkleure.

Dit is heel moontlik om daaraan te dink om in 'n 'grafiese' modus toe te voeg, waar u foto's met 'n hoër resolusie op pixelvlak en met 256 of meer kleure kan teken. Die belangrikste beperkings is die interne geheue van die Arduino en die tyd wat dit neem om 'n foto op 'n seriële skakel op 9600 baud te stuur.

Die kode benodig een greep om die karakter op te slaan en een byte om die kleure op te slaan (3 bisse vir voorgrond, 3 vir agtergrond, een vir helder/dowwe en een vir vetdruk). Dus sal 'n 80x30 -skerm 2400x2 = 4800 grepe benodig, wat in 'n Mega pas, maar nie 'n Uno nie.

Stap 5: Vertoon

Vertoon
Vertoon
Vertoon
Vertoon
Vertoon
Vertoon

Hierbo is foto's van elke individuele vertoning. Daar is foto's voor en agter op elke skerm, en dit verteenwoordig baie van die handelsmerke wat op eBay of soortgelyk beskikbaar is. Sommige is I2C, sommige is parallel, sommige het groter lettertipes, sommige kan 'n volledige 80 kolomme vertoon wat geskik is vir Wordstar en ander ou woordverwerkingsprogramme. Daar is meer detail in die teks van die arduino -kode.

Stap 6: Skematiese

Hieronder is twee lêers. Hulle word genoem as.txt, aangesien Instructables nie zip -lêers hanteer nie. Laai dit af en hernoem dit as.zip.

Daar is die skematiese en die borduitleg as pdf -lêers. Daar is ook 'n pakket vir Seeed PCB. Dit is die gerbers, en as u na Seeed gaan en dit oplaai, moet dit die gerbers vertoon, en dan kan u PCB's maak. Die bord met 14 segmente is groot en kos heelwat meer, maar die kleiner pas in die gesiene 10x10cm -formaat wat gesien is, en dit is redelik vir 5 of 10 borde - in werklikheid is die aflewering meer as die borde.

Dit is heel moontlik om baie van die skerms te gebruik sonder om 'n PCB te benodig. Daar is PS2 -sokmodules, RS232 -skilde/modules wat almal op eBay of soortgelyk beskikbaar is. Sommige skerms, soos die I2C, kan net 'n paar aansluitdrade gebruik. Sommige soos die SSD1289 -skerms het adapterborde en kan direk by 'n Mega aansluit.

Stap 7: Starburst -vertoning

Starburst -vertoning
Starburst -vertoning

Die starburst -skerm is 'n groter bord en gebruik 'n Nano en 'n aantal 74xx -skyfies om die multiplexing te doen. Daar was baie eksperimente om vas te stel hoeveel skerms u kan vermenigvuldig voordat dit te dowwe raak of die flikkering te merkbaar word. Die uitstallings kom van Futurlec https://www.futurlec.com/LEDDisp.shtml Die 14 segment -skerms kan ook kleinletters bevat, en dit kan indien nodig in die kode gewysig word. Hernoem hierdie lêers van.txt na.zip

Stap 8: Voeg kode vir ander skerms by

Dit is moontlik om kode vir ander skerms in te voeg. Die eerste stap is om iets, enigiets, te vertoon. Dit kan 'n pixel of 'n letter wees. Dit behels hoofsaaklik om bestuurders te soek, een af te laai, dit te toets, te vind dat dit nie saamgestel kan word nie, die bestuurder dan verwyder word sodat dit nie later verwarring veroorsaak nie, en dan 'n nuwe een probeer. Die volgende stap is om 'n letter in die regte kleur te laat vertoon, aangesien sommige skerms wat identies lyk, eintlik die kleure sal omkeer. Gelukkig sal dit gewoonlik net een nommer in die opstartkode regstel. Die volgende stap is om 'n paar reëls te skryf om te bepaal of u 'n uno of mega wil gebruik, die skermwydte, hoogte, lettergrootte, sleutelbordpenne en watter bestuurderslêers u moet gebruik. Dit begin by reël 39 in die kode en u kan die formaat van die bestaande skerms kopieer.

Gaan dan na reël 451 en voeg die opstartkode by. Dit is waar u die agtergrondkleur en die rotasie instel en die vertoning begin.

Gaan dan na reël 544 en voeg die kode by om 'n karakter te vertoon. In sommige gevalle is dit slegs een reël, bv

my_lcd. Draw_Char (xPixel, yPixel, c, tftForecolor, tftBackcolor, 1, 0); // x, y, char, voor, agter, grootte, modus

Gaan dan na reël 664 en voeg die kode by om 'n pixel te teken. Weereens, soms is dit net een reël, byvoorbeeld:

tft.drawPixel (xPixel, yPixel, tftForecolor);

Gaan uiteindelik na reël 727 en voeg die kode by om byvoorbeeld 'n vertikale lyn vir die wyser te trek

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

Die program bepaal dinge soos hoeveel geheue vir die skermbuffer toegewys moet word, gebaseer op die skermwydte en die lettergrootte.

Stap 9: Demonstrasie van Wordstar

Dit is gedoen met behulp van 'n CP/M -rekenaar, en hier is baie opsies beskikbaar. Ek het iets vinnig nodig gehad om op te stel, so ek het 'n emulasie op 'n ESP32 (Google ESP32 CP/M) gebruik. Daar is baie ander retro -rekenaars beskikbaar, byvoorbeeld Grant Searle se FPGA -emulasie en die RC2014 vir diegene wat verkies om 'n regte Z80 te gebruik. Baie retro -rekenaars is geneig om 'n terminale program op 'n rekenaar as die skerm te gebruik, byvoorbeeld Teraterm. Baie ontfouting van hierdie ANSI -projek het behels dat 'n terminale program en die ANSI -program gelyktydig uitgevoer word en seker gemaak word dat die skerms identies lyk.

Stap 10: Verdere gedagtes

Namate die skerms groter word, word hulle stadiger en stadiger. Om 'n karakter weer te teken, behels dat elke pixel in die karakter herteken word, aangesien die agtergrondkleur ook geteken moet word, sodat alles afhang van hoe vinnig jy 'n pixel kan teken. Daar is 'n paar aanpassings, byvoorbeeld, as 'n skerm nie kan byhou met die data wat inkom nie, stoor net die teks in die skermbuffer en teken dan 'n volledige skerm oor as daar nie meer teks binnekom nie. Baie skerms waarna u sien verkoop 'n mooi prentjie op die skerm, maar wat hulle dalk nie sou wys nie, is hoe lank dit geneem het om die prentjie te vertoon, en in sommige gevalle kan dit 5 sekondes of langer wees. I2C en SPI is ideaal vir die kleiner skerms, maar alles wat meer as 50 kolomme bevat, benodig 'n 8 of 16 bit databus.

Wordstar is 'n bietjie onhandig om te gebruik teen 9600 baud en 19200 is baie meer bruikbaar om na teks te blaai, maar die skerms kan regtig nie byhou nie.

Die vinnigste skerm wat ek gebruik het, was op die Propeller -chip met twee 8 -bisse eksterne 512k -RAM -skyfies, om 'n 16 -bis parallelle databus te skep. Elke lettertipe is vooraf in die ram gelaai. 'N Kaskade van 74xx teenskyfies is gebruik om die data in die skerm uit te skakel. Dit het beteken dat daar geen interne verwerking binne die CPU was om data te haal en uit te voer nie, en die verversingsnelheid was so vinnig as wat die Propeller -chip 'n pen kon verander. Verrassend genoeg kon die skerms dit byhou, selfs teen 20Mhz, en dit was dus moontlik om 'n volledige skermopdatering in slegs 30 millisekondes uit te voer. Die soort koers is vinnig genoeg om glad te blaai, soos u op selfone sien.

Die Propeller-chip was meer as tien jaar gelede op die voorpunt, en daar is nou meer opsies, insluitend die ESP8266 en ESP32 met groot hoeveelhede interne ram. Die skyfies het egter nog steeds nie 'n groot aantal penne nie, dus is dit nog steeds die moeite werd om die outydse manier van 'n eksterne ramskyfie wat na die skerm is, uit te skakel.

Vir groter skerms kan dit goedkoper wees om 'n LCD TV -skerm of VGA -skerm te gebruik en te kyk na 'n paar van die ANSI -emulators wat gekodeer is, bv. Die ESP32, wat VGA direk dryf.

Ek hoop dat u hierdie projek nuttig vind.

James Moxham

Adelaide, Australië

Aanbeveel: