⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vfd_51.c

📁 一个用C51驱动PT6324+VFD的源程序
💻 C
📖 第 1 页 / 共 2 页
字号:
        
        vfd_b_stb = 0;
        serial_out(VFD_B, COMMAND4 | DISPLAY_ON | duty_buf);   //command 4, duty
        vfd_b_stb = 1;
    }
}

void display_init(void)
{
    unsigned char wra;
    
    vfd_a_stb = 0;
    serial_out(VFD_A, COMMAND2 | INC_ADDR | W_DISP);   //command 2 
    vfd_a_stb = 1;
    
    delay_short(2);
    vfd_a_stb = 0;
    serial_out(VFD_A, COMMAND3 | 0x00);   //command 3
    for(wra=0; wra<2; wra++)
    {
        serial_out(VFD_A, 0x00);   //data
    }
    vfd_a_stb = 1;
    
    delay_short(2);
    vfd_a_stb = 0;
    serial_out(VFD_A, COMMAND1 | DIG5);   //command 1, 8dig, 24seg
    vfd_a_stb = 1;
    
    delay_short(2);
    vfd_a_stb = 0;
    serial_out(VFD_A, COMMAND4 | DISPLAY_ON | duty_buf);   //command 4, duty
    vfd_a_stb = 1;
    
    vfd_b_stb = 0;
    serial_out(VFD_B, COMMAND2 | INC_ADDR | W_DISP);   //command 2 
    vfd_b_stb = 1;
    
    delay_short(2);
    vfd_b_stb = 0;
    serial_out(VFD_B, COMMAND3 | 0x00);   //command 3
    for(wra=0; wra<2; wra++)
    {
        serial_out(VFD_B, 0x00);   //data
    }
    vfd_b_stb = 1;
    
    delay_short(2);
    vfd_b_stb = 0;
    serial_out(VFD_B, COMMAND1 | DIG5);   //command 1, 8dig, 24seg
    vfd_b_stb = 1;
    
    delay_short(2);
    vfd_b_stb = 0;
    serial_out(VFD_B, COMMAND4 | DISPLAY_ON | duty_buf);   //command 4, duty
    vfd_b_stb = 1;

    delay_short(2);
    vfd_a_stb = 0;        //all display show
    serial_out(VFD_A, COMMAND2 | INC_ADDR | W_DISP);   //command 2
    vfd_a_stb = 1;
    delay_short(2);
    vfd_a_stb = 0;
    serial_out(VFD_A, COMMAND3 | 0x00);   //command 3
    for(wra=0; wra<2; wra++)
    {
        serial_out(VFD_A, 0xff);   //data
    }
    vfd_a_stb = 1;

    vfd_b_stb = 0;        //all display show
    serial_out(VFD_B, COMMAND2 | INC_ADDR | W_DISP);   //command 2
    vfd_b_stb = 1;
    delay_short(2);
    vfd_b_stb = 0;
    serial_out(VFD_B, COMMAND3 | 0x00);   //command 3
    for(wra=0; wra<2; wra++)
    {
        serial_out(VFD_B, 0xff);   //data
    }
    vfd_b_stb = 1;
    
    delay_long(50000);

    vfd_a_stb = 0;        //all display dark
    serial_out(VFD_A, COMMAND2 | INC_ADDR | W_DISP);   //command 2
    vfd_a_stb = 1;
    delay_short(2);
    vfd_a_stb = 0;
    serial_out(VFD_A, COMMAND3 | 0x00);   //command 3
    for(wra=0; wra<2; wra++)
    {
        serial_out(VFD_A, 0x00);   //data
    }
    vfd_a_stb = 1;

    vfd_b_stb = 0;        //all display dark
    serial_out(VFD_B, COMMAND2 | INC_ADDR | W_DISP);   //command 2
    vfd_b_stb = 1;
    delay_short(2);
    vfd_b_stb = 0;
    serial_out(VFD_B, COMMAND3 | 0x00);   //command 3
    for(wra=0; wra<2; wra++)
    {
        serial_out(VFD_B, 0x00);   //data
    }
    vfd_b_stb = 1;
}

