Nexys2七段LED显示操作
首先,翻译一下使用手册上的说明:
Nexys2开发板包含四位公共阳极七段LED显示屏。 每一个数字由按数字“8”图案排列的七个片段组成,其中嵌入有LED灯。 每段LED可以单独点亮,所以一共可以表示128种图案。
形成每个数字的七个LED灯的阳极被连接在一起成为一个“公共阳极”电路节点,但LED阴极保持分离。 公共阳极信号可用作四位数字的启用输入信号。 四个数字上相同位置的LED灯的阴极是连接到标记为CA到CG的七个电路节点(例如,四个“D”阴极组合到一起成为“CD”电路节点)。 这七个阴极信号可用作4位显示的输入。 该信号连接方案创建一个多重显示,其中阴极信号对所有数字是通用的,但它们只能照亮阳极信号被接通的数字段。可以使用扫描显示控制器电路在该显示器上显示四位数字。 这个电路驱动每个数字的阳极信号和相应的阴极信号,以比人眼可以检测到的更快的速度连续更新。每个数字照亮了四分之一的时间,但因为在眼睛不能察觉到数字变暗之前,数字又再次亮起,所以看到的数字显示持续亮起。 如果更新或“刷新”率放慢到45赫兹左右,大多数人会开始看到显示屏闪烁。为了使四位数字中的每一位出现明亮且持续亮起,所有四位都应该是每1到16ms驱动一次,刷新频率为1KHz至60Hz。 例如,对于60Hz刷新方案,整个显示屏将每16ms刷新一次,每个数字将被刷新的周期为总周期的1/4,或4ms。 控制器必须以正确的方式驱动阴极和相应的阳极信号。为了说明这个过程,如果在确认CB和CC时AN0被接通,则在数字显示为1。如果AN1在CA,CB和CC被接通时被接通,则将显示数字“7” 。如果AN0和CB,CC被驱动为4ms,然后A1和CA,CB,CC连续驱动4ms,显示屏将在前两位显示“17”。
那让我们看看具体要怎样做:
首先写一个模块实现数字到这种图形的转化,也就是七段译码器:
//七段译码器
module qiduanyimaqi(q_num, q_out); input[3:0] q_num; output[7:0] q_out; reg[7:0] q_out; always @(q_num) begin case(q_num) 4'b0000:q_out = 8'b00000011; 4'b0001:q_out = 8'b10011111; 4'b0010:q_out = 8'b00100101; 4'b0011:q_out = 8'b00001101; 4'b0100:q_out = 8'b10011001; 4'b0101:q_out = 8'b01001001; 4'b0110:q_out = 8'b01000001; 4'b0111:q_out = 8'b00011011; 4'b1000:q_out = 8'b00000001; 4'b1001:q_out = 8'b00001001;default q_out = 8'b00000011;endcase end
endmodule
然后需要写一个能将要表示的数字转化为发向七段译码器的数字信号,实现代码如下 :
d_num1到d_num4分别为要显示的4个数字。d1_wx和d1_out分别表示阳极接通情况和8段LED接通情况。
//七段译码器显示处理模块 用于将num1,num2,num3和num4的数字显示在屏幕上
module dtsm(MCLK9, d_num1, d_num2, d_num3, d_num4, d1_wx, d1_out);input MCLK9;input[3:0] d_num1;input[3:0] d_num2;input[3:0] d_num3;input[3:0] d_num4;output[3:0] d1_wx;output[7:0] d1_out;reg[3:0] d1_wx = 4'b1110;wire[7:0] d1_out;reg[3:0] d_tmp_num;always @(posedge MCLK9) begin case(d1_wx)4'b1110:begind_tmp_num = d_num2;d1_wx = 4'b1101;end4'b1101:begind_tmp_num = d_num3;d1_wx = 4'b1011;end4'b1011:begind_tmp_num = d_num4;d1_wx = 4'b0111;end4'b0111:begind_tmp_num = d_num1;d1_wx = 4'b1110;enddefault: d1_wx = 4'b1110;endcase end qiduanyimaqi qiduanyimaqi(d_tmp_num, d1_out);
endmodule
然后如果直接将板上50MHZ的时钟信号输入,那么因为扫描速度太快,数字会看不清楚
所以我们需要写一个降频器(200Hz):
module div(
input clk,
output reg clk_slow);
reg [24:0] cnt_div = 25'b0;
always@(posedge clk)beginif(cnt_div == 25'd1_000_00)begincnt_div <= 25'b0;clk_slow <= 1'b1;endelsebegincnt_div <= cnt_div + 25'b1;clk_slow <= 1'b0;endendendmodule
最后就是修改引脚绑定代码如下
#4个七段译码器
# 7 segment display
NET "d1_out[7]" LOC = "L18"; # Bank = 1, Pin name = IO_L10P_1, Type = I/O, Sch name = CA
NET "d1_out[6]" LOC = "F18"; # Bank = 1, Pin name = IO_L19P_1, Type = I/O, Sch name = CB
NET "d1_out[5]" LOC = "D17"; # Bank = 1, Pin name = IO_L23P_1/HDC, Type = DUAL, Sch name = CC
NET "d1_out[4]" LOC = "D16"; # Bank = 1, Pin name = IO_L23N_1/LDC0, Type = DUAL, Sch name = CD
NET "d1_out[3]" LOC = "G14"; # Bank = 1, Pin name = IO_L20P_1, Type = I/O, Sch name = CE
NET "d1_out[2]" LOC = "J17"; # Bank = 1, Pin name = IO_L13P_1/A6/RHCLK4/IRDY1, Type = RHCLK/DUAL, Sch name = CF
NET "d1_out[1]" LOC = "H14"; # Bank = 1, Pin name = IO_L17P_1, Type = I/O, Sch name = CG
#NET "d1_out[0]" LOC = "C17"; # Bank = 1, Pin name = IO_L24N_1/LDC2, Type = DUAL, Sch name = DPNET "d1_wx[0]" LOC = "F17"; # Bank = 1, Pin name = IO_L19N_1, Type = I/O, Sch name = AN0
NET "d1_wx[1]" LOC = "H17"; # Bank = 1, Pin name = IO_L16N_1/A0, Type = DUAL, Sch name = AN1
NET "d1_wx[2]" LOC = "C18"; # Bank = 1, Pin name = IO_L24P_1/LDC1, Type = DUAL, Sch name = AN2
NET "d1_wx[3]" LOC = "F15"; # Bank = 1, Pin name = IO_L21P_1, Type = I/O, Sch name = AN3
Nexys2七段LED显示操作相关推荐
- 十六进制七段LED显示译码器 静态显示
译码器是一类多输入多输出组合逻辑电路器件,其可以分为变量译码和显示译码两类. 变量译码器一般是一种较少输入变为较多输出的器件,如3-8译码器,显示译码器用来将数值转换成要显示的对应的符号. 任务描述 ...
- 西南交大计算机组成原理考试大纲,西南交大计算机组成原理实验二七段LED数码管显示译码器的设计.docx...
//译码模块 module xianshi(input [3:0]xs,output reg [6:0]l); always @ (xs) begin case(xs) 4'b0000: l<= ...
- 8255A控制八位七段LED数码管
微机实验六 文章目录 微机实验六 前言 八位七段LED数码管 驱动方式 静态显示 动态显示 实验所用七段数码管 相关参数 字形代码表 实验连线步骤: 汇编程序(.ASM) 程序初始化 数据段定义 代码 ...
- 七段数码显示管—设计报告,visio图,Multisim仿真
一位七段数码显示管(附加设计报告,visio图,和Multisim仿真 第一次写博客,第一次用标记语言,写的不好请见谅! - -题目要求- - 采用74ls147芯片,74ls04,74ls48n和共 ...
- 接口技术实验:七段码显示
实验题目1:七段码显示 完成七段码的显示验证(8255作为七段码显示器的驱动).下图仅供参考. LED数码管(LED Segment Displays)由多个发光二极管封装在一起组成"8&q ...
- 蓝桥杯电子类单片机组模块——led显示(一般作用)
几乎每届蓝桥杯单片机组比赛都会考到led模块:特别是对于近几年的省赛来讲,led模块的使用显得更为灵活:即便led比较之简单,但是编写程序时还是很有可能出现错误. 现在来给大家介绍动态数码管的使用方法 ...
- 【雕爷学编程】Arduino动手做(47)---七段LED数码管模块
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器和模块,依照实践(动手试试)出真知的理念,以学习和交流为目的,这里准备 ...
- C51单片机LED显示二进制【核心代码详解】
文章目录 前言 一.位运算--按位取反 二.代码部分 1.实例代码 2.对核心代码P2=~i 的解释 总结 前言 51单片机独立按键实现LED显示二进制[代码详解] --按位取反 --具体实现原理 提 ...
- 《STM32单片机开发应用教程(HAL库版)—基于国信长天嵌入式竞赛实训平台(CT117E-M4)》第四章4.1 LED显示控制实验
写在前面-- <STM32单片机开发应用教程(HAL库版)-基于国信长天嵌入式竞赛实训平台(CT117E-M4)>第四章4.1,本节将通过LED显示控制实验,学习STM32G431的开发技 ...
最新文章
- 如何设置chrome谷歌浏览器不显示图片
- 深度学习100例 -卷积神经网络(ResNet-50)鸟类识别 | 第8天
- html 换行符_每个非网站开发人员都应该了解的21个HTML基础知识
- gcc,cc,g++,CC的区别
- JVM优化系列-对象内存分配和回收的细节
- MOSS总弹出登陆框的问题
- 思科路由器如何导出配置文件_探讨怎样备份思科路由器的配置文件呢?
- 互联网早报:京东发布“小时购”业务:京东APP下单提速至小时达、分钟达
- BZOJ 3162 独钓寒江雪(树形DP)
- 在线富文本html编辑,html编辑器 - 经典富文本网页在线编辑器 - HtmlEditor
- bzoj4570: [Scoi2016]妖怪【凸包+对勾函数最小值】
- 发版流程及对外版本规范
- R语言绘图—“金字塔图”
- 关于在win8下面安装虚拟机出现的一些问题
- 制造企业使用APS计划排产需要的条件
- 数量金融学(8):Markowitz均值-方差模型(2)
- zigzag走线原理及应用
- 概率论与数理统计 浙江大学 第27-34讲单元测验
- H5如何拉起微信扫一扫
- 鲁大师发布2022半年报手机UI排行榜:vivo OriginOS成为最流畅UI