Mundarija:

ANSI terminallari to'plami: 10 qadam
ANSI terminallari to'plami: 10 qadam

Video: ANSI terminallari to'plami: 10 qadam

Video: ANSI terminallari to'plami: 10 qadam
Video: Самый большой в мире транзистор, диод и конденсатор 2024, Iyul
Anonim
ANSI terminallari to'plami
ANSI terminallari to'plami

Bu loyiha Wordstar kabi eski uslubdagi matnli protsessorni ishga tushirish uchun mos keladigan 80 ta ustunli matnni LCD displeyda ko'rsatish usuli sifatida boshlandi. 0,96 dan 6 dyuymgacha bo'lgan turli xil displeylar qo'shildi. Displeylar bitta PCB va bitta Arduino eskiz/dasturidan foydalanadi.

Kompyuterga ulanish uchun ketma -ket RS232 va klaviatura uchun PS/2 uyasi mavjud. Displeylar odatda arzon narxlarda mavjud bo'lganlarni namoyish qilish uchun tanlangan. Xotiraga qarab, displeylar Arduino Nano, Uno yoki Mega -dan foydalanadi.

1 -qadam: Ko'rgazmalarning qisqacha mazmuni

Ko'rgazmalar haqida qisqacha ma'lumot
Ko'rgazmalar haqida qisqacha ma'lumot

480x320 o'lchamdagi turli xil displeylar mavjud. Bu 9x5 shrift va 80 ustunli matnga ruxsat beradi. 320x240 o'lchamdagi, 9x5 shriftli, shuningdek, 7x3 shriftli 80 ta ustunli matnga ruxsat beruvchi turli xil taxtalar mavjud. Bundan tashqari, 160x120 va 128x64 pikselli kichikroq taxtalar mavjud. Shuningdek, 20x4 va 16x2 matnli displeylar, va nihoyat, 12x2 o'lchamli o'n to'rt segmentli yulduzli portlash displeyi.

Ba'zi displeylar I2C -dan foydalanadi, ba'zilari SPI va kattaroq displeylar uchun 16 bitli ma'lumotlar uzatish tezligi uchun.

Kichikroq displeylarda Arduino Uno ishlatiladi. Kattaroq taxtalarga ko'proq xotira kerak va shuning uchun Mega -dan foydalaning. Yulduzli portlash displeyida Nano ishlatiladi.

Shu o'rinda shuni aytishim mumkinki, fotosuratlar ko'plab displeylarda adolatni ta'minlamaydi. Kichkina oq oledli displey juda aniq va ravshan bo'lib, bu kameraning diqqatini tortishni qiyinlashtirdi va yulduzli portlovchi displey haqiqiy hayotda ancha aniqroq ko'rinadi.

2 -qadam: Uskuna

Uskuna
Uskuna

PCB iloji boricha ko'proq displeylar bilan ishlashga mo'ljallangan. Mega va Uno o'rtasida to'rtta o'tish moslamasini almashtirish oson. 3V kuchlanishli displeylar uchun kuchlanishni ajratuvchi rezistorlar mavjud. I2C pinlari bir guruhda chiqariladi, shunda displeylarni to'g'ridan -to'g'ri ulash mumkin. Terminal 9600 baytda ishlaydi va uni ko'paytirish mumkin bo'lsa -da, katta displeylarning aksariyati bundan ko'ra tezroq chizilmaydi. PS2 klaviaturasi DIN6 uyasiga ulanadi. USB klaviaturalari ham arzon adapter vilkasi bilan ishlaydi. Siz D9 -dagi 2 va 3 -pinlarni birlashtirib, orqaga qaytish testini o'tkazishingiz mumkin, keyin displeyda klaviaturada yozilgan belgilar paydo bo'ladi.

Ba'zi hollarda, tenglikni talab qilinmaydi va ebayda mavjud modullar bilan ishlash mumkin, masalan, PS2 adapterlari, RS232 adapter platalari va to'g'ridan-to'g'ri arduino platalariga ulanadigan displeylar.

