|
硬件方案是: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[1:0]==EBCMD_X)&&( reg_cmd_xyhl[2:0]==3'd0 )) //X address
begin
reg_cmd_x[7:0] <= EB_D[7:0];
reg_cmd_xyhl <= reg_cmd_xyhl+1'b1;
end
else if((EB_A[1:0]==EBCMD_X)&&( reg_cmd_xyhl[2:0]==3'd1 ))
begin
reg_cmd_x[9:8] <= EB_D[1:0];
reg_cmd_xyhl <= reg_cmd_xyhl+1'b1;
end
结果显示的位置错误,X坐标和Y坐标都不对,最后发现reg_cmd_x[9:8]==reg_cmd_x[1:0];好像是在写低8位时EB_D被锁存了,最好把reg_cmd_x[9:8] <= EB_D[1:0];改成reg_cmd_x[9:8] <= Mode[1:0];(Mode为控制寄存器)就没有问题了,可以要改并口通信协议。 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|