Skema tampilan dinamis praktis. Indikasi dinamis. Menghubungkan matriks LED ke mikrokontroler. Menyesuaikan kecerahan segmen

Indikator biasanya terletak di tempat yang nyaman untuk melihat informasi yang ditampilkan pada indikator tersebut. Sirkuit digital lainnya dapat ditempatkan di papan sirkuit tercetak lainnya. Ketika jumlah indikator bertambah, jumlah konduktor antara papan indikator dan papan digital bertambah. Hal ini menyebabkan ketidaknyamanan tertentu dalam pengembangan desain dan pengoperasian peralatan. Alasan yang sama menyebabkan peningkatan biayanya.

Jumlah konduktor penghubung dapat dikurangi dengan membuat indikator beroperasi dalam mode pulsa. Mata manusia memiliki kelembaman, dan jika Anda memaksa indikator untuk menampilkan informasi satu per satu dengan kecepatan yang cukup tinggi, maka orang tersebut akan merasa bahwa semua indikator menampilkan informasinya secara terus menerus. Akibatnya, dimungkinkan untuk mengirimkan informasi yang ditampilkan secara bergantian melalui konduktor yang sama. Biasanya refresh rate 50 Hz sudah cukup, namun lebih baik frekuensi ini ditingkatkan menjadi 100 Hz.

Mari kita lihat diagram blok indikator LED tujuh segmen yang ditunjukkan pada Gambar 1. Rangkaian ini dapat memberikan indikasi dinamis dari informasi digital keluaran.


Gambar 1. Diagram blok indikasi dinamis

Dalam diagram yang ditunjukkan pada Gambar 1, empat digit digital ditampilkan. Setiap bit dihubungkan secara singkat ke masukan saklarnya sendiri. Generator digunakan untuk mengatur kecepatan update informasi pada indikator. Penghitung biner secara berurutan menghasilkan empat keadaan rangkaian, dan melalui tombol menyediakan catu daya alternatif ke indikator tujuh segmen.

Hasilnya, ketika sakelar menyuplai kode desimal biner dari input A ke input dekoder tujuh segmen, kode ini ditampilkan pada indikator HL1. Ketika saklar menyuplai kode desimal biner dari input B ke input dekoder tujuh segmen, kode ini ditampilkan pada indikator HL2, dan seterusnya, dalam satu siklus.

Kecepatan pembaruan informasi dalam skema yang dipertimbangkan akan empat kali lebih kecil dari frekuensi generator. Artinya, untuk memperoleh frekuensi kedipan indikator sebesar 100 Hz, diperlukan frekuensi generator sebesar 400 Hz.

Berapa kali kita mengurangi jumlah konduktor penghubung? Itu tergantung di mana kita menggambar penampang sirkuit. Jika kita hanya menyisakan indikator pada papan indikasi, maka pengoperasiannya akan memerlukan 7 sinyal informasi untuk segmen dan empat sinyal switching. Total ada 11 konduktor. Dalam rangkaian tampilan statis kita membutuhkan 7×4=28 konduktor. Seperti yang Anda lihat, kemenangannya jelas. Ketika menerapkan unit tampilan 8-bit, keuntungannya akan lebih besar.

Akan ada keuntungan yang lebih besar lagi jika penampang rangkaian digambar sepanjang input indikator. Dalam hal ini, unit tampilan empat digit hanya memerlukan enam konduktor sinyal dan dua konduktor daya rangkaian. Namun, titik penampang seperti itu untuk rangkaian tampilan dinamis sangat jarang digunakan.

Sekarang mari kita hitung arus yang mengalir melalui setiap segmen LED saat menyala. Untuk melakukan ini, kita akan menggunakan rangkaian ekivalen aliran arus melalui salah satu segmen indikator. Diagram ini ditunjukkan pada Gambar 2.


Seperti disebutkan sebelumnya, LED memerlukan arus 3 hingga 10 mA untuk pengoperasian normal. Mari kita atur arus LED minimum menjadi 3 mA. Namun, dalam mode operasi pulsa, kecerahan indikator turun sebanyak N kali, di mana koefisien N sama dengan siklus kerja pulsa arus yang disuplai ke indikator ini.

Jika kita ingin mempertahankan kecerahan cahaya yang sama, maka kita perlu meningkatkan besarnya arus pulsa yang mengalir melalui segmen tersebut sebanyak N kali. Untuk indikator delapan digit, koefisien N sama dengan delapan. Mari kita pilih arus statis yang melalui LED sebesar 3 mA. Kemudian, untuk mempertahankan kecerahan LED yang sama pada indikator delapan digit, diperlukan arus pulsa:

I seg din = Saya seg stat× N= 3mA×8 = 24mA.

Hanya beberapa rangkaian sirkuit mikro digital yang sulit menyediakan arus seperti itu. Untuk sebagian besar rangkaian sirkuit mikro, amplifier yang dibuat pada sakelar transistor akan diperlukan.

Sekarang mari kita tentukan arus yang akan mengalir melalui saklar yang mengalihkan daya ke bit-bit individual dari unit tampilan delapan-bit. Seperti dapat dilihat dari diagram yang ditunjukkan pada Gambar 2, arus dari setiap segmen indikator dapat mengalir melalui kunci. Ketika angka 8 ditampilkan, ketujuh segmen indikator harus menyala, yang berarti arus pulsa yang mengalir melalui kunci pada saat ini dapat ditentukan sebagai berikut:

Saya cl = saya setujuding× N segmen= 24mA×7 = 168mA.

Bagaimana Anda menyukai arus ini?! Di sirkuit radio amatir, saya sering menemukan solusi di mana arus switching diambil langsung dari output decoder, yang tidak dapat menghasilkan arus lebih besar dari 20 mA, dan saya bertanya pada diri sendiri - di mana mencari indikator seperti itu? Dalam kegelapan total? Hasilnya adalah “perangkat penglihatan malam”, yaitu perangkat yang pembacaannya hanya terlihat dalam kegelapan total.

Sekarang mari kita lihat diagram skema unit tampilan yang dihasilkan. Itu ditunjukkan pada Gambar 3.



Gambar 3. Diagram skema unit tampilan dinamis

Sekarang kita telah menerima rangkaian tampilan dinamis, kita bisa mendiskusikan kelebihan dan kekurangannya. Keuntungan yang tidak diragukan lagi dari tampilan dinamis adalah jumlah kabel penghubung yang sedikit, sehingga sangat diperlukan dalam beberapa kasus, seperti bekerja dengan indikator matriks.

Kerugiannya adalah adanya arus pulsa yang besar, dan karena setiap konduktor adalah antena, indikasi dinamis berfungsi sebagai sumber interferensi yang kuat. Sumber gangguan lainnya adalah pasokan listrik.

Harap dicatat bahwa tepi depan pulsa switching sangat pendek, sehingga komponen harmoniknya mencakup rentang frekuensi radio hingga gelombang ultrapendek.

Jadi, penggunaan indikasi dinamis memungkinkan untuk meminimalkan jumlah kabel penghubung antara perangkat digital dan indikator, namun pada saat yang sama merupakan sumber interferensi yang kuat, sehingga penggunaannya pada perangkat penerima radio tidak diinginkan.

Jika karena alasan tertentu, misalnya kebutuhan untuk menggunakan indikator matriks, perlu menggunakan indikasi dinamis, maka semua tindakan harus diambil untuk menekan interferensi.

Tindakan untuk menekan interferensi dari indikasi dinamis meliputi pelindungan unit, kabel penghubung, dan papan. Menggunakan kabel penghubung dengan panjang minimum, menggunakan filter daya. Saat melindungi sebuah blok, mungkin perlu untuk melindungi indikatornya sendiri. Dalam hal ini, jaring logam biasanya digunakan. Grid ini sekaligus dapat meningkatkan kontras karakter yang ditampilkan.

Literatur:

Bersamaan dengan artikel "Tampilan Dinamis" baca:

Indikator dirancang untuk menampilkan berbagai jenis informasi kepada seseorang. Informasi yang paling sederhana adalah...
http://site/digital/Indic.php

Indikator pelepasan gas digunakan untuk menunjukkan informasi bit dan untuk menampilkan informasi desimal. Saat membuat indikator desimal, katoda...
http://situs/digital/GazIndic/

Saat ini, LED digunakan hampir di mana-mana untuk menampilkan informasi biner. Hal ini disebabkan...
http://situs/digital/LED.php

Prinsip pengoperasian indikator kristal cair... Mode pengoperasian indikator kristal cair... Pembentukan gambar berwarna...
http://situs/digital/LCD.php


Diagram koneksi untuk indikator tujuh segmen satu digit
Diagram koneksi untuk indikator tujuh segmen multi-digit

Perangkat tampilan informasi digital. Ini adalah implementasi paling sederhana dari indikator yang dapat menampilkan angka Arab. Indikator multi-segmen dan matriks yang lebih kompleks digunakan untuk menampilkan huruf.

Sesuai dengan namanya, ini terdiri dari tujuh elemen tampilan (segmen) yang menyala dan mati secara terpisah. Dengan memasukkannya ke dalam kombinasi yang berbeda, mereka dapat digunakan untuk membuat gambar angka Arab yang disederhanakan.
Segmen tersebut ditandai dengan huruf A sampai G; segmen kedelapan - titik desimal (titik desimal, DP), dirancang untuk menampilkan bilangan pecahan.
Kadang-kadang, huruf ditampilkan pada indikator tujuh segmen.

Mereka datang dalam berbagai warna, biasanya putih, merah, hijau, kuning dan biru. Selain itu, ukurannya bisa berbeda.

Selain itu, indikator LED bisa berupa satu digit (seperti pada gambar di atas) atau multi-digit. Pada dasarnya, indikator LED satu, dua, tiga dan empat digit digunakan dalam praktik:

Selain sepuluh digit, indikator tujuh segmen juga mampu menampilkan huruf. Namun hanya sedikit huruf yang memiliki representasi tujuh segmen yang intuitif.
Latin: huruf kapital A, B, C, E, F, G, H, I, J, L, N, O, P, S, U, Y, Z, huruf kecil a, b, c, d, e, g , h, saya, n, o, q, r, t, u.
Dalam Sirilik: A, B, V, G, g, E, i, N, O, o, P, p, R, S, s, U, Ch, Y (dua digit), b, E/Z.
Oleh karena itu, indikator tujuh segmen hanya digunakan untuk menampilkan pesan sederhana.

Secara total, indikator LED tujuh segmen dapat menampilkan 128 karakter:

Indikator LED tipikal memiliki sembilan sadapan: satu mengarah ke katoda semua segmen, dan delapan lainnya menuju anoda setiap segmen. Skema ini disebut "rangkaian katoda bersama", ada juga skema dengan anoda umum(maka sebaliknya). Seringkali, bukan hanya satu, tetapi dua terminal umum dibuat di ujung alas yang berbeda - ini menyederhanakan pengkabelan tanpa menambah dimensi. Ada juga yang disebut “universal”, tetapi saya pribadi belum pernah menemukan yang seperti itu. Selain itu, terdapat indikator dengan register geser bawaan, yang sangat mengurangi jumlah pin port mikrokontroler yang terlibat, namun harganya jauh lebih mahal dan jarang digunakan dalam praktik. Dan karena besarnya tidak dapat dipahami, kami tidak akan mempertimbangkan indikator tersebut untuk saat ini (tetapi ada juga indikator dengan jumlah segmen yang jauh lebih besar, yaitu indikator matriks).

Indikator LED multi-digit sering bekerja berdasarkan prinsip dinamis: keluaran dari segmen dengan nama yang sama dari semua digit dihubungkan bersama. Untuk menampilkan informasi pada indikator seperti itu, sirkuit mikro kontrol harus secara siklis menyuplai arus ke terminal umum semua digit, sementara arus disuplai ke terminal segmen tergantung pada apakah segmen tertentu menyala pada digit tertentu.

Menghubungkan indikator tujuh segmen satu digit ke mikrokontroler

Diagram di bawah menunjukkan caranya indikator tujuh segmen satu digit terhubung ke mikrokontroler.
Perlu diingat bahwa jika indikator dengan KATODE UMUM, lalu output umumnya dihubungkan "bumi", dan segmen tersebut dinyalakan dengan memberi makan satuan logis ke keluaran port.
Jika indikatornya adalah ANODA UMUM, kemudian disuplai ke kabel biasa "plus" tegangan, dan segmen dinyalakan dengan mengalihkan output port ke status nol logis.

Indikasi dalam indikator LED satu digit dilakukan dengan menerapkan kode biner ke pin port mikrokontroler dari digit yang sesuai dari tingkat logis yang sesuai (untuk indikator dengan OK - yang logis, untuk indikator dengan OA - nol logis).

Resistor pembatas arus mungkin ada atau tidak ada dalam diagram. Itu semua tergantung pada tegangan suplai yang disuplai ke indikator dan karakteristik teknis indikator. Jika, misalnya, tegangan yang disuplai ke segmen adalah 5 volt, dan dirancang untuk tegangan operasi 2 volt, maka resistor pembatas arus harus dipasang (untuk membatasi arus yang melaluinya untuk peningkatan tegangan suplai dan tidak terbakar. tidak hanya indikatornya, tetapi juga port mikrokontrolernya).
Sangat mudah untuk menghitung nilai resistor pembatas arus, dengan menggunakan rumus kakek Ohm.
Misalnya ciri-ciri indikatornya adalah sebagai berikut (diambil dari datasheet):
— tegangan operasi — 2 volt
— arus pengoperasian — 10 mA (=0,01 A)
— tegangan suplai 5 volt
Rumus perhitungan:
R= U/I (semua nilai pada rumus ini harus dalam Ohm, Volt dan Amps)
R= (tegangan suplai - tegangan operasi)/arus operasi
R= (5-2)/0,01 = 300 Ohm

Diagram koneksi untuk indikator LED tujuh segmen multi-digit Pada dasarnya sama seperti saat menghubungkan indikator satu digit. Satu-satunya hal adalah transistor kontrol ditambahkan di katoda (anoda) indikator:

Itu tidak ditunjukkan dalam diagram, tetapi antara basis transistor dan pin port mikrokontroler, perlu untuk menyertakan resistor, yang resistansinya tergantung pada jenis transistor (nilai resistor dihitung, tetapi anda juga bisa mencoba menggunakan resistor dengan nilai nominal 5-10 kOhm).

Indikasi berdasarkan kategori dilakukan secara dinamis:
— kode biner dari digit yang sesuai diatur pada output port PB untuk digit pertama, kemudian level logis diterapkan ke transistor kontrol dari digit pertama
— kode biner dari digit yang sesuai diatur pada output port PB untuk digit ke-2, kemudian level logis diterapkan ke transistor kontrol dari digit kedua
— kode biner dari digit yang sesuai diatur pada output port PB untuk digit ke-3, kemudian level logis diterapkan ke transistor kontrol dari digit ketiga
- jadi dalam lingkaran
Dalam hal ini, perlu diperhatikan:
— untuk indikator dengan OKE struktur transistor kontrol digunakan NPN(dikendalikan oleh unit logis)
- untuk indikator dengan OA- struktur transistor PNP(dikendalikan dengan logika nol)

Hari ini kita akan mencoba menghubungkan bukan hanya satu indikator satu digit ke mikrokontroler, tetapi dua. Artinya, mari kita hubungkan indikator lain yang serupa. Hanya jika kita menghubungkannya dengan cara yang persis sama seperti yang pertama, maka kita akan menggunakan hampir semua pin port pengontrol, yang akan membuat proyek kita tidak dapat dijalankan.

Oleh karena itu, metode lain akan membantu kami dalam kasus ini - ini tampilan dinamis.

Dengan tampilan dinamis, pada setiap momen kita akan menampilkan angka pada satu indikator saja. Artinya, kami akan menampilkan angka-angka yang ditujukan untuk kedua indikator secara bergantian. Namun kami akan menampilkannya satu per satu dengan frekuensi sedemikian rupa sehingga mata kami tidak menyadarinya. Dan bagi kita tampaknya indikator tersebut bekerja terus-menerus, dan tidak bergantian. Hal ini memungkinkan kita untuk menghubungkan segmen dari kedua indikator, dan selanjutnya lebih banyak indikator, ke pin port yang sama, yaitu secara paralel. Dengan cara ini, kedua indikator akan langsung diberikan secara bergantian, pertama dengan nomor yang ditujukan untuk indikator pertama, dan kemudian dengan nomor yang ditujukan untuk indikator kedua. Dan agar kita tidak melihat dua angka pada setiap indikator secara bersamaan, saat menampilkan angka yang ditujukan untuk indikator tertentu, kita akan memberikan tegangan positif ke anodanya, tetapi tidak ke anoda lainnya, tetapi akan menghubungkannya ke a kawat biasa. Oleh karena itu, terlepas dari keadaan katodanya, tidak ada satupun segmennya yang akan bersinar. Jika pada ruas tersebut ada nol maka tidak ada beda potensial sama sekali, dan jika ada maka akan ada beda potensial, tetapi arus akan diarahkan ke arah lain dan LED tidak akan menyala. arah ini.

Kami akan membuat proyek baru seperti biasa, menyalin kode ke main.c dari file dengan nama yang sama dari proyek sebelumnya. Mari beri nama proyeknya Tes08.

Pertama mari kita merakit sirkuit di Proteus, menyalin, seperti biasa, file proyek dari pelajaran sebelumnya dan menghubungkan jalur ke proyek baru di properti pengontrol. Pertama kita akan menyambungkan kembali tombol tersebut ke kaki port yang lain. Mengapa hal ini perlu, kita akan lihat nanti

Mari kita putuskan sambungan anoda umum dari catu daya untuk saat ini dan tambahkan indikator lain yang serupa dengan yang sudah kita miliki di proyek.

Untuk melakukan ini, cukup pilih di panel kiri, Anda tidak perlu menambahkannya lagi dari perpustakaan. Kemudian kita hubungkan katoda indikator ini dengan katoda yang sama dari indikator pertama

Kami akan menghubungkan anoda yang dilepaskan ke kaki-kaki port lain. Tetapi kita tidak akan menghubungkannya secara langsung, tetapi melalui transistor kunci, karena ketika beberapa segmen indikator menyala secara bersamaan, terlalu banyak arus yang akan mengalir melalui kaki port yang terhubung ke anoda indikator. Port mungkin gagal. Ini sama sekali tidak menarik bagi kami. Oleh karena itu, kita akan menghubungkan anoda kita ke kaki B0 dan B1 melalui transistor. Itu sebabnya kami memindahkan tombol ke kaki lainnya. Apalagi kami memindahkannya dengan cadangan, karena selanjutnya kami akan menghubungkan empat indikator.

Mari tambahkan transistor dari perpustakaan. Kami akan menyalakannya dalam mode terbalik, jadi kami memilih struktur p-n-p

Mari kita sambungkan kedua transistor ini ke rangkaian, tambahkan dua resistor 2 kilo-ohm lagi untuk membatasi arus basis. Kami menghubungkan emitor ke catu daya, dan kolektor ke anoda indikator (klik pada gambar untuk memperbesar gambar)

Saya juga akan menunjukkan diagram lengkap perakitan kami (klik pada gambar untuk memperbesar gambar)

Untuk peralatan bertenaga baterai, penggunaan indikator LCD umumnya dianggap lebih disukai daripada indikator dioda pemancar cahaya (LED) karena konsumsi arus yang tinggi pada indikator tersebut. Postulat ini menurut saya sama sekali tidak jelas karena alasan berikut: 1) dalam indikator LCD modern terdapat lampu latar yang mengkonsumsi hingga 100 mA; 2) relatif rapuh dan takut terhadap sinar matahari langsung; 3) Indikator LED modern (terutama superRED dan ultraRED) memiliki kecerahan yang cukup bahkan dengan arus 1 mA yang melewatinya, dan ketika kecerahan disesuaikan dengan cepat tergantung pada kondisi pencahayaan, konsumsi arus rata-rata indikator 4 digit tidak lebih dari 30 mA bahkan di luar ruangan, yang lebih sedikit dibandingkan konsumsi lampu latar LCD.

Meskipun banyaknya rangkaian tampilan dinamis online, saya belum melihat rangkaian dengan kontrol kecerahan perangkat lunak pada PIC16. Artikel ini menunjukkan pandangan saya yang sederhana tentang pelaksanaan tugas semacam itu. Hal ini ditujukan terutama untuk amatir radio yang mengambil langkah pertama dari mengulangi desain hingga memprogram mikrokontroler sendiri.

Artikel ini membahas cara mengontrol matriks LED dengan mikrokontroler PIC kelas menengah menggunakan interupsi dari timer TMR0 dan TMR2. Timer TMR2 digunakan untuk mengontrol PWM arus rata-rata melalui segmen yang diaktifkan. Algoritma organisasi kerja adalah sebagai berikut:

1. Inisialisasi. Kami mengkonfigurasi port mikrokontroler sesuai dengan diagram koneksi indikator. Untuk pengatur waktu 1 dan 2, mode pencatatan jam kerja internal diaktifkan dengan prescaler sama dengan 16. Interupsi periferal diaktifkan.

2. Kami membuat tabel generator karakter untuk menampilkan angka dan beberapa huruf dan simbol (kebanyakan Latin) pada indikator.

3. Kami memesan dua variabel empat bit. Dalam satu kita memasukkan kode digital berurutan (untuk angka - hanya angka) dari tanda yang diperlukan untuk keluaran sesuai dengan tabel dari ayat 2. Nilai yang dikonversi dari tabel ditransfer ke variabel lain untuk ditampilkan secara permanen pada indikator.

4. Pada interupsi dari TMR0, bit karakter ditampilkan secara berurutan sesuai tabel. Sebelum mengganti angka, indikator padam. Setiap interupsi menampilkan satu digit. Setelah ini, pengatur waktu TMR2 direset, flag interupsi dari TMR2 direset, dan interupsi darinya diaktifkan.

5. Pada interupsi TMR2, indikator padam dan interupsi TMR2 dinonaktifkan.

6. Pada program utama, periode interupsi dari TMR2 dan waktu hidup indikator diatur dengan memasukkan angka 7 sampai 255 dalam perhitungan desimal ke dalam register PR2 dengan menggunakan rumus X(n+1)=2* X(n)+1. Ini menghasilkan enam gradasi kecerahan dengan perbedaan 2 kali lipat di antara keduanya. Dengan PR2=255 durasinya maksimum (4 md dari 4 md), dengan PR2=7 durasinya kira-kira 0,25 md.

Untuk mendemonstrasikan prinsip kontrol ini, di bawah ini adalah rangkaian pada PIC16F628A yang murah dan program pengujian dalam bahasa Majelis, yang menampilkan kata “test” pada indikator. Saat Anda menekan tombol, kecerahan muncul pada indikator (biasanya angka dari 0 hingga 5). Dengan penekanan berikutnya, kecerahan berubah dalam lingkaran dan ini langsung terlihat pada indikator. Saya ingin segera memperingatkan para pemula: memodelkan sirkuit pada simulator seperti Proteus tidak akan memungkinkan Anda melihat perubahan kecerahan karena fitur program ini (Proteus). Prototipe sirkuit untuk pengujian dan eksperimen harus dirakit dalam perangkat keras. Namun, untuk memantau organisasi sebenarnya dari tampilan dinamis (kecuali perubahan kecerahan), model Proteus dipasang.

Konsumsi rangkaian pada kecerahan minimum kurang dari 4 mA, maksimum - sekitar 80 mA.

Arsip berisi program pengujian di assembler MPASM.

Untuk menyederhanakan rangkaian dan membebaskan “kaki” untuk berbagai tindakan, digunakan konfigurasi dengan generator internal dan reset internal. Pada saat yang sama, mereka yang menggunakan pemrogram buatan sendiri tanpa kemampuan mengirim sinyal MCLR ke Upp mungkin mengalami masalah dengan verifikasi, pembacaan, dan penghapusan selanjutnya. Bagi mereka yang tidak yakin dengan programmernya, dan juga jika diperlukan stabilitas osilator yang tinggi, Anda dapat memasang kuarsa 4 MHz sesuai skema standar dengan pilihan dalam konfigurasi “OSC_XT”. Jika rangkaian terakhir memerlukan interupsi dari pin INT0 (RB0), koma dapat dikontrol melalui pin RA4; untuk indikator dengan OA, indikator dihubungkan langsung ke pin ini, meskipun terbuka. Pin RB0 yang dibebaskan dapat digunakan untuk tujuan yang dimaksudkan. Dalam program, dalam interupsi dari TMR0, dalam hal ini, kode ditambahkan setelah “movwf PORTB”:

Andlw b"00000001" bsf PORTA,4 tekan koma btfsc STATUS,Z perhatikan bahwa di W nilai kebalikannya.

bcf PORTA,4 jika bit ke-0 = 0, koma ringan

Penjelasan kecil tentang program ini:

Nomor keluaran ditempatkan pada variabel OUT_ - OUT+3 sesuai dengan digitnya, dan darinya pada subrutin out__ setelah konversi ditempatkan di OUT_LED. Tentu saja, Anda dapat melakukannya tanpa variabel OUT_ dan menulis di mana saja untuk keluaran:

Pindahkan X panggil Tabel_s movwf OUT_LED

Namun, dalam bentuk aslinya semuanya jauh lebih sederhana dan jelas (saya meletakkannya di OUT_ dan lupa), dan juga dengan beberapa keluaran dari tempat berbeda dalam program, penghematan kode diperoleh (4 kata per 1 keluaran) - menurut saya ini adalah kompensasi yang bagus untuk tambahan 4 byte RAM.

Hal yang sama berlaku untuk mengeluarkan koma melalui variabel koma_.

Dalam subrutin tabel Table_s, tindakan telah diambil agar berfungsi dengan benar ketika ditempatkan di mana saja dalam memori program tanpa batasan pada perpotongan blok 256 byte.

Variabel jeda_ dalam interupsi TMR0 digunakan untuk mengatur interval waktu menjadi 4 ms.

Selebihnya, menurut saya, jelas dari algoritma dan komentarnya.

P.S. Untuk 2 atau 3 digit dalam program ini, Anda perlu membuat perubahan minimal, yang menurut saya mungkin dilakukan bahkan untuk pemula. Untuk mengontrol indikator dengan jumlah digit dari 5 hingga 8, perlu menggunakan pengontrol dengan jumlah pin yang banyak atau untuk mengontrol digit menggunakan dekoder 3 kali 8.

Dalam kasus pertama, perubahan dalam program juga minimal (menggunakan port lain, bukan port A, dll.). Jika decoder digunakan, program mengenai interupsi TMR0 akan berubah cukup serius.

Daftar elemen radio Penamaan Jenis Denominasi KuantitasCatatanToko
buku catatan saya U1

MK PIC 8-bit

1 PIC16F628A
Ke buku catatan H1Indikator1 PIC16F628A
4x7 FIQ-3641A Q1-Q4

Transistor bipolar

4 PIC16F628A
KT361E C3Kapasitor1 PIC16F628A
22 nF R1-R7, R14

Penghambat

8 PIC16F628A
150 ohm R1-R7, R14

R8

Kerja Praktek No.2 Subjek

: Pengembangan rangkaian tampilan dinamis.: Target

Dapatkan keterampilan praktis dalam merancang elemen tampilan untuk perangkat digital.: Latihan

Mengembangkan diagram rangkaian kelistrikan tampilan LED tujuh segmen digital berbasis mikrokontroler sesuai dengan spesifikasi teknis.

Informasi teoritis singkat

Indikator LED tujuh segmen terdiri dari delapan LED dengan katoda atau anoda yang terhubung. Segmen tersebut ditandai dengan huruf A,B,C,D,E,F,G,H seperti terlihat pada Gambar 1.

Gambar 1

Segmen tersebut bersinar ketika tegangan positif diterapkan ke terminal umum dan tegangan nol diterapkan ke katoda.

Ada dua cara untuk mengatur antarmuka dengan tampilan: statis dan dinamis. Kerugian yang pertama adalah perlunya sejumlah besar jalur kontrol (jumlah digit port mikrokontroler) - 8 untuk setiap indikator.

Metode tampilan dinamis memerlukan jumlah digit yang sama dengan jumlah jumlah segmen dan jumlah digit.

Metode dinamis bersifat berdenyut dan didasarkan pada fakta bahwa jika “kedipan” dihasilkan dengan frekuensi 50 Hz atau lebih, maka pancaran cahaya tampak konstan bagi seseorang. Metode ini memerlukan biaya perangkat keras yang minimal; pemrosesan tampilan dinamis, termasuk konversi kode, dilakukan dalam perangkat lunak.

Dalam tampilan dinamis, segmen dengan nama yang sama dari semua indikator dihubungkan secara paralel, membentuk bus segmen, dan anoda umum dari indikator membentuk bus pemilihan indikator. Dengan demikian, garis yang dibutuhkan jauh lebih sedikit dibandingkan dengan metode statis.

Pemrosesan tampilan terdiri dari penerbitan segmen kode karakter tujuh segmen posisi secara berurutan ke bus dan pengaktifan (pemilihan) indikator secara serempak.

Diagram indikator dinamis empat digit ditunjukkan pada Gambar 3. Bus segmen terhubung ke port C mikrokontroler, dan empat bit paling tidak signifikan dari port D adalah bit untuk memilih bit indikator.

Tentunya indikator tersebut harus diproses oleh program. Program mengeluarkan kode karakter tujuh segmen ke port C untuk bit indikator kanan (urutan rendah), dan menyetel bit PC0 ke nol. Digit indikator tingkat rendah menyala (level nol membuka transistor VT3).

Jadi, sinyal pada satu jalur pilihan merupakan rangkaian pulsa dengan siklus kerja yang sama dengan jumlah indikator.

Pada frekuensi kedipan 50Hz, periode pulsa adalah 20ms.

Gambar 2

Gambar 3 – Rangkaian listrik indikasi dinamis

Gambar 2 menunjukkan diagram pemilihan waktu sinyal untuk tampilan empat digit. Waktu nyala satu indikator adalah 5 ms.

Karena mata manusia “merata-rata” intensitas cahaya yang bersifat berdenyut, untuk mendapatkan kecerahan normal, amplitudo arus yang mengalir melalui segmen harus lebih besar dibandingkan dengan indikasi statis. Sifat ketergantungan intensitas cahaya terhadap besaran arus adalah nonlinier.

Amplitudo pulsa arus pada rangkaian pemilihan indikator harus 8 kali (sesuai dengan jumlah segmen) lebih besar dari amplitudo arus pada segmen tersebut.

Pada Gambar. Gambar 2 menunjukkan diagram tampilan empat digit dinamis yang dibuat pada indikator digital tujuh segmen.

Bus segmen SA-SH dibentuk oleh pin port P2 mikrokontroler, dan empat digit paling tidak signifikan dari port P1 membentuk bus pemilihan indikator (SELI-SEL4). Tampilannya diproses oleh modul perangkat lunak sebagai berikut. Kode tujuh segmen dari simbol indikator kanan (HG4) dimuat ke port P2. Diperkuat oleh elemen DD2, arus ini disuplai ke bus segmen a, b, c... Kemudian kode untuk memilih (menghidupkan) indikator HG4 dimuat ke tetrad rendah port P1: SEL1=0, SEL2 - SEL4=1 (nilai heksadesimal E). Arus nol logis, diperkuat oleh elemen DD2, mengalir melalui kabel 11 melalui resistor R7 dan membuka transistor VT4. Transistor yang tersisa dimatikan. Tegangan suplai +5V disuplai melalui transistor terbuka ke anoda umum indikator HG4, menyebabkan simbol ditampilkan. Keadaan ini bertahan selama 5ms. Pada akhir interval waktu ini, MK mengeluarkan level tinggi ke pelepasan port SEL1, transistor VT4 menutup dan sakelar VT3 dan simbol dalam pelepasan ini ditampilkan dan pelepasan berhenti menyala. Kemudian kode tujuh segmen dari simbol indikator HG3 dikeluarkan ke port P2, dan bit P1.1 diatur ke status level rendah. Ini menyalakan layar, dll.

Interval waktu yang sesuai dengan waktu lampu indikator dapat digunakan untuk mengimplementasikan fungsi kontrol objek.

Konversi kode biner dari data keluaran menjadi kode indikator tujuh segmen dilakukan secara terprogram menggunakan larik kode tujuh segmen. Elemen array adalah kode karakter tujuh segmen. Menurut diagram, segmen akan berada dalam keadaan hidup jika level tegangan rendah diterapkan padanya. Isi Tabel 2 didasarkan pada pertimbangan ini.

Tabel 2 - Kode tujuh segmen

byte data A B C D E F G H HEX - kode karakter
$9F
$25
$D
$99
$49
$41
$1F

Dapatkan keterampilan praktis dalam merancang elemen tampilan untuk perangkat digital.

1. Kembangkan diagram rangkaian listrik dari tampilan tujuh segmen digital dinamis.

2. Buatlah gambar diagram rangkaian kelistrikan sesuai dengan Gost ESKD.

3. Membenarkan pilihan solusi rangkaian.

4. Data awal untuk perancangan disajikan pada tabel pilihan 2. Untuk memperluas kapasitas port I/O paralel mikrokontroler, digunakan chip register geser. Untuk mengontrol garis pemilihan indikator, gunakan indikator desimal biner. Untuk memperkuat sinyal pemilihan digit indikasi, gunakan sakelar transistor.

Tabel 2 - Data awal

Opsi No. Tipe mikrokontroler Jenis indikator Jumlah segmen
ATmega8 BL-S56A-11
ATmega16 BC56-11SRWA
ATtiny13 BL-D56A-21
ATtiny2313 BL-S56B-11
ATmega8 BA56-11GWA
ATmega16 BL-D56B-21
ATtiny13 BL-D56A-21
ATtiny2313 BL-D56A-21
ATmega16 BL-S56B-11
ATtiny13 BL-D56B-21

  • Sergei Savenkov

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