Yulduzli portlashli LED displey uchun alohida taxta ham bor - bu ko'rsatmaga keyinroq qarang.

3 -qadam: dasturiy ta'minot

Quyida Package.txt deb nomlangan fayl bor, bu aslida.zip fayli, shuning uchun uni yuklab oling va nomini o'zgartiring (Instructables zip fayllariga ruxsat bermaydi). Arduino eskiz/dasturi kiritilgan va bu barcha displeylarda ishlatiladigan yagona dastur. Bundan tashqari, displeylarning har biri uchun barcha.zip fayllari mavjud.

Dasturning boshida bir qator #define bayonotlar berilgan. Displeyga mos keladigan belgini qoldiring. Uno, Mega yoki Nano ni tanlash uchun Tools/Board -dan foydalaning. Kengashlarni o'zgartirish kodning bitta satrini o'zgartirish kabi oddiy.

Ko'p displey bilan ishlashda qiyinchiliklardan biri shundaki, ularning hammasi o'z dasturiy drayverlariga muhtoj. Bularning barchasi paketga kiritilgan. Sinov paketni olib, uni noldan yangi mashinaga qayta o'rnatishni o'z ichiga oldi. Siz shuningdek Github va Adafruit va LCDWiki -dan manba kodini olishingiz mumkin. Yangi versiyalar ishlamaydigan bir nechta holatlar mavjud, shuning uchun barcha ishlaydigan versiyalar zip -ga kiritilgan. Vaqti -vaqti bilan bir haydovchi boshqasini to'xtatib qo'ygan, chunki ular bir xil fayl nomidan foydalangan, lekin boshqa versiyalardan foydalangan. Dasturning yuqori qismidagi izohlarda har bir drayverni qanday o'rnatishni ko'rsatadigan tavsif mavjud. Ko'pchilik Arduino IDE -dan Sketch/Include Library/ZIP kutubxonasini qo'shish bilan o'rnatiladi va bu zip faylini oladi va uni c: / users / computername / mydocuments / arduino / libraries -ga joylashtiradi.

Agar siz faqat bitta displeydan foydalansangiz, bu libariyalarning ba'zilari o'rnatilishi shart emas. Hech bo'lmaganda sizga ikkita klaviatura va bitta displey uchun bitta fayl kerak bo'ladi. Ba'zi displeylar kodni ulashadi. Dasturning yuqori qismidagi izohlarda, shu jumladan Adafruit -dan gfx kutubxonasini olish bo'yicha batafsil ko'rsatmalar mavjud.

Hamma displeylar bir xil Arduino eskizidan foydalanganligi sababli, displeylarni o'zgartirish quyidagi satrlardan birini izohlashdan iborat.

// Har xil displeylar, quyidagi izohlanmagan birini qoldiring /3.5inch_Arduino_Display-Mega2560. Quyidagi ba'zi variantlardan ko'ra sekinroq, lekin o'qilishi mumkin bo'lgan shrift va kattaroq ekran, 5 soniya yuklanish //#DISPLAY_480X320_MCUFRIEND_ILI9486 // 3,5 ", 480x320, matn 80x32, mega, 5x9 shrift faqat mega uchun. uno pinlar, kuch, D0-D14, A0-A5, ssd1289 40 pinli modulga qaraganda chiroyli shrift, lekin ancha sekin https://www.arduinolibraries.info/libraries/mcufriend_kbv https://github.com/adafruit/Adafruit -GFX-Library //#DISPLAY_320X240_MCUFRIEND_ILI9341 // 2.4 ", 320x240, matn 53x24, mega //#DISPLAY_320X240_SSD1289_40COL // 3.5", 320x240, matn 40x20, mega, UTFT kutubxonasidan 8 (shrift 8 dan kichik) belgilang. Tez //#DISPLAY_320X240_SSD1289_53COL // 3,5 dyuymli, 320x240, 53x24 matnli, mega, 9x5 shriftli, shriftni tahrir qila oladi., yuqoridagi ikkisidan tezroq haydovchi, bularning eng tezkori, spi/i2c o'rniga displeyga 16 bitli to'g'ridan -to'g'ri haydovchi //#DISPLAY_160X128_ST7735 // 1,8 ", 160x128, matn 26x12, uno (ILI9341) SPI 128x160 //#identifikatsiya DISPLAY_128X64_OLED_WHITE // 0,96 dyuym, 128x64, matn 21x6, mega, I2C, qora rangda oq (bu taxtaning tft kutubxonasi, barcha kodlar va klaviatura dastur xotirasi tugagan, garchi qo'chqorga ehtiyoj juda kichik bo'lsa ham, megada ishlaydi) //#DISPLAY_20X4 ni aniqlang // matn 20x4, uno, I2C bilan LCD, LCD displey https://www.arduino.cc/en/Reference/LiquidCrystal //#DISPLAY_16X2 ni belgilang // matn 16x2, uno, uno -ga ulanadi, 4 dan 10 gacha pimlardan foydalanadi //#DISPLAY_STARBURSTni belgilang // matn 12x2, nano, yulduzli displey nano -kontroller bilan //#DISPLAY_320X240_QVGA_SPI_ILI9341 /belgilang /2,2 dyuym, 320x240, matn 11x8, uno, katta shrift, uno, 3v signallari, 9 pinli SPI displeyi Bodmer ko'rsatmasiga qarang-uno https://www.instructables.com/id/Arduino-TFT-display-and-font- kutubxona/ pastdagi zip -ni oling va gfx va 9341 -ni qo'lda arduino kutubxona papkasiga joylashtiring

4 -qadam: ANSI standarti

ANSI standarti
ANSI standarti

ANSI oddiy buyruqlar yordamida ekranni tozalash, kursorni boshqa joyga ko'chirish va ranglarni o'zgartirish imkonini beradi. Bir nechta fotosuratlarda old va orqa fon ranglarini ko'rsatuvchi demo mavjud. Bu qizil, sariq, yashil, ko'k, ko'k, ko'k, binafsha, qora, oq, quyuq kulrang, och kulrang va ranglar yorqin yoki xira bo'lishi mumkin, shuning uchun 16 ta oldingi va 16 ta fon ranglari mavjud.

"Grafik" rejimiga qo'shish haqida o'ylash mumkin, bu erda piksellar sonida va 256 yoki undan ko'p rangda yuqori aniqlikdagi rasmlarni chizish mumkin. Asosiy cheklovlar - bu Arduino -ning ichki xotirasi va ketma -ket havolani 9600 bodda yuborish uchun zarur bo'lgan vaqt.

Kodga belgini saqlash uchun bitta bayt va ranglarni saqlash uchun bitta bayt kerak (oldingi 3 bit, fon uchun 3, yorqin/xira va qalin uchun bittasi). Shunday qilib, 80x30 displeyga 2400x2 = 4800 bayt kerak bo'ladi, u Mega -ga mos keladi, lekin Uno emas.

5 -qadam: Ko'rsatadi

Ko'rsatadi
Ko'rsatadi
Ko'rsatadi
Ko'rsatadi
Ko'rsatadi
Ko'rsatadi

Yuqorida har bir alohida ko'rgazmaning fotosuratlari. Har bir displeyning old va orqa qismidan fotosuratlar bor va ular ebay yoki shunga o'xshash ko'plab brendlarni aks ettiradi. Ba'zilar I2C, ba'zilari parallel, ba'zilari katta shriftlarga ega, ba'zilari Wordstar va boshqa eski so'zlarni qayta ishlash dasturlariga mos keladigan 80 ta ustunni ko'rsatishi mumkin. Arduino kodi matnida batafsilroq ma'lumot bor.

6 -qadam: sxematik

Quyida ikkita fayl bor. Ular.txt deb nomlangan, chunki Instructables.zip fayllarini ishlamaydi. Ularni yuklab oling va.zip deb o'zgartiring.

Pdf fayllar sifatida sxemalar va taxtalar joylashuvi mavjud. Seeed PCB uchun paket ham mavjud. Bular gerberlar va agar siz Seeed -ga kirsangiz va uni yuklasangiz, u gerberlarni ko'rsatishi kerak, shundan so'ng siz PCBlarni olishingiz mumkin. 14 segmentli taxta katta va biroz qimmatroq, lekin kichkinasi Seeed 10x10 sm formatiga mos keladi, shuning uchun 5 yoki 10 ta taxta uchun juda mos keladi - aslida etkazib berish narxi taxtalarga qaraganda ko'proq.

PCB kerak bo'lmasdan, ko'pgina displeylardan foydalanish mumkin. PS2 soket modullari, RS232 qalqonlari/modullari hammasi ebay yoki shunga o'xshashda mavjud. I2C kabi ba'zi displeylar bir nechta ulash simlarini ishlatishi mumkin. Ba'zilar SSD1289 displeylari adapter platalari bilan ta'minlangan va to'g'ridan -to'g'ri Mega -ga ulanishi mumkin.

7 -qadam: Starburst displeyi

Starburst displeyi
Starburst displeyi

Yulduzli portlash displeyi kattaroq taxtadir va ko'paytirishni amalga oshirish uchun Nano va 74xx chiplaridan foydalanadi. Qancha displeylar xira bo'lmaguncha yoki miltillash juda sezilmasdan oldin ularni ko'paytirish mumkinligini aniqlash uchun ko'plab tajribalar o'tkazildi. Displeylar Futurlec -dan olingan https://www.futurlec.com/LEDDisp.shtml 14 segmentli displeylar kichik harflardan iborat bo'lishi mumkin va agar kerak bo'lsa, ularni kodda o'zgartirish mumkin. Ushbu fayllarni.txt -dan.zip -ga o'zgartiring

8 -qadam: Boshqa ekranlar uchun kod qo'shish

Boshqa displeylar uchun kod qo'shish mumkin. Birinchi qadam - biror narsani, biror narsani olish, ko'rsatish. Bu piksel yoki harf bo'lishi mumkin. Bu asosan haydovchilarni qidirish, yuklab olish, sinovdan o'tkazish, kompilyatsiya qilinmasligini aniqlash, keyin haydovchini chalkashliklarga olib kelmasligi uchun uni o'chirib tashlash, keyin yangisini sinab ko'rish. Keyingi qadam, to'g'ri rangda ko'rsatiladigan harfni olishdir, chunki bir xil ko'rinadigan displeylar ranglarni o'zgartiradi. Yaxshiyamki, odatda boshlang'ich kodidagi bitta raqam buni hal qiladi. Keyingi qadam, uno yoki mega, displey kengligi, balandligi, shrift o'lchami, klaviatura pinlari va qaysi drayver fayllaridan foydalanish kerakligini aniqlash uchun bir necha qatorlarni yozishdir. Ular kodning 39 -qatoridan boshlanadi va siz mavjud displeylarning formatini nusxalashingiz mumkin.

Keyingi - 451 -qatorga tushish va ishga tushirish kodini kiritish. Bu erda siz fon rangini va burilishni o'rnatasiz va displeyni ishga tushirasiz.

Keyin 544 -qatorga o'ting va belgini ko'rsatish uchun kodni qo'shing. Ba'zi hollarda, bu faqat bitta satr, masalan

my_lcd. Draw_Char (xPixel, yPixel, c, tftForecolor, tftBackcolor, 1, 0); // x, y, char, oldinga, orqaga, o'lcham, rejim

Keyin 664 -qatorga o'ting va pikselni chizish uchun kodni qo'shing. Shunga qaramay, ba'zida bu faqat bitta satr, masalan:

tft.drawPixel (xPixel, yPixel, tftForecolor);

Nihoyat, 727 -qatorga o'ting va kursor uchun vertikal chiziq chizish uchun kod qo'shing

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

Dastur ekran kengligi va shrift o'lchamiga qarab ekran buferi uchun qancha xotira ajratish kerakligi kabi narsalarni ajratadi.

9 -qadam: Wordstar namoyishi

Bu CP/M kompyuteri yordamida amalga oshirildi va bu erda ko'plab variantlar mavjud. Menga tezda sozlash kerak edi, shuning uchun ESP32 (Google ESP32 CP/M) emulyatsiyasi ishlatilgan. Boshqa ko'plab retro kompyuterlar mavjud, masalan, Grant Searle -ning FPGA emulyatsiyasi va haqiqiy Z80 -dan foydalanishni afzal ko'rganlar uchun RC2014. Ko'pgina retrokompyuterlar displey sifatida kompyuterda terminal dasturidan foydalanishga moyil, masalan, Teraterm. ANSI loyihasini tuzatishda, terminal va ANSI dasturlarini parallel ravishda ishga tushirish va ekranlar bir xil ko'rinishini ta'minlash talab qilingan.

10 -qadam: Qo'shimcha fikrlar

Displeylar kattalashgan sari ular sekin va sekinlashadi. Belgini qayta chizish, bu belgidagi har bir pikselni qayta chizishni o'z ichiga oladi, chunki fon rangini ham chizish kerak, shuning uchun hammasi pikselni qanchalik tez chizish mumkinligiga bog'liq. Ba'zi bir tuzatishlar mavjud, masalan, agar displey kirayotgan ma'lumotlarni ushlab tura olmasa, matnni ekran tamponida saqlang va boshqa matn kelmaganda to'liq ekranni qayta chizib ko'ring. Siz ko'radigan ko'plab displeylar. sotish ekranda chiroyli rasmni ko'rsatadi, lekin ular ko'rsatmasligi mumkin bo'lgan narsa - bu rasmni ko'rsatish uchun qancha vaqt ketganligi, va ba'zi hollarda 5 soniya yoki undan ko'p bo'lishi mumkin. I2C va SPI kichikroq displeylar uchun juda yaxshi, lekin 50 dan ortiq ustunlar 8 yoki 16 bitli ma'lumotlar avtobusiga muhtoj.

Wordstar 9600 boddan foydalanish uchun biroz qulay emas va 19200 matnni aylantirish uchun ancha qulayroq, lekin displeylar haqiqatan ham ushlab tura olmaydi.

Men ishlatgan eng tezkor displey 16 bitli parallel ma'lumotlar avtobusini yaratish uchun ikkita 8 bitli tashqi 512k ramli Propeller chipida edi. Har bir shrift qo'chqorga oldindan yuklangan. Ma'lumotlarni displeyga kiritish uchun 74xx hisoblagichli chiplardan iborat kaskad ishlatilgan. Bu shuni anglatadiki, protsessorda ma'lumotlarni olish va chiqarish jarayonida ichki ishlov berilmagan va yangilanish tezligi pervanel chipi pinni almashtira oladigan darajada tez bo'lgan. Ajablanarlisi shundaki, displeylar hatto 20 MGts tezlikda ham bunga qodir edi, shuning uchun to'liq ekranni atigi 30 millisekundda yangilash mumkin edi. Bunday tezlik mobil telefonlarda ko'rganingizdek, silliq siljish uchun etarli.

Pervanel chipi bundan o'n yil oldin zamonaviy bo'lgan va hozirda ko'p miqdordagi ichki qo'chqorga ega ESP8266 va ESP32 kabi variantlar mavjud. Biroq, bu chiplarda hali ko'p sonli pinlar yo'q, shuning uchun displeyga o'rnatilgan tashqi qo'chqor chipining eski skool usulini ishlatishning foydasi bor.

Kattaroq displeylar uchun LCD televizorli ekran yoki VGA ekranini ishlatish va kodlangan ANSI emulyatorlarini ko'rib chiqish arzonroq bo'lishi mumkin, masalan, VGA -ni to'g'ridan -to'g'ri boshqaradigan ESP32.

Umid qilamanki, siz ushbu loyihani foydali deb bilasiz.

Jeyms Moxham

Adelaida, Avstraliya

Tavsiya: