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}

dich chốt led 7 đoạn

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

  1. ngosicuong07 New Member

    Số bài viết: 15
    Đã được thích: 0
    Điểm thành tích: 1
    ////////////////////Viet tat chuong trinh/////////////////
    #include <htc.h>
    __CONFIG(INTIO & WDTDIS & PWRTEN & MCLREN & UNPROTECT & DUNPROTECT & BORDIS & IESODIS & FCMDIS & LVPDIS);
    const char LedCode[16]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
    char getVal(int v,char offset);
    unsigned int Counter =0;
    #define DATA RD0
    #define CLK RD2
    #define STROBE RD3
    #define OE RD4
    #define MR RD5
    void sspi(char data);
    void main()
    {
    int timer=0;
    ANSEL=ANSELH=0;
    TRISD0=0;
    TRISD1=1;
    TRISD2=0;
    TRISD3=0;
    TRISD4=0;
    TRISD5=0;
    STROBE=0;
    DATA=0;
    OE=0;
    MR=0;
    CLK=0;
    while(1)
    {
    for(Counter=0;Counter<=9999;Counter++)
    {
    sspi(getVal(Counter,0));
    sspi(getVal(Counter,1));
    sspi(getVal(Counter,2));
    sspi(getVal(Counter,3));
    STROBE=1;
    // NOP();y// ham delay 1 chu ky may
    STROBE=0;
    _delay(500);
    }
    }
    }
    char getVal(int v,char offset)
    {
    char temp;
    switch(offset){
    case 3: temp=v/1000;//;lay so hang nghin
    break;
    case 2: temp=(v%1000)/100;// lay so hang tram
    break;
    case 1: temp=((v%10000)%100)/10;
    break;
    case 0: temp=((v%1000)%100)%10;
    }
    return LedCode[temp];
    }
    void sspi(char data)
    {
    char i;
    for(i=0;i<8;i++){
    if(data&(0x80>>i))DATA=1;
    else DATA=0;CLK=1; // trigger clock form low to high
    CLK=0;
    }
    }

Chia sẻ trang này