TM1640扫描程序

void delay()
{
    unsigned char i;
    i=10;
    while(i--);
}
void start_1640()
{
    SCK=0;
    delay();
    SDA=1;
    delay();
    SCK=1;
    delay();   
    SDA=0;
    delay();
    SCK=0;
    delay();
}

void stop_1640()
{
    SCK=0;
    delay();
    SDA=0;
    delay();
    SCK=1;
    delay();    
    SDA=1;
    delay(); 
    SCK=0;    
}

void send_data_1640(unsigned char x)
{
    unsigned char i;
    for(i=0;i<8;i++)
    {
        SCK=0;
        delay();
        if(x&0X01)SDA=1;
        else SDA=0;
        delay();
        SCK=1;
        delay();
        x>>=1;
    }
    SCK=0;
}

void scan_1640()
{
    unsigned char i;
    start_1640();
    send_data_1640(0X40);//地址自动+1
    stop_1640();
    
    start_1640();
    send_data_1640(0XC0);//从00地址开始
    for(i=0;i<16;i++)  
    {
        send_data_1640(disp_data[i]);
    }
    stop_1640();

    start_1640();
    send_data_1640(0X8A);//灰度显示
    stop_1640();    
}

你可能感兴趣的:(TM1640扫描程序)