wang603 发表于 2012-4-22 12:42:44

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

/*
************************************************************
*                                          液晶显示命令字定义
************************************************************
*/
const u8 TAB_REST =
{
        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;
      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,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)外其他没有接.先谢过大家!

lxa0 发表于 2012-4-22 19:26:05

硬件图呢?

wang603 发表于 2012-4-22 20:57:06

上图。。。。。。。。。。。。

wang603 发表于 2012-4-22 20:59:54

顶上来,大家都来看一下。。。

wang603 发表于 2012-4-22 21:01:10

在线等。。。

dianzichina 发表于 2012-4-22 21:55:42

看不清硬件,能不能上个大图?

wang603 发表于 2012-4-22 22:01:02

图片点击一下,就可以看大图了

dianzichina 发表于 2012-4-22 22:10:50

本帖最后由 dianzichina 于 2012-4-22 22:11 编辑

还是不大,看不清硬件,看了程序,没见入口主程序啊。改start为MAIN如何?

dianzichina 发表于 2012-4-22 22:17:55

既然看波形没问题,太模糊的话是不是能出字符了?那就加个偏压吧。

wang603 发表于 2012-4-22 22:31:57

哪里加偏压?VLCD吗?加多少合适?

dianzichina 发表于 2012-4-22 22:53:39

多少合适应该看液晶的说明,你应该把液晶的说明也上传的。如果你的液晶上面能看到字符,只是有点不清楚的话,可能这个有效果了。如果不是这样,那原因另查。

wang603 发表于 2012-4-22 23:18:44

不经意间把两个COM口给短路了,结果有显示,但是是乱码,正常的话就没有显示了。。。

dianzichina 发表于 2012-4-23 07:19:18

有显示但是乱码那说明程序有问题了。看软件吧。

wang603 发表于 2012-4-23 16:59:05

回楼上,显示乱码是因为两个COM口短路了,正常情况下显示正常,只是很暗而已,而且我看过波形都是对的
页: [1]
查看完整版本: 请教1622驱动问题,一直点不亮,查了好几天没查出原因