windcys 发表于 2010-10-19 17:06:51

EPM240+IS61LV25616+群创AT056TN52做LCD的驱动

硬件方案是:EPM240+IS61LV25616+群创AT056TN52做LCD的驱动。通过并口方式接收外部单片机的显示数据并存入SRAM,由CPLD负责从SRAM中取数据并显示,并口协议:
        A1A0==00:写X坐标位置低8位,写X坐标位置高二位。
        A1A0==01:写Y坐标位置低8位,写Y坐标位置高二位。
        A1A0==10:写数据到SRAM,写完地址自动加1,分单点写和8点写模式;
        A1A0==10:写控制寄存器,用于清屏,调置前景色和背景色
现在的问题是:
                if((EB_A==EBCMD_X)&&( reg_cmd_xyhl==3'd0 ))        //X address
                        begin
                                reg_cmd_x <= EB_D;                               
                                reg_cmd_xyhl <= reg_cmd_xyhl+1'b1;
                        end
                else if((EB_A==EBCMD_X)&&( reg_cmd_xyhl==3'd1 ))
                        begin       
                                reg_cmd_x <= EB_D;               
                                reg_cmd_xyhl <= reg_cmd_xyhl+1'b1;
                        end
结果显示的位置错误,X坐标和Y坐标都不对,最后发现reg_cmd_x==reg_cmd_x;好像是在写低8位时EB_D被锁存了,最好把reg_cmd_x <= EB_D;改成reg_cmd_x <= Mode;(Mode为控制寄存器)就没有问题了,可以要改并口通信协议。

windcys 发表于 2010-10-19 17:08:23

希望各位大侠帮小弟分析一下,调了一周没有解决,谢谢回复【楼主位】windcys
-----------------------------------------------------------------------
页: [1]
查看完整版本: EPM240+IS61LV25616+群创AT056TN52做LCD的驱动