⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd_init_0707.v

📁 液晶显示驱动源程序代码
💻 V
📖 第 1 页 / 共 4 页
字号:
	
		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 + -