Thông báo

Collapse
No announcement yet.

Tutorial: Led ma trận bằng hình ảnh (completed)

Collapse
This is a sticky topic.
X
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • ozonedark2
    replied
    mấy bác giúp em cái chương trình này với sao em nạp vô chip không chạy
    Attached Files

    Leave a comment:


  • voiviqua
    replied
    các bác cho en hỏi chương trình của em sai ở chỗ nào mà nó có hiện tượng kiểu như bóng ma,nhưng nhìn kĩ lại không phải.ai sửa giúp em với.
    THANKS!!!!!!!!!!!!
    Attached Files

    Leave a comment:


  • 01642555134
    replied
    đó là hiệu ứng bóng ma trên matrix, đơn giản bạn viết 1 câu lệnh tắt dữ liệu trước khi tăng con trỏ dptr là oke

    Leave a comment:


  • ozonedark2
    replied
    em đang làm cái ma trận nhưng chữ trên led có bóng làm xao để hết bóng vd: hiển thị chữ "C" mà có led xáng mờ hình chữ "C" như cái bóng của của chữ "C"

    Leave a comment:


  • lee_nguyen
    replied
    Nguyên văn bởi chung1608 Xem bài viết
    quét 32 hàng. Tách 32 hàng ra 4 cụm 8 hàng. Load dữ liệu cần hiển thị vô ram, quét cùng lúc 4 cụm
    bạn đã làm cái này bao giờ chưa? m mới học VĐK thôi, nên cái khoản ram mù tịt ah! m cũng nghĩ chia ra làm 4 hàng, nhưng còn phần cứng chưa biết lựa chọn tn? mong cả nhà góp ý!

    Leave a comment:


  • chung1608
    replied
    Nguyên văn bởi lee_nguyen Xem bài viết
    hì hục đọc 1 đống tài liệu về led ma trận, đang định làm 1 cái 32X64 mà thấy nản quá, chẳng hiểu tí gì, ra quán hỏi nó hét 300K/broad 16X32 + hơn 1tr cái CPU thấy mà phát sợ. có a, e nào hảo tâm chỉ mình cách làm ma trận 32X64 cái! e cám ơn trước nhá!
    quét 32 hàng. Tách 32 hàng ra 4 cụm 8 hàng. Load dữ liệu cần hiển thị vô ram, quét cùng lúc 4 cụm

    Leave a comment:


  • lee_nguyen
    replied
    hì hục đọc 1 đống tài liệu về led ma trận, đang định làm 1 cái 32X64 mà thấy nản quá, chẳng hiểu tí gì, ra quán hỏi nó hét 300K/broad 16X32 + hơn 1tr cái CPU thấy mà phát sợ. có a, e nào hảo tâm chỉ mình cách làm ma trận 32X64 cái! e cám ơn trước nhá!

    Leave a comment:


  • daohuytien
    replied
    Nguyên văn bởi bin_rom_95 Xem bài viết
    tran dùng trong trong mạch ma trận led kia có chức năng gì
    tui góp ý một tý nhé :các bạn muốn mình là được matran cỡ nho nhỏ này thì cứ đọc kỹ các bài hướng dẫn của anh ngohaibac đi, rồi kết hợp kiến thức của mình là có thể làm được chứ cứ hỏi thế này thì vẫn lặp lại mãi cái câu hỏi đó của các anh hồi trước thôi !. câu trả lời đã có ở những trang đầu của tut này rùi.
    tui cóp nhặt, ăn trộm được và đưa ra ý như thế này: giả sử bạn có mảng 8 byte a=[byte1, byte2,,byt3,....byte8] và matran 1 x 8 (hehe)
    khi đó muốn nó chạy sang trái thì bit byte1^7 được đẩy ra ngoài. bằng lệnh dịch trái. byte1=byte1<<1; bit2^7 của byte 2 được thế chỗ vào bit1^0,.... cứ như thế bit3^7 thế vào bit2^0..... bit8^0 sẽ được giá trị 0. nói như thế đối với byte vấn khó hiểu. vậy làm với mảng thế này dễ hiểu hơn nè :
    mảng a[64]có 64 phần tử để hiển thị lên 1 hàng của matran. khi đó muốn nó chạy sang trái thì :
    a[0]=a[1]; a[1]=a[2];....a[62]=a[63];a[63]=0;hiển thị lần 1
    a[0]=a[1]; a[1]=a[2];....a[62]=a[63];a[63]=0;hiển thị lần 2
    .................................................. ............................
    a[0]=a[1]; a[1]=a[2];....a[62]=a[63];a[63]=0;hiển thị lần 60
    là chạy sang trái ngay. các bạn thử nghĩ xem có đúng không rồi chém nhé.!

    Leave a comment:


  • bin_rom_95
    replied
    tran dùng trong trong mạch ma trận led kia có chức năng gì

    Leave a comment:


  • voiviqua
    replied
    sau nhiều lần tìm trên mang nhưng mình vẫn chưa biết cách cho chữ chạy từ phải qua trái bằng cách quét hàng thê nào cả.ai có code mẫu cho mình xin với.

    Leave a comment:


  • minhku
    replied
    cho em hỏi maled: có ý nghĩa gì thế mọi người
    org 0000h
    batdau:
    mov DPTR,#maled
    lap:mov r0,#30
    main1 :
    mov r2,#24
    mov r1,#16
    mov r7,#8
    mov b ,#0
    mov r3,#7fh

    main2:
    mov a,r3
    rl a
    mov r3,a
    mov p1,a
    setb p3.3
    setb p3.2
    setb p3.3
    clr p3.0
    mov a,r2
    movc a,@a+DPTR
    mov p2,a
    inc r2
    acall delay
    cjne r3,#07fh,main2
    main3:
    mov a,r3
    rl a
    mov r3,a
    mov p1,a
    clr p3.1
    setb p3.0
    setb p3.2
    setb p3.3
    mov a,r1
    movc a,@a+DPTR
    mov p2,a
    inc r1
    acall delay
    cjne r3,#07fh,main3
    main4:
    mov a,r3
    rl a
    mov r3,a
    mov p1,a
    clr p3.2
    setb p3.0
    setb p3.1
    setb p3.3
    mov a,r7
    movc a,@a+DPTR
    mov p2,a
    inc r7
    acall delay
    cjne r3,#07fh,main4
    main5:
    mov a,r3
    rl a
    mov r3,a
    mov p1,a
    clr p3.3
    setb p3.2
    setb p3.0
    setb p3.1
    mov a,b
    movc a,@a+DPTR
    mov p2,a
    inc b
    acall delay
    cjne r3,#07fh,main5

    djnz r0,main1
    inc DPTR
    mov a,DPL
    cjne a,#168,lap
    sjmp batdau
    delay :
    push 04
    push 05
    push 06
    mov r4,#4
    n1:mov r5,#4
    n2:mov r6,#4
    n3:djnz r6,n3
    djnz r5,n2
    djnz r4,n1
    pop 06
    pop 05
    pop 04
    ret

    delay2:
    mov r4,#4
    m1:mov r5,#4
    m2:mov r6,#4
    m3:djnz r6,m3
    djnz r5,m2
    djnz r4,m1
    ret


    org 800h

    maled: db 0h, 0h, 0h, 0h, 0h, 0h ,0h, 0h
    db 0h, 0h, 0h, 0h, 0h, 0h, 0h, 0h
    db 0h, 0h, 0h, 0h, 0h, 0h, 0h, 0h
    db 0h, 0h, 0h, 0h, 0h, 0h, 0h, 0h
    db 0h, 0h, 7eh, 10h, 8h, 70h, 0h,8h
    db 3eh, 48h, 20h,0h,8h,3eh,48h,20h
    db 0h ,0fch, 14h, 14h ,8h, 0h,0h, 24h
    db 0h, 40h, 0a0h, 50h, 28h, 14h,0ah, 4h
    db 0h, 7eh, 8h, 8h, 8h,7eh,0h,3ch
    db 42h,42h,42h,3ch,0h,7eh,0h, 0h
    db 3ch, 42h, 42h, 62h, 7ch,80h,0h,3eh
    db 40h, 40h, 3eh, 0h,7ch,0ah,0ah, 0ah
    db 7ch, 0h, 7eh, 4h, 8h,10h ,7eh, 0h
    db 0h, 8h, 7eh, 4ah, 4ah, 42h, 3ch, 0h
    db 7eh, 0h, 7eh,4ah, 4ah, 42h ,0h, 7eh
    db 4h, 8h, 10h, 7eh, 0h, 0h, 2h, 2h
    db 7eh, 2h, 2h,0h ,3eh, 40h ,40h, 40h
    db 3eh, 3h ,0h, 40h, 0h, 3ch ,42h, 42h
    db 24h, 0h,3ch, 42h, 42h, 3ch, 0h ,7eh
    db 4h, 8h, 4h, 7eh, 0h, 0h, 0h ,0h
    db 0h, 0h, 0h, 0h, 0h, 0h, 0h, 0h



    end

    Leave a comment:


  • hanoi86
    replied
    Hi Chao cac ban yeu dien tu , Bọn mình có thành lập nhóm day altium designer , AVR . Nêú bạn nào hứng thú thì pm minh nhe. Rất mong được sự hợp tác của các bạn .
    Last edited by hanoi86; 22-01-2013, 14:47.

    Leave a comment:


  • ozonedark2
    replied
    Nguyên văn bởi nghaiha Xem bài viết
    Hôm nay ta bắt đầu bài 3: Thay thế hàm delay bằng ngắt Timer1. Sở dĩ ta phải dùng ngắt Timer thay cho hàm delay bởi trong khi delay thì ta sẽ không làm được gì cả. Còn sử dụng Timer thì trong thời gian chờ đợi ta có thể chuẩn bị dữ liệu, tính toán hiệu ứng cho hàng tiếp theo.
    Em sẽ khai báo ngắt Timer1 như sau:



    Timer1 có tần số hoạt động là 15625Hz tức là nó sẽ đếm 15625 lần trong vòng 1s. Ở đây, nó cứ đếm từ 0 đến 0x25 = 37 thì ngắt Timer1 sẽ được gọi. Như vậy ngắt Timer1 sẽ được gọi với tần số là 15625/37=422 lần/s.
    Chúng ta phải nhớ kích hoạt ngắt nhé:



    Chương trình ngắt Timer1 được viết như sau:


    Như vậy mỗi khi ngắt Timer1 được gọi thì một hàng sẽ được quét. Ta có tất cả 8 hàng. Do đó tần số quét sẽ là: 422/8=53Hz. Với tần số quét này màn hình led sẽ không bị chớp.

    Các bác có thể thấy trong vòng lặp while (1) không còn câu lệnh nào cả. Việc quét led hoàn toàn thực hiện tự động nhờ Timer1.



    Các bác nghỉ lấy sức, qua bài 4 chúng ta sẽ học cách tạo bộ font chữ bằng chương trình Microsoft Excel như thế nào.

    Source code của bài 3 đây:

    http://rapidshare.com/files/134768565/bai3.doc

    Code:
    3. Thay delay bang ngat Timer 1
    /*****************************************************
    This program was produced by the
    CodeWizardAVR V1.25.8 Standard
    Automatic Program Generator
    © Copyright 1998-2007 Pavel Haiduc, HP InfoTech s.r.l.
    http://www.hpinfotech.com
    
    Project : 
    Version : 
    Date    : 7/27/2008
    Author  : Nguyen Hai Ha
    Company : www.softviet.net                   
    Comments: 
    
    
    Chip type           : ATmega8515L
    Program type        : Application
    Clock frequency     : 16,000000 MHz
    Memory model        : Small
    External SRAM size  : 0
    Data Stack size     : 128
    *****************************************************/
    
    #include <mega8515.h>
    #include <delay.h>
    // SPI functions
    #include <spi.h>
    
    #define SCK PORTB.7
    #define DATA PORTB.5
    #define SCL PORTB.3
    
    #define B PORTC.1;
    #define C PORTC.2;
    #define OE  PORTC.3;
    unsigned char r=0;
    void LatchData(){
        SCL=0;
        SCL=1;
    }
    // Timer 1 output compare A interrupt service routine
    interrupt [TIM1_COMPA] void timer1_compa_isr(void)
    {   if (r & 1){
            spi(0b10101010);
            spi(0b10101010);    
            spi(0b10101010);}
        else {
            spi(0b01010101);
            spi(0b01010101);    
            spi(0b01010101);               
        }
        LatchData();
        PORTC=r+8;
        r++;
        if (r==8) r=0;
    }
    
    void main(void){
       // SPI initialization
        // SPI Type: Master
        // SPI Clock Rate: 4000,000 kHz
        // SPI Clock Phase: Cycle Half
        // SPI Clock Polarity: Low
        // SPI Data Order: MSB First
        SPCR=0x50;
        SPSR=0x00;
    
        // Timer/Counter 1 initialization
        // Clock source: System Clock
        // Clock value: 15.625 kHz
        // Mode: CTC top=OCR1A
        // OC1A output: Discon.
        // OC1B output: Discon.
        // Noise Canceler: Off
        // Input Capture on Falling Edge
        // Timer 1 Overflow Interrupt: Off
        // Input Capture Interrupt: Off
        // Compare A Match Interrupt: On
        // Compare B Match Interrupt: Off
        TCCR1A=0x00;
        TCCR1B=0x0D;
        TCNT1H=0x00;
        TCNT1L=0x00;
        ICR1H=0x00;
        ICR1L=0x00;
        OCR1AH=0x00;
        OCR1AL=0x25;	// Quyet dinh toc do quet
        OCR1BH=0x00;
        OCR1BL=0x00;
    
    DDRB=0xFF;
    DDRC=0xFF;
    SCL=1;
    // Timer(s)/Counter(s) Interrupt(s) initialization
        TIMSK=0x40;
        // Global enable interrupts
        #asm("sei")
     
        while (1){
        }
    }
    Chúc vui vẻ!
    bác Hà cho em hỏi tại sao phải là 0->0x25(37) mà không phải là số khác

    Leave a comment:


  • haiga381
    replied
    mình xinh hỏi

    Nguyên văn bởi nghaiha Xem bài viết
    Hôm nay ta bắt đầu viết những chương trình đầu tiên, từ cái dễ đến cái khó. Không thể nào có thể viết một phát mà có ngay một dòng chữ chuyển động ngay được. Giống như ta tập đi, từng bước một.
    Ban đầu ta sẽ làm sao để bảng led ma trận của ta hiển thị được cứ một điểm sáng lại có một điểm tắt như sau:


    Chương trình em sẽ viết rất đơn giản như sau:

    Vậy là xong bài lập trình đầu tiên. Dễ như ăn cháo các bác nhỉ?

    Đây là bài đầu tiên em chú thích kỹ, từ bài tiếp theo em sẽ chỉ đưa ra các phần chính. Còn chương trình cụ thể các bác hãy download ở link bên dưới.
    bạn viết code assembly về avr xem nào, toàn viết C mình hok hiễu gì hết...huhu....bạn giúp mình với, viết bằng ASM đi bạn...

    Leave a comment:


  • trahanam000
    replied
    Nguyên văn bởi mrsayt00 Xem bài viết
    cho e hỏi mình muốn nạp chương trình vào vdk cụ thể là vdk 89s52 thì làm thế nào vậy các a.chỉ giúp e và cho e xin vài tấm ảnh minh hộ .cám ơn các pro
    Bạn có thể mua một mạch nạp ic 89 hoặc mang ra quán người ta nạp cho ( không có thì ra mấy quán quảng cáo bảo người ta nạp cho cũng được)

    Leave a comment:

Về tác giả

Collapse

nghaiha Tìm hiểu thêm về nghaiha

Bài viết mới nhất

Collapse

Đang tải...
X