基于FPGA的lcd1602闹钟

基于FPGA的lcd1602闹钟

一、关于lcd的设置,以及命令格式见博主的另一篇转载的博客:https://blog.youkuaiyun.com/chengfengwenalan/article/details/80070058

二、设计思路

本例程主要是利用lcd实现了闹钟功能

第一行显示Alarm:00-00       

第二行显示Clock:00-00-00

按下key1按键是进入adjust模式,按下key2是加,按下key3是减,这3个按键都支持连按和快速单击。系统框图如下:


图1.系统框图

    由系统框图可以看出,本项目主要由debounce,alarm,lcd,led模块组成。

其中

debounce是按键消抖模块,他支持连续按,快速单击

alarm模块主要产生sec,min,hour,alarm_min,alarm_hour的信号,提供给lcd模块显示

lcd模块则是lcd1602的驱动,主要负责lcd1602的显示

led模块则是闹钟时,led闪烁

三、核心代码解说

lcd的驱动主要是用状态机实现的

//status_c
always@(posedge lcd_clk or negedge rst_n)begin
    if(!rst_n)begin
        status_c <= IDLE;
    end
    else begin
        status_c <= status_n;
    end
end

//status_n
always@(*)begin
    case(status_c)
        //----------------初始化------------------
        IDLE:begin
            rs          <=      1'b0;  //rs高是数据寄存器,rs低是指令寄存器
            data        <=      8'h38;
            if(flag)                   //上电后等待15ms,电平稳定了再下一步
                status_n    <=      INIT; 
            else
                status_n    <=      status_c;
        end
        INIT:begin
            rs          <=      1'b0;  //rs高是数据寄存器,rs低是指令寄存器
            data        <=      8'h38;
            status_n    <=      S0; 
        end
        S0:begin
            rs          <=      1'b0;  //rs高是数据寄存器ÿ
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值