一个显示模块的设计

用FPGA复刻一个多功能电子钟:从Verilog模块化设计到数码管显示的完整流程 本文详细介绍了使用FPGA构建模块化电子钟系统的完整流程,从Verilog模块化设计到数码管显示的实战技巧。通过分频器、时间计数器等关键模块的实现,展示了数字系统设计的核心方法,适用于Xilinx或Intel开发板,并提供了调试优化方案。 阅读详情

场景: 单系统,多线程。一个线程生成数据,另外一个线程接收生成的数据,并调用显示库函数,将数据显示。


目的:在显示器中显示数据
库:嵌入式显示模块开发库
现有结构: 显示模块运行,整理为一个单独线程。它需要其他模块传递数据。


初步设想:
将整个显示模块设计为一个singleton单例类,两个线程都可以调用。一个线程用于调用显示接口,另外一个线程调用数据更新接口。两个线程之间的互斥,使用一个mutex来完成。


实现:
仅仅将全局变量设计为一个singleton单例模式,两个线程采用一个mutex来进行互斥,对数据进行保护。


----------------------
评价:
简单的模块


设计原则:
如果需求变动,就需要修改类。
一般容易变动的代码是 数据更新接口createOverlayData,当现实的数据有需求变化时,这块的代码就需要改动。


原因:本实例没有抽象接口。仅仅是一个简单的对象详细。类似于一个全局变量,并且由两个线程使用。


设计原则2: 简单情况下,不用抽象,直到第一个需要抽象的需求出现。


对修改关闭,对扩展开发。这个原则没办法使用。

目前,这个需求还没出现。


--------------------------

若不采用mutex互斥的方式进行数据传递。就需要一个observer模式,进行数据更新。两个线程之间的数据和运行基本上互不干扰,额外的开销就是一个缓存队列。

observer模块,增加的代码复杂度,不过能将结果数据供多个模块使用(目前,没这个需求)


若使用observer模式,singleton模式的是可以保留的,无论如何变化,显示控制端一般只需要一个对象管理即可。


可能的抽象接口:

还没想出来


--------------------------
6个设计原则:
1. 对修改关闭,对扩展开发。
2. 基类出现的地方,一定可以用子类来替换。子类与基类的关系
3. 依赖抽象,而不是依赖实现。抽象就是基类的方式,实现就是子类的方式。
4. 提供小接口,而不是大接口。接口隔离原则
5. 尽量使用组合,聚合,而不是继承。复用的方式。
6. demeter原则,软件实体间,尽量少交互。


这里尽量考虑了5,6原则,其他原则都没能用得上。(每写一个模块,就考虑何时、如何使用这些原则)
何时能很快地抽象接口。



立创EDA实战:为你的Arduino项目设计一个TM1637数码管显示模块(从原理图到打板) 本文详细介绍了使用立创EDA设计TM1637驱动的4位共阳数码管显示模块的全流程,包括硬件选型、原理图设计、PCB布局、打板焊接及Arduino驱动开发。通过对比HC595和MAX7219方案,突出TM1637驱动芯片的低成本和高效率优势,适合硬件爱好者快速上手。 阅读详情

相关推荐

从BCD码到数码管显示:手把手教你用FPGA设计一个通用译码显示模块(含Testbench)

本文详细解析了FPGA实现数码管动态显示系统的完整设计流程,从BCD译码原理到动态扫描时序控制,再到可配置化模块设计与Testbench验证。重点介绍了八段数码管的工作原理、FPGA动态显示优势以及参数化模块实现,帮助开发者快速掌握FPGA数码管驱动设计技巧。

weixin_42522374的博客 329

LCD模块设计

LCD液晶显示器由于具有体积小、重量轻、低电压、低功耗等特点,因此适合于结合大规模集成电路开发出各种便携式显示产品,具有十分广阔的市场前景。在嵌入式系统中,数据和命令通过网络接口或串行口经过ARM程序处理后,或显示在LCD上,或传输到远端PC上,LCD是实现人机交互的一个重要通道。1实例说明ARM内置的LCD控制器,可以支持规格为每像素2位(4级灰度)或每像素4位(16级灰度)的黑白L

Larry的专栏 5467

Verilog设计数字时钟

通过NEXY4DDR设计数字时钟

m0_57283507的博客 1万+

OLED显示模块(原理讲解、STM32实例操作)

版权声明:本文为优快云博主「Yngz_Miao」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.youkuaiyun.com/qq_38410730/article/details/80033873 正文如下: OLED的基础介绍 OLED的定义和优势 OLED,即有机发光二极管(Organic Light-Emitting Diode),又称为有

玩转智能机器人 5万+

基于FPGA的示波器设计

ADC 、DAC、FPGA、LCD液晶、示波器

FDL_AQ的博客 1万+

使用Arduino UNO和DS时钟模块以及TM1638显示模块进行时间显示的嵌入式设计

Arduino UNO是一种广泛使用的开源硬件平台,而DS时钟模块和TM1638显示模块是常用的外部模块,用于嵌入式系统的时间显示和用户界面。在本文中,我们将介绍如何使用Arduino UNO、DS时钟模块和TM1638显示模块设计一个嵌入式系统,实现时间的显示和控制。综上所述,我们通过使用Arduino UNO、DS1302时钟模块和TM1638显示模块,成功设计了一个嵌入式系统,实现了时间的显示和控制。然后,我们定义了TM1638显示模块的引脚连接,并创建了TM1638对象。函数中,我们首先通过。

CyberBytezZ的博客 452

基于51单片机的简易环境监测系统设计(proteus仿真,实物)

在这个项目中,我使用了多个传感器来检测不同的参数,包括温湿度、CO2浓度和TVOC浓度、PM2.5浓度、天然气浓度以及光照强度等。通过收集和分析这些数据,可以更好地了解室内环境的情况,并及时采取相应的措施来保障人们的健康和安全。在这个项目中,我使用了ADC转换芯片ADS1115来处理传感器产生的模拟信号。在使用ADC的过程中,我遇到了很多问题,例如时序问题、转换通道选择、PGA增益选择、转换速率等。这些问题可能会令我感到困惑和沮丧,但是通过耐心地研究和实践,我成功地克服了这些难题,并最终完成了这个项目。

a2784288164的博客 1万+

模块化设计在LED显示屏控制电路中的应用

本文还有配套的精品资源,点击获取 简介:LED显示屏在广告、信息展示等领域广泛使用。本文介绍了一种模块化设计方法,通过将显示屏电路分解为独立模块,提高了系统的灵活性、可靠性和可维护性。模块化设计包括驱动电路、数据处理单元和通信接口等模块,每个模块都有明确的功能并通过接口连接。这种设计简化了电路设计,降低了故障率,并便于后期维护和升级。模块化设计的物理结构也使得LED面板易于...

weixin_42311427的博客 1172

从七段数码管反推:如何用Verilog给加法器设计一个炫酷显示模块?

本文详细介绍了如何为FPGA上的四位加法器设计一个完整的显示模块。通过讲解二进制转BCD码的“加3移位”算法、动态扫描驱动的实现原理以及按键消抖的关键技术,指导读者使用Verilog语言将加法器的二进制结果优雅地显示在七段数码管上,实现从功能到交互的完整设计。

nft7creator的博客 356

LCD显示程序设计:包含字库和图形文件的应用开发

本文还有配套的精品资源,点击获取 简介:本简介详细解释了LCD显示程序如何在液晶显示屏上展示文本、图像和图形。程序包含字库和图形文件,以满足多样化的显示需求。关键概念包括LCD显示技术、字库的存储和使用、图形文件格式及其在显示中的应用、LCD显示驱动的作用和开发时使用的编程语言与框架。还提到了Emulator2.ncb文件,它可能是开发者用于程序测试的项目文件。整体而言,L...

weixin_42581003的博客 1865

Miniconda入门:在CentOS上的安装、基本操作、目录结构、卸载

Miniconda是一个 免费的 轻量级的 conda安装程序 它只包含conda、Python、pip、zlib等基础的文件和依赖包 使用conda install命令可从Anaconda存储库中安装额外的conda包 简介 下载 安装 基本操作 虚拟环境的操作 包的操作 目录结构 卸载

ArYe 1万+

java用户角色权限管理 只显示姓_如何设计一个完美的权限管理模块

作 者:不哼不哈来 源:cnblogs.com/myindex/p/9116177.html广而告之:由于此订阅号换了个皮肤,系统自动取消了读者的公众号置顶。导致用户接受文章不及时。您可以打开订阅号,选择置顶(星标)公众号,重磅干货,第一时间送达!我们比较常见的就是基于角色的访问控制,用户通过角色与权限进行关联。简单地说,一个用户拥有多个角色,一个角色拥有多个权限。这样,就构造成“用户-...

weixin_34369657的博客 135

【Android14 ShellTransitions】Transition就绪:双Transaction与SurfaceControl显示时机剖析

本文深入剖析了Android14 ShellTransitions框架中Transition就绪阶段的核心机制。重点解释了为何需要“双Transaction”来精确控制SurfaceControl的显示与隐藏时机,以确保Activity切换动画的流畅性。通过分析onTransactionReady流程、窗口绘制状态机及动画目标提升策略,揭示了系统如何协调WMCore与WMShell,实现从状态收集到动画播放的无缝衔接。

ooo22的博客 529

FPGA项目(10)——基于FPGA的倒计时显示电路的设计与仿真

基于FPGA的倒计时显示电路的设计,通过了仿真验证。使用的是quartus自带的仿真器

guangali的博客 5999

Windows 11安装realtek audio control

Windows 11安装realtek audio control,解决无法链接RPC问题

m0_46144825的博客 8万+

【智能制造】- APS系列|05 APS 排产的五大底层算法逻辑

很多人误以为APS只是给生产工单排先后顺序,实则整套系统依托成熟算法体系,完成多维度约束下的最优生产决策在制造业数字化排产普及的当下,依旧有不少制造管理者对APS存在认知误区,将其等同于简易工单排序工具。事实上,专业级高级计划与排程系统,早已脱离单纯按时间排序的基础功能,而是依托一整套成熟完善的底层算法逻辑,整合现场各类生产限制条件,在海量变量中自动推演、筛选、输出最贴合企业经营目标的生产方案。

qq_40821260的博客 435

verilog 设计一个电子钟

Verilog hdl 语言设计电子时钟 基于 Verilog hdl 语言设计电子时钟,实现计时、调整时间、重新清零功能。 时,分,秒 reg [3:0] dout1,dout2;//秒的个位与十位,0-9,0-6; reg [3:0] dout3,dout4;//分的个位与十位,0-9,0-6; reg [3:0] dout5,dout6;//时的个位与十位,0-4,0-2; //进位 reg co_1; reg co_2; reg co_3; reg co_4; reg co_5; 一秒计时产生 re

weixin_46085748的博客 1万+

CAN开发笔记(TI开发者推荐笔记)

查阅了很多资料没有查阅到关于5728芯片CAN模块寄存器的介绍,希望通过本文能给做CAN驱动的后来者有一点参考意义,我也是刚接触CAN模块有些不足请各位多多指正。 由下图所示是CAN模块初始化流程图 首先要开始初始化,设置CAN位时间,然后配置message objects, 完成初始化。 1.开始初始化 首先要控制DCAN_CTL 寄存器,该寄存器是CAN模块的总控制器,很多配置通过...

weixin_44316996的博客 3562

循迹小车计数显示模块设计

首先,要实现自动计数显示模块,需要设计一个秒脉冲电路。 我们是用NE555芯片设计的秒脉冲。其中,3脚输出秒脉冲,可以用示波器查看,或者万用表也是可以的。 我们设计的计数显示模块,利用的是两个共阳极的数码管。由555定时器产生的1HZ脉冲输入该显示模块,我们通过两个160芯片级联组成一个60进制的同步计数器,再由两个47芯片将计数器产生的BCD码转化为输出,进入数码管实现时间显示。 其中,为了实现数码管显示能随着小车的停止而停止计数,我们将

2201_75431655的博客 931

基于大模型的重度膝关节骨关节炎全流程预测与治疗方案研究

本研究基于大模型构建了重度膝关节骨关节炎(KOA)预测体系,涵盖术前风险预测、手术方案优化、术中监测和术后康复指导全流程。通过分析临床和影像数据,模型在手术风险预测准确率(85%)、并发症预警(血栓预测准确率88%)等方面显著优于传统方法。研究实现了临床数据与AI技术的深度融合,术前预测指导麻醉选择(如高危患者推荐椎管内麻醉),术中实时监测生命体征,术后个性化康复方案使患者HSS评分平均提升45分。

嵌入式毕设/课设资料清单(速查手册·文档模板·题库,持续更新)→ 见最新文章 1390

手把手教你学Simulink实例--基于Simulink的电力电子系统电池管理系统(BMS)设计与仿真实例

本文详细介绍了基于Simulink的电池管理系统(BMS)设计与仿真全过程。首先阐述了BMS在安全防护、寿命延长和性能优化方面的必要性,分析了新能源汽车、光伏储能等典型应用场景的技术指标要求。接着详细讲解了Thevenin等效电路和多电平电池模型构建方法,并给出SOC估算、故障诊断等核心算法的MATLAB实现代码。通过设计正常充放电、过充保护等多场景仿真测试,验证了系统在SOC跟踪精度(误差<1.5%)和故障响应速度(<10ms)方面的优异性能。文章还提出了参数优化方法和未来AI融合、数字孪生等发展方向,提

xiaoheshang_123的博客 379

FPGA设计:制作一个频率计

这次把自己做过的一个频率计拿出来跟大家分享一下。 项目采用VHDL来编写。 一、功能介绍 对信号源输入信号的频率进行正确测量并显示 测量范围:0-9999Hz; 测量精度:1Hz; 测量误差:1Hz; 因为用的FPGA板只有四个数码管,所以就采用了测量范围为0-9999,后面你们可以根据情况来增加测量范围。项目框图如下: 实现的功能是将输入的信号频率测量出来并且通过开发板上面的四个数码管显示出来,采用计频法,测量单位时间的脉冲个数。这里的单位时间我采用一秒,因为值比较小,所以误差范围为1Hz。这里的一秒信

OMGMac的博客 3100

基于单片机的智能温控风扇设计

该智能温控风扇系统的设计目标是根据环境温度自动控制风扇的转速或开关状态,确保用户始终处于舒适的温度范围内。实时温度监测:通过温度传感器(如DS18B20或DHT22)实时监控环境温度。风扇控制:根据温度变化自动调节风扇的转速,温度过高时风扇加速,温度适中时风扇转速降低,达到节能与舒适平衡。LCD显示:通过LCD屏幕实时显示温度信息。无线通信:通过Wi-Fi或蓝牙模块将温度数据发送至手机或云平台,支持远程控制风扇的开关或调节转速。报警功能:温度过高或过低时,蜂鸣器发出警报,提示用户注意。

2201_76125393的博客 1159

前台JS模块设计

 前台JS模块设计... 21.1          简介... 21.2          接口... 21.2.1       异步请求数据MyXmlHttp.callMethod(…..)21.3          实现方式... 21.4          限制条件... 21.5          生命周期... 21.6          设计概述...

Leon_He_CN的专栏 1647

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

FPGA之动态数码管显示实验

1.试验任务 完成6位数码管以动态方式从0开始计数,没100ms计数值增加1,当计数值从0增加到999999后重新从0开始计数。 2.硬件原理图 3.程序框图 程序设计思想: FPGA顶层(top_seg_led)例化了以下两个模块:计数模块(count)以及数码管动态显示模块(seg_led)。实现各模块之间数据的交互。计数模块将计数值通过data端口传递给数码管动态显示模块, 使能信号en使能数码管显示数据, 小数点显示信号point控制小数点的显示,符号信号sign可以让数码管显示负号.

Ice Emperor的博客 4450

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

上一篇: 制定开发目录结构
下一篇: 导航中GPS位置与地图匹配、道路匹配算法
viewcode
博客等级 码龄16年 993粉丝 108原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值