Мазмуну:

ANSI терминалдарынын жыйнагы: 10 кадам
ANSI терминалдарынын жыйнагы: 10 кадам

Video: ANSI терминалдарынын жыйнагы: 10 кадам

Video: ANSI терминалдарынын жыйнагы: 10 кадам
Video: Самый большой в мире транзистор, диод и конденсатор 2024, Июль
Anonim
ANSI терминалдарынын жыйнагы
ANSI терминалдарынын жыйнагы

Бул проект Wordstar сыяктуу эски мода текст процессорлорун иштетүү үчүн ылайыктуу болгон 80 дисктеги текстти дисплейде көрсөтүү жолу менен башталган. 0.96дан 6 дюймга чейинки ар кандай башка дисплейлер кошулду. Дисплейлер бир ПХБны жана бир Arduino эскизин/программасын колдонот.

Компьютерге туташуу үчүн RS232 сериялык туташуусу жана клавиатура үчүн PS/2 розеткасы бар. Дисплейлер негизинен жеткиликтүү бааларды көрсөтүү үчүн тандалып алынган. Эстутумга жараша дисплейлер Arduino Nano, Uno же Mega колдонушат.

1 -кадам: Дисплейлердин кыскача мазмуну

Дисплейлердин кыскача мазмуну
Дисплейлердин кыскача мазмуну

480x320 токтому менен ар кандай дисплейлер бар. Бул 9x5 шрифтке жана 80 тилке текстине мүмкүндүк берет. 320x240 токтому бар, 9x5 шрифти бар, ошондой эле 80x тилке текстине мүмкүнчүлүк берүү үчүн өтө кичинекей 7x3 шрифти бар ар кандай такталар бар. 160x120 жана 128x64 пикселдүү кичине такталар да бар. Ошондой эле 20x4 жана 16x2 тексттик дисплейлер, жана акыры 12x2 он төрт сегменттүү жылдыздар дисплейи.

Кээ бир дисплейлер I2Cди колдонушат, кээ бирлери SPI жана чоңураак дисплейлер үчүн, жаңыртуу ылдамдыгы үчүн 16 биттик маалымат шинасы.

Кичинекей дисплейлер Arduino Uno колдонушат. Чоң такталар көбүрөөк эс тутумга муктаж жана ошондуктан Мега колдонушат. Starburst дисплей тактасында нано колдонулат.

Бул жерде мен сүрөттөр көптөгөн дисплейлерде адилеттүүлүк жок экенин айта алам. Кичинекей ак түстөгү дисплей абдан так жана жаркыраган, бул камеранын фокусун кыйындатты, ал эми жылдыздын жарыгы менен жасалган дисплей чыныгы жашоодо бир топ курч көрүнөт.

2 -кадам: Аппараттык

Аппараттык
Аппараттык

ПХБ мүмкүн болушунча көп дисплейлер менен иштөө үчүн иштелип чыккан. Мега менен Юнонун ортосунда төрт секиргичти алмаштыруу оңой. 3Vде иштеген дисплейлер үчүн чыңалуу бөлүштүрүүчү резисторлор бар. I2C казыктары дисплейге түз туташтырылышы үчүн бир топко чыгарылган. Терминал 9600 байда иштейт жана муну көбөйтүүгө болот, бирок чоңураак дисплейлердин көбү мындан тезирээк тартпайт. PS2 клавиатурасы DIN6 розеткасына туташат. USB баскычтоптору да арзан адаптер сайгычы менен иштейт. Сиз D9дагы 2 жана 3 -пинге кошулуу менен жөнөкөй артка кайтаруу тестин жасай аласыз, андан кийин дисплейде клавиатурада терилген белгилер пайда болот.

Кээ бир учурларда ПХБнын кереги жок жана ebayда даяр болгон модулдар менен иштеген нерселерди алса болот, мисалы PS2 адаптерлери, RS232 адаптер такталары жана түздөн-түз arduino такталарына туташтырылган дисплейлер.

Жылдыздын жарыгынын дисплейи үчүн өзүнчө такта бар - кийинчерээк ушул Нускамада караңыз.

3 -кадам: Программалык камсыздоо

Төмөндө Package.txt деп аталган файл бар. Бул чындыгында.zip файлы, ошондуктан аны жүктөп алып, атын өзгөртүңүз (Instructables zip файлдарына жол бербейт). Arduino эскиз/программасы камтылган жана бул бардык дисплейлерде колдонулган бир программа. Дисплейлердин ар бири үчүн бардык.zip файлдары бар.

Программанын башында #аныктоо билдирүүлөрү бар. Дисплейге туура келгенди комментарийден чыгарыңыз. Uno, Mega же Nano тандоо үчүн Tools/Board колдонуңуз. Тактайларды алмаштыруу коддогу бир сапты өзгөртүү сыяктуу жөнөкөй.

Көптөгөн дисплейлер менен иштөөдө кыйынчылыктардын бири - бул алардын баарына өз программалык камсыздоосунун драйверлери керек окшойт. Булардын баары пакетке киргизилген. Тестирлөө пакетти алып, аны нөлдөн баштап жаңы машинага кайра орнотууну камтыйт. Сиз ошондой эле Github жана Adafruit жана LCDWikiден код ала аласыз. Жаңы версиялар иштебей калган учурлар бар, андыктан бардык жумушчу версиялары zipге киргизилет. Кээде бир эле айдоочу экинчисин токтотуп койгон учурлар болгон, анткени алар бир эле файлдын атын колдонушкан, бирок башка версияларды колдонушкан. Программанын жогору жагындагы комментарийлерде ар бир драйверди кантип орнотуу керектиги жазылган. Көбү Arduino IDEден Sketch/Include Library/ZIP китепканасын кошуу менен орнотулган жана бул zip файлын алат жана c: / users / computername / mydocuments / arduino / librariesга коёт.

Эгерде сиз бир гана дисплейди колдонуп жатсаңыз, анда бул литариялардын айрымдарын орнотуунун кажети жок. Эң аз дегенде сизге эки клавиатура файлы жана тигил дисплей үчүн бирөө керек. Кээ бир дисплейлер кодду бөлүшөт. Программанын жогору жагындагы комментарийлерде, анын ичинде gfx китепканасын Adafruitтен алуу боюнча дагы толук көрсөтмөлөр бар.

Бардык дисплейлер бир эле Arduino эскизин колдонушкандыктан, дисплейлерди өзгөртүү төмөндөгү саптардын бирин комментарийлөө менен гана чектелет:

// Ар кандай дисплейлер, төмөнкүлөрдүн бирин комментарийсиз калтырыңыз#DISPLAY_480X320_LCDWIKI_ILI9486 // 3.5 ", 480x320, текст 80x32, мега, 16 бит, мега 36 пинге туташат (жана 2 кубат төөнөгүч). Http://www.lcdwiki.com /3.5inch_Arduino_Display-Mega2560. Төмөндөгү айрым варианттарга караганда жайыраак, бирок окула турган шрифт жана чоңураак экран, 5сек жүктөө //#DISPLAY_480X320_MCUFRIEND_ILI9486 // 3.5 ", 480x320, текст 80x32, мега, 5x9 тамгасы мега үчүн гана колдонулат. uno казыктары, күч, D0-D14, A0-A5, ssd1289 40 пин модулуна караганда жакшы шрифт, бирок бир топ жайыраак https://www.arduinolibraries.info/libraries/mcufriend_kbv https://github.com/adafruit/Adafruit -GFX-Library //#DISPLAY_320X240_MCUFRIEND_ILI9341 // 2.4 ", 320x240, текст 53x24, mega //#DISPLAY_320X240_SSD1289_40COL // 3.5", 320x240, текст 40x20, мега, UTFT китепканадан 8 кичине (no12). Тез //#DISPLAY_320X240_SSD1289_53COL // 3.5 ", 320x240, текст 53x24, мега, 9x5 шрифт, шрифтти түзөтө алат. Fast //#аныктоо DISPLAY_320X240_SSD1289_80COL // 3.5", 320x240, текст 80x30, мега, кичине 7x, жогорудагы экиден ылдамыраак драйвер, мунун баарынан ылдамы spi/i2c эмес, дисплейге 16 биттик дискте //#аныктоо DISPLAY_160X128_ST7735 // 1.8 ", 160x128, текст 26x12, uno (ILI9341) SPI 128x160 //#аныктоо DISPLAY_128X64_OLED_WHITE // 0.96 ", 128x64, текст 21x6, mega, I2C, кара түстө ак (бул тактанын tft китепканасы плюс бардык код плюс клавиатура программанын сактагычы түгөнөт, кочкордун муктаждыктары өтө кичине, ошондуктан мегада иштейт) //#DISPLAY_20X4 аныктоо // текст 20x4, uno, I2C менен ЖК, текст LCD https://www.arduino.cc/en/Reference/LiquidCrystal //#аныктоо DISPLAY_16X2 // текст 16x2, uno, uno -го туташат, 4төн 10го чейин пиндерди колдонот //#DISPLAY_STARBURST аныктоо // текст 12x2, нано, нано контроллери бар жылдыздын жарылышы //#DISPLAY_320X240_QVGA_SPI_ILI9341 /аныктоо /2.2 ", 320x240, текст 11x8, уно, чоң шрифт, uno, 3v сигналдар, 9 пиндүү SPI дисплейи Bodmer's Instructables караңыз-uno https://www.instructables.com/id/Arduino-TFT-display-and-font- китепкана/ ылдыйдагы zipти алыңыз жана gfx менен 9341ди кол менен arduino китепкана папкасына салыңыз

4 -кадам: ANSI Standard

ANSI стандарты
ANSI стандарты

ANSI экранды тазалоо, курсорду жылдыруу жана түстөрдү өзгөртүү үчүн жөнөкөй буйруктарды берет. Бир нече сүрөттөрдө алдыңкы жана фондук түстөрдү көрсөтүүчү демо бар. Бул кызыл, сары, жашыл, көк, көгүш, кызгылт көк, кара, ак, кочкул боз, ачык боз жана түстөр ачык же күңүрт болушу мүмкүн, андыктан 16 алдыңкы жана 16 фондук түстөр бар.

Пикселдик деңгээлде жана 256 же андан көп түстөрдө алда канча жогорку чечилиштүү сүрөттөрдү тарта турган "графикалык" режимге кошуу жөнүндө ойлонууга толук мүмкүн. Негизги чектөөлөр - бул Arduino ички эс тутуму жана сүрөттү сериялык шилтеме аркылуу 9600 baudга жөнөтүү убактысы.

Кодго белгини сактоо үчүн бир байт жана түстөрдү сактоо үчүн бир байт керек (алдыңкы планга 3 бит, фон үчүн 3, ачык/күңүрт жана коюу үчүн бир байт). Ошентип, 80x30 дисплейге 2400x2 = 4800 байт керек болот, ал Мегага туура келет, бирок Uno эмес.

5 -кадам: көрсөтөт

Дисплейлер
Дисплейлер
Дисплейлер
Дисплейлер
Дисплейлер
Дисплейлер

Жогоруда ар бир дисплейдин сүрөттөрү бар. Ар бир дисплейдин алдыңкы жана арткы жагындагы сүрөттөр бар жана алар ebay же ушул сыяктуу окшош көптөгөн бренддерди билдирет. Кээ бирлери I2C, кээ бири параллель, кээ биринин чоңураак шрифти бар, кээ бирлери Wordstar жана башка эски текст иштетүүчү программаларга ылайыктуу 80 тилкени көрсөтө алат. Ардуино кодунун текстинде кененирээк маалымат бар.

6 -кадам: схемалык

