零基础学FPGA(十七)1602动态电子可调时钟设计

来源:本站
导读:目前正在解读《零基础学FPGA(十七)1602动态电子可调时钟设计》的相关信息,《零基础学FPGA(十七)1602动态电子可调时钟设计》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《零基础学FPGA(十七)1602动态电子可调时钟设计》的详细说明。
简介:今天为大家介绍的是1602动态电子可调时钟设计部分。

1、操作时序

零基础学FPGA(十七)1602动态电子可调时钟设计

1602要用到的管脚也就是4个,即

1、rs数据命令选择端

2、wr读写控制端

3、lcden使能信号

4、8位的数据端口

而且1602的读功能我们用不到,所以wr一直置0即可,要控制的就是rs端,数据端和lcden端

2、写时序

由于读操作我们用不到,直接来看写操作好了

零基础学FPGA(十七)1602动态电子可调时钟设计

由上图得,我们如果要写命令的话,就要在rs为低电平的时候给数据端送8位命令数据,然后等一段时间后有一个lcden的高脉冲即可使数据有效,注意这个lcden的高脉冲要掩饰一点时间

3、初始化设置

零基础学FPGA(十七)1602动态电子可调时钟设计

这里我们要显示一个2行,16位的液晶,5x7点阵,8位数据接口,不显示光标

故初始化的时候我们要进行的操作是送1602这两个命令,好下面我们开始写程序

4、程序设计

有些人会问,1602的时序图上的延时怎么操作?这个问题已经有好几位网友问过我了,这里,我们需要用到状态机。由于我们的时钟是50Mhz,一个周期为20ns,对于1602来说这个频率太高了,因此我们需要分频。再看看1602的datasheet里的延时参数,这里我们设置供1602的时钟

零基础学FPGA(十七)1602动态电子可调时钟设计

做好了时钟我们就可以来写状态机了,首先我们需要把RS拉低,因为我们要对1602进行初始化,然后给1602送初始化数据,即0x38,延时一个时钟周期之后将使能端拉高。注意这里的一个时钟周期是我们之前的分频后的时钟,大约1ms,然后再等待一个时钟周期后将lcden拉低,并送光标显示数据0x3c

零基础学FPGA(十七)1602动态电子可调时钟设计

接着,按照上述方法设置1603写一个字符后地址指针加1和显示清零命令,即0x06和0x01

零基础学FPGA(十七)1602动态电子可调时钟设计

然后我们需要确定我们的时钟的时间显示地址

零基础学FPGA(十七)1602动态电子可调时钟设计

例如,我想把时钟的小时的十位写在04的位置上,这样我们就需要写命令给1602,告诉它我们要写的地址为 0x80 +4 = 0x84,故要给1602送0x84

零基础学FPGA(十七)1602动态电子可调时钟设计

这样我们的初始化就结束了,初始化结束之后,我们需要写数据了。与写指令不同的是,这里仅需将RS拉高,其他时序不变,下面我们来写时间,我的思路是先将时分秒写进去,再利用状态机循环刷新

零基础学FPGA(十七)1602动态电子可调时钟设计

分钟和秒钟的书写规则和小时相同,写完后要回到刚开始写的地址处进行循环,即0x84

零基础学FPGA(十七)1602动态电子可调时钟设计

静态时钟写完了,这个时候如果把程序下到板子里,液晶屏上应该显示“00:00:00”,下面我们让这个时钟动起来,这就需要我们令开启一个进程,专门用来进行时钟计数,这里要用到分频电路,这次要分频1秒钟

零基础学FPGA(十七)1602动态电子可调时钟设计

计数完成之后我们需要将时分秒进行处理,因为我们往1602里写数据一次只能写1位,故,我们需要把时分秒的十位和各位分开来再送到1602,这里就用到了求模求余算法了

零基础学FPGA(十七)1602动态电子可调时钟设计

这样的话我们的时钟应该就可以动起来了,这里再说一下求模求余算法,例如分钟是45分,45对10求模即4,送到相应的10位上去,45对10求余,即5,送到相应的个位上去即可。

除了让时钟动起来之外,我们还可以再加一个功能,实现可调,这就需要用到按键,功能如下:

1、键1按下时,时钟停止计时

2、键2、3、4按下时,分别对时分秒进行调整

3、键1再次按下时,时钟开始计时

说到按键,就要用到按键消抖了,这就是前面的知识了,这里不做重复,详细见源代码,这里提供部分代码

零基础学FPGA(十七)1602动态电子可调时钟设计

接着对相应位进行操作即可

零基础学FPGA(十七)1602动态电子可调时钟设计

零基础学FPGA(十七)1602动态电子可调时钟设计

这样我们的时钟算是设计完成了,至于其他功能,大家可以另行拓展,在这里小墨同学就给大家布置一项作业吧,实现多功能电子时钟设计,功能如下:

1、 实现年月日显示,并按照平年闰年,大月小月计数

2、实现定时报警功能,即闹钟

3、让显示的时间上电的时候从右面慢慢滑进来

下面是实验结果测试图片

零基础学FPGA(十七)1602动态电子可调时钟设计

提醒:《零基础学FPGA(十七)1602动态电子可调时钟设计》最后刷新时间 2024-03-14 00:55:38,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《零基础学FPGA(十七)1602动态电子可调时钟设计》该内容的真实性请自行鉴别。