📄 displaylcd.v
字号:
module LCDdevice(sysclk, sysrst, DI, RW, EN, CSA, CSB, RST, DATA, ctl);
input sysclk, sysrst, ctl;
output reg RW, DI, CSA, CSB, RST;
inout wire [7:0]DATA;
output wire EN;
reg [4:0] counter;
reg [9:0] addrnum;
reg [2:0] state;
reg [7:0] databuf;
reg ebuf;
reg [7:0] memregs [255:0];
parameter RESET=3'B000,INITIAL=3'B001, WRITE=3'B010, IDLE=3'B100;
//sysclk = 100khz,效果在100KHZ时最好/
always @(posedge sysclk or negedge sysrst)
begin
if(!sysrst)
begin
RST = 0;
RW = 0;
counter = 0;
state = RESET;
end
else
begin
case(state)
RESET:
begin
counter = counter + 1;
if(counter == 3)
begin
RST = 1; /*Reset*/
end
else if(counter == 5)
begin
present_state = INITIAL;
counter = 0;
end
INITIAL :
begin
counter = counter + 1;
if(counter == 5)
begin
CSA = 1;
CSB = 1;
databuf = 8'h3f; //开显示
ebuf = 1;
end
else if( counter == 6)
ebuf = 0;
else if(counter == 7)
begin
counter = 0;
addrnum = 10'b0000000000;
state = WRITE;
end
end
WRITE :
begin
counter = counter + 1;
CSA = ~(addrnum[6]);
CSB = addrnum[6];
ebuf = ~ebuf;
if (counter[2:1] == 2'b00)//页地址
begin
databuf = {(5'B10111),addrnum[9:7]};
end
else if (counter[2:1] == 2'b01)//列地址
databuf = {2'b01,addrnum[5:0]};
else if (counter[2:1] == 2'b10)//写数据
begin
if (ctl)
databuf = memregs[addrnum[7:0]];
else
databuf = 8'h00;
end
else if (counter[2:1] == 2'b11)
begin
ebuf = 0;
counter = 0;
addrnum = addrnum + 1;
if(addrnum == 10'b1111111111) //总共1024个字节/
begin
addrnum = 10'b0000000000;
state = IDLE;
end
end
end
IDLE :
begin
if (ctl)
state = INITIAL;
else
state = IDLE;
end
default: state = INITIAL;
endcase
end
end
assign DATA = databuf;
assign EN = ebuf;
always @(state)
begin
if (state == WRITE)
DI = counter[2];
else
DI = 0;
end
always @(negedge sysrst)
begin
if(!sysrst)
begin
memregs[0]=8'h00; memregs[1]=8'h00;memregs[2]=8'hf0;memregs[3]=8'hf8;memregs[4]=8'h98; memregs[5]=8'h98;memregs[6]=8'h98;memregs[7]=8'hfe;memregs[8]=8'h98; memregs[9]=8'h98;memregs[10]=8'h98;memregs[11]=8'h98;memregs[12]=8'hf8;
memregs[13]=8'h00;memregs[14]=8'h00;memregs[15]=8'h00;memregs[16]=8'h00;memregs[17]=8'h80;memregs[18]=8'h84;memregs[19]=8'h86;memregs[20]=8'h86;memregs[21]=8'h86;memregs[22]=8'h86;memregs[23]=8'he6;memregs[24]=8'hf6;memregs[25]=8'h9e;memregs[26]=8'h9e;memregs[27]=8'h8e;memregs[28]=8'h86;memregs[29]=8'h86;memregs[30]=8'h80;memregs[31]=8'h80;memregs[32]=8'h00;memregs[33]=8'h6c;memregs[34]=8'h6c;memregs[35]=8'hfc;memregs[36]=8'hfc;
memregs[37]=8'h66;memregs[38]=8'h66;memregs[39]=8'h00;memregs[40]=8'hc8;memregs[41]=8'h98;memregs[42]=8'h10;memregs[43]=8'h02;memregs[44]=8'hfe;memregs[45]=8'h00;memregs[46]=8'h00;memregs[47]=8'h00;memregs[48]=8'h00;memregs[49]=8'h30;memregs[50]=8'h30;memregs[51]=8'hfe;memregs[52]=8'hfe;
memregs[53]=8'h30;memregs[54]=8'h88;memregs[55]=8'hd8;memregs[56]=8'h98;memregs[57]=8'hfe;memregs[58]=8'hfe;memregs[59]=8'h98;memregs[60]=8'h98;
memregs[61]=8'h98;memregs[62]=8'h18;memregs[63]=8'h00;memregs[64]=8'h00;memregs[65]=8'h20;memregs[66]=8'h20;memregs[67]=8'h20;memregs[68]=8'h20;memregs[69]=8'h20;memregs[70]=8'h20;memregs[71]=8'hfe;memregs[72]=8'hfe;
memregs[73]=8'h20;memregs[74]=8'h20;memregs[75]=8'h20;memregs[76]=8'h20;memregs[77]=8'h20;memregs[78]=8'h60;memregs[79]=8'h00;memregs[80]=8'h00;memregs[81]=8'h70;memregs[82]=8'h70;memregs[83]=8'h96;memregs[84]=8'h9e;memregs[85]=8'h90;memregs[86]=8'h90;memregs[87]=8'h96;memregs[88]=8'h96;memregs[89]=8'h90;memregs[90]=8'h98;memregs[91]=8'h9e;memregs[92]=8'h96;memregs[93]=8'h70;memregs[94]=8'h70;memregs[95]=8'h00;memregs[96]=8'h0;
memregs[97]=8'h00;memregs[98]=8'h00;memregs[99]=8'h00;memregs[100]=8'h00;
memregs[101]=8'h00;memregs[102]=8'h00;memregs[103]=8'h00;memregs[104]=8'h00;memregs[105]=8'h00;memregs[106]=8'h00;memregs[107]=8'h00;memregs[108]=8'h00;memregs[109]=8'h00;memregs[110]=8'h00;memregs[111]=8'h00;memregs[112]=8'h00;memregs[113]=8'h00;memregs[114]=8'h00;memregs[115]=8'h00;memregs[116]=8'h00;memregs[117]=8'h00;memregs[118]=8'h00;memregs[119]=8'h00;memregs[120]=8'h00;memregs[121]=8'h00;memregs[122]=8'h00;memregs[123]=8'h00;memregs[124]=8'h00;memregs[125]=8'h00;memregs[126]=8'h00;memregs[127]=8'h00;memregs[128]=8'h00;memregs[129]=8'h00;memregs[130]=8'h1f;memregs[131]=8'h1f;memregs[132]=8'h04;memregs[133]=8'h04;memregs[134]=8'h04;memregs[135]=8'h3f;memregs[136]=8'h64;memregs[137]=8'h64;memregs[138]=8'h64;memregs[139]=8'h64;memregs[140]=8'h67;memregs[141]=8'h60;memregs[142]=8'h30;memregs[143]=8'h00;memregs[144]=8'h00;memregs[145]=8'h00;memregs[146]=8'h00;memregs[147]=8'h00;memregs[148]=8'h00;memregs[149]=8'h60;memregs[150]=8'h60;memregs[151]=8'h7f;memregs[152]=8'h3f;memregs[153]=8'h00;memregs[154]=8'h00;memregs[155]=8'h00;memregs[156]=8'h00;memregs[157]=8'h00;memregs[158]=8'h00;memregs[159]=8'h00;memregs[160]=8'h00;memregs[161]=8'h1c;memregs[162]=8'h0e;memregs[163]=8'h7f;memregs[164]=8'hff;memregs[165]=8'h03;memregs[166]=8'h0f;memregs[167]=8'h08;memregs[168]=8'h08;memregs[169]=8'h0d;memregs[170]=8'h0c;memregs[171]=8'h04;memregs[172]=8'hff;memregs[173]=8'h04;memregs[174]=8'h06;memregs[175]=8'h02;memregs[176]=8'h00;memregs[177]=8'h02;memregs[178]=8'h63;memregs[179]=8'h7f;memregs[180]=8'h3f;memregs[181]=8'h01;memregs[182]=8'h60;memregs[183]=8'h60;memregs[184]=8'h27;memregs[185]=8'h3e;memregs[186]=8'h18;memregs[187]=8'h3c;memregs[188]=8'h27;memregs[189]=8'h61;memregs[190]=8'h60;memregs[191]=8'h00;memregs[192]=8'h00;memregs[193]=8'h60;memregs[194]=8'h60;memregs[195]=8'h30;memregs[196]=8'h30;memregs[197]=8'h1c;memregs[198]=8'h0e;memregs[199]=8'h03;memregs[200]=8'h03;memregs[201]=8'h0e;memregs[202]=8'h1c;memregs[203]=8'h18;memregs[204]=8'h30;memregs[205]=8'h60;memregs[206]=8'h20;memregs[207]=8'h00;memregs[208]=8'h00;memregs[209]=8'h0c;memregs[210]=8'h04;memregs[211]=8'h04;memregs[212]=8'h04;memregs[213]=8'h04;memregs[214]=8'h44;memregs[215]=8'h44;memregs[216]=8'h7f;memregs[217]=8'h05;memregs[218]=8'h05;memregs[219]=8'h05;memregs[220]=8'h04;memregs[221]=8'h04;memregs[222]=8'h04;memregs[223]=8'h00;memregs[224]=8'h00;memregs[225]=8'h00;memregs[226]=8'h00;memregs[227]=8'h00;memregs[228]=8'h00 memregs[229]=8'h00;memregs[230]=8'h00;memregs[231]=8'h00;memregs[232]=8'h00;memregs[233]=8'h00;memregs[234]=8'h00;memregs[235]=8'h00;memregs[236]=8'h00;memregs[237]=8'h00;memregs[238]=8'h00;memregs[239]=8'h00;memregs[240]=8'h00;memregs[241]=8'h00;memregs[242]=8'h00;memregs[243]=8'h00;memregs[244]=8'h00;memregs[245]=8'h00;memregs[246]=8'h00;memregs[247]=8'h00;memregs[248]=8'h00;memregs[249]=8'h00;memregs[250]=8'h00;memregs[251]=8'h00;memregs[252]=8'h00;memregs[253]=8'h00;memregs[254]=8'h00;memregs[255]=8'h00;
end
end
endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -