基于FPGA实现数据LCD显示 - 图文 联系客服

发布时间 : 星期一 文章基于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页