void display(void)
{
//    unsigned char wra;
    if(f_dispupdata)
    {
        f_dispupdata = 0;
        switch (mode)
        {
            case 0x00:
                vfd_b_stb = 0;
                serial_out(VFD_B, COMMAND2 | FIX_ADDR | W_DISP);   //command 2
                vfd_b_stb = 1;
                delay_short(2);
                vfd_b_stb = 0;
                serial_out(VFD_B, COMMAND3 | 0x00);   //command 3
                serial_out(VFD_B, 0xff);   //data
                vfd_b_stb = 1;
                delay_short(2);
                vfd_b_stb = 0;
                serial_out(VFD_B, COMMAND3 | 0x03);   //command 3
                serial_out(VFD_B, 0x00);   //data
                vfd_b_stb = 1;
                
                vfd_a_stb = 0;
                serial_out(VFD_A, COMMAND2 | FIX_ADDR | W_DISP);   //command 2
                vfd_a_stb = 1;
                delay_short(2);
                vfd_a_stb = 0;
                serial_out(VFD_A, COMMAND3 | 0x07);   //command 3
                serial_out(VFD_A, 0x00);   //data
                vfd_a_stb = 1;
                delay_short(2);
                vfd_a_stb = 0;
                serial_out(VFD_A, COMMAND3 | 0x0a);   //command 3
                serial_out(VFD_A, 0xff);   //data
                vfd_a_stb = 1;
                break;
        
            case 0x01:
                vfd_b_stb = 0;
                serial_out(VFD_B, COMMAND2 | FIX_ADDR | W_DISP);   //command 2
                vfd_b_stb = 1;
                delay_short(2);
                vfd_b_stb = 0;
                serial_out(VFD_B, COMMAND3 | 0x00);   //command 3
                serial_out(VFD_B, 0xff);   //data
                vfd_b_stb = 1;
                delay_short(2);
                vfd_b_stb = 0;
                serial_out(VFD_B, COMMAND3 | 0x03);   //command 3
                serial_out(VFD_B, 0xff);   //data
                vfd_b_stb = 1;
                
                //delay_short(2);
                
                vfd_a_stb = 0;
                serial_out(VFD_A, COMMAND2 | FIX_ADDR | W_DISP);   //command 2
                vfd_a_stb = 1;
                delay_short(2);
                vfd_a_stb = 0;
                serial_out(VFD_A, COMMAND3 | 0x07);   //command 3
                serial_out(VFD_A, 0xff);   //data
                vfd_a_stb = 1;
                delay_short(2);
                vfd_a_stb = 0;
                serial_out(VFD_A, COMMAND3 | 0x0a);   //command 3
                serial_out(VFD_A, 0xff);   //data
                vfd_a_stb = 1;
                break;
            
            case 0x02:
                if(f_dispshow)
                {
                    vfd_a_stb = 0;
                    vfd_b_stb = 0;
                    serial_out(VFD_B, COMMAND2 | FIX_ADDR | W_DISP);   //command 2
                    vfd_b_stb = 1;
                    delay_short(2);
                    vfd_b_stb = 0;
                    serial_out(VFD_B, COMMAND3 | 0x00);   //command 3
                    serial_out(VFD_B, 0xff);   //data
                    vfd_b_stb = 1;
                    delay_short(2);
                    vfd_b_stb = 0;
                    serial_out(VFD_B, COMMAND3 | 0x03);   //command 3
                    serial_out(VFD_B, 0xff);   //data
                    vfd_b_stb = 1;
                
                    //delay_short(2);
                
                    vfd_a_stb = 0;
                    serial_out(VFD_A, COMMAND2 | FIX_ADDR | W_DISP);   //command 2
                    vfd_a_stb = 1;
                    delay_short(2);
                    vfd_a_stb = 0;
                    serial_out(VFD_A, COMMAND3 | 0x07);   //command 3
                    serial_out(VFD_A, 0xff);   //data
                    vfd_a_stb = 1;
                    delay_short(2);
                    vfd_a_stb = 0;
                    serial_out(VFD_A, COMMAND3 | 0x0a);   //command 3
                    serial_out(VFD_A, 0xff);   //data
                    vfd_a_stb = 1;
                }
                else
                {
                    vfd_b_stb = 0;
                    serial_out(VFD_B, COMMAND2 | FIX_ADDR | W_DISP);   //command 2
                    vfd_b_stb = 1;
                    delay_short(2);
                    vfd_b_stb = 0;
                    serial_out(VFD_B, COMMAND3 | 0x00);   //command 3
                    serial_out(VFD_B, 0x00);   //data
                    vfd_b_stb = 1;
                    delay_short(2);
                    vfd_b_stb = 0;
                    serial_out(VFD_B, COMMAND3 | 0x03);   //command 3
                    serial_out(VFD_B, 0x00);   //data
                    vfd_b_stb = 1;
                
                    //delay_short(2);
                
                    vfd_a_stb = 0;
                    serial_out(VFD_A, COMMAND2 | FIX_ADDR | W_DISP);   //command 2
                    vfd_a_stb = 1;
                    delay_short(2);
                    vfd_a_stb = 0;
                    serial_out(VFD_A, COMMAND3 | 0x07);   //command 3
                    serial_out(VFD_A, 0x00);   //data
                    vfd_a_stb = 1;
                    delay_short(2);
                    vfd_a_stb = 0;
                    serial_out(VFD_A, COMMAND3 | 0x0a);   //command 3
                    serial_out(VFD_A, 0x00);   //data
                    vfd_a_stb = 1;
                }
                break;
            
            case 0x03:
                if(f_mode3p1)
                {
                    vfd_b_stb = 0;
                    serial_out(VFD_B, COMMAND2 | FIX_ADDR | W_DISP);   //command 2
                    vfd_b_stb = 1;
                    delay_short(2);
                    vfd_b_stb = 0;
                    serial_out(VFD_B, COMMAND3 | 0x00);   //command 3
                    serial_out(VFD_B, 0xff);   //data
                    vfd_b_stb = 1;
                    delay_short(2);
                    vfd_b_stb = 0;
                    serial_out(VFD_B, COMMAND3 | 0x03);   //command 3
                    serial_out(VFD_B, 0xff);   //data
                    vfd_b_stb = 1;
                
                    //delay_short(2);
                
                    vfd_a_stb = 0;
                    serial_out(VFD_A, COMMAND2 | FIX_ADDR | W_DISP);   //command 2
                    vfd_a_stb = 1;
                    delay_short(2);
                    vfd_a_stb = 0;
                    serial_out(VFD_A, COMMAND3 | 0x07);   //command 3
                    serial_out(VFD_A, 0x00);   //data
                    vfd_a_stb = 1;
                    delay_short(2);
                    vfd_a_stb = 0;
                    serial_out(VFD_A, COMMAND3 | 0x0a);   //command 3
                    serial_out(VFD_A, 0x00);   //data
                    vfd_a_stb = 1;
                }
                else
                {
                    vfd_b_stb = 0;
                    serial_out(VFD_B, COMMAND2 | FIX_ADDR | W_DISP);   //command 2
                    vfd_b_stb = 1;
                    delay_short(2);
                    vfd_b_stb = 0;
                    serial_out(VFD_B, COMMAND3 | 0x00);   //command 3
                    serial_out(VFD_B, 0xff);   //data
                    vfd_b_stb = 1;
                    delay_short(2);
                    vfd_b_stb = 0;
                    serial_out(VFD_B, COMMAND3 | 0x03);   //command 3
                    serial_out(VFD_B, 0xff);   //data
                    vfd_b_stb = 1;
                
                    //delay_short(2);
                
                    vfd_a_stb = 0;
                    serial_out(VFD_A, COMMAND2 | FIX_ADDR | W_DISP);   //command 2
                    vfd_a_stb = 1;
                    delay_short(2);
                    vfd_a_stb = 0;
                    serial_out(VFD_A, COMMAND3 | 0x07);   //command 3
                    serial_out(VFD_A, 0x00);   //data
                    vfd_a_stb = 1;
                    delay_short(2);
                    vfd_a_stb = 0;
                    serial_out(VFD_A, COMMAND3 | 0x0a);   //command 3
                    serial_out(VFD_A, 0x00);   //data
                    vfd_a_stb = 1;
                }
                break;
            
            default:
                break;
        }
    }
}

