📄 lcd_init_0707.v
字号:
delay3_2: //延时三个周期
begin
if(delay_counter>=6)
begin
send_byte_zt=delay1_3;
delay_counter=0;
sdao=1'bz;
end
else if(delay_counter==3)
begin
sclo=0;
delay_counter=delay_counter+1;
end
else
begin
delay_counter=delay_counter+1;
send_byte_zt=send_byte_zt;
end
end
delay1_3: //延时三个周期
begin
if(delay_counter>=2)
begin
send_byte_zt=sendData2;
delay_counter=0;
sclo=1;
end
else
begin
delay_counter=delay_counter+1;
send_byte_zt=send_byte_zt;
end
end
sendData2:
begin
shiftdata=shiftdata<<1;
shiftdata[0]=sdao;
send_byte_zt=sendbit1_3;
send_byte_num=send_byte_num+1;
end
sendbit1_3:
begin
tempscl=0; //************************SCL置零
sclo=0;
send_byte_zt=delay2_3;
end
delay2_3: //延时三个周期
begin
if(delay_counter>=2)
begin
send_byte_zt=sendbit2_3;
delay_counter=0;
end
else
begin
delay_counter=delay_counter+1;
send_byte_zt=send_byte_zt;
end
end
sendbit2_3: //判断是否字节中所有位都发送完毕
begin
if(send_byte_num<8)
begin
send_byte_zt=delay1_3;
end
else
begin
if(AddressByte[0]==0)
begin
send_byte_zt=ForACK1_3;
send_byte_num=0;
end
else
begin
send_byte_zt=ForACK1_3;
send_byte_num=0;
DataByte2_rd[7:0]=shiftdata[7:0];
end
end
end
ForACK1_3:
begin
//sdao=1;//应答信号
send_byte_zt=delay_ACK_3;
tempscl=1; //***************************置SCL为高电
end
delay_ACK_3: //延时
begin
if(delay_counter>=6)
begin
send_byte_zt=AckYESNO_3;
delay_counter=0;
end
else if(delay_counter==3)
begin
delay_counter=delay_counter+1;
sclo=1;
end
begin
delay_counter=delay_counter+1;
send_byte_zt=send_byte_zt;
tempscl=1;
sclo=1;
end
end
AckYESNO_3:
begin
tempscl=0; //************************置SCL为低电平
sclo=0;
send_byte_zt=delay3_3;
tempsda=0;
end
delay3_3: //延时三个周期
begin
if(delay_counter>=9)
begin
send_byte_zt=Stop;
delay_counter=0;
end
else if(delay_counter==6)
begin
delay_counter=delay_counter+1;
sdao=0;
end
else if(delay_counter==3)
begin
delay_counter=delay_counter+1;
sclo=0;
end
else begin
delay_counter=delay_counter+1;
send_byte_zt=send_byte_zt;
//sdao=0;
end
end
Stop:
begin
sclo=1; //***************************置SCL为高电
send_byte_zt=Finish_delay;
end
Finish_delay: //延时
begin
if(delay_counter>=2)
begin
send_byte_zt=Finish;
delay_counter=0;
end
else
begin
delay_counter=delay_counter+1;
send_byte_zt=Finish_delay;
end
end
Finish:
begin
tempsda=1;
sdao=1;
send_byte_zt=start;
send_byte_num=0;
AddressByte_wq=AddressByte;
DataByte1_wq=DataByte1;
end
default:
begin
send_byte_zt=start;
send_byte_num=0;
end
endcase
end
endmodule
/*
case(touch_time)
0://
begin
if((v_counter>=2)&&(v_counter<=22)
&&(h_counter>=5) && (h_counter<=25))
begin
red[5:0]<=6'h00;
green[5:0]<=6'h00;
blue[5:0]<=6'h3f;
oe<=1;
we<=1;
ce<=1;
A<=A+1;
end
else
begin
red[5:0]<=6'bz;
green[5:0]<=6'bz;
blue[5:0]<=6'bz;
oe<=0;
ce<=0;
A<=A+1;
end
if(!penirq && !test)
begin
case( measure_time)
0:
begin
touch_time<=0;
//test<=1;
AddressByte<=8'h96;//----setup command
DataByte1<=8'hc0;
measure_time<=1;
end
1:
begin
if(delay_measure_count<=20000)
delay_measure_count<=delay_measure_count+1;
else
begin
delay_measure_count<=0;
measure_time<=2;
end
end
2:
begin
AddressByte<=8'h97;//----setup command
measure_time<=3;
end
3:
begin
if(delay_measure_count<=20000)
delay_measure_count<=delay_measure_count+1;
else
begin
delay_measure_count<=0;
measure_time<=4;
// test<=1;
tpx1={DataByte1_rd[7:0],DataByte2_rd[7:4]};
end
end
4:
begin
touch_time<=0;
//test<=1;
AddressByte<=8'h96;//----setup command
DataByte1<=8'hd0;
measure_time<=5;
end
5:
begin
if(delay_measure_count<=20000)
delay_measure_count<=delay_measure_count+1;
else
begin
delay_measure_count<=0;
measure_time<=6;
end
end
6:
begin
AddressByte<=8'h97;//----setup command
measure_time<=7;
end
7:
begin
if(delay_measure_count<=20000)
delay_measure_count<=delay_measure_count+1;
else
begin
delay_measure_count<=0;
measure_time<=0;
test<=1;
end
end
endcase
end
else if(test && penirq_out )
begin
touch_time<=1;
test<=0;
tpy1={DataByte1_rd[7:0],DataByte2_rd[7:4]};
end
end
1:
begin
if((v_counter>=301)&&(v_counter<=321)
&&(h_counter>=224) && (h_counter<=244))
begin
red[5:0]<=6'h00;
green[5:0]<=6'h00;
blue[5:0]<=6'h3f;
oe<=1;
we<=1;
ce<=1;
A<=A+1;
end
else
begin
red[5:0]<=6'bz;
green[5:0]<=6'bz;
blue[5:0]<=6'bz;
oe<=0;
ce<=0;
A<=A+1;
end
if(!penirq && !test)
begin
case( measure_time)
0:
begin
//touch_time<=0;
//test<=1;
AddressByte<=8'h96;//----setup command
DataByte1<=8'hc0;
measure_time<=1;
end
1:
begin
if(delay_measure_count<=20000)
delay_measure_count<=delay_measure_count+1;
else
begin
delay_measure_count<=0;
measure_time<=2;
end
end
2:
begin
AddressByte<=8'h97;//----setup command
measure_time<=3;
end
3:
begin
if(delay_measure_count<=20000)
delay_measure_count<=delay_measure_count+1;
else
begin
delay_measure_count<=0;
measure_time<=4;
// test<=1;
tpx2={DataByte1_rd[7:0],DataByte2_rd[7:4]};
end
end
4:
begin
//touch_time<=0;
//test<=1;
AddressByte<=8'h96;//----setup command
DataByte1<=8'hd0;
measure_time<=5;
end
5:
begin
if(delay_measure_count<=20000)
delay_measure_count<=delay_measure_count+1;
else
begin
delay_measure_count<=0;
measure_time<=6;
end
end
6:
begin
AddressByte<=8'h97;//----setup command
measure_time<=7;
end
7:
begin
if(delay_measure_count<=20000)
delay_measure_count<=delay_measure_count+1;
else
begin
delay_measure_count<=0;
measure_time<=0;
test<=1;
end
end
endcase
end
else if(test && penirq_out )
begin
touch_time<=2;
test<=0;
tpy2={DataByte1_rd[7:0],DataByte2_rd[7:4]};
end
end
2://
begin
if((v_counter>=155)&&(v_counter<=175)
&&(h_counter>=112) && (h_counter<=131))
begin
red[5:0]<=6'h00;
green[5:0]<=6'h00;
blue[5:0]<=6'h3f;
oe<=1;
we<=1;
ce<=1;
A<=A+1;
end
else
begin
red[5:0]<=6'bz;
green[5:0]<=6'bz;
blue[5:0]<=6'bz;
oe<=0;
ce<=0;
A<=A+1;
end
if(!penirq && !test)
begin
case( measure_time)
0:
begin
//touch_time<=0;
//test<=1;
AddressByte<=8'h96;//----setup command
DataByte1<=8'hc0;
measure_time<=1;
end
1:
begin
if(delay_measure_count<=20000)
delay_measure_count<=delay_measure_count+1;
else
begin
delay_measure_count<=0;
measure_time<=2;
end
end
2:
begin
AddressByte<=8'h97;//----setup command
measure_time<=3;
end
3:
begin
if(delay_measure_count<=20000)
delay_measure_count<=delay_measure_count+1;
else
begin
delay_measure_count<=0;
measure_time<=4;
// test<=1;
tpx3={DataByte1_rd[7:0],DataByte2_rd[7:4]};
end
end
4:
begin
//touch_time<=0;
//test<=1;
AddressByte<=8'h96;//----setup command
DataByte1<=8'hd0;
measure_time<=5;
end
5:
begin
if(delay_measure_count<=20000)
delay_measure_count<=delay_measure_count+1;
else
begin
delay_measure_count<=0;
measure_time<=6;
end
end
6:
begin
AddressByte<=8'h97;//----setup command
measure_time<=7;
end
7:
begin
if(delay_measure_count<=20000)
delay_measure_count<=delay_measure_count+1;
else
begin
delay_measure_count<=0;
measure_time<=0;
test<=1;
end
end
endcase
end
else if(test && penirq_out )
begin
touch_time<=3;
test<=0;
tpy3={DataByte1_rd[7:0],DataByte2_rd[7:4]};
if (tpx3>tpx1) x3=220*(tpx3-tpx1)/(tpx2-tpx1)+10;
else x3=220*(tpx1-tpx3)/(tpx1-tpx2)+10;
y3=300*(tpy3-tpy1)/(tpy2-tpy1)+10;
end
end
3:
begin
if((v_counter>=135)&&(v_counter<=195)
&&(h_counter>=92) && (h_counter<=151))
begin
if(x3<130 && x3>110 && y3<170 && y3>150)
begin
red[5:0]<=6'h00;
green[5:0]<=6'h00;
blue[5:0]<=6'h3f;
oe<=1;
we<=1;
ce<=1;
A<=A+1;
if(!penirq && !test)
begin
if(delay_measure_count<=40000)
delay_measure_count<=delay_measure_count+1;
else
begin
delay_measure_count<=0;
test<=1;
end
end
else if(test && penirq_out )
begin
test<=0;
touch_time<=4;
end
end
else
begin
red[5:0]<=6'h3f;
green[5:0]<=6'h00;
blue[5:0]<=6'h00;
oe<=1;
we<=1;
ce<=1;
A<=A+1;
if(!penirq && !test)
begin
if(delay_measure_count<=40000)
delay_measure_count<=delay_measure_count+1;
else
begin
delay_measure_count<=0;
test<=1;
end
end
else if(test && penirq_out )
begin
test<=0;
touch_time<=0;
end
end
end
else
begin
red[5:0]<=6'bz;
green[5:0]<=6'bz;
blue[5:0]<=6'bz;
oe<=0;
ce<=0;
A<=A+1;
end
end
4:
begin
if((v_counter>=2)&&(v_counter<=321)
&&(h_counter>=5) && (h_counter<=244))
begin
red[5:0]<=6'bz;
green[5:0]<=6'bz;
blue[5:0]<=6'bz;
oe<=0;
ce<=0;
A<=A+1;
end
end
default:
begin
touch_time<=0;
measure_time<=0;
test<=0;
end
endcase*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -