完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
各位大神给点提示。用状态机写着写着就糊涂了。
|
|
相关推荐
1 个讨论
|
|
//lcd脉冲分频
reg lcd_rstemp; assign lcd_rs =lcd_rstemp; reg[7:0] lcd_douttemp; assign lcd_databus = lcd_douttemp + 8'h30; //注意这 我这是为了输出数字方便 看看1602的字库就明白为了 assign lcd_rw = 1'b0; reg[15:0] lcd_clk_count = 16'd0; assign lcd_en = lcd_clk_count[15];//lcd的下降沿使能脉冲 、、刷新频率通过这修改 reg[7:0] lcd_r0c0,lcd_r0c1,lcd_r0c2,lcd_r0c3,lcd_r0c4,lcd_r0c5,lcd_r0c6,lcd_r0c7,lcd_r0c8,lcd_r0c9,lcd_r0c10,lcd_r0c11,lcd_r0c12,lcd_r0c13,lcd_r0c14,lcd_r0c15; reg[7:0] lcd_r1c0,lcd_r1c1,lcd_r1c2,lcd_r1c3,lcd_r1c4,lcd_r1c5,lcd_r1c6,lcd_r1c7,lcd_r1c8,lcd_r1c9,lcd_r1c10,lcd_r1c11,lcd_r1c12,lcd_r1c13,lcd_r1c14,lcd_r1c15; always @ (posedge PLL50M) begin lcd_clk_count <= lcd_clk_count + 1'b1; end //中间删除了一部分 数值显示的 parameter lcd_init = 5'b00001; parameter lcd_wrone = 5'b00010; parameter one_two = 5'b00100; parameter lcd_wrtwo = 5'b01000; parameter two_one = 5'b10000; reg[4:0] lcd_state = 5'd1; reg[3:0] lcd_write_num = 4'd0; always @ (posedge lcd_en) begin case(lcd_state) lcd_init: begin lcd_rstemp <= 1'b0; lcd_write_num <= lcd_write_num + 1'b1; case(lcd_write_num) 4'd0: lcd_douttemp <= 8'h08;//8bit总线 2行 4'd1: lcd_douttemp <= 8'hde;//显示功能开 无光标 4'd2: lcd_douttemp <= 8'hd6;//显示地址设置 4'd3: lcd_douttemp <= 8'h50;//地址定位第一行地址 4'd4: lcd_douttemp <= 8'hd1;//清屏 4'd15: lcd_state <= lcd_wrone; default:; endcase end lcd_wrone: begin lcd_rstemp <= 1'b1; lcd_write_num <= lcd_write_num + 1'b1; case(lcd_write_num) 4'd0: lcd_douttemp <= lcd_r0c0; 4'd1: lcd_douttemp <= lcd_r0c1; 4'd2: lcd_douttemp <= lcd_r0c2; 4'd3: lcd_douttemp <= lcd_r0c3; 4'd4: lcd_douttemp <= lcd_r0c4; 4'd5: lcd_douttemp <= lcd_r0c5; 4'd6: lcd_douttemp <= lcd_r0c6; 4'd7: lcd_douttemp <= lcd_r0c7; 4'd8: lcd_douttemp <= lcd_r0c8; 4'd9: lcd_douttemp <= lcd_r0c9; 4'd10: lcd_douttemp <= lcd_r0c10; 4'd11: lcd_douttemp <= lcd_r0c11; 4'd12: lcd_douttemp <= lcd_r0c12; 4'd13: lcd_douttemp <= lcd_r0c13; 4'd14: lcd_douttemp <= lcd_r0c14; 4'd15: begin lcd_douttemp <= lcd_r0c15; lcd_state <= one_two; end default:; endcase end one_two: begin lcd_rstemp <= 1'b0; lcd_douttemp <= 8'h90; //地址定位第二行 lcd_state <= lcd_wrtwo; end lcd_wrtwo: begin lcd_rstemp <= 1'b1; lcd_write_num <= lcd_write_num + 1'b1; case(lcd_write_num) 4'd0: lcd_douttemp <= lcd_r1c0; 4'd1: lcd_douttemp <= lcd_r1c1; 4'd2: lcd_douttemp <= lcd_r1c2; 4'd3: lcd_douttemp <= lcd_r1c3; 4'd4: lcd_douttemp <= lcd_r1c4; 4'd5: lcd_douttemp <= lcd_r1c5; 4'd6: lcd_douttemp <= lcd_r1c6; 4'd7: lcd_douttemp <= lcd_r1c7; 4'd8: lcd_douttemp <= lcd_r1c8; 4'd9: lcd_douttemp <= lcd_r1c9; 4'd10: lcd_douttemp <= lcd_r1c10; 4'd11: lcd_douttemp <= lcd_r1c11; 4'd12: lcd_douttemp <= lcd_r1c12; 4'd13: lcd_douttemp <= lcd_r1c13; 4'd14: lcd_douttemp <= lcd_r1c14; 4'd15: begin lcd_douttemp <= lcd_r1c15; lcd_state <= two_one; end default:; endcase end two_one: begin lcd_rstemp <= 1'b0; lcd_douttemp <= 8'h50; //第一行 lcd_state <= lcd_wrone; end default:lcd_state <= lcd_init; endcase end |
|
|
|
|
|
357 浏览 0 评论
1406 浏览 1 评论
472 浏览 0 评论
求FPGA 驱动控制ltc2271 或者 ltc2180 或者 ltc2190或者 ltc2202 的代码
2094 浏览 0 评论
535 浏览 0 评论
4964 浏览 112 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-13 06:16 , Processed in 0.359415 second(s), Total 37, Slave 30 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号