pengemudi 7 segmen. Penjelasan tambahan untuk kontrol efek

Fitur khas:

  • Antarmuka serial yang kompatibel dengan SPI/QSPI/MICROWIRE™ 26 MHz berkecepatan tinggi
  • Tegangan suplai dari 2,7 V hingga 5,5 V
  • Menyediakan manajemen indikator:
    hingga 16 bit tanda (7 segmen)
    hingga 8 bit tanda (14 segmen)
    hingga 128 LED diskrit
    kombinasi jenis indikator
  • Menyediakan kontrol indikator LED katoda umum monokrom dan dua warna
  • Font ASCII 104 karakter bawaan untuk 14 dan 16 indikator segmen dan font heksadesimal untuk 7 indikator segmen
  • Kontrol kedipan otomatis untuk setiap segmen
  • Mode mati daya hemat daya, konsumsi arus 10 µA (umum)
  • Kontrol tingkat kecerahan digital 16 langkah
  • Menghapus indikator saat menyalakan daya
  • Penggerak segmen memiliki batasan laju perubahan tegangan keluaran untuk membatasi EMI
  • Lima input port tujuan umum dapat dikonfigurasi untuk melakukan polling dan melakukan debounce hingga 32 tombol dengan menekan tombol n secara bersamaan
  • Output interupsi IRQ dalam mode debouncing kunci yang dipindai
  • Rumah SSOP 36-pin dan DIP 40-pin
  • Versi standar dengan kisaran suhu pengoperasian otomotif

Aplikasi:

  • Kotak dekoder, dekoder
  • Meter digital
  • Peralatan Rumah Tangga
  • Aplikasi otomotif
  • Indikator grafis digital
  • Peralatan audio/video

Diagram fungsional:

Diagram koneksi tipikal:

Lokasi pin:

Keterangan:

MAX6954 adalah driver LED ringkas yang menghubungkan mikroprosesor dengan berbagai opsi tampilan LED segmen 7/14/16 menggunakan antarmuka yang kompatibel dengan 4-kabel, serial SPI™, atau QSPI™. Antarmuka serial dapat mengalir ke beberapa IC. IC MAX6954 mampu mengelola indikator yang berisi: hingga 16 bit karakter (7 segmen); hingga 8 bit tanda (14 segmen); hingga 128 LED diskrit, dengan tegangan suplai rendah mulai dari 2,7 V. Driver memiliki lima saluran ekspander I/O (atau port I/O tujuan umum), beberapa atau semuanya dapat dikonfigurasi untuk menginterogasi dan menghilangkan pantulan keyboard matriks terdiri dari maksimal 32 kunci.

Di dalam IC terdapat font ASCII 104 karakter penuh, 14 dan 16 segmen, font heksadesimal untuk indikator 7 segmen, sirkuit pemindaian multipleks, driver katoda dan anoda, dan RAM statis yang menyimpan status setiap bit. Arus segmen maksimum untuk semua bit indikator diatur menggunakan satu resistor eksternal. Intensitas pelepasan muatan dapat disesuaikan secara independen untuk setiap pelepasan menggunakan sistem kontrol kecerahan digital 16 langkah bawaan. MAX6954 memiliki fitur mode mati daya hemat daya, register batas pemindaian yang memungkinkan pengguna mengatur tampilan dari 1 hingga 16 digit, sistem kontrol kedipan segmen (disinkronkan untuk operasi multi-driver jika perlu), dan mode uji yang memaksa semua LED menyala. Driver segmen LED memiliki batasan laju perubahan tegangan untuk membatasi EMI.

Hari ini kami akan menyajikan cara lain untuk menghemat banyak kaki mikrokontroler jika Anda perlu menghubungkan indikator LED tujuh segmen. Kami akan berbicara tentang penggunaan driver khusus MAX7221 adalah Driver memungkinkan Anda mengontrol indikator tujuh segmen (dengan katoda umum), strip LED, atau Anda dapat menggunakannya untuk mengontrol hingga 64 LED secara bersamaan. Drivernya sendiri dikendalikan melalui antarmuka SPI, dengan frekuensi operasi antarmuka maksimum yang didukung hingga 10 MHz.

Pinout kaki sirkuit mikro:

1 - MAKAN malam. Masukan data serial. Data dimuat ke dalam register geser 16-bit di tepi naik sinyal clock.

2,3,5-8,10,11 - DIG0-DIG7. Terminal untuk menghubungkan katoda umum indikator.

4.9 - GND. Koneksi darat

12 - BEBAN (C.S.) di MAX7221, data dimuat ke dalam register geser penerima hanya ketika sinyal CS rendah (yaitu, hanya ketika chip “dipilih” dalam istilah SPI). 16 bit terakhir yang diterima juga diingat dan diproses, hal ini juga terjadi pada ujung depan sinyal CS.

13 - CLK. Input sinyal jam digunakan untuk merekam data.

14-17, 20-23 - SEG A-SEG G, DP. Kesimpulan untuk menghubungkan segmen dari indikator tujuh segmen.

18 - ISET. Sebuah resistor dihubungkan ke pin ini (kaki kedua resistor ke plus), yang memungkinkan Anda mengatur arus puncak segmen dan dengan demikian mengatur kecerahan segmen. Resistansi minimum resistor ini harus 9,53 kOhm, yang kira-kira setara dengan arus segmen 40 mA.

19 - V+. Catu daya "+" terhubung di sini.

24 - KELUAR. Keluaran data serial. Kaki ini diperlukan jika Anda perlu menghubungkan dua atau lebih driver secara bersamaan.

Prinsip bekerja dengan chip MAX7221

Faktanya, MAX7221 (dan analognya MAX7219) pada prinsipnya mirip dengan register 74HC595, dengan satu-satunya perbedaan adalah bahwa 16 bit data dimuat ke dalam chip. 8 bit pertama yang dimuat diperlukan untuk memilih register tempat data harus ditulis. 8 bit berikutnya adalah data yang perlu ditulis ke register. Sederhananya, pertama-tama kita memberi tahu chip tempat menulis data, lalu menulis data yang diperlukan ke alamat yang dipilih.

Yang menarik dari driver ini adalah memiliki dua mode pengoperasian. Yang pertama adalah bekerja dalam mode buffer reguler dengan kontrol langsung pada setiap segmen.

Mode kedua, yang disebutKode BCD B , yang memungkinkan Anda menyederhanakan tampilan informasi pada indikator karena dekoder karakter bawaan. Ngomong-ngomong, simbolnya sangat sedikit, hanya 16 - ini adalah angka 0-9, tanda "-", simbol kosong dan 4 banteng - "E", "H", "L", "P" ( Kira-kira kata apa yang bisa dibuat? :)) . Misalnya, untuk mengeluarkan angka 2 pada digit kedua, kita perlu mengirimkan alamat digit kedua (8 bit) dan kemudian mengirimkan 2 (8 bit lagi). Kita akan membicarakan mode operasi ini di artikel berikutnya, tetapi sekarang kita akan melihat contoh cara bekerja dengan driver dalam mode non-decoding.

Untuk mengontrol pengemudi, Anda harus terlebih dahulu membiasakan diri dengan peta alamat register.

Daftar Tidak ada operasi akan diperlukan saat menghubungkan beberapa driver secara bersamaan. Untuk mengakses, misalnya, driver ketiga dalam rantai tanpa mempengaruhi pengoperasian dua driver pertama, Anda perlu mengakses register “No-op” untuk dua driver pertama. Karena alamat register ini adalah nol, hal ini sangat mudah dilakukan: pertama, dalam 16 siklus clock, kita mengirimkan data untuk register ketiga, kemudian kita mengatur jalur data ke nol dan klik 2 kali lagi untuk 16 siklus clock. Akibatnya, paket pertama yang dikirim akan dimuat ke register ketiga, dan dua paket berikutnya (dimuat ke register pertama dan kedua) akan memiliki alamat nol, yaitu mereka akan mengakses register "No-op".

Angka 0-7 register yang bertanggung jawab untuk mengelola bit indikator. Digitnya diberi nomor dari kiri ke kanan. Ini sangat mudah, misalnya, untuk mengubah satu digit pada indikator Kami pindah ke alamat register yang bertanggung jawab atas digit tersebut, sehingga tidak menyentuh semua digit lainnya.

Daftar Mode Dekode bertanggung jawab atas mode pengoperasian driver, yang disebutkan tepat di atas: mode tersebut dapat diatur ke mode decoding karakterKode BCD B dan mode tanpa decodingTidak ada dekode.