void serial_out(unsigned char vfd_select, unsigned char s_data)
{
    register unsigned char i;
    switch(vfd_select)
    {
        case VFD_A:
            {
                for(i=0; i<8; i++)
                {
                    vfd_a_din = (bit) (s_data & 0x01);
                    vfd_a_clk = 0;
                    vfd_a_clk = 1;
                    s_data = s_data >> 1;
                    vfd_a_din = 0;
                    vfd_a_clk = 0;
                }
            }
            break;   
            
        case VFD_B:
            {
                for(i=0; i<8; i++)
                {
                    vfd_b_din = (bit) (s_data & 0x01);
                    vfd_b_clk = 0;
                    vfd_b_clk = 1;
                    s_data = s_data >> 1;
                    vfd_b_din = 0;
                    vfd_b_clk = 0;
                }
            }
            break;
            
        default:
            break;
    }
}
/*
void hex2bcd(unsigned char hexdata)
{
	bcd[2] = 0;
	
	while (hexdata >= 100) {hexdata -= 100; bcd[2] = bcd[2] + 1;}
	
	bcd[1] = hexdata / 10;
	bcd[0] = hexdata % 10;
	
}
*/
void delay_short(register unsigned char delays_cnt)
{
    while(delays_cnt--)
    {
        ;
    }
}

void delay_long(unsigned int delayl_cnt)
{
    while(delayl_cnt--)
    {
        ;
    }
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -