Kumpulan Terminal ANSI: 10 Langkah
Kumpulan Terminal ANSI: 10 Langkah

Video: Kumpulan Terminal ANSI: 10 Langkah

Video: Kumpulan Terminal ANSI: 10 Langkah
Video: Iwan Fals - Album Tragedi | Audio HQ 2025, Januari
Anonim
Koleksi Terminal ANSI
Koleksi Terminal ANSI

Proyek ini dimulai sebagai cara menampilkan 80 kolom teks pada layar LCD yang cocok untuk menjalankan pengolah kata kuno seperti Wordstar. Berbagai tampilan lainnya ditambahkan mulai dari ukuran 0,96 hingga 6 inci. Tampilan menggunakan satu PCB serta satu sketsa/program Arduino.

Ada koneksi serial RS232 untuk koneksi ke komputer dan soket PS/2 untuk keyboard. Menampilkan dipilih untuk mewakili yang umum tersedia dengan harga yang wajar. Tergantung pada memori yang dibutuhkan, tampilan menggunakan Arduino Nano, Uno atau Mega.

Langkah 1: Ringkasan Tampilan

Ringkasan Tampilan
Ringkasan Tampilan

Ada berbagai tampilan dengan resolusi 480x320. Ini memungkinkan font 9x5 dan teks kolom 80. Ada berbagai papan dengan resolusi 320x240, dengan font 9x5 dan juga font 7x3 yang sangat kecil untuk memungkinkan 80 teks kolom. Ada juga papan yang lebih kecil dengan 160x120 dan 128x64 piksel. Juga tampilan teks 20x4 dan 16x2, dan akhirnya papan tampilan starburst 12x2 empat belas segmen.

Beberapa tampilan menggunakan I2C, beberapa adalah SPI dan untuk tampilan yang lebih besar, bus data 16 bit untuk kecepatan pembaruan yang lebih cepat.

Tampilan yang lebih kecil menggunakan Arduino Uno. Papan yang lebih besar membutuhkan lebih banyak memori dan gunakan Mega. Papan tampilan starburst menggunakan Nano.

Pada titik ini saya mungkin menyebutkan foto-foto itu tidak adil untuk banyak tampilan. Layar oled putih kecil sangat tajam dan cerah yang mempersulit kamera untuk fokus, dan layar led starburst terlihat jauh lebih tajam dalam kehidupan nyata.

Langkah 2: Perangkat Keras

Perangkat keras
Perangkat keras

PCB telah dirancang untuk bekerja dengan sebanyak mungkin tampilan. Sangat mudah untuk mengubah antara Mega dan Uno menggunakan empat jumper. Ada resistor pembagi tegangan untuk tampilan yang berjalan pada 3V. Pin I2C dibawa keluar dalam grup sehingga tampilan dapat dipasang secara langsung. Terminal berjalan pada 9600 baud, dan sementara ini dapat ditingkatkan, banyak dari tampilan yang lebih besar tidak akan menggambar ulang lebih cepat dari ini. Keyboard PS2 dihubungkan ke soket DIN6. Keyboard USB juga akan berfungsi dengan colokan adaptor yang murah. Anda dapat melakukan tes loopback sederhana dengan menggabungkan pin 2 dan 3 pada D9 dan kemudian karakter yang diketik pada keyboard akan muncul di layar.

Dalam beberapa kasus, PCB tidak diperlukan dan dimungkinkan untuk membuat segala sesuatunya bekerja dengan modul yang telah dibuat sebelumnya yang tersedia di ebay, misalnya adaptor PS2, papan adaptor RS232, dan layar yang dipasang langsung ke papan arduino.

Ada juga papan terpisah untuk tampilan led starburst - lihat nanti di Instructable ini.

Langkah 3: Perangkat Lunak

Di bawah ini adalah file bernama Package.txt Ini sebenarnya adalah file.zip jadi unduh dan ganti namanya (Instructables tidak mengizinkan file zip). Termasuk sketsa/program Arduino dan ini adalah program tunggal yang digunakan oleh semua tampilan. Ada juga semua file.zip untuk setiap tampilan.

Pada awal program terdapat serangkaian pernyataan #define. Batalkan komentar yang sesuai dengan tampilan. Gunakan Tools/Board untuk memilih Uno, Mega atau Nano. Mengubah papan semudah mengubah satu baris dalam kode.