Төмөндө эки файл бар. Instructables.zip файлдарын иштетпегендиктен, алар.txt деп аталат. Аларды жүктөп алып, аларды.zip деп атаңыз.

Pdf файлдары катары схемасы жана тактасы бар. Seeed PCB үчүн да пакет бар. Бул герберлер, эгерде сиз Seeedге барып, аны жүктөсөңүз, анда ал герберлерди көрсөтүшү керек, андан кийин ПХБларды жасай аласыз. 14 сегменттик такта чоң жана бир аз кымбатыраак, бирок кичүүсү Seeed 10x10cm форматына туура келет, ошондуктан 5 же 10 такталар үчүн абдан акылга сыярлык - чынында жеткирүү тактайларга караганда кымбатыраак.

ПКБга муктаж болбостон, көптөгөн дисплейлерди колдонуу толук мүмкүн. PS2 сокет модулдары, RS232 калкандары/модулдары бар. I2C сыяктуу кээ бир дисплейлер бир нече зымдарды колдоно алышат. Кээ бирлери SSD1289 дисплейлери адаптер такталары менен коштолуп, түз эле Мегага туташа алышат.

7 -кадам: Starburst Display

Starburst Display
Starburst Display

Starburst дисплейи чоңураак такта жана мультиплекстөө үчүн нано жана 74xx чиптерин колдонот. Канча дисплейди алар күңүрттөнүп же жарк этип өтө эле байкалаар алдында мультиплекс кыла аларыңызды аныктоо үчүн көптөгөн эксперименттер болду. Дисплейлер Futurlecтен келген https://www.futurlec.com/LEDDisp.shtml 14 сегменттеги дисплейлер кичине тамгаларды да аткара алат жана аларды керек болсо коддо өзгөртсө болот. Бул файлдардын атын.txtтан.zipке өзгөртүңүз

8 -кадам: Башка дисплейлерге код кошуу

Башка дисплейлер үчүн кодду кошууга болот. Биринчи кадам - бир нерсени алуу, көрсөтүү, көрсөтүү. Бул пиксель же тамга болушу мүмкүн. Бул негизинен драйверлерди издөө, бирин жүктөө, тестирлөө, ал компиляцияланбай тургандыгын табуу, кийинчерээк башаламандыкка алып келбеши үчүн ошол драйверди алып салуу, анан жаңысын сынап көрүүнү камтыйт. Кийинки кадам - туура түстө көрсөтүү үчүн кат алуу, анткени окшош болгон кээ бир дисплейлер түстөрдү тескери бурат. Бактыга жараша, адатта, баштоо кодундагы бир гана сан муну оңдойт. Кийинки кадам - уно же мега, дисплейдин туурасы, бийиктиги, шрифттин өлчөмү, клавиатура төөнөгүчтөрү жана кайсы драйвер файлдарын колдонуу керек экендигин аныктоо үчүн бир нече саптарды жазуу. Бул коддун 39 -сабынан башталат жана сиз учурдагы дисплейлердин форматын көчүрө аласыз.

Кийинки 451 -сапка түшүп, баштоо кодун кошуу. Бул жерде сиз фондун түсүн жана айланууну коюп, дисплейди баштайсыз.

Кийинки - 544 -сапка өтүү жана символду көрсөтүү үчүн кодду кошуу. Кээ бир учурларда бул бир эле сызык, мисалы

my_lcd. Draw_Char (xPixel, yPixel, c, tftForecolor, tftBackcolor, 1, 0); // x, y, char, алдыңкы, арткы, өлчөмү, режими

Кийинки, 664 -сапка өтүү жана пикселди тартуу үчүн кодду кошуу. Дагы, кээде бул бир эле сап, мисалы:

tft.drawPixel (xPixel, yPixel, tftForecolor);

Акыры 727 -сапка өтүңүз жана курсорго вертикалдуу сызык чийүү үчүн кодду кошуңуз

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

Программа экрандын туурасына жана шрифттин өлчөмүнө жараша экрандын буферине канча эстутум бөлүү керектигин чечет.

9 -кадам: Wordstar демонстрациясы

Бул CP/M компьютери аркылуу жасалган жана бул жерде көптөгөн варианттар бар. Мага тез орнотуу үчүн бир нерсе керек болчу, ошондуктан ESP32 (Google ESP32 CP/M) боюнча эмуляцияны колдондум. Башка көптөгөн ретро компьютерлер бар, мисалы, Грант Сэрлдин FPGA эмуляциясы жана чыныгы Z80ди колдонууну каалагандар үчүн RC2014. Көптөгөн ретрокомпьютерлер дисплей катары компьютерде терминалдык программаны колдонушат, мисалы Teraterm. Бул ANSI долбоорун оңдоодо терминалдык программаны жана ANSI программасын параллелдүү иштетүү жана экрандар окшош экенине ынануу кирет.

10 -кадам: Кошумча ойлор

Дисплейлер чоңойгон сайын алар жайыраак жана жайыраак болуп калышат. Каарманды кайра тартуу бул белгинин ар бир пикселин кайра тартууну камтыйт, анткени фондун түсү да чийилиши керек, андыктан баары пикселди канчалык тез сызууга болот. Кээ бир өзгөрүүлөр бар, мисалы, эгер дисплей келген маалыматтарга жооп бере албаса, анда текстти экран буферине сактап, андан кийин текст келбей калганда толук экранды кайра карап чыгыңыз. сатуу экранда татынакай сүрөттү көрсөтөт, бирок ал сүрөттү көрсөтүүгө канча убакыт кеткенин көрсөтө алышпайт, кээ бир учурларда 5 секунд же андан көп болушу мүмкүн. I2C жана SPI кичинекей дисплейлер үчүн эң сонун, бирок болжол менен 50 мамычадан ашкан нерсеге 8 же 16 биттик маалымат шинасы керек.

Wordstar 9600 baud менен колдонуу үчүн бир аз ыңгайсыз жана 19200 текстти жылдыруу үчүн алда канча пайдалуу, бирок дисплейлер чындап эле туруштук бере албайт.

Мен колдонгон эң ылдам дисплей 16 биттик параллелдүү маалымат шинасын түзүү үчүн 8 8bit тышкы 512k кочкорлуу чиптер менен Propeller чипинде болгон. Ар бир шрифт кочкорго алдын ала жүктөлгөн. Маалыматтарды дисплейге чыгаруу үчүн 74xx эсептегич чиптеринин каскады колдонулган. Бул CPU ичинде маалыматтарды алуу жана чыгаруу боюнча эч кандай ички иштетүү болбогонун билдирет жана жаңыртуу ылдамдыгы пропеллер чипи төөнөгүчтү алмаштыра алгандай тез болгон. Таң калыштуусу, дисплейлер муну 20МГцте деле сактай алышкан, ошондуктан 30 миллисекундта толук экранды жаңыртууга мүмкүн болгон. Мындай чен уюлдук телефондордо көрүп тургандай, ылдам жылдыруу үчүн жетиштүү.

Пропеллер чипи он жыл мурун эң алдыңкы болгон жана азыр ESP8266 жана ESP32, анын ичинде көп сандагы ички кочкорго ээ болгон башка мүмкүнчүлүктөр бар. Бирок, бул чиптерде дагы эле көп сандагы төөнөгүчтөр жок, андыктан дисплейге чыгарылган тышкы кочкордун чипинин эски ыкмасын колдонууга татыктуу болушу мүмкүн.

Чоңураак дисплейлер үчүн LCD TV экранын же VGA экранын колдонуу жана коддолгон ANSI эмуляторлорун карап көрүү арзаныраак болушу мүмкүн, мисалы VGAны түз айдаган ESP32.

Бул долбоор сизге пайдалуу деп ишенем.

James Moxham

Аделаида, Австралия

Сунушталууда: