发布时间 : 星期一 文章基于FPGA实现数据LCD显示 - 图文更新完毕开始阅读
桂林电子科技大学毕业设计(论文)报告用纸
附录
原理图:
PCB图: 顶层: 底层:
第36页 共51页
桂林电子科技大学毕业设计(论文)报告用纸
实物图:
第37页 共51页
桂林电子科技大学毕业设计(论文)报告用纸
部分代码:
reg [8:0] state; //State Machine code
parameter IDLE = 9'b00000000; //初始状态,下一个状态为CLEAR parameter SETFUNCTION = 9'b00000001; //功能设置:8位数据接口 parameter SETFUNCTION2 = 9'b00000010;
parameter SWITCHMODE = 9'b00000100; //显示开关控制:开显示,光标和闪烁关闭
parameter CLEAR = 9'b00001000; //清屏
parameter SETMODE = 9'b00010000; //输入方式设置:数据读写操作后,地址自动加一/画面不动
parameter SETDDRAM = 9'b00100000; //设置DDRAM的地址:第一行起始为0x80/第二行为0x90
parameter WRITERAM = 9'b01000000; //数据写入DDRAM相应的地址 parameter STOP = 9'b10000000; //LCD操作完毕,释放其控制 reg flag; //标志位,LCD操作完毕为0 reg [7:0]char_cnt; reg [7:0]data_disp;
assign LCD_RW = 1'b0; //没有读操作,R/W信号始终为低电平
assign LCD_E = (flag == 1)?CLK_LCD:1'b0; //E信号出现高电平以及下降沿的时刻与LCD时钟相同
第38页 共51页
桂林电子科技大学毕业设计(论文)报告用纸
always @(posedge CLK_LCD or negedge RST_N) //只有在写数据操作时,RS信号才为高电平,其余为低电平
begin
if(!RST_N) LCD_RS <= 1'b0;
else if(state == WRITERAM) LCD_RS <= 1'b1; else LCD_RS <= 1'b0; end
// State Machine
always @(posedge CLK_LCD or negedge RST_N) begin
if(!RST_N) begin
state <= IDLE; LCD_D <= 8'bzzzzzzzz; char_cnt <= 5'b0; flag <= 1'b1;
end else begin
case(state) IDLE: begin
state <= SETFUNCTION; LCD_D <= 8'bzzzzzzzz; end
SETFUNCTION: begin
state <= SETFUNCTION2;
LCD_D <= 8'h30; // 8-bit 控制界面,基本指令集动作 end
SETFUNCTION2: begin
state <= SWITCHMODE; LCD_D <= 8'h30; // 清屏 end
SWITCHMODE:
第39页 共51页