Salah satu tantangan bekerja dengan banyak tampilan adalah mereka semua tampaknya membutuhkan driver perangkat lunak mereka sendiri. Ini semua termasuk dalam paket. Pengujian termasuk mengambil paket dan menginstalnya kembali pada mesin baru sepenuhnya dari awal. Anda juga bisa mendapatkan kode sumber dari Github dan Adafruit dan LCDWiki. Ada beberapa contoh di mana versi yang lebih baru tidak berfungsi sehingga semua versi yang berfungsi disertakan dalam zip. Kadang-kadang ada contoh di mana satu driver menghentikan yang lain bekerja karena mereka menggunakan nama file yang sama tetapi versi yang berbeda. Ada deskripsi di komentar di bagian atas program yang menunjukkan cara menginstal setiap driver. Sebagian besar diinstal dari Arduino IDE dengan Sketch/Include Library/Add ZIP library dan ini mengambil file zip dan meletakkannya di c:\users\computername\mydocuments\arduino\libraries.

Jika Anda hanya menggunakan satu tampilan maka beberapa perpustakaan ini tidak perlu diinstal. Minimal Anda membutuhkan dua file keyboard dan satu untuk tampilan tertentu. Beberapa menampilkan kode berbagi. Ada instruksi lebih rinci di komentar di bagian atas program, termasuk mendapatkan perpustakaan gfx dari Adafruit.

Karena semua tampilan menggunakan sketsa Arduino yang sama, mengubah tampilan hanyalah masalah menghapus komentar salah satu baris di bawah ini:

// Tampilan yang berbeda, tinggalkan salah satu dari berikut ini tanpa komentar#define DISPLAY_480X320_LCDWIKI_ILI9486 // 3.5", 480x320, teks 80x32, mega, 16 bit, dihubungkan ke mega 36 pin (dan 2 pin daya).https://www.lcdwiki.com /3.5inch_Arduino_Display-Mega2560. Lebih lambat dari beberapa opsi di bawah tetapi font lebih mudah dibaca dan layar lebih besar, booting 5 detik //#define DISPLAY_480X320_MCUFRIEND_ILI9486 // 3.5", 480x320, teks 80x32, mega, font 5x9, hanya untuk mega tetapi hanya menggunakan pin uno, power, D0-D14, A0-A5, font lebih bagus daripada modul ssd1289 40 pin tapi jauh lebih lambat https://www.arduinolibraries.info/libraries/mcufriend_kbv https://github.com/adafruit/Adafruit -GFX-Library //#define DISPLAY_320X240_MCUFRIEND_ILI9341 // 2.4", 320x240, teks 53x24, mega //#define DISPLAY_320X240_SSD1289_40COL // 3.5", 320x240, teks 40x20, mega, pustaka UTFT (tidak ada font yang lebih kecil dari 8x12). Cepat //#define DISPLAY_320X240_SSD1289_53COL // 3.5", 320x240, teks 53x24, mega, font 9x5, dapat mengedit font. Cepat //#define DISPLAY_320X240_SSD1289_80COL // 3.5", 320x240, teks 80x30, mega, font 7x3 kecil, dapat mengedit font, driver lebih cepat dari dua di atas, tercepat dari semua ini sebagai drive langsung 16 bit ke layar daripada spi/i2c //#define DISPLAY_160X128_ST7735 // 1.8", 160x128, teks 26x12, uno (ILI9341) SPI 128x160 //#define DISPLAY_128X64_OLED_WHITE // 0.96", 128x64, text 21x6, mega, I2C, oled white on black (tft library untuk board ini plus semua kode plus keyboard kehabisan penyimpanan program, padahal kebutuhan ram sangat kecil, jadi hanya berjalan pada mega) //#define DISPLAY_20X4 // teks 20x4, uno, LCD dengan I2C, teks LCD https://www.arduino.cc/en/Reference/LiquidCrystal //#define DISPLAY_16X2 // teks 16x2, uno, dicolokkan ke uno, menggunakan pin 4 hingga 10 //#define DISPLAY_STARBURST // teks 12x2, nano, tampilan starburst dengan pengontrol nano //#define DISPLAY_320X240_QVGA_SPI_ILI9341 / / 2.2", 320x240, teks 11x8, uno, font besar, uno, sinyal 3v, tampilan SPI 9 pin lihat Instruksi Bodmer - uno https://www.instructables.com/id/Arduino-TFT-display-and-font- library/ dapatkan zip di bagian bawah dan letakkan gfx dan 9341 secara manual ke dalam folder library arduino

Langkah 4: Standar ANSI

Standar ANSI
Standar ANSI

ANSI memungkinkan perintah sederhana untuk membersihkan layar, memindahkan kursor dan mengubah warna. Pada beberapa foto ada demo yang menunjukkan semua warna latar depan dan latar belakang. Ini adalah merah, kuning, hijau, biru, cyan, magenta, hitam, putih, abu-abu tua, abu-abu muda, dan warnanya bisa cerah atau redup sehingga ada 16 warna latar depan dan 16 warna latar belakang.

Sangat mungkin untuk berpikir tentang menambahkan dalam mode 'grafis' di mana Anda dapat menggambar gambar dengan resolusi yang jauh lebih tinggi pada tingkat piksel dan dengan 256 warna atau lebih. Keterbatasan utama adalah memori internal Arduino dan waktu yang diperlukan untuk mengirim gambar ke link serial pada 9600 baud.

Kode membutuhkan satu byte untuk menyimpan karakter dan satu byte untuk menyimpan warna (3 bit untuk latar depan, 3 untuk latar belakang, satu untuk terang/redup dan satu untuk tebal). Jadi tampilan 80x30 akan membutuhkan 2400x2=4800 byte, yang akan muat dalam Mega tetapi tidak dalam Uno.

Langkah 5: Menampilkan

Menampilkan
Menampilkan
Menampilkan
Menampilkan
Menampilkan
Menampilkan

Di atas adalah foto dari masing-masing tampilan individu. Ada foto dari depan dan belakang setiap tampilan dan mereka mewakili banyak merek yang tersedia di ebay atau sejenisnya. Beberapa adalah I2C, beberapa paralel, beberapa memiliki font yang lebih besar, beberapa dapat menampilkan 80 kolom penuh yang cocok untuk Wordstar dan program pengolah kata lama lainnya. Ada lebih detail dalam teks kode arduino.

Langkah 6: Skema

Di bawah ini adalah dua file. Mereka dinamai sebagai.txt karena Instructables tidak menangani file.zip. Unduh dan ganti namanya menjadi.zip.

Ada skema dan tata letak papan sebagai file pdf. Ada juga paket untuk Seed PCB. Ini adalah gerber dan jika Anda pergi ke Seeed dan mengunggah ini, itu akan menampilkan gerber dan Anda kemudian bisa membuat PCB. Papan 14 segmen besar dan harganya sedikit lebih mahal, tetapi yang lebih kecil cocok dengan format 10x10cm yang disukai Seeed sehingga cukup masuk akal untuk 5 atau 10 papan - sebenarnya biaya pengiriman lebih mahal daripada papan.

Sangat mungkin untuk menggunakan banyak tampilan tanpa memerlukan PCB. Ada modul soket PS2, pelindung/modul RS232, semuanya tersedia di ebay atau sejenisnya. Beberapa tampilan seperti yang I2C hanya dapat menggunakan beberapa kabel penghubung. Beberapa seperti tampilan SSD1289 dilengkapi dengan papan adaptor dan dapat dihubungkan langsung ke Mega.

Langkah 7: Tampilan Starburst

Tampilan ledakan bintang
Tampilan ledakan bintang

Layar starburst adalah papan yang lebih besar dan menggunakan Nano dan sejumlah chip 74xx untuk melakukan multiplexing. Ada banyak eksperimen untuk menentukan berapa banyak tampilan yang dapat Anda multipleks sebelum menjadi terlalu redup atau kedipan menjadi terlalu mencolok. Tampilan berasal dari Futurlec https://www.futurlec.com/LEDDisp.shtml Tampilan 14 segmen juga dapat melakukan huruf kecil dan ini dapat dimodifikasi dalam kode jika diperlukan. Ganti nama file-file ini dari.txt menjadi.zip

Langkah 8: Menambahkan Kode untuk Tampilan Lainnya

Dimungkinkan untuk menambahkan kode untuk tampilan lain. Langkah pertama adalah mendapatkan sesuatu, apa saja, untuk ditampilkan. Itu bisa berupa piksel atau huruf. Ini terutama melibatkan pencarian driver, mengunduh satu, mengujinya, menemukannya tidak dapat dikompilasi, kemudian menghapus driver itu sehingga tidak menyebabkan kebingungan nanti, kemudian mencoba yang baru. Langkah selanjutnya adalah mendapatkan huruf untuk ditampilkan dalam warna yang benar, karena beberapa tampilan yang terlihat identik sebenarnya akan membalikkan warna. Untungnya biasanya hanya satu nomor dalam kode startup yang akan memperbaiki ini. Langkah selanjutnya adalah menulis beberapa baris untuk menentukan apakah akan menggunakan uno atau mega, lebar tampilan, tinggi, ukuran font, pin keyboard, dan file driver mana yang akan digunakan. Ini dimulai pada baris 39 dalam kode dan Anda dapat menyalin format tampilan yang ada.

Selanjutnya turun ke baris 451 dan tambahkan kode startup. Di sinilah Anda mengatur warna latar belakang dan rotasi dan memulai tampilan.

Selanjutnya adalah pergi ke baris 544 dan tambahkan kode untuk menampilkan karakter. Dalam beberapa kasus ini hanya satu baris, misalnya

my_lcd. Draw_Char(xPixel, yPixel, c, tftForecolor, tftBackcolor, 1, 0); // x, y, char, kedepan, belakang, ukuran, mode

Selanjutnya adalah pergi ke baris 664 dan tambahkan kode untuk menggambar piksel. Sekali lagi, terkadang ini hanya satu baris misalnya:

tft.drawPixel(xPixel, yPixel, tftForecolor);

Akhirnya pergi ke baris 727 dan tambahkan kode untuk menggambar garis vertikal untuk kursor, misalnya

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

Program memilah hal-hal seperti berapa banyak memori yang dialokasikan untuk buffer layar berdasarkan lebar layar dan ukuran font.

Langkah 9: Demonstrasi Wordstar

Ini dilakukan dengan menggunakan komputer CP/M, dan ada banyak pilihan yang tersedia di sini. Saya membutuhkan sesuatu yang cepat untuk disiapkan, jadi gunakan emulasi pada ESP32 (Google ESP32 CP/M). Ada banyak komputer retro lain yang tersedia, misalnya, emulasi FPGA Grant Searle, dan RC2014 untuk mereka yang lebih suka menggunakan Z80 asli. Banyak retrokomputer cenderung menggunakan program terminal pada PC sebagai tampilan, misalnya Teraterm. Banyak debugging proyek ANSI ini melibatkan menjalankan program terminal dan program ANSI secara paralel dan memastikan layar tampak identik.

Langkah 10: Pikiran Lebih Lanjut

Seiring bertambahnya ukuran tampilan, mereka menjadi lebih lambat dan lebih lambat. Menggambar ulang karakter melibatkan menggambar ulang setiap piksel dalam karakter itu karena warna latar belakang harus digambar juga, jadi semuanya bermuara pada seberapa cepat Anda dapat menggambar piksel. Ada beberapa penyesuaian, misalnya jika tampilan tidak dapat mengikuti data yang masuk, cukup simpan teks di buffer layar dan kemudian lakukan gambar ulang layar penuh ketika tidak ada lagi teks yang masuk. Banyak tampilan yang Anda lihat sale menunjukkan gambar yang cantik di layar, tetapi yang mungkin tidak mereka tampilkan adalah berapa lama waktu yang dibutuhkan untuk menampilkan gambar itu, dan dalam beberapa kasus bisa 5 detik atau lebih. I2C dan SPI bagus untuk tampilan yang lebih kecil tetapi apa pun yang lebih dari 50 kolom membutuhkan bus data 8 atau 16 bit.

Wordstar sedikit berat untuk digunakan pada 9600 baud dan 19200 jauh lebih dapat digunakan untuk menggulir teks, tetapi tampilannya benar-benar tidak dapat mengikuti.

Tampilan tercepat yang saya gunakan adalah pada chip Propeller dengan dua chip ram 512k eksternal 8 bit, untuk membuat bus data paralel 16 bit. Setiap font telah dimuat sebelumnya ke dalam ram. Kaskade chip penghitung 74xx digunakan untuk mencatat data ke layar. Ini berarti tidak ada pemrosesan internal di dalam CPU yang mengambil dan mengeluarkan data, dan kecepatan refresh secepat chip Propeller dapat mengganti pin. Anehnya, layar mampu mengikuti ini, bahkan pada 20Mhz, sehingga memungkinkan untuk melakukan pembaruan layar penuh hanya dalam 30 milidetik. Kecepatan semacam itu cukup cepat untuk melakukan pengguliran dengan lancar, seperti yang Anda lihat di ponsel.

Chip Propeller lebih canggih dari sepuluh tahun yang lalu, dan sekarang ada lebih banyak pilihan termasuk ESP8266 dan ESP32 yang memiliki ram internal dalam jumlah besar. Namun, chip tersebut masih belum memiliki jumlah pin yang besar, jadi masih ada manfaat dalam menggunakan cara lama dari chip ram eksternal yang di-clock ke layar.

Untuk tampilan yang lebih besar mungkin lebih murah menggunakan layar LCD TV atau layar VGA dan melihat beberapa emulator ANSI yang telah dikodekan, misalnya ESP32, yang menggerakkan VGA secara langsung.

Saya harap Anda menemukan proyek ini bermanfaat.

James Moxham

Adelaide, Australia