AVR Dot Matrix: Moving Text ATMEGA8

Selingan lagi, gara-gara proyek USB-nya nga selesai-selesai.

Pada selingan pertama, contoh dot matrixnya menggunakan 8051 dengan metode mengirim data animasi per frame. Pada proyek kali ini, dot matrix digunakan untuk menampilkan teks. Menggunakan ATMEGA8 sebagai controller dan dot matriks yang digunakan berukuran 40×7.

Metodenya, setiap karakter akan diubah menjadi data 5  byte (lookup table) dan disimpan di dalam RAM (display_buffer). Setelah semua teks disimpan, display_buffer akan dikirim dengan metode scanning kolom, sehingga memudahkan teks bergeser ke kiri. Cuma dengan metode ini, program menjadi boros RAM.

Program dibuat menggunakan bahasa C, compiler AVR GCC.

Source code dan file simulasi proteus silakan download.

Dan saksikan video simulasinya di bawah ini.

Untuk yang menggunakan mikrokontroler 8051, silakan download saja. Contoh programnya menggunakan C Keil.

Semoga bermanfaat.

113 Responses

  1. mau tanya mas, ini proteusnya yang versi berapa ya?? kok nggak bisa dibuka ditempat saya???
    terima kasih

  2. wah punyaku juga ga bisa buka krn pake versi 7.0

  3. mas, aku mau tanya moving led nyakan pake compiler avr gcc, maksudnya apa mas, aku boleh minta sofwarenya ga?, cos dibuku antarmuka at89s52 ga ada. kirim ke emailku aja y mas ni emaik ku nzay_182@yahoo.com thanks.

  4. 1 lagi code programnya (moving led) bisa di compile pake sofware micro c ga…?

    • Program moving text ini menggunakan micro AVR dan 8051.
      Untuk AVR (ATMEGA8) menggunakan compiler AVR GCC yang bisa didownload di http://winavr.sourceforge.net/.

      Kalau yang menggunakan AT89S52 menggunakan Keil C Compiler (www.keil.com).

      Dengan sedikit modifikasi program juga bisa dicompile menggunakan micro C, micro C AVR atau micro C 8051. Program yang saya buat juga merupakan conversi dari Bascom

  5. mas makasih y, dah dijawab, tapi code program moving teksnya ga bisa dicompile pakai sofware keil mas…? apa code programnya ada yang kurang?

  6. mas, kalo tampilan display nya maw di ganti2 dengan menggunakan server admin bisa g y mas?

  7. Makasih Udah berbagi ilmunya……:D

  8. mas saya mau minta pendapatnya nih, saya sedang belajar micon denga bahasa asemmbly, ketika saya lihat vidio ms yg menggunakan bascom, kelihatanya jauh lebih mudah,pertanyaan saya apakah sya harus beralih ke bascom,atau tetap dengan bhasa assembly.

    • Saya sarankan sih beralih, ke Bascom atau C. Saya pakai C. Karena memang dengan bahasa tingkat tinggi pemrograman bisa menjadi lebih mudah. Tapi hasil compilasi akan memakan memori program lebih besar. Terus pemakaian RAM sepenuhnya dikendalikan oleh compiler.

      Kalau bahasa Assembly, memang lebih rumit. Misalkan jika ingin membuat program floating point.
      Tapi dengan bahasa assembler, memori program menjadi lebih kecil, terus program menjadi lebih cepat. Dan pemakaian RAM sepenuhnya dikendalikan oleh kita.
      Karena dengan bahasa assembly, program lebih cepat, maka bahasa assembly masih bisa digabung dengan Bascom atau C, disebut in-line assembler…

  9. terima kasih mas atas saranya, tapi saya sudah terlanjur beli antar muka at89s52, kira kira kalo boleh minta referensinya buku bascom untuk pemula apa y…, yg mudah dimengerti

  10. mas cara setting fusebit untuk atmega8 pakai cristal external 12Mhz gimana

  11. maf mas jd banyak tanya nih, kalo dot matrixnya saya mau tambah sampai 20 misalnya, setingan program yang harus diganti di bagian apanya. tolong dijawab semua ya mas. thanks…

  12. kang, minta tolong kalau menggunakan atmega 8535 dan CodevisionAVR gimana ya? makasih ya kang..

    • sepertinya tinggal merubah sedikit..di header file..dan seting portnya aja…program ini hanya menggunakan port, interupsi, timer dan yang lainnya tidak digunakan..sehingga mudah sekali untuk di compiler dengan compiler yang lain..

      Asalnya juga program ini menggunakan Bascom..terus saya ubah jadi C, dan juga hanya sedikit modifikasi ketika digunakan ke mikro 8051

  13. kang mau tanya…
    untuk scrolling text yang MCS 51 pada isi souce codenya kyaknya gk saya temukan listing yang berfungsi untuk menangani P0, tapi knapa y kok P0 tsbut bisa mengeluarkan sinyal keluaran. saya buka header yang digunakan jg kyaknya gk ada yang memperjelas untuk penggunaan P0. itu gmana tu kang??? mohon penjelasannya…

    • Dalam aplikasi dot matrix ini, P0 dan P2 dipakai untuk mengakses RAM external. Di program memang tidak secara explisit ditulis P0, tetapi ketika program mengakses RAM eksternal maka secara otomatis si compiler akan memberikan sinyal kepada P0.
      Dalam contoh program ini, semua variable yang digunakan dinyatakan sebagai RAM external (xdata), sehingga setiap operasi ke variable akan mengarahkan ke P0 sebagai port data dan address untuk RAM.
      Kalo bahasa assemblernya akan meng-generate perintah movx.
      Mungkin bisa dibaca kembali datasheet MCS51-nya..

      • wah… iya kang, saya memang blum baca datasheetnya secara keseluruhan, panjang banget, pake bhasa inggris pula….
        makanya pas aq edit listingnya, pendeklarasian variabel2 saya buat pake RAM internal, waktu dikompail errornya gak ada sih, tp kompailernya gk mau menghasilkan file .hex… dikarenakan kapasitas RAM internalnya gak cukup. apa benar pemahaman saya ini kang????
        makasih…

      • Compilenya pakai Keil?
        Kalau nga ada error, harusnya dihasilkan file hexa dihasilkan, mungkin belum diseting…coba check di target option, tab output pastikan create hexa file di check..
        selain itu saat compile dan sukses, compiler juga akan menginformasikan berapa memori program an ram yang dipakai..kalau melebihi kapasitas pasti akan error..

  14. salam kenal kang usman…blogna akang emang yg aq cari…bukunya jga bagus tu kang…lengkap…kapan kang usman ngeluarin buku microcontroler lagi…kalo bisa pake bahasa basic(bascom)…tx

  15. mau tanya tentang dotmatrik ni kang…pola domatrik(dotnya) ada berapa jenis sich kang…misal nya 5×7,8×8…trus yg umum ato biasa di pakai yg mna kang…??tx

    • Polanya sih bisa macam-macam…
      Untuk dot matriks yang biasa sih 5×7 atau 8×8, karena dengan pola ini bisa mudah membuat huruf/karakter.

      Dot matriks itu seperti LCD grafik, ukurannya bisa dari kecil sampai layar lebar..heheh kayak film aja.

      Contoh untuk program saya 40×7, 40 kolom x 7 baris.
      Contoh lain yang dipakai di lampu merah ukuranya 16×8…

  16. salam kenal kang…
    saya sudah coba buat hardwarenya, tapi kenapa koq semua matrixnya menyala semua ya?
    saya sudah ukur output dari TTL 7404,data dari mikrokontrolernya ternyata cuma 2-3 volt,
    padahal di animasi sudah ok. saya menggunakan bahasa C.trims sebelumnya.

    • Salam kenal juga…
      Coba dicheck lagi rangkaian di shift registernya…klo di simulasi sudah OK, di aktual juga harusnya OK..

  17. mas mau nanya,, saya sudah download source code n schematicnya. tak coba sudah berhasil n source codenya juga bisa saya compile. tetapi ketika saya mencoba mengembangkan menjadi 12 buah dot matrix 7×5 kok karakternya ancur y??? trus saya coba mengolah lagi source codenya masih tetep saja (ato mungkin saya belum terlelu paham). mohon sarannya.. ditunggu. trims sebelumnya

  18. mas, kalau menggunakan assembly dg uC at89s52 bisa di contohin??

  19. mas sepertinya sourcecode untuk avrdotmatrik mega8 bukan di gunakan untuk atmega8 tp untuk atmega128,soalnya setelah saya build dengan avr studio(WinAVR-20090313)disitu tertulis
    AVR Memory Usage
    Device: atmega128
    mohon penjelasanya?

    • Coba dicek lagi setingan device di AVR Studionya..
      saya waktu buatnya menggunakan Eclipse.
      Nah pada saat pakai AVR studio, anda harus menentukan devicenya ATMEGA8..

  20. thx mas untuk infonya….sukses selalu…

  21. mas mau tanya ni tegangan untuk matrix nya dipisah nggak dengan mikronya??trus pake tegangan brapa volt mas dan matrixnya tipe M atau tipe N??
    mohon penjelasannya mas makasih…….

  22. lam kenal ,mas untuk gambar mau di tampilkan di dot matrik caranya gimana?

    • salam kenal juga….

      Kalau untuk menampilkan gambar, sebenarnya mudah saja.
      Pertama buat gambar hitam putih dalam format bitmap dengan ukuran sesuai ukuran dot matriks. Misalnya 80×8. Kemudian gambar dot matriks tersebut diambil data-data, nah data-data itulah yang kemudian dikirim ke display dot matrix.
      Ini contohnya

      Selingan: Display Dot Matrix (Animasi)


      Dalam contoh ini saya membuat animasi tulisan, yang tentu saja bisa juga gambar. Animasinya saya buat dulu pakai GIF animator. Nah file gifnya kemudian di-ekstrak menjadi frame-frame dengan format bmp. Lalu diambil deh datanya. Saya menggunakan mikrokontroler AT89S52 dan bahasa assembler.
      SOftware untuk mengektrak data bitmap juga bisa didownload di sana.

  23. salam sukses kang,saya ada sedikit pertanyaan, pada postingan di atas (avrdotmatrik mega8) saya telah mencoba untuk mengcompile dengan menggunakan codevision avr
    tetapi hasil compile selalu error,padahal definisi port dan header file sudah saya modifikasi,pertanyaan saya bagian mana yang perlu saya rubah lagi?atau kalo kang usman ada file projecnya tolong di kirim ke email saya(multicard19@gmail.com)terima kasih

  24. saya sudah coba menggunakan eclip juga masih ada 15error,saya menginstall ECLIPSE sesuai dengan yg ada di postingan blog ini semuanya terinstal dengan benar,
    errornya
    Symbol ‘DATA_PORT’ could not be resolved AVRDotMatrix.c
    Symbol ‘DDRB’ could not be resolved AVRDotMatrix.c
    Symbol ‘DS_Hi’ could not be resolved AVRDotMatrix.c
    warningnya
    No return, in function returning non-void AVRDotMatrix.c
    Statement has no effect ‘DS_Hi’ AVRDotMatrix.c
    intinya di bagian trsebut keseluruhanya ada15 error dan 9 warning
    kalo kang usman punya file projectnya(ECLIPSE)tlng krm k email saya(multicard19@gmail.com)

  25. kang.. nerima les membuat dot matrix,a gk…? saya pengen bisa , tapi saya gk bisa pemrogramannya,,

  26. kang saya mau tnya .. saya kan abis download avrdotmatrik yang avrstudio saya ngerubah tulisannya pada char nya itu malah berantakan bos.. mohon petunjuknya kang.. thx

  27. mas source code nya ada yg versi codevision avr ga? saya sedikit kebingungan klo pake avr studio 4.. trima kasih… 🙂

    • untuk yang versi code vision belum ada euy…belum sempet nyoba2 code vision nih…

      • ohh gtu yg kang, saya sudah compile dengan winAVR berhasil kang, simulasi dengan proteus dan hardwarenya jg berhasil, tetapi saya cuma pakai satu dot matrix 7×6 yg saya buat sendiri… pengennya si saya konversi pakai codevision avr aja, karena saya lbih sering pakai codevision. mau nanya nih kang klo di winAVR atau d AVR STUDIO 4 ada listing “const char text_data[] PROGMEM”, PROGMEM itu maksudnya apa yah? maklum kang saya pemula nih, mohon bantuannya… hehe..

  28. nambah animasi gmana gan??

  29. ia.,., thks mas bro.,.,.,
    saya mau request bole ngk???
    listing program/source code at89s52 matrix8x8 yang bisa nampilin huruf aja???
    mohon bantuan-a .,., terimakasih
    harap mas reply ke restu.reza@gmail.com

  30. source code di atas pake avr code vision mas?

  31. mas untuk tampilkan tuilsan tidak pakai animasi,trus berjalan dari kanan ke kiri gimana list. programnya?
    untuk ATMEGA8

  32. PA minta diagramnya di gambar di protel dikirim ke hhubertushans@yahoo.co.id

  33. Bisa minta pcb layoutnya ga klo bisa kirim ke email : hhubertushans@yahoo.co.id, habisnya saya sudah coba bikin rangkaian yang di tunjukan tetapi dot matrixnya tidak bisa jalan atau kedip sedikitpun, kenapa ya?

  34. mas saya mau tanya…saya sudah download dan udah bisa tp ketika saya ganti pake atel32 jd eror ya….. bisa bantu menyelesaikannya mas…..mksh….

  35. kang usman mau tanya….saya lg buat seperti kang usman …tapi saya menggunakan atemega32… sorch codenya yang diganti yang mana ya kang biar bisa di jalankan di mikro atmel32… kalo sorch dalam bentuk bascomnya ada tidak mas…kalo ada boleh saya minta mas….

  36. sip,,,,thanks

  37. assalamualaikum, mas saya mau tanya, untuk 7-segmen pake common cathoda ato common anoda ya, karena di proteus tidak disebutkan secara terperinci. terimakasih

  38. mas ADA coding yang menggunkan bahasa assemby tidak mas,,,,
    untuk tulisan berjalan,,,

  39. mas bleh minta program yang support d code vision AVR 2.05 g?

    • Wah saya nga pernah pakai code vision nih..
      Ubah sendiri aja, sesuaikan dengan formatnya code vision

  40. mas klo pake code vision punya contoh sorc codenya..blognya mantap mas

  41. ada gak mas sourc odenya yg code vision?????klo ada saya boleh tuh kirimin mas
    yuliyadit@rocketmail.com hhh mkasi ya

    • mohon maaf mas, tidak punya code vision.
      Atau convert aja program diatas ke CV. Paling ngerubah file include…

  42. iya saya kompaail pake avr studio 4 kok masi ada yg eror ya mas util/delay dan “avr/pgmspace.h” ,ST_CP_Hi;
    ST_CP_Lo;
    SH_CP_Hi;
    SH_CP_Lo;
    kok masi eror y mas mohon penjelasn sintak di atas mas trima kasi

  43. satu lagi mas klo saya ganti pake atmega 16 bisa kan mas….mau ralat mas udah gak eror cuma masi ada 3 warning mas
    c:/winavr-20100110/lib/gcc/../../avr/include/util/delay.h:85:3: warning: #warning “F_CPU not defined for ”
    c:/winavr-20100110/lib/gcc/../../avr/include/util/delay.h:90:3: warning: #warning “Compiler optimizations disabled; functions from won’t work as designed”
    ../matix.c:273: warning: pointer targets in passing argument 1 of ‘strcpy’ differ in signedness
    mohon pencerahanya mas makasi,

  44. ijin download mas…

    oia masa ada tutorial cara buat karakternya mas??
    terima kasih…

  45. mas data2 komponen ic nya apa mas?yg gak ada proteus.

  46. oh ya mas,bisa jpg gambar skematiknya?

  47. kang…sy tolong dibantu dong, animasi dot matrix seperti air mancur.. gimana kang,,,tolong tolong …ke email saya aja yah trims

  48. mas minta file includenya biar bisa diedit, “avr/io.h”
    “util/delay.h”
    “avr/pgmspace.h”
    “string.h
    kirim ke emailku : luthfan_55091@yahoo.co.id
    trims banyak mas, sukses trus

  49. Assalualaikum, mas maaf saya mau tanya. . . .saya sudah membuat prototype dot matrik seperti rangkaian mas usman, program juga sam persis . . .kesalahan pada letak pemasangan ic shif reg . . kebalik . . .jadi untuk tampilan jadi miror . . .seharusnya tulisan keluar dari kanan jadi kiri. untuk hurufnya juga miror . . .biar gak mengubah2 hardware . . .listing program mana mas ya yang dganti . . . . tolong bantuanya

  50. kang cara menampilkan nama dengan dot matrik menggunakan bahasa C bagaimana? mungkin ada contoh programnya… makasih..

  51. banyak error coy…klu copy paste tu jangan setengah2
    ;p

  52. saya compile dgn avr studio (avr gcc) kok gagal ya?pdhl sm persis
    mhon pencerahannya

    • Gagalnya gimana?
      Di sana ada 2 contoh program, yang AVR dan 8051.
      Nah yang AVR pakai AVR GCC sedangkan yg 8051 pakai Keil…
      Apa mungkin yang mas compile itu yang contoh 8051?

  53. mas minta program avr studionya donk,,, yang full scriptnya ya ke email aja rudy.elektro@gmail.com

    • Lho contoh programnya kan emang sudah pakai AVR GCC yang notabene adalah compiler yang dipakai oleh AVR GCC…
      Tinggal buat project baru aja di AVR Studio, terus tambahkan semua file source…

      • tapi kalo dicopy di project baru setelah dicompile hasilnya error l;u mas di proteusnya 🙂

      • Errornya seperti apa?

      • dot matrixnya tidak tampil tulisan seperti yang di tulis di program. mohon pencerahan mas 🙂

      • Ini dicoba di Proteus atau langsung hardware?
        Koneksi/skematiknya sudah bener?

      • proteus, kalo make .hex nya langsung dari sini bisa, tapi kalo saya compile lagi dengan AVR Studio GCC tampilannya gak sesuai dengan tampilan .hex yang dari blog ini langsung

      • ini yg saya maksud kang. kan seharusnya kata2 moving text yg avr nya bisa diganti. lha ini belum diganti, persis sama,tapi kok gagal compile ya di avr gcc?yg bermasalah bukan skematik proteusnya (cz sm ky yg di berikan) tp yg bermasalah adalah source codenya. mohon pencerahan kang 🙂

      • just kasi tau ajeeee . . . . . .menurutku ni codingnya emang dibikin error, supaya kita cari mana yang salah N saya udah menemukan mana yang salah. . . ayo dipetani scriptnya. Tips: ngerti alur kerja hardware insyaallah tau programnya

        GANBATTE

        2013/2/12 Blogna Kang U-2 Man

        > ** > okta commented: “ini yg saya maksud kang. kan seharusnya kata2 moving > text yg avr nya bisa diganti. lha ini belum diganti, persis sama,tapi kok > gagal compile ya di avr gcc?yg bermasalah bukan skematik proteusnya (cz sm > ky yg di berikan) tp yg bermasalah adalah source cod” >

      • Gagal compile? Errornya apa?

      • Mas mohammad shofwan

        Saya tidak akan memposting source yang pas dicoba tidak jalan…

      • owwww, maaf, mas saya mau tanya, saya kemaren salah dalam pemasangan, urutan kolom colom, yang kanan saya layout sambung kiri, yang kiri saya sambung kanan. yang eveknya text keluar kebalik seharus e dari kanan jadi kiri, N tulisanya mirror maaf kira2 solusinya script bagian mana ya yang diubah. udah saya utek2 belum menemukan trimakasiiiiii

        2013/2/15 Blogna Kang U-2 Man

        > ** > Kang U-2 Man commented: “Mas mohammad shofwan Saya tidak akan > memposting source yang pas dicoba tidak jalan…” >

  54. ni mas message hasil compile dan debug nya
    Loaded plugin AVR GCC
    Loaded partfile: C:\Program Files\Atmel\AVR Tools\PartDescriptionFiles\ATmega8.xml
    gcc plug-in: Output directory C:\Users\BorneoKid\Downloads\AVRDotMatrix\default\ does not exist
    gcc plug-in: Created directory C:\Users\BorneoKid\Downloads\AVRDotMatrix\default\
    AVR Simulator: Please wait while configuring simulator…
    AVR Simulator: ATmega8 Configured OK
    Loaded objectfile: C:\Users\BorneoKid\Downloads\AVRDotMatrix\default\rumah.elf

    kl bgini ga ada error kan ya brti?
    tp pas dicoba di proteus, kluarnya cm titik yg bergerak cepat, pdhl programnya persis kok..apa mungkin sy salah dalam langkah pembuatan projectnya?mohon pencerahannya 😀

  55. 8 bit data bus * 8 bit address bus
    dengan atmega8 bisa tuh
    outputnya 8 row * 256 kolom, dan cukup hemat memory
    gimana ada yang mau tau???

  56. mas kok filenya gabisa saya download ya??

    kalo boleh kabari ke emailku ya kevinpnmail@gmail.com

  57. mas rahmat, q minta donk file projectnya sm proteusnya..ke oktakudo@yahoo.com . trims 🙂

  58. ada yang salah nih source codenya,masalah dialami kayak mas okta

  59. Kang usman.. boleh ngga minta coding / penjelasan lengkap mengenai program dotmatrix yang menggunakan bahasa c tsb, terutama pada mekanisme lookup table, pengubahan char menjadi data 5 byte, mohon pencerahanya.. (bimo.lokajambi@gmail.com)… nuhun atas sharing ilmu nya..

  60. Kang Usman yg baik,,

    Sya udah download source codenya dan sdh cba rubah tampilan text serta sy compile pake Win AVR hasilnya berhasil.
    Yg sy tanyakan :

    1. gmana klo misalnya sy pingin tambahkan 40 kolom lgi, apakah ada perubahan rangkaian shift registernya.
    2. apakah ada perubahan source codenya, jika ada bagian yg mananya kang..??

    Makasih atas sharingnya kang Usman…

  61. setelah saya compile pakai AVR GCC muncul error sbb:

    ../dotmatrix.h:23: warning: only initialized variables can be placed into program memory area
    ../TEST.C: In function ‘int main()’:
    ../TEST.C:136: error: invalid conversion from ‘unsigned char*’ to ‘char*’
    ../TEST.C:136: error: initializing argument 1 of ‘char* strcpy(char*, const char*)’
    make: *** [TEST.o] Error 1
    Build failed with 2 errors and 3 warnings…

    mohon pencerahananya

  62. Mantab Kang U-2 Man…
    Coding + Desain roteusnya sedikit sy modifikasi dg memperpanjang led matrixnya (kolom), bagian program/coding jg diedit scanning kolomnya.. dan BERHASIL, tp msh dlm simulasi proteus sj…
    Masalahnya, wktu simulasi, scroll textnya koq rada (sedikit) ‘patah-patah’ ya? apakah nanti hasilnya klo dibuat jg demikian ? (kurang mulus wktu text bergeser)
    Atau hanya simulatornya aja ? apakah tergantung dg spek pc ??
    Thx.

  63. salam kenal mas, mas saya lagi belajar bikin running text pake dot matrix, saya buat pake bascom, ada referensi buat bikin running text pake bascom ga mas, saya masih belajar
    terima kasih

Leave a reply to arya maulana Cancel reply