请教1622驱动问题,一直点不亮,查了好几天没查出原因

2020-02-04 09:08发布

/*
************************************************************
*                                          液晶显示命令字定义
************************************************************
*/
const u8 TAB_REST[9] =
{
        0b00000001,/*打开系统振荡器命令*/
    0b00000011,/*打开LCD 偏压发生器命令*/
    0b00000101,/*WDT 溢出标志输出失效命令*/
    0b00000110,/*时基输出使能命令*/
        0b00011000,/*系统时钟源片内RC振荡器命令*/
        //0b00101001,/*LCD1/3偏压选项4个公共口命令*/
        0b01000000,/*声音频率4KHz命令*/
        0b00001000,/*关闭声音输出命令*/
        0b10100000,/*时基/WDT 时钟输出1Hz命令*/
        0b10000000/*禁止/IRQ 输出有效命令*/
};                                               

/*
************************************************************
*                         Start
*
*   功能描述:启动1622
*   参  数  :无
*   返回值  :无
************************************************************
*/
void Start(void)   
{   
    CS = HIGH;   
    WR = HIGH;   
    DATA = HIGH;      
    Delay1622();   
    Delay1622();   
    CS = LOW;   
    Delay1622();   
}   
/*
************************************************************
*                             Stop
*
*   功能描述:停止信号
*   参  数  :无
*   返回值  :无
************************************************************
*/
void Stop(void)   
{   
    WR = HIGH;   
    CS = HIGH;   
    DATA = HIGH;   
    Delay1622();   
}  
/*
************************************************************
*                     Write1622
*
*   功能描述:写数据到1622
*   参  数  :无
*   返回值  :无
************************************************************
*/
void Write1622(void)
{
    u8 i,j,data;       
   
    Start();       
    Send(0xA0,3);         
    Send(0x00,6);   
   
    for(i = 0;i < 26;i++){
        data = LcdBuffer[i];
        for(j = 0;j < 8;j++){
            if(data & 0x01)
                DATA = HIGH;   
            else  
                DATA = LOW;  
            WR = LOW;
            Delay1622();   
            WR = HIGH;   
            Delay1622();
            data >>= 0x01;
        }
    }
    Stop();
}
/*
************************************************************
*                     Command1622
*
*   功能描述:1622初始化
*   参  数  :无
*   返回值  :无
************************************************************
*/
void Command1622(void)   
{   
    u8 i;  
    Start();   
    Send(0x80,3);   
    for(i = 0;i < 9;i++){   
        Send(TAB_REST[i],8);   
        Send(0x00,1);  
    }   
    Stop();   
}   
/*
************************************************************
*                     Delay1622
*
*   功能描述:延时一段时间
*   参  数  :无
*   返回值  :无
************************************************************
*/
void Delay1622(void)   
{   
    u8 i;   
    for(i = 0;i < 5;i++);      
    return;   
}   
/*
************************************************************
*                             Send
*
*   功能描述:写一个字节的数据
*   参  数  :Writebuffer(待写入数据),BitLength(写入数据长度)
*   返回值  :无
************************************************************
*/  
void Send(u8 Writebuffer,u8 BitLength)   
{   
    u8 i;   
    for(i = 0;i < BitLength;i++)   
    {   
        if(Writebuffer & 0x80)
            DATA = HIGH;   
        else  
            DATA = LOW;   
        WR = LOW;   
        Delay1622();   
        WR = HIGH;   
        Delay1622();   
        Writebuffer <<= 1;   
    }   
}
大家帮忙看一下程序上是否有问题,通过示波器看波形没问题的,但是一直显示不了(或者说是很淡,基本看不清),硬件上VLCD通过一个1K电阻都VDD(5V),除了三根信号线(CS,WR,DATA)外其他没有接.先谢过大家!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。