1. THÔNG BÁO TUYỂN ADMIN DIỄN ĐÀN 2013
    Tìm kiếm nhà trọ - Ở ghép
    THÔNG BÁO BÁN ÁO SPKT.NET CHO THÀNH VIÊN DIỄN ĐÀN


    HÃY TÌM KIẾM Ở ĐÂY TRƯỚC KHI ĐẶT CÂU HỎI
    {xen:phrase loading}

BOARD LED 7 ĐOẠN GIAO TIẾP SPI

Thảo luận trong 'Vi điều khiển - Mạch Số' bắt đầu bởi khoahoctre, 22 Tháng một 2009.

  1. khoahoctre Giảng Viên

    Số bài viết: 451
    Đã được thích: 7
    Điểm thành tích: 16
    <div align='center'><span style="color:#FF0000"><span style="font-size:18pt;line-height:100%">BOARD LED 7 ĐOẠN GIAO TIẾP SPI</span></span></div>

    1.Giới thiệu sản phẩm:
    -Board mạch gồm 8 led 7 đoạn loại nhỏ, 2 IC SMD 74HC164 và 74HC595 cùng 1 số linh kiện dán bề mặt khác tạo nên 1 sản phẩm hoàn chình, nhỏ gọn và thẩm mĩ.

    -Giao thức điều khiển led dùng chuẩn truyền thông nối tiếp đồng bộ tốc độ cao SPI, với các chân đưa ra bao gồm: +5V, MOSI, MISO, SCK, RESET , GND. Đây cũng chính là chân nạp đối với vi điều khiển của hãng Atmel.

    +Nguyên lý mạch SPI-LED:

    [IMG]

    +Protocol (giao thức điều khiển như sau):

    [IMG]

    -Mạch in loại 2 mặt, chất lượng cao, được phủ màu đen nhằm giúp hấp thu các ánh sáng phản xạ phát ra từ led giúp led hiển thị rõ hơn.

    -Trên board mạch có bố trí sẵn nút RESET vi điều khiển, rất thích hợp dùng để bố trí trên các panel thiết bị hoặc trên robot trong cuộc thi Robocon, ta có thể Reset vi điều khiển bằng nút nhất này mà không phải nhấn nút Reset trên mainboard.

    2. Hình ảnh board LED:

    [IMG]

    [IMG]

    3. Thông tin liên hệ:
    Ban chủ nhiệm CLB Khoa học trẻ.
    Email: cuongtan1981@yahoo.com
    Mobile:0909744100
  2. thaihuy275 New Member

    Số bài viết: 1
    Đã được thích: 0
    Điểm thành tích: 0
    chao thay va cac ban
    minh can giup do
    cac ban co chuong tring quet led 7 doan ma dem tu 00 den 99
    goi qua mail cho minh voi
    minh cam on
    mail; thaihuy275@gmail.com
  3. 7ngay.net Banned

    Số bài viết: 90
    Đã được thích: 0
    Điểm thành tích: 0
    SƠ ĐỒ GIẢI THUẬT:Chương trình đếm từ 00 đến 99 trên led 7 đoạn [IMG]
    2. CODE CHƯƠNG TRÌNH:

    $MOD51
    ORG 00H
    MAIN:
    MOV R7,#00H
    MP1:
    LCALL BCD2TO7SEG
    LCALL DELAY_SCAN
    MOV A,R7
    ADD A,#1
    DA A
    MOV R7,A
    CJNE A,#00H,MP1
    SJMP MAIN
    DISP7SEGMUL2EXT:
    PUSH ACC
    PUSH 00H
    MOV A,#01H
    MOV R0,#61H
    DISP:
    MOV P0,@R0
    MOV P1,A
    LCALL DELAYLED
    MOV P0,#0FFH
    DEC R0
    DEC A
    CJNE R0,#05FH,DISP
    POP 00H
    POP ACC
    RET
    DELAYLED:
    PUSH 00H
    PUSH 01H
    MOV R1,#10
    DEL:
    DJNZ R0,$
    DJNZ R1,DEL
    POP 01H
    POP 00H
    RET
    DELAY_SCAN:
    PUSH 00H
    MOV R0,#50
    MOV TMOD,#01H
    LOOP2:
    MOV TH0,#HIGH(-5000)
    MOV TL0,#LOW(-5000)
    SETB TR0
    SCAN:
    LCALL DISP7SEGMUL2EXT
    JNB TF0,SCAN
    CLR TR0
    CLR TF0
    DJNZ R0,LOOP2
    POP 00H
    RET
    BCD2TO7SEG:
    PUSH DPH
    PUSH DPL
    PUSH ACC
    MOV DPTR,#CODE7SEG
    MOV A,R7
    ANL A,#0FH
    MOVC A,@A+DPTR
    MOV 60H,A
    MOV A,R7
    ANL A,#0F0H
    SWAP A
    MOVC A,@A+DPTR
    MOV 61H,A
    POP ACC
    POP DPL
    POP DPH
    RET
    CODE7SEG:
    DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
    END
    3. SƠ ĐỒ NGUYÊN LÝ:

    [IMG]
  4. say_1310 New Member

    Số bài viết: 1
    Đã được thích: 0
    Điểm thành tích: 0
  5. magic_boy_1989 New Member

    Số bài viết: 23
    Đã được thích: 0
    Điểm thành tích: 0
    #include <REGX51.H>

    #define LED1 P3_0
    #define LED2 P3_1
    #define LED3 P3_2
    #define LED4 P3_3

    #define do1 P2_0
    #define vang1 P2_1
    #define xanh1 P2_2
    #define do2 P2_3
    #define vang2 P2_4
    #define xanh2 P2_5

    unsigned char hangchuc1,hangdonvi1,hangchuc2,hangdonvi2,count1,count2,dem1,dem2,co;

    void display(unsigned char led)
    { // 0 1 2 3 4 5 6 7 8 9 A B C D E F
    unsigned char male7[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90 ,0x88,0x83,0xC6,0xA1,0x86,0x8E};
    switch (led)
    {
    case 0 :
    P1=male7[0];
    break;
    case 1 :
    P1=male7[1];
    break;
    case 2 :
    P1=male7[2];
    break;
    case 3 :
    P1=male7[3];
    break;
    case 4 :
    P1=male7[4];
    break;
    case 5 :
    P1=male7[5];
    break;
    case 6 :
    P1=male7[6];
    break;
    case 7 :
    P1=male7[7];
    break;

    case 8 :
    P1=male7[8];
    break;

    case 9 :
    P1=male7[9];
    break;
    }
    }


    void setup_timer0(void)
    { TMOD=0x10;
    TH0=0x8F;
    TL0=0xAF;
    ET0=1;
    EA=1;
    TF0=0;
    TR0=1;
    }


    void setup_timer1(void)
    { TMOD=0x01;
    TH1=0xEC;
    TL1=0x77;
    ET1=1;
    EA=1;
    TF1=0;
    TR1=1;
    }

    //Ham ngat timer1 dung de quet
    void T1_ISR(void) interrupt 3
    {TR1=0;
    TH1=0xEC; //5000us
    TL1=0x77;
    count2++;
    LED1=0;
    LED2=0;
    LED3=0;
    LED4=0;
    hangchuc1=dem1/10;
    hangdonvi1=dem1%10;
    hangchuc2=dem2/10;
    hangdonvi2=dem2%10;
    if(count2==1)
    {
    display(hangchuc1);
    LED1=1;
    }
    if(count2==2)
    {
    display(hangdonvi1);
    LED2=1;
    }
    if(count2==3)
    {
    display(hangchuc2);
    LED3=1;
    }
    if(count2==4)
    {
    display(hangdonvi2);
    LED4=1;
    count2=0; //Khoi dong lai bien dem
    }
    TF1=0;
    TR1=1;
    }

    //Ham ngat timer0 dung de jam so dem1 dem2
    void T0_ISR(void) interrupt 1
    {TR0=0;
    TH0=0x8F;
    TL0=0xAF;
    count1++;
    if(count1==20)
    {
    if (co==0)
    {P2=0;
    do1=1;
    xanh2=1;
    }
    co=co+1;
    dem1=dem1-1;
    dem2=dem2-1;
    if (co==21)
    {P2=0;
    dem1=dem2=2;
    do1=1;
    vang2=1;
    }
    if (co==26)
    {
    {
    P2=0;
    dem1=20;dem2=25;
    xanh1=1;
    do2=1;

    }
    }

    if (co==68)
    {
    P2=0;
    dem1=dem2=3;
    vang1=1;
    do2=1;


    }
    if (co==72)
    {
    P2=0;
    co=0;
    dem1=35;
    dem2=31;
    do1=1;
    xanh2=1;

    }
    }
    TF0=0;
    TR0=1;
    }

    void main()
    {
    if (P0_0==1)

    co=0;
    TMOD=0x11;
    setup_timer1();
    setup_timer0();
    count1=count2=hangchuc1=hangdonvi1=hangchuc2=hangdonvi2=0;
    hangchuc1=dem1/10;
    hangdonvi1=dem1%10;
    hangchuc2=dem2/10;
    hangdonvi2=dem2%10;
    dem1=35;
    dem2=31;
    P2=0;

    while(1)
    {

    }
    }



    em co code C làm mach đèn giao thông,nhưng đọc mà không hiểu chỗ hàm ngắt time0 để quét va hàm ngắt time1 để dếm lùi ! Các bác giải thích giùm em đoạn code trên nha! hjc em gà .......

Chia sẻ trang này