fpga驱动lcd1602实现万年历

fpga驱动lcd1602实现万年历

ID:8974869

大小:19.77 KB

页数:18页

时间:2018-04-13

fpga驱动lcd1602实现万年历_第1页
fpga驱动lcd1602实现万年历_第2页
fpga驱动lcd1602实现万年历_第3页
fpga驱动lcd1602实现万年历_第4页
fpga驱动lcd1602实现万年历_第5页
资源描述:

《fpga驱动lcd1602实现万年历》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、实现了从0000---9999年的时钟,其实万年历和十万年历,都是差不多,等到地球能转到9999年再改代码也不迟,哈哈!!我这里有顶层和底层文件,顶层主要是调用模块和做按键处理,具体按键防抖动原理,参见偶的以前的博文,我写完这个万年历的代码,还没来得及优化,占用了太多了逻辑门,可以进一步优化。大致思路是:第一次按下KEY1的时候,所有计时停止,再按KEY1,年就闪烁,按下KEY2和KEY3进行加减。再按KEY1,月就闪烁,按下KEY2和KEY3进行加减........依次为调年-月-日-星期-时分秒, 再次按一下KEY1,进入正常运行模式。 好了先上顶层模块moduleLCD 

2、 (  rst,  clk,  rw,  rs,  en,  data,  key1,key2,key3 ); inputclk,rst; inputkey1,key2,key3; outputrs,en,rw; output[7:0]data;  regkey1_out,key2_out,key3_out;  wireclk,rst; wirers,en,rw; wire[7:0]data;制氧机,鱼跃家庭制氧机  dispU1 (  .clk(clk),   .rst(rst),  .rs(rs),  .en(en),  .rw(rw),  .data(data),  .k

3、ey1(key1_out),  .key2(key2_out),  .key3(key3_out) );  //=============key1,key2,key3按键防抖动================// regkey1_reg1,key1_reg2; regkey2_reg1,key2_reg2; regkey3_reg1,key3_reg2; reg[31:0]count; always@(posedgeclk) begin  count<=count+1;  if(count==500000)  begin   count<=0;   key1_reg1<=key

4、1;   key2_reg1<=key2;   key3_reg1<=key3;  end  key1_reg2<=key1_reg1;  key2_reg2<=key2_reg1;  key3_reg2<=key3_reg1;    key1_out<=key1_reg2&(!key1_reg1);  key2_out<=key2_reg2&(!key2_reg1);制氧机,鱼跃家庭制氧机  key3_out<=key3_reg2&(!key3_reg1); endendmodule  底层模块:moduledisp  (  rst,  clk,  rw,  rs,  en,

5、  data,  key1,key2,key3 ); inputclk,rst; inputkey1,key2,key3; outputrs,en,rw; output[7:0]data;  regrs,en_sel; reg[7:0]data; reg[14:0]year; reg[7:0]shi,fen,miao,month,dat; reg[31:0]count,count1;  //LCDCLK分频计数器 reglcd_clk; //2行32个数据寄存器 reg[7:0]one_1,one_2,one_3,one_4,one_5,one_6,one_7,one_8,on

6、e_9,one_10,one_11,one_12,one_13,one_14,one_15,one_16;制氧机,鱼跃家庭制氧机 reg[7:0]two_1,two_2,two_3,two_4,two_5,two_6,two_7,two_8,two_9,two_10,two_11,two_12,two_13,two_14,two_15,two_16; reg[7:0]next; parameter state0 =8'h00,    //设置8位格式,2行,5*7   8'h38;     state1 =8'h01,  //整体显示,关光标,不闪烁 8'h0C   闪烁8'h

7、0e    state2 =8'h02,  //设定输入方式,增量不移位 8'h06    state3 =8'h03,  //清除显示     8'h01    state4 =8'h04,  //显示第一行的指令  80H    state5 =8'h05,  //显示第二行的指令  80H+40H        scan =8'h06,      nul  =8'h07;   parameter data0 =8'h10,  //2行32个数据状态    data1 =8'h11,  

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。