首页 > 其他分享 >基于FPGA的数字钟设计---第三版---郝旭帅电子设计团队

基于FPGA的数字钟设计---第三版---郝旭帅电子设计团队

时间:2024-01-05 17:55:06浏览次数:31  
标签:24 FPGA --- 数码管 按下 按键 小时 设计 电子设计

本篇为各位朋友介绍基于FPGA的数字钟设计---第三版。

功能说明:

  1. 在数码管上面显示时分秒(共计六个数码管,前两个显示小时;中间两个显示分钟;最后两个显示秒)。

  2. 利用按键可以切换24/12小时制(默认24小时制)。

  3. led1的亮灭表示24小时制(亮)还是12小时制(灭)。

  4. led2的亮灭表示上午(亮)还是下午(灭),24小时制时,一直灭。

  5. 增加调整按键和加减按键。

  6. 调整按键不按下时,正常显示时分秒。
    按下第一次,进入调整状态,时间停止,并且小时开始闪烁,通过加减按键可以进行调整。
    按下第二次,分钟开始闪烁,通过加减按键可以进行调整。
    按下第三次,秒开始闪烁,通过加减按键可以进行调整。
    按下第四次,进入正常运行状态。
    后续再按下时,重复以上的过程

使用平台:本次设计应用Altera的平台设计(芯片:EP4CE10F17C8N)。

仿真平台:Modelsim。

作者QQ:746833924

说明:本篇设计中不涉及到IP和原语,代码在其他平台依然可以适用;当其他板卡电路不同时,会导致不同的现象出现,如有需要修改代码请联系作者;如需作者使用的板卡,请联系作者;

设计思想如下:

key_ctrl模块负责将外部的按键信号进行消抖,并且产生对应边沿变化时的脉冲;digital_clock_ctrl模块负责根据脉冲信号和设计逻辑产生对应数字逻辑和led的状态;seven_tube_drive(七段数码管驱动)模块负责将digital_clock_ctrl模块产生的数字逻辑显示到数码管上。

key_ctrl模块设计思想为:按键信号是由外部机械式按键产生,每次按下或者抬起时,会产生一定的抖动。如果直接对其进行边沿检测就会导致多次触发。故而需要设计按键消抖,进而对消抖之后的波形进行边沿检测。消抖原理为:外部按键信号发生改变后,如果能够持续20ms,没有新的改变,就认为此次改变不是抖动,而是真正的按下,然后进行采样即可。


digital_clock_ctrl模块的设计思想:首先根据外部的调整脉冲,确定工作状态。




24小时进制和12小时进制在外部按键按下时切换;分和秒的显示没有改变,小时的显示需要调整。24小时制时,正常显示;12小时制时,时大于11时,需要减去12;并且利用led2进行表是为上午还是下午。


如果在调整模式中,启动一个一秒钟的计时器。

分钟和小时类似,在这里不在赘述。

在正常模式下将需要显示的时、分、秒的十位和个位计算出来。在对应的调整模式下,需要前半秒输出对应的数字,后半秒输出全F。在数码管驱动中,当输入正常数字0~9显示数字,当输入F时数码管熄灭,此时数码管就闪烁起来了。


所有的逻辑在复位时,可以给予各种值,下板时,通过按下复位,可以让数字钟从自己想要的时间开始运行。

以上即为digital_clock_ctrl模块的设计思想;

七段数码管为普通六位一体的共阳极数码,采用动态驱动的方式,在此不再赘述。

下板后(下板成功,按下复位并释放,复位的时间设置为上午11时59分50秒),我们就可以看到数字钟的运行情况。

当然我们也可以使用按键进行调节到我们想要的任何时间点。

下板后,led1点亮(24小时制),经过10秒后,可以看到12时0分0秒。

下板后,演示视频(链接)如下:

https://www.bilibili.com/video/BV1FT4y1x7RQ/?vd_source=b5405faeab8632f02533bcbfc5e52e55

 本设计所有内容(设计代码、设计工程)链接为:

链接:https://pan.baidu.com/s/1Bo6GK1bm1vDXfahwZusKVg

提取码:i9xj

本篇内容中有部分资源来源于网络,如有侵权,请联系作者。

标签:24,FPGA,---,数码管,按下,按键,小时,设计,电子设计
From: https://www.cnblogs.com/hxsdianzi/p/17947771

相关文章

  • ctfshow元旦水友赛web-easy-login
    easy-login这个题群主在出红包题的时候发过了,当时侥幸拿了一血,但群主说非预期。这次放出来预期解,简单学习一下。非预期前面找链子大家应该都能找到,就不说了。关键代码如下classmysql_helper{private$db;public$option=array(PDO::ATTR_ERRMODE=>P......
  • 无涯教程-Redis - 连接命令
    Redis连接命令基本上用于管理与Redis服务器的客户端连接。Connections-示例以下示例说明了客户端如何向Redis服务器进行身份验证并检查服务器是否正在运行。redis127.0.0.1:6379>AUTH"password"OKredis127.0.0.1:6379>PINGPONGConnections-命令下表列出了一......
  • 如何为OpenHarmony贡献(8):包容性的语言(概念)-1
    如何在开源项目翻译中确保您的全球内容展示了对读者的尊重和保护其尊严?在翻译中遵循并使用包容性语言无疑是一个不错的做法。为什么包容性语言是必要的?为确保有效沟通,所有目标受众均应获得平等对待。这涉及以下概念:DI:多样性(Diversity)和包容性(Inclusivity)DEI:多样性(Diversity)、平......
  • 如何为OpenHarmony贡献(9):包容性的语言(范畴)-2
    类别说明建议代词和个人头衔称呼一个人的方式:he、she、Mr.、Mrs.、Miss、Ms.性别中立的表达在某些语言中是不太可能的。我们应注意个人头衔是如何暗示婚姻状况,这将影响产品和服务收集个人信息的组件。角色和标签一些单词和术语,如chairman、aldermen、youguys这些词汇暗示男性的统......
  • python学习----编程题02
    题目:企业发放的奖金根据利润提成。利润(0)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成540万60万之间时高于40万元的部分,可提成3%60万到100万之间时,高于60......
  • C语言学习随笔-03 基本语法
    c语言程序由函数构成,每个函数可以实现一个或多个功能。 一个正规程序可以有多个函数,但是有且只有一个主函数。 函数只有在被调用的时候才执行,主函数由系统调用执行。 函数的格式必须按照规范书写。 C语言程序文件的后缀为.c1、C的令牌(Token):C程序由各种令牌组成,令牌可......
  • opencv库图像基础3直方图-python
    opencv库图像基础3直方图-python直方图是什么OpenCV中的直方图是图像中像素值分布情况的统计表示。它是图像空间域内像素值分布的图形表示,以便更好地理解颜色分布。灰度直方图是图像中每个像素灰度值出现的次数或频数的统计结果。它只反映该图像中灰度值出现的频率,而未反映某......
  • 大语言模型优化方法简介:Prompt、RAG、Fine-tuning
    GPT、LLama、Gemini等大语言模型虽展现出强大能力,但在实际应用中仍有问题,例如在准确性、知识更新速度和答案透明度方面,仍存在挑战。论文“Retrieval-AugmentedGenerationforLargeLanguageModels:ASurvey(面向大语言模型的检索增强生成技术:调查)”https://arxiv.org/abs/231......
  • jps命令 -bash: jps: 未找到命令
    问题描述准备使用jps命令,但显示找不到命令,就按照网上教程安装了openJDK,配置了相关环境变量后,java-version命令是正常显示了,但jps命令仍无法使用:couldnotfindlibjava.so 问题本质  安装错了openJdk的版本 解决方法//查询是否虚拟机安装了java软件rpm-qa|grepjav......
  • 已知两向量A, B ,求出A->B的旋转角
    一、已知两向量A,B,求出A->B的旋转角publicstaticfloatSignedAngleBetween(Vector3a,Vector3b,Vector3n){floatangle=Vector3.Angle(a,b);floatsign=Mathf.Sign(Vector3.Dot(n,Vector3.Cross(a,b)));floatsigned_angle=angle*s......