Melalui register Intensitas Kecerahan indikator disesuaikan dengan perangkat lunak (!). Hal yang berguna untuk berbagai kesempatan, mulai dari kemungkinan penghematan energi hingga indikasi mode pengoperasian perangkat yang berbeda.Secara total, Anda dapat memilih salah satu dari 16 tingkat kecerahan.

Daftarkan Batas Pemindaian Jumlah digit indikator yang digunakan diatur. Jika Anda berencana untuk menggunakan kurang dari 8, maka disarankan untuk menonaktifkan yang tidak digunakan. Kecepatan refresh indikator, serta arus puncak yang melalui segmen, akan bergantung pada hal ini. Saat semua 8 bit diaktifkan, kecepatan refreshnya kira-kira 800 Hz. Dengan berkurangnya jumlah digit, frekuensinya bertambah;8*800/N (di mana N adalah jumlah digit). Arus puncak yang melalui segmen juga meningkat ketika bit yang tidak digunakan dimatikan.

Melalui register Shutdown Anda dapat mengaktifkan mode hemat daya, di mana semua indikator padam, namun data dan status register tidak hilang. Mode hemat energi diaktifkan dengan merekam nol ke register penutupan. Saat mendaftar di sana unit Pengemudi keluar dari mode hemat daya.

Konsumsi daya dalam mode ini turun menjadi 150 µA.

Tes Tampilan digunakan untuk memeriksa indikator yang terhubung; dalam mode uji, semua segmen indikator dihidupkan. Sekalipun pengemudi dalam mode hemat daya, mode uji akan mengaktifkan segmen tersebut.

Setelah dinyalakan, semua register driver direset, jadi langkah pertama adalah mengkonfigurasinya. Pengaturan driver (menulis nilai yang diperlukan dalam registerMode Dekode, Intensitas, Batas Pemindaian, Tes Shutdown dan Tampilan ) harus dilakukan setiap kali listrik dihidupkan, nilai-nilai ini tidak disimpan.

Bekerja dengan pengemudi dalam mode Tanpa dekode

Dalam modus Tidak ada dekodekita dapat mengontrol setiap segmen dari peringkat mana pun secara langsung. DENGANKorespondensi antara segmen indikator dan bit dalam register Digit ditunjukkan pada gambar di bawah danuntuk menerangi segmen tertentu, perlu menulis ke bit yang sesuaisatuan.


Misalnya: kita perlu menampilkan angka 1 pada digit pertama indikator 8-bit. Pertama, kita mengirimkan 8 bit pertama alamat register yang sesuai dengan digit pertama (lihat tabel dengan peta alamat register). Penomoran digit indikatornya dari kiri ke kanan (seperti ini 0.1.2.3.4.5.6.7.), jadi digit pertama di sebelah kanan (Digit 7) akan berisi alamat &h08, inilah nilai yang kami kirim. Kemudian kami mengirimkan data yang harus mencakup segmen B dan C; sesuai dengan tabel korespondensi (lihat di atas), bit D5 dan D4 bertanggung jawab untuk segmen ini. Jadi 8 bit berikutnya yang perlu kita kirim adalah: 00110000 , atau jika dalam heksadesimal - &h48. Kita dapat mengontrol digit dan segmen indikator lainnya dengan cara serupa. Tidak ada yang rumit, bukan? ;)

Dan sekarang contoh kecil yang berfungsi. Saya hanya memiliki indikator empat digit, yang cukup cocok untuk mendemonstrasikan kemampuannya. Terhubung sesuai dengan diagram di bawah ini. Petunjuk yang tidak terpakai dapat dibiarkan menggantung di udara. Mikrokontroler Attiny2313 di-clock dari osilator internal pada 8 MHz, tegangan suplai rangkaian adalah 5 volt.

Kode demo di Bascom-AVR

$regfile = "attiny2313.dat"
$kristal = 8000000
$hwstack = 32
$swstack = 10
$ukuran bingkai = 40

Konfigurasi Pelabuhan = Keluaran

CsAlias Pelabuhan. 1
Ser_clkAlias Pelabuhan. 2
Ser_dataAlias Pelabuhan. 3

Redup A SebagaiKata
Redup Angka (8 ) sebagaibyte
Redup Y Sebagaibyte
Redup Disp_num Sebagaibyte
Redup Tampilan_data Sebagaibyte
Redup Digit_str SebagaiRangkaian* 4
Redup Temp_str SebagaiRangkaian* 3
Gosub Max7219_setup

