数码管显示电路的Verilog HDL 实现
时间:2022-04-28
本文章向大家介绍数码管显示电路的Verilog HDL 实现,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
任何一个7 段码管都有128 种显示模式,而其中的数字0-9 是最为有用也是最常见的。通过控制共阳极(共阴极)数码管的阴极(阳极),可以显示数字0-9,图11-22 给出共阳极和共阴极数码管各自的连接关系。对于多位数码管而言,实际中为了简化电路,常常需要将所有共阴极数码管的阳极接到一起,所有共阳极数码管的阴极接到一起,用多个独立的位选和7 个(或8 个)公共段选控制所有的数码管。
假设位选信号为低有效,当位选有效时,段选为0时对应的二极管段被点亮。则用FPGA控制4位8段数码管分别显示数字1、2、3、4的程序如下:
位选1 为低时(其它位选都为高),第一位数码管被选中,此时的共用段选用于第一位数码管的显示;位选2 为低时(其它位选都为高),第二位数码管被选中,此时的共用段选用于第二位数码管的显示,三、四位数码管的显示依次类推。在一个刷新周期T 内,每位数码管都有1/4T 周期的时间被刷新。为了保证所有4 位数码管的显示不闪烁,一般刷新频率要大于5Hz。在一个周期中,虽然每位数码管会有3/4T 的时间不被点亮,但位选刷新的速度较快,同时由于数码管自身的余辉特性,每位数码管在变暗之前就又会被重新刷新,因此人眼无法感觉到数码管变暗。如果刷新的频率小于一定值(如45Hz),则人眼就会感觉到数码管的闪烁。一般刷新频率在60Hz 到1KHz 之间时,多位数码管显示得比较理想。
module LED_Display(
clk,seg,dq,an
);
input clk;
output [6:0]seg;//phase select:consist of ABCDEFG
output dq;//little point
output [3:0]an;//bit select
reg [15:0]count_for_clk=0;//65536
reg [6:0]seg_reg;
reg [3:0]an_reg;
assign seg=seg_reg;
assign an=an_reg;
assign dq=1;
parameter zero=7'b100_0000,//G=1
one=7'b111_1001,
two = 7'b010_0100,
three= 7'b011_0000,
four = 7'b001_1001,
five = 7'b001_0010,
six = 7'b000_0010,
seven= 7'b111_1000,
eight= 7'b000_0000,
nine = 7'b001_0000;
always @ (posedge clk)//fractional frequency counter
begin
count_for_clk<=count_for_clk+1;
end
always@(posedge clk)
begin
case(count_for_clk[15:14])
0:an_reg<=4'b0111;
1:an_reg<=4'b1011;
2:an_reg<=4'b1101;
3:an_reg<=4'b1110;
endcase
end
always@(posedge clk)
begin
case(count_for_clk[15:14])
0: seg_reg<=one;
1: seg_reg<=two;
2: seg_reg<=three;
3: seg_reg<=four;
endcase
end
endmodule
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- (建议收藏)Java基础知识笔记二(详细)
- Android 手机如何拍摄RAW图
- 「干货」基本数据类型和引用数据类型的区别
- int 和 integer :装箱和拆箱的过程,会用到什么方法,你觉得这个会对性能有影响吗,原因是什么(百度一面)
- 数组:这个循环可以转懵很多人!
- 企业远程办公视频会议系统EasyRTC-SFU下侧边栏边框超限问题如何解决?
- 编写高质量可维护的代码:数据建模
- 新版企业远程办公视频通话系统EasyRTC-SFU,如何解决用户登录信息更新不及时的问题?
- 服务应用突然宕机了?别怕,Dubbo 帮你自动搞定服务隔离!
- 33.Python字符串方法find以及与序列解包的技巧结合
- 代码审计从0到1 —— Centreon One-click To RCE
- 一文带你深扒ClassLoader内核,揭开它的神秘面纱!
- 小知识:OGG的TRANLOGOPTIONS MINEFROMACTIVEDG参数
- oracle转postgreSQL修改点
- 重学数据结构(三、队列)