kita akan bergerak ke interfacing LED dot matriks layar. LED dot matriks adalah sarana yang sangat populer menampilkan informasi seperti itu memungkinkan teks baik statis dan animasi dan gambar. Mungkin, Anda telah menemukan mereka di pompa bensin menampilkan harga gas, atau di tempat-tempat umum dan di sepanjang jalan raya, menampilkan iklan pada panel dot matrix besar. Dalam percobaan ini, kita akan membahas tentang struktur dasar dari sebuah monokrom (warna tunggal) LED dot matrix dan interface dengan mikrokontroler untuk menampilkan karakter statis dan simbol. Kami akan mencakup hal-hal animasi dalam tutorial berikutnya. Saya menggunakan mikrokontroler PIC18F2550 pada StartUSB untuk PIC papan untuk demonstrasi, namun teknik ini berlaku untuk setiap mikrokontroler lain yang memiliki cukup I / O pin untuk drive LED matriks.
Teori LED dot matriks layar
Dalam layar dot matrix, beberapa LED yang kabel bersama-sama dalam baris dan kolom. Hal ini dilakukan untuk meminimalkan jumlah pin yang diperlukan untuk mengusir mereka. Misalnya, 8 × 8 matriks LED (ditampilkan di bawah) akan membutuhkan 64 I / O pin, satu untuk setiap pixel LED. Dengan kabel semua anoda bersama-sama dalam baris (R1 melalui R8), dan katoda dalam kolom (C1 melalui C8), jumlah yang diperlukan pin I / O dikurangi menjadi 16. Setiap LED ditujukan demi baris dan jumlah kolom. Pada gambar bawah ini, jika R4 adalah ditarik tinggi dan C3 ditarik rendah, LED di baris keempat dan kolom ketiga akan dihidupkan. Karakter dapat ditampilkan oleh pemindaian cepat baik baris atau kolom. Tutorial ini akan membahas metode pemindaian kolom.
Matriks LED digunakan dalam percobaan ini adalah ukuran 5 × 7. Kita akan belajar bagaimana menampilkan karakter yang masih dalam format standar 5 7 × pixel. Gambar di bawah menunjukkan yang LED harus diaktifkan untuk menampilkan abjad Inggris 'A'. Para 7 baris dan 5 kolom dikendalikan melalui pin mikrokontroler. Sekarang, mari kita lihat secara detail cara kerjanya.
Misalkan, kita ingin menampilkan A. alfabet Kami akan memilih kolom C1 (yang berarti C1 ditarik rendah dalam kasus ini), dan kolom hapus lainnya dengan memblokir jalan tanah mereka (salah satu cara untuk melakukan hal itu adalah dengan menarik C2 melalui C5 pin untuk tinggi logika). Sekarang, kolom pertama aktif, dan Anda perlu mengaktifkan LED di baris R2 melalui R7 kolom ini, yang dapat dilakukan dengan menerapkan tegangan bias maju untuk baris ini. Selanjutnya, pilih kolom C2 (dan hapus semua kolom lainnya), dan menerapkan bias maju ke R1 dan R5, dan sebagainya. Oleh karena itu, dengan memindai seluruh kolom cepat (> 100 kali per detik), dan menyalakan LED masing-masing di setiap baris kolom itu, kegigihan visi datang untuk bermain, dan kami merasakan tampilan gambar seperti yang masih.
Tabel di bawah ini memberikan tingkat logika untuk diterapkan ke R1 melalui R7 untuk setiap kolom untuk menampilkan abjad 'A'.
Row nilai untuk menampilkan abjad A
Anda harus telah mencatat bahwa di setiap baris, satu pin adalah sumber arus hanya satu LED pada suatu waktu, tapi pin kolom mungkin harus tenggelam arus dari lebih dari satu LED. Misalnya, kolom C1 harus dapat tenggelam arus dari 6 LED sementara menampilkan 'A' alfabet. I / O Sebuah pin mikrokontroler tidak dapat tenggelam ini banyak saat ini, array transistor sehingga eksternal yang diperlukan. Saya menggunakan ULN2003A IC yang memiliki tujuh built-in array transistor Darlington (lihat di bawah). Masukan dari ULN2003A tinggi aktif. Ini berarti pin input harus disertakan dengan logika yang tinggi untuk membawa pin output yang sesuai ke tanah. Skema dari array transistor Darlington dalam chip ULN2003A ditampilkan di bawah.
Sirkuit Pengaturan
Setup sirkuit untuk percobaan ini cukup sederhana. Anda membutuhkan tujuh 330 Ω resistor secara seri dengan R1 baris melalui R7 untuk membatasi arus yang melalui LED. Kemudian baris yang didorong oleh RB0 melalui RB6 pin dari PIC18F2550. Kolom terhubung ke lima output dari ULN2003A. Pin input yang sesuai lima ULN2003A IC dikendalikan oleh RA0 melalui RA4 pin dari PIC18F2550. Mikrokontroler akan, oleh karena itu, scan di kolom dengan mengirimkan bit sesuai dengan Porta. Misalnya, pengaturan RA0 ke 1 dan kliring RA1 melalui RA4 bit, akan memilih kolom pertama. Mikrokontroler akan menunggu sekitar 1 ms sebelum beralih ke kolom berikutnya. Pada setiap kolom, mikrokontroler akan menampilkan nilai baris yang sesuai di PORTB untuk menyalakan LED yang sesuai dalam kolom yang diperlukan untuk menampilkan karakter khusus. Beralih antara kolom cukup cepat untuk menipu mata manusia dan karakter stabil ditampilkan.
Circuit diagram untuk interfacing LED dot matriks 5x7 dengan PIC18F2550
Perangkat Lunak
Bagian utama dari percobaan ini adalah rutin perangkat lunak untuk memindai kolom dan pakan baris dengan nilai yang sesuai. Nilai-nilai baris-kolom khusus untuk menampilkan karakter dapat didefinisikan baik dalam RAM atau disimpan dalam memori program dalam kasus on-board RAM tidak cukup memadai. Dalam MikroC, variabel yang disimpan dalam RAM dan konstanta yang disimpan dalam memori program. Jadi, jika PIC Anda tidak memiliki RAM yang cukup, Anda dapat mendefinisikan sebuah array konstan untuk menyimpan nilai-nilai baris sehingga bagian dari memori program ditempati oleh itu untuk membebaskan RAM on-board. PIC18F2550 memiliki cukup RAM (2 KB), jadi saya telah menggunakan RAM untuk menyimpan nilai-nilai baris untuk huruf A sampai Z. Berikut bagaimana saya mendefinisikan dalam MikroC,
unsigned pendek Alphabets [130] = {0x7E, 0 × 09, 0 × 09, 0 × 09, 0x7E, / / A
0x7f, 0 × 49, 0 × 49, 0 × 49, 0 × 36, / / B
0x3e, 0 × 41, 0 × 41, 0 × 41, 0 × 22,
0x7f, 0 × 41, 0 × 41,0 × 22, 0x1C,
0x7f, 0 × 49, 0 × 49, 0 × 49, 0 × 63,
0x7f, 0 × 09, 0 × 09, 0 × 09, 0 × 01,
0x3e, 0 × 41, 0 × 41, 0 × 49, 0x7A,
0x7f, 0 × 08, 0 × 08, 0 × 08, 0x7f,
0 × 00, 0 × 41, 0x7f, 0 × 41, 0 × 00, / / Aku
0 × 20, 0 × 40, 0 × 41, 0x3f, 0 × 01,
0x7f, 0 × 08, 0 × 14, 0 × 22, 0 × 41,
0x7f, 0 × 40, 0 × 40, 0 × 40, 0 × 60,
0x7f, 0 × 02, 0 × 04, 0 × 02, 0x7f,
0x7f, 0 × 04, 0 × 08, 0 × 10, 0x7f,
0x3e, 0 × 41, 0 × 41, 0 × 41, 0x3e,
0x7f, 0 × 09, 0 × 09, 0 × 09, 0 × 06,
0x3e, 0 × 41, 0 × 51, 0 × 21, 0x5e,
0x7f, 0 × 09, 0 × 19, 0 × 29, 0 × 46,
0 × 46, 0 × 49, 0 × 49, 0 × 49, 0 × 31, / / S
0 × 01, 0 × 01, 0x7f, 0 × 01, 0 × 01,
0x3f, 0 × 40, 0 × 40, 0 × 40, 0x3f,
0x1F, 0 × 20, 0 × 40, 0 × 20, 0x1F,
0x3f, 0 × 40, 0 × 30, 0 × 40, 0x3f,
0 × 63, 0 × 14, 0 × 08, 0 × 14, 0 × 63,
0 × 07, 0 × 08, 0 × 70, 0 × 08, 0 × 07,
0 × 61, 0 × 51, 0 × 49, 0 × 45, 0 × 43 / / Z
};
Dan ini adalah bagaimana MikroC memungkinkan Anda untuk menyimpan array dalam memori program. const unsigned pendek karakter [30] = {
0 × 24, 0x2A, 0x7f, 0x2A, 0 × 12, / / $
0 × 08, 0 × 14, 0 × 22, 0 × 41, 0 × 00, / / <
0 × 41, 0 × 22, 0 × 14, 0 × 08, 0 × 00, / />
0 × 14, 0 × 14, 0 × 14, 0 × 14, 0 × 14, / / =
0 × 36, 0 × 49, 0 × 55, 0 × 22, 0 × 50, / / &
0 × 44, 0x3c, 0 × 04, 0x7c, 0 × 44, / / PI
};
Saya telah menulis sebuah program sederhana di MikroC untuk menampilkan abjad A sampai Z secara berurutan, dan beberapa karakter khusus juga. Anda dapat menonton video di bawah ini untuk melihat bagaimana mereka terlihat seperti pada layar dot matrix.
Men-download file proyek MikroC
Menampilkan simbol PI
Mungkin bagi anda membuat pemancar telivisi sendiri itu adalah hal yang mustahil dan dengan biaya yang sangat mahal, tapi disini saya akan memberikan artikel yang dapat membuat pemikiran anda berubah.Pemancar televisi ini berifat mini karena jarak jangkauan yang tidak terlalu jauh, tapi jangkauan ini sudah cukup diaplikasikan dilingkungan rumah, anda dapat memancarkan video yang anda putar di DVD/VCD player anda melalui gelombang televisi, dan tentu saja siaran yang anda pancarkan dapat ditangkap oleh siapapun termasuk tetangga anda.
Alat ini sangat mudah dibuat dan tentu saja dengan biaya yang tidak lebih dari 100.000 rupiah. Langsung saja ini dia rangkaiannya..!
1. Blok Diagram
Rancangan tampilan dengan menggunakan mikrokontroler AT89S52 pada intinya menggunakan tiga bagian utama yaitu: indikator, mikrokontroler AT89S52 dan tampilan sebagai media penunjuk. Rancangan ini berfungsi sebagai alat tambahan penunjukan ruangan yang lebih spesifik, apabila terjadi kebakaran disalah satu ruangan tampilan yang terdapat pada monitor akan menunjukkan ruangan dan nama ruangan yang terbakar.
2. IC Mikrokontroler AT89S52
Mikrokontroler AT89S52 merupakan mikrokomputer CMOS 8 bit dengan 8 Kbyte Flash Programmable and Erasable Read Only Memory. Mikrokontroler ini berteknologi memori non volatile kerapatan tinggi dari Atmel yang kompatibel dengan mikrokontroler standar industri MCS-51 baik pin kaki IC maupun set instruksinya serta harganya yang cukup murah.
AT89S52 mempunyai empat buah port yang masing-masing mempunyai 8 jalur data, yaitu P0, P1, P2 dan P3. Tersedia dalam beberapa macam bentuk fisik, antara lain; TQFP, PLCC, PDIP 40 Kaki, dan PDIP 42 kaki. Pada IC mikrokontoler diatas, penulis mengambil bentuk fisik yang secara umum sering dipergunakan, yaitu PDIP 40 kaki. Fungsi dari tiap-tiap kaki AT89S52 adalah sebagai berikut :
- • VCC (40)
Tegangan catu daya (5 Volt)
- • GND (20)
Ground
- • Port 0 (39-32)
Port 0 merupakan sebuah port 8 bit, bersifat open drain dan dapat digunakan untuk masukan dan keluaran. Port 0 dapat digunakan sebagai high input impedance, ketika logika 1 diberikan ke kaki port tersebut. P0 mempunyai internal pull-ups.
- • Port 1 (1-8)
Port ini merupakan 8 bit jalur I/O dengan internal pull-ups. Keluaran Port 1 dapat dihubungkan ke empat buah TTL. Port 1 juga dapat menerima alamat dan data selama penulisan dan pembacaan flash.
- • Port 2 (21-28)
Port ini merupakan 8 bit jalur I/O, dengan internal pull-ups. Keluaran Port 2 dapat dihubungkan ke empat buah TTL. Port 2 mengeluarkan alamat data tinggi selama pengambilan data menuju external memory. Selama pengaksesan ke external memorymenggunakan 16 bit alamat (MOVX @DPTR).
- • Port 3 (10-17)
Mempunyai 8 bit saluran I/O dengan internal pull-ups. Port 3 mempunyai fungsi sampingan, yaitu
Tabel 1. Fasilitas Spesial Port 3 AT89S52
Port Pin | Fungsi sampingan |
P3.0 | RXD (serial input port) |
P3.1 | TXD (serial output port) |
P3.2 | INT0 (external interrupt 0) |
P3.3 | INT1 (external interrupt 1) |
P3.4 | T0 (timer 0 external input) |
P3.5 | T1 (timer 1 external input) |
P3.6 | WR (external data memory write strobe) |
P3.7 | RD (external data memory read strobe) |
- • RST (9)
Aktif selama dua siklus pada kondisi high
- • ALE/PROG(3)
Pada pelaksanaan instruksi.ALE, digunakan untuk menahan alamat external memoryakan aktif hanya selama perintah MOVX atau MOVC.
- • PSEN (29)
Program Store Enable (PSEN), berfungsi untuk mengesekusi external memory.
- • EA/VPP (31)
External Access Enable (EA). Mikrokontroler akan menjalankan instruksi-instruksi yang berada pada memory external yang terletak pada alamat 0000H-FFFFH pada kondisilow. Dan menjalankan instruksi internal saat kaki ini diberi high.
- • XTAL 2 (18)
Sebagai masukan dari oscilator
- • XTAL 1 (19)
Sebagai keluaran dari oscilator
Mikrokontroler AT89S52 memiliki lima teknik pengalamatan, yang menunjukkan cara pengisian suatu lokasi memori, yaitu:
- 1). Pengalamatan Langsung
Teknik pengalamatan langsung dilakukan dengan memberikan nilai ke suatu registersecara langsung. Untuk melaksanakan teknik pengalamatan langsung digunakan tanda #.
Contoh instruksi :
MOV A,#25H (Mengisi akumulator dengan bilangan 25H).
- 2). Pengalamatan Tak Langsung
Teknik pengalamatan tidak langsung menunjuk ke sebuah register yang berisi lokasi alamat memori yang akan digunakan dalam operasi. Lokasi yang sebenarnya tergantung pada isi register saat perintah dijalankan. Untuk melaksanakan pengalamatan tidak langsung digunakan simbol @.
Contoh instruksi:
ADD A,@R1 (menambahkan isi RAM yang lokasinya ditunjukkan oleh register R1 ke akumulator).
3). Pengalamatan Bit
Teknik pengalamatan bit adalah penunjukkan alamat lokasi bit baik dalam RAM internalatau perangkat keras. Untuk melakukan pengalamatan bit digunakan simbol titik (.), misalnya FLAGS.3, 40.5, 21H.5, dan ACC.7.
Contoh instruksi:
SETB TR1 (mengaktifkan TR1atau timer 1 on).
- 4). Pengalamatan data
Terjadi pada perintah saat nilai operand merupakan alamat dari data yang akan diproses.
Contoh instruksi:
Mov A, 00100010b (isi akumulator dengan data yang ada)
- 5). Pengalamatan kode
Merupakan pengalamatan yang terjadi ketika operand berfungsi sebagai alamat dari perintah JUMP dan CALL.
3. Rangkaian Penguat Sensor
Rangkaian ini terdiri dari empat buah LED sebagai pemberi sinyal pada LDR serta sebagai indikator dan empat buah LDR (Light Emited Diode) yang berada ditiap-tiap ruangan / gedung dan satu buah potensio meter 20 KΩ yang berfungsi sebagai pengatur sensitifitas sensor tersebut.
Rangakaian ini berfungsi sebagai potensio logika untuk masukan rangkaian ke mikrokontroler AT89S52. Dengan cara apabila potensio meter ini di putar ke kanan searah jarum jam, maka potensio ini akan menghasilkan tegangan yang apabila tegangan tersebut melebihi tegangan yang sudah diatur sensitifitasnya oleh potensio meter, karena tegangan yang dihasilkan oleh sensor sangat kecil maka digunakan IC LM 324 yang berfungsi sebagai comparator tegangan yang dihasilkan dari sensor tersebut.
Indikator ini akan terhubung ke Port 0 mikrokontroler yaitu:
- • Port 0.0 menunjukan nama ruangan/lokasi Ruang 1
- • Port 0.1 menunjukan nama ruangan/lokasi Ruang 2
- • Port 0.2 menunjukan nama ruangan/lokasi Ruang 3
- • Port 0.3 menunjukan nama ruangan/lokasi Ruang 4
Pin 0 sampai pin 3 yang dijadikan sebagai masukan berlogika satu (High), dan pin 4 sampai pin 8 tidak digunakan maka port ini dihubungkan ke ground.
4. Rangkaian Kontrol
Sistem kontrol pada rangkaian ini menggunakan mikrokontroler AT89S52 yang merupakan tempat pengolahan data dan pengoperasian alat. Mikrokontroler ini mempunyai delapan buah port, tetapi disini hanya digunakan empat buah port yang dipakai sebagai simulasi. Empat buah port ini digunakan untuk menampung masukan atau keluaran data.
Tabel 2. Data Inputan Mikrokontroler
NO | INPUT BINER | INPUT HEX |
1. | 0000.1111 | A |
2. | 0000.1110 | B |
3. | 0000.1101 | C |
4. | 0000.1100 | D |
5. | 0000.1011 | E |
6. | 0000.1010 | F |
7. | 0000.1001 | G |
8. | 0000.1000 | H |
NO | INPUTAN BINER | INPUTAN HEX |
9. | 0000.0111 | I |
10. | 0000.0110 | J |
11. | 0000.0101 | K |
12. | 0000.0100 | L |
13. | 0000.0011 | M |
14. | 0000.0010 | N |
15. | 0000.0001 | N |
16 | 0000.0000 | O |
5. Tampilan
Pada tampilan ini digunakan bahasa pemograman Visual Basic 6.0 sebagai penampil lokasi kebakaran yang dikirim oleh sensor. Bagian ini berfungsi untuk menampilkan status sensor, apakah sensor dalam kondisi normal atau dalam kondisi alarm.
6. Program Penguji
Untuk dapat member jalur hubungan antara PC dengan dunia luar diperlukan suatu interface, dimana interface tersebut dijalankan dengan bantuan sebuah program, sehingga hanya dengan program yang diberikan tersebut suatu interface dapat bekerja sesuai rencana.
PROGRAM ASSEMBLY:
MOV A,SBUF
CLR RI
MOV A,#’0′
CLR TI
MOV SBUF,A
CEK_0:
JNB TI,CEK_0
MOV A,P0
CJNE A,#0F0H,CEK_1
MOV A,#’a’
CLR TI
MOV SBUF,A
CEK_1:
JNB TI,CEK_1
CJNE A,#0F1H,CEK_2
MOV A,#’b’
CLR TI
MOV SBUF,A
CEK_2:
JNB TI,CEK_2
CJNE A,#0F2H,CEK_3
MOV A,#’c’
CLR TI
MOV SBUF,A
CEK_3:
JNB TI,CEK_3
CJNE A,#0F3H,CEK_4
MOV A,#’d’
CLR TI
MOV SBUF,A
CEK_4:
JNB TI,CEK_4
CJNE A,#0F4H,CEK_5
MOV A,#’e’
CLR TI
MOV SBUF,A
CEK_5:
JNB TI,CEK_5
CJNE A,#0F5H,CEK_6
MOV A,#’f’
CLR TI
MOV SBUF,A
CEK_6:
JNB TI,CEK_6
CJNE A,#0F6H,CEK_7
MOV A,#’g’
CLR TI
MOV SBUF,A
CEK_7:
JNB TI,CEK_7
CJNE A,#0F7H,CEK_8
MOV A,#’h’
CLR TI
MOV SBUF,A
CEK_8:
JNB TI,CEK_8
CJNE A,#0F8H,CEK_9
MOV A,#’i’
CLR TI
MOV SBUF,A
CEK_9:
JNB TI,CEK_9
CJNE A,#0F9H,CEK_10
MOV A,#’j’
CLR TI
MOV SBUF,A
CEK_10:
JNB TI,CEK_10
CJNE A,#0FAH,CEK_11
MOV A,#’k’
CLR TI
MOV SBUF,A
CEK_11:
JNB TI,CEK_11
CJNE A,#0FBH,CEK_12
MOV A,#’l’
CLR TI
MOV SBUF,A
CEK_12:
JNB TI,CEK_12
CJNE A,#0FCH,CEK_13
MOV A,#’m’
CLR TI
MOV SBUF,A
CEK_13:
JNB TI,CEK_13
CJNE A,#0FDH,CEK_14
MOV A,#’n’
CLR TI
MOV SBUF,A
CEK_14:
JNB TI,CEK_14
CJNE A,#0FEH,CEK_15
MOV A,#’o’
CLR TI
MOV SBUF,A
CEK_15:
JNB TI,CEK_15
CJNE A,#0FFH,CEK_16
MOV A,#’p’
CLR TI
MOV SBUF,A
CEK_16:
JNB TI,CEK_16
CLR TI
MOV A,R1
MOV SBUF,A
RETI
END
PROGRAM VISUAL BASIC :
Public Sub Get_Connect()
On Error GoTo Handle_Error
MSComm1.PortOpen = True
Mn_Dis.Checked = False
Mn_Dis.Enabled = True
Mn_Con.Checked = True
Mn_Con.Enabled = False
Timer4.Enabled = True
Timer3.Enabled = True
StatusBar1.Panels(“Status”).Text = “Status : On Line”
StatusBar1.Panels(“Setting”).Text = “Setting : COM” & MSComm1.CommPort & “,” & MSComm1.Settings
Exit Sub
Handle_Error:
MsgBox Error$, 48, “Konfirmasi Kesalahan Setting”
End Sub
Program diatas untuk mengaktifkan komponen MSComm1 pada form main, agar dapat berfungsi untuk membuka port serial komputer dan mengatur karakteristik komunikasi port serial tersebut.untuk menjalankan fungsinya, maka property pada MSComm1 harus diatur dalam kondisi:
- • Mempunyai kecepatan komunikasi data sebesar 9600 bit data per detik.
- • Tidak menggunakan mode parity bit (n).
- • Kemampuan komunikasi dengan 8 bit data.
- • Menggunakan 1 stop bit untuk mengakhiri suatu komunikasi data.
If Text1.Text = “a” Then
Shp_Area1.BackColor = &HC0C0C0
Shp_Area2.BackColor = &HC0C0C0
Shp_Area3.BackColor = &HC0C0C0
Shp_Area4.BackColor = &HC0C0C0
Shp_Normal(0).BackColor = vbGreen
Shp_Normal(1).BackColor = vbGreen
Shp_Normal(2).BackColor = vbGreen
Shp_Normal(3).BackColor = vbGreen
Shp_Alarm(0).BackColor = vbWhite
Shp_Alarm(1).BackColor = vbWhite
Shp_Alarm(2).BackColor = vbWhite
Shp_Alarm(3).BackColor = vbWhite
Lbl_ASFD.BackColor = vbWhite
Program diatas berfungsi untuk menunjukan kondisi sensor asap pada saat normal di beri tanda dengan warna hijau yang berarti bahwa tidak ada kebakaran di semua ruangan.
Private Sub Command1_Click()
Timer1.Enabled = False
Timer3.Enabled = False
Timer4.Enabled = False
Form_Warning.Visible = False
Text1.Text = “”
Dim a, b As Integer
For a = 0 To 3
Shp_Alarm(a).BackColor = vbWhite
Next a
For b = 0 To 3
Shp_Normal(b).BackColor = vbWhite
Next b
Shp_Area1.BackColor = &HC0C0C0
Shp_Area2.BackColor = &HC0C0C0
Shp_Area3.BackColor = &HC0C0C0
Shp_Area4.BackColor = &HC0C0C0
Lbl_ASFD.BackColor = vbBlack
Call Mn_Dis_Click
End Sub
Program diatas berfungsi sebagai reset yaitu mematikan alarm dan mengembalikan kondisi normal.
Langganan:
Postingan (Atom)