lcd12864历程C语言程序,FPGA学习历程——(五)LCD12864操作

module LCD_MODULE

(

input wClock,

input wReset,

output wCS,

output wA0,

output wSCK,

output wSD

);

wire wBusy;

reg rWE;

reg [7:0] rData;

SPI_MODULE SPI_INS

(

.wClock(wClock),

.wReset(wReset),

.wBusy(wBusy),

.wEnable(1),

.wWE(rWE),

.wDATA(rData),

.wCS(wCS),

.wSCK(wSCK),

.wMOSI(wSD)

);

reg [7:0] rSTATE;

reg [3:0] rSubSTATE;

reg rA0;

assign wA0=rA0;

always @(posedge wClock or negedge wReset)

if(!wReset) begin

rSTATE<=8'H00;

rWE<=1'B1;

rA0<=1'B0;

end

else begin

case(rSTATE)

8'H00: begin

rSubSTATE<=4'H0;

rSTATE<=8'H01;

end

8'H01: begin

case(rSubSTATE)

4'H0:begin

rWE<=1'B0;

rA0<=1'B0;

rData<=8'HAF;

rSubSTATE=4'H1;

end

4'H1:begin

rWE<=1'B1;

if(wBusy) rSubSTATE=4'H2;

end

4'H2:begin

if(!wBusy)begin

rSubSTATE<=4'H0;

rSTATE<=8'H02;

end

end

endcase;

end

8'H02: begin

case(rSubSTATE)

4'H0:begin

rWE<=1'B0;

rA0<=1'B0;

rData<=8'H40;

rSubSTATE=4'H1;

end

4'H1:begin

rWE<=1'B1;

if(wBusy) rSubSTATE=4'H2;

end

4'H2:begin

if(!wBusy)begin

rSubSTATE<=4'H0;

rSTATE<=8'H03;

end

end

endcase;

end

8'H03: begin

case(rSubSTATE)

4'H0:begin

rWE<=1'B0;

rA0<=1'B0;

rData<=8'HA6;

rSubSTATE=4'H1;

end

4'H1:begin

rWE<=1'B1;

if(wBusy) rSubSTATE=4'H2;

end

4'H2:begin

if(!wBusy)begin

rSubSTATE<=4'H0;

rSTATE<=8'H04;

end

end

endcase;

end

8'H04: begin

case(rSubSTATE)

4'H0:begin

rWE<=1'B0;

rA0<=1'B0;

rData<=8'HA0;

rSubSTATE=4'H1;

end

4'H1:begin

rWE<=1'B1;

if(wBusy) rSubSTATE=4'H2;

end

4'H2:begin

if(!wBusy)begin

rSubSTATE<=4'H0;

rSTATE<=8'H05;

end

end

endcase;

end

8'H05: begin

case(rSubSTATE)

4'H0:begin

rWE<=1'B0;

rA0<=1'B0;

rData<=8'HC8;

rSubSTATE=4'H1;

end

4'H1:begin

rWE<=1'B1;

if(wBusy) rSubSTATE=4'H2;

end

4'H2:begin

if(!wBusy)begin

rSubSTATE<=4'H0;

rSTATE<=8'H06;

end

end

endcase;

end

8'H06: begin

case(rSubSTATE)

4'H0:begin

rWE<=1'B0;

rA0<=1'B0;

rData<=8'HA4;

rSubSTATE=4'H1;

end

4'H1:begin

rWE<=1'B1;

if(wBusy) rSubSTATE=4'H2;

end

4'H2:begin

if(!wBusy)begin

rSubSTATE<=4'H0;

rSTATE<=8'H07;

end

end

endcase;

end

8'H07: begin

case(rSubSTATE)

4'H0:begin

rWE<=1'B0;

rA0<=1'B0;

rData<=8'HA2;

rSubSTATE=4'H1;

end

4'H1:begin

rWE<=1'B1;

if(wBusy) rSubSTATE=4'H2;

end

4'H2:begin

if(!wBusy)begin

rSubSTATE<=4'H0;

rSTATE<=8'H08;

end

end

endcase;

end

8'H08: begin

case(rSubSTATE)

4'H0:begin

rWE<=1'B0;

rA0<=1'B0;

rData<=8'H24;

rSubSTATE=4'H1;

end

4'H1:begin

rWE<=1'B1;

if(wBusy) rSubSTATE=4'H2;

end

4'H2:begin

if(!wBusy)begin

rSubSTATE<=4'H0;

rSTATE<=8'H09;

end

end

endcase;

end

8'H09: begin

case(rSubSTATE)

4'H0:begin

rWE<=1'B0;

rA0<=1'B1;

rData<=8'H2F;

rSubSTATE=4'H1;

end

4'H1:begin

rWE<=1'B1;

if(wBusy) rSubSTATE=4'H2;

end

4'H2:begin

if(!wBusy)begin

rSubSTATE<=4'H0;

rSTATE<=8'H0A;

end

end

endcase;

end

8'H0A: begin

case(rSubSTATE)

4'H0:begin

rWE<=1'B0;

rA0<=1'B0;

rData<=8'H81;

rSubSTATE=4'H1;

end

4'H1:begin

rWE<=1'B1;

if(wBusy) rSubSTATE=4'H2;

end

4'H2:begin

if(!wBusy)begin

rSubSTATE<=4'H0;

rSTATE<=8'H0B;

end

end

endcase;

end

8'H0B: begin

case(rSubSTATE)

4'H0:begin

rWE<=1'B0;

rA0<=1'B0;

rData<=8'H24;

rSubSTATE=4'H1;

end

4'H1:begin

rWE<=1'B1;

if(wBusy) rSubSTATE=4'H2;

end

4'H2:begin

if(!wBusy)begin

rSubSTATE<=4'H0;

rSTATE<=8'H0C;

end

end

endcase;

end

8'H0C: begin

case(rSubSTATE)

4'H0:begin

rWE<=1'B0;

rA0<=1'B0;

rData<=8'HA6;

rSubSTATE=4'H1;

end

4'H1:begin

rWE<=1'B1;

if(wBusy) rSubSTATE=4'H2;

end

4'H2:begin

if(!wBusy)begin

rSubSTATE<=4'H0;

rSTATE<=8'H0D;

end

end

endcase;

end

8'H0D: begin

case(rSubSTATE)

4'H0:begin

rWE<=1'B0;

rA0<=1'B0;

rData<=8'HB0;

rSubSTATE=4'H1;

end

4'H1:begin

rWE<=1'B1;

if(wBusy) rSubSTATE=4'H2;

end

4'H2:begin

if(!wBusy)begin

rSubSTATE<=4'H0;

rSTATE<=8'H0E;

end

end

endcase;

end

8'H0E: begin

case(rSubSTATE)

4'H0:begin

rWE<=1'B0;

rA0<=1'B1;

rData<=8'HAA;

rSubSTATE=4'H1;

end

4'H1:begin

rWE<=1'B1;

if(wBusy) rSubSTATE=4'H2;

end

4'H2:begin

if(!wBusy)begin

rSubSTATE<=4'H0;

end

end

endcase;

end

endcase;

end

endmodule

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值