Digit_str= "Bagus" "string yang akan ditampilkan
Gosub Mempersiapkan "panggil subrutin untuk menyiapkan dan mengirim data

Tunggu 3

Melakukan "di loop utama kita cukup mencetak angka yang bertambah 1
Tunggu 200
Termasuk A "sebuah variabel yang nilainya ditampilkan pada indikator
Digit_str= Str(A)
Digit_str= Format(digit_str, "0000")
Gosub Mempersiapkan
Lingkaran

Akhir

“Mempersiapkan data untuk transmisi
Mempersiapkan:
Melakukan
Untuk kamu = 1 Ke 4
Temp_str= Pertengahan(digit_str, Y, 1)
MemilihKasus Temp_str
Kasus"0" : Temp_str = "126" "&b01111110
Kasus"1" : Temp_str = "48" "&b00110000
Kasus"2" : Temp_str = "109" "&b01101101
Kasus"3" : Temp_str = "121" "&b01111001
Kasus"4" : Temp_str = "51" "&b00110011
Kasus"5" : Temp_str = "91" "&b01011011
Kasus"6" : Temp_str = "95" "&b01011111
Kasus"7" : Temp_str = "112" "&b01110000
Kasus"8" : Temp_str = "127" "&b01111111
Kasus"9" : Temp_str = "123" "&b01111011
Kasus"." : Temp_str = "128" "&b10000000
"Anda dapat memasukkan sendiri karakter yang diperlukan
Kasus"A" : Temp_str = "119" "&b01110111
Kasus"C" : Temp_str = "78" "&b01001110
Kasus"E" : Temp_str = "79" "&b01001111
Kasus"G" : Temp_str = "94" "&b01011110
Kasus"o" : Temp_str = "29" "&b00011101
Kasus"d" : Temp_str = "61" "&b00111101
Kasus" " : Temp_str = "0" "&b00000000
"dan sebagainya...
AkhirMemilih
Angka(kamu) = Val(temp_str)

Disp_num=Y "keakraban (digit) yang kami tampilkan digit saat ini

Tampilan_data= Angka(y) “data yang kami kirim ke kategori yang dipilih
Gosub Disp_tulis
Berikutnya Y
Lingkaran Sampai kamu=5 “Ketika data telah di-output ke seluruh 4 bit, kita kembali ke loop utama
Kembali

"Kami mentransfer data ke max7221
Disp_tulis:
Ser_data= 0
Ser_clk= 0
Cs= 0
Pergeseran Ser_data, Ser_clk, Disp_num, 1 "kirimkan nomor pangkatnya
Pergeseran Ser_data, Ser_clk, Disp_data, 1 "kirim data ke kategori ini
Cs= 1
Kembali

"menginisialisasi dan mengatur register max7221
Max7219_setup:
Disp_num= & H0C : Tampilan_data = 0 "Mode mati (0 diaktifkan, 1 dinonaktifkan)
Gosub Disp_tulis
Disp_num= & H09 : Tampilan_data = 0 "mode kontrol langsung dari segmen indikator
Gosub Disp_tulis
Disp_num= & H0A : Tampilan_data = 10 "tingkat cahaya segmen (0-minimum, 15-maksimum)
Gosub Disp_tulis
Disp_num= & H0B : Tampilan_data = 3 "jumlah digit yang digunakan (dihitung dari 0)
Gosub Disp_tulis
Disp_num= & H0F : Tampilan_data = 0 "mode uji dinonaktifkan (0-dinonaktifkan, 1-diaktifkan)
Gosub Disp_tulis
Disp_num= & H0C : Tampilan_data = 1
Gosub Disp_tulis
Kembali



Kode ini dikomentari dengan baik, jadi saya harap tidak diperlukan penjelasan tambahan. Dan dibawah ini adalah hasil pengerjaannya

Ufff... Akhirnya sampai ke besi solder! Sekarang mari kita lakukan sesuatu yang menarik.

Sebelumnya kita mengatakan “A” dengan mengumpulkan, sekarang kita tinggal mengatakan “B” dan membuat perangkat keluaran, itulah yang akan kita lakukan hari ini. Kami akan memiliki indikator 7-segmen sebagai perangkat "B". Tapi bukan hanya satu indikator, tapi seluruh rangkaian indikator tujuh segmen, dengan panjang tak terbatas dan dengan banyak efek tampilan! Menarik? Kalau begitu, mari kita mulai!

Indikator tujuh segmen adalah perangkat tampilan yang agak ambigu. Karena fakta bahwa mereka dirancang untuk menampilkan angka (meskipun, tentu saja, huruf juga dapat ditampilkan, tetapi secara kondisional dan tidak semua), jangkauan penerapannya tidak terlalu luas. Namun ada kalanya diperlukan tampilan angka yang cerah dan jelas, yang juga harus terlihat dari jauh, dan di sini tampilan tujuh segmen tidak ada bandingannya.

Seringkali, ketika kita berbicara tentang indikator tujuh segmen, tersirat bahwa indikator tersebut termasuk dalam rangkaian dengan indikasi dinamis, dalam hal ini hanya satu simbol yang menyala secara bergantian, dan pada frekuensi di atas 50 Hz, tercipta ilusi bahwa semua simbol menyala secara bersamaan. Skema ini sangat umum sehingga 3-4 indikator digital hanya mempunyai keluaran untuk tampilan dinamis. Metode penyertaan ini tentu saja memiliki kelebihan, tetapi jika menyangkut jumlah digit yang lebih besar dari empat (dan terlebih lagi jika tidak diketahui berapa jumlahnya) - masalah dimulai dengan indikasi yang sangat dinamis ini - the kecerahan cahaya turun dan kedipan menjadi terlihat. Jelasnya, untuk garis indikator tujuh segmen dengan panjang tidak terbatas, metode koneksi ini sama sekali tidak cocok. Apa yang harus dilakukan dalam kasus ini? Mari kita lakukan sesuatu yang tidak biasa - nyalakan indikator kita untuk cahaya statis (konstan). Untuk memungkinkan hubungan seperti itu, kita memerlukan indikator tujuh segmen satu digit - misalnya, ini:

Selain itu, untuk menerangi segmen indikator yang diperlukan, kita memerlukan driver LED. Agar tidak menambah biaya jalur kami (chip driver cukup mahal), kami akan menggunakan register geser yang murah dan umum 74HC164. Ini akan sedikit mengurangi kecerahan cahaya, namun secara signifikan akan mengurangi biaya keseluruhan perangkat. Untuk mengontrol penggaris kita akan menggunakan mikrokontroler ATtiny13– yang lebih besar tidak diperlukan. Register geser dikendalikan hanya oleh dua baris ( Data, Jam) dan dinyalakan secara berurutan, yang berarti tidak ada perbedaan untuk rangkaian kendali register, berapa banyak yang ada dalam satu baris tiga atau seratus dua puluh tiga. Ini berarti bahwa kita dapat membuat penggaris kita menjadi tidak berdimensi, yaitu, kita dapat menghubungkan indikator tambahan ke penggaris kapan saja atau menghapus indikator yang tidak diperlukan. Diagram perangkat terlihat seperti ini:

Terlihat dari diagram, indikator tujuh segmen dengan register 74HC164 dipasang pada papan terpisah dengan konektor di kedua sisinya sehingga beberapa indikator dapat dirangkai menjadi satu garis. Papan kontrol (driver jalur) pada ATtiny13 mengontrol semua indikator, berapa pun jumlahnya. Selain itu, firmware menyediakan kemampuan untuk menggabungkan indikator dengan anoda umum dan katoda umum ke dalam saluran. Simbol ditampilkan dari kanan ke kiri. Opsi tampilan ini cocok untuk kasus di mana tidak diketahui berapa banyak indikator yang disertakan dalam baris - karakter terakhir yang dimasukkan selalu ada di indikator pertama. Selain sinyal data ( Data) dan sinyal jam data ( Jam), pengemudi menghasilkan sinyal “ /OE” (Output Enable) untuk menghindari kedipan segmen saat menggeser karakter per huruf besar-kecil. Pada saat data dipindahkan melintasi register, driver menyetel jalur /OE ke level tinggi; rangkaian kontrol indikator berdasarkan level sinyal ini harus melarang keluaran data ke indikator. Dalam desain rangkaian ini, sinyal ini tidak digunakan karena tidak adanya pin pada register geser 74HC164 yang mengubah keluaran menjadi keadaan resistansi tinggi, namun Anda dapat menggunakan sinyal ini untuk mematikan keluaran umum indikator (melalui transistor) atau gunakan sirkuit mikro lain yang memiliki input yang sesuai.

Algoritma pengoperasian perangkat.
Saya sudah lama berpikir tentang bagaimana membuat pengontrolan penggaris menjadi sederhana dan tidak memberatkan mikrokontroler proyek Anda. Tujuan utama yang saya kejar adalah untuk mentransfer fungsi kontrol sebanyak mungkin ke pengemudi lini, tetapi pada saat yang sama tidak kehilangan kemungkinan kontrol fleksibel dari proyek Anda. Hasilnya, algoritma operasi berikut dikembangkan:

Pengemudi penggaris berinteraksi dengan proyek Anda menggunakan UART(Kecepatan 9600 , 8 sedikit data 1 berhenti sedikit, sedikit paritas TIDAK). Pengemudi berfungsi baik untuk penerimaan maupun transmisi (meskipun yang terakhir tidak begitu penting dan Anda tidak dapat menggunakan fitur ini, sehingga mengurangi kendali pengemudi menjadi hanya satu jalur).
Angka, huruf latin, dan karakter kontrol dapat dikirimkan ke pengemudi. Transmisi dilakukan dalam kode ASCII (contoh: angka - “123”, huruf - “Abc”, karakter kontrol - “>”). Karakter lain diabaikan.

Pengemudi mengirimkan simbol efek akhir melalui UART. Hanya ada dua dari mereka - “ V" Dan " D" Hal ini diperlukan agar dapat mengetahui kapan efek telah berakhir dan Anda dapat mengirimkan perintah efek selanjutnya untuk membentuk efek komposit yang kompleks.

Angka dan huruf latin yang dikirimkan untuk ditampilkan ditulis ke dalam buffer (ukuran buffer dapat 16, 32, 64 karakter dan dipilih sesuai kebutuhan proyek). Tidak ada buffer overflow, ini bersifat siklik (karakter baru ditulis di atas karakter terlama). Karakter kontrol tidak ditulis ke buffer - mereka mengaktifkan fungsinya segera setelah diterima melalui UART (misalnya: saat mengirim baris “abcd>” dan “ab>cd” hasilnya akan sama). Simbol muncul pada garis indikator dari buffer, dan cara tampilannya bergantung pada efek yang diaktifkan. Opsi ini adalah yang paling tidak memerlukan banyak sumber daya untuk pengontrol proyek Anda, karena rangkaian karakter yang dimasukkan ke dalam buffer ditampilkan dengan berbagai efek hanya dengan menggunakan sumber daya driver.

Secara default, driver menampilkan simbol yang diterima pada penggaris tanpa efek apa pun. Jika angka atau huruf latin dikirimkan melalui UART (misalnya, “1”, “4”, “A”, “S” “d” ...), maka akan langsung ditampilkan pada penggaris dari kanan ke kiri, dengan karakter berikutnya menggeser karakter sebelumnya ke kiri.
Berikut ini penjelasan seluruh karakter yang dapat dikirimkan kepada driver.


Karakter yang ditampilkan.
Pengemudi dapat menampilkan angka dan huruf latin (huruf besar dan kecil ditampilkan secara merata), serta spasi dan koma desimal.


Kontrol karakter.
Untuk memilih mode pengoperasian penggaris atau mengaktifkan efek khusus, Anda perlu mengirimkan karakter khusus melalui UART. Seperti yang saya tulis sebelumnya, karakter kontrol mulai bekerja segera setelah diterima melalui UART, dan tidak masuk ke buffer. Oleh karena itu, mereka dapat dikirim langsung ke baris pesan.
Contoh: “_Abc>”, dengan “Abc” adalah pesan yang ditampilkan, dan “_” dan “>” adalah karakter kontrol.


Berikut adalah daftar simbol yang mengontrol mode pengoperasian indikator:

“)” – izin untuk menampilkan buffer secara otomatis(diaktifkan secara default).
Ketika pembaruan otomatis diaktifkan, buffer, dengan jangka waktu tertentu, digambar ulang pada penggaris. Setiap karakter yang diterima melalui UART dan ditulis ke buffer akan langsung ditampilkan pada penggaris.

“(“ – melarang tampilan otomatis buffer.
Semua karakter yang diterima melalui UART terus ditulis ke buffer driver, namun tidak ada perubahan yang terjadi pada baris (“pesan terakhir menyala”). Melarang pembaruan baris otomatis mungkin diperlukan jika Anda perlu menampilkan seluruh baris sekaligus, bukan karakter demi karakter, atau untuk menyiapkan pesan berikutnya tanpa mengubah pesan sebelumnya.
Contoh: string “(2314” yang dikirimkan melalui UART tidak akan ditampilkan pada penggaris, tetapi akan ditulis dalam buffer. Jika kita lebih lanjut mengaktifkan tampilan otomatis - “)”, maka kita akan melihat kata “2314” pada penggaris. Untuk menampilkan seluruh string pesan, dan tidak berdasarkan fakta transmisi karakter melalui UART, Anda perlu mengirimkan kombinasi berikut “(2314)”. Hal ini relevan jika karakter 2, 3, 1, 4 tidak langsung dikirimkan melalui UART, tetapi dalam jangka waktu tertentu.

“!” – keluaran paksa dari buffer ke saluran.
Diperlukan untuk menampilkan buffer satu kali pada penggaris ketika pembaruan otomatis dinonaktifkan.
Contoh: melarang tampilan otomatis “(“, mengirimkan karakter “2314”, memaksa mereka untuk menampilkan “!”.

“_” (garis bawah) – menghapus buffer.
Setelah menerima karakter ini, buffer akan segera dihapus. Jika tampilan buffer otomatis dinonaktifkan, tidak ada perubahan yang terjadi pada penggaris karena hanya buffer yang dihapus. Untuk menghapus penggaris, dalam hal ini, Anda perlu memulai tampilan buffer secara otomatis atau mengirim simbol keluaran buffer paksa "!".

“[“ – mengaktifkan mode inversi karakter.
Dalam mode inversi, karakter yang ditampilkan pada garis dibalik (sedikit demi sedikit). Mode ini diperlukan jika Anda telah berhasil menggabungkan indikator dengan common anode dan common katode menjadi satu jalur. Ketika sinyal terbalik diterapkan ke indikator koneksi yang berlawanan, indikator koneksi yang berlawanan akan menampilkan simbol dengan benar. Sekalipun seluruh baris indikator tidak sesuai dengan firmware, di awal sesi cukup mengirimkan simbol “[“ dan semuanya akan berfungsi dengan benar.

“]” – menonaktifkan mode inversi karakter (diaktifkan secara default).
Contoh: Jika firmware untuk indikator dengan common anode, dan indikator dihidupkan seperti ini: OA-OK-OA. Kita melewati garis “35” dan mendapatkan 345 pada garis tersebut. Jika kita melewatinya seperti ini – “345” maka kita mendapatkan “3-baris-apa-5”.

“*” – “hilangnya” karakter demi karakter dari konten baris.
Simbol-simbol pada garis secara berurutan memadamkan segmen-segmennya hingga “menghilang” sepenuhnya (isi buffer tetap tidak tersentuh). Di akhir efek, simbol “ ditampilkan di UART D

“^” – “manifestasi” karakter demi karakter dari konten baris.
Simbol-simbol pada garis secara berurutan menerangi segmen-segmennya hingga benar-benar “terwujud” (isi buffer tetap tidak tersentuh). Di akhir efek, simbol “ ditampilkan di UART D”tampilan buffer otomatis diaktifkan.

Untuk melengkapi efeknya, baris indikator harus kosong, tampilan otomatis buffer dilarang, dan kata yang sedang dikembangkan harus berada di buffer (ini dapat dilakukan dengan baris berikut “)_!kata yang dikembangkan”). Efek ini bagus setelah hilangnya kata sebelumnya dengan “*”.


Paket karakter kontrol untuk pengguliran horizontal (garis merayap).
Paket ini memungkinkan Anda untuk mengatur jalur berjalan dari isi buffer. Yang perlu Anda lakukan hanyalah menempatkan garis di buffer dan menggunakan karakter kontrol untuk mengatur arah pergerakan;

“>” – Secara otomatis menggulirkan isi penggaris ke kanan(garis merayap).

“<“ – Автоматический скроллинг содержимого линейки влево (garis merayap).
Isi buffer tidak berubah. Efeknya tidak ada habisnya (gerakan melingkar), tidak ada karakter yang dikembalikan melalui UART. Anda dapat menghentikannya dengan simbol “|“.

“|“ – Berhenti menggulir.
Posisi tampilan kembali normal.


Paket karakter kontrol pergeseran vertikal.
Paket efek ini memungkinkan Anda mengatur beberapa efek menarik, misalnya simulasi pergerakan item menu; tampilan berkala informasi layanan apa pun (misalnya, waktu, mengeluarkan jam dari bawah dan kemudian melepasnya di sana), dll.

“\” – Pergeseran vertikal - tampilan simbol penggaris ke atas(muncul – dari ruang kosong hingga karakter penuh). Di akhir efek, simbol “ ditampilkan di UART V

“/” – Pergeseran vertikal-hilangnya simbol penggaris ke atas(menghilang - dari karakter penuh ke ruang kosong). Di akhir efek, simbol “ ditampilkan di UART V” dan tampilan buffer otomatis dinonaktifkan.

“:“ – Pergeseran vertikal - tampilan simbol penggaris ke bawah(muncul ke bawah – dari ruang kosong ke karakter penuh). Di akhir efek, simbol “ ditampilkan di UART V”, tampilan buffer otomatis diaktifkan.

“;” – Pergeseran vertikal-hilangnya simbol penggaris ke bawah(menghilang ke bawah - dari karakter penuh ke ruang kosong). Di akhir efek, simbol “ ditampilkan di UART V” dan tampilan buffer otomatis dinonaktifkan.

Berikut adalah contoh penerapan perpindahan menu menggunakan efek paket:

Dan ini adalah contoh pesan informasi:


Paket simbol kontrol untuk mengubah kecepatan efek.
Simbol berikut mengubah kecepatan efek.

“-“ – kecepatan normal diaktifkan.

“+” – peningkatan kecepatan diaktifkan.

Penjelasan tambahan untuk mengendalikan efek.

— Semua efek bekerja secara independen satu sama lain. Artinya, Anda dapat menjalankan beberapa efek sekaligus! Garis seperti " _Mulai>*;" akan menghapus buffer, menulis kata "MULAI" ke dalamnya, memulai garis lari ke kanan, selama menjalankannya akan hilang segmen demi segmen dan, sebagai tambahan, akan turun. Dengan menggunakan kombinasi berbeda, Anda bisa mendapatkan efek yang benar-benar baru. Percobaan!

— Saat memberikan perintah yang saling eksklusif, misalnya “<” и “>” – yang terakhir akan berfungsi - “>”.

— Saat efek khusus sedang berlaku, Anda dapat mengisi buffer dengan kata-kata baru. Mereka akan segera mulai berpartisipasi dalam efeknya.

— Jelasnya, jika jumlah indikator kurang dari ukuran buffer, maka hanya karakter terakhir yang dimasukkan yang sesuai dengan jumlah indikator yang akan ditampilkan. Sebaliknya, jika buffer kurang dari jumlah indikator, maka buffer pada indikator akan berulang secara siklis.


Firmware untuk indikator dengan common anode (OA)
- Firmware untuk driver ATtiny13 untuk rangkaian indikator 7 segmen. Penyangga - 16 karakter. Indikator dengan anoda umum.
- Firmware untuk driver ATtiny13 untuk rangkaian indikator 7 segmen. Penyangga - 32 karakter. Indikator dengan anoda umum.

Firmware untuk indikator dengan katoda umum (OK)
- Firmware untuk driver ATtiny13 untuk rangkaian indikator 7 segmen. Penyangga - 16 karakter. Indikator dengan katoda umum.
- Firmware untuk driver ATtiny13 untuk rangkaian indikator 7 segmen. Penyangga - 32 karakter. Indikator dengan katoda umum.

Sekring untuk semua firmware sama
- File untuk firmware driver jalur

Ukuran buffer harus dipilih sekecil mungkin. Buffer yang lebih kecil menghasilkan lebih sedikit noise pada segmen indikator ketika saluran digeser dan diperbarui (ini hanya berlaku pada sirkuit tanpa indikator padam dengan sinyal /OE).

  • Sergei Savenkov

    semacam ulasan "pendek"... seolah-olah mereka sedang terburu-buru di suatu tempat