0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

BJ-EPM240学习板之数码管显示实验

工程师 来源:未知 作者:姚远香 2019-03-06 15:05 次阅读

一个带小数点的数码管的所有8个发光二极管的正极或负极有一个公共端,通常必须接GND(共阴极数码管)或者接VCC(共阳极数码管),而另一个非公共端的8个引脚就留给用户的I/O直接控制了。

所以,你做实验之前要明白自己的开发板的数码管是共阳极的还是共阴极的,由于板子是师兄留给我的,我就不知道我的板子是共阳极的还是供阴极的,所以显示数字出现乱码时,我就花了很长时间确定是共阳极的还是共阴极的,乱码是这个原因还是引脚约束出问题了等等,很烦恼,当然,最后成功的显示数字之后,心里还是很舒服的。

我的Spartan-6 FPGA开发板中的数码管是共阳极的,因此段选是低电平有效,也就是低电平时,每一段对应的发光二极管点亮。

如下图是数码管的示意图:

BJ-EPM240学习板之数码管显示实验

如果是共阴极的,那么译码表为:

BJ-EPM240学习板之数码管显示实验

每个数字或字符的编码是怎么得到的呢?

如下表:

BJ-EPM240学习板之数码管显示实验

上表举了0、1这两个数字的编码方式,应该很明白了吧,从dot开始到a,依次编码,亮为1,灭为0,如此规律,可以找到各个数字或字符对应的16进制编码,该16进制编码最高位赋值给dot,然后是g、f依次到a,这样的话,就应该到时候分配引脚的时候,dot引脚对应的编码位数是最高位,a引脚对应的是编码位数的最低位。

不明白这一点,弄错了,就会出现乱码。

上面说的是共阴极的情况,那么共阳极的情况呢?对应的编码是多少呢?

可知根据规律自己推,这里就直接给出了:

BJ-EPM240学习板之数码管显示实验

下面说说这个实验的要求,由于只是初步了解数码管的段选片选,所以就不要求那么复杂了,相对简单一些:

看看你的开发板上有几个数码管,让它们同时显示数字从0 到 F。

下面给出我的FPGA设计的Verilog HDL硬件描述语言:

这个代码是特权同学的,我改动了下,适应我的FPGA开发板,(数码管是共阳极的,片选是低电平有效,8个数码管。)

`timescale 1ns / 1ps

//////////////////////////////////////////////////////////////////////////////////

// Company:

// Engineer:

//

// Create Date: 14:03:17 08/17/2018

// Design Name:

// Module Name: leg_seg7

// Project Name:

// Target Devices:

// Tool versions:

// Description:

//

// Dependencies:

//

// Revision:

// Revision 0.01 - File Created

// Additional Comments:

//

//////////////////////////////////////////////////////////////////////////////////

module led_seg7(

clk,rst_n,

sm_cs1_n,sm_db

);

input clk; // 50MHz

input rst_n; // 复位信号,低有效

output[7:0] sm_cs1_n; //数码管片选信号,低有效

output[7:0] sm_db; //8段数码管(包括小数点)

reg[24:0] cnt; //计数器,最大可以计数到2的25次方*20ns=640ms

always @ (posedge clk or negedge rst_n)

if(!rst_n) cnt 《= 25‘d0;

else cnt 《= cnt+1’b1; //循环计数

reg[3:0] num; //显示数值

always @ (posedge clk or negedge rst_n)

if(!rst_n) num 《= 4‘d0;

else if(cnt == 25’h1ffffff) num 《= num+1‘b1; //每640ms增一

//-------------------------------------------------------------------------------

/* 共阳级 :带小数点

;0, 1, 2, 3, 4, 5, 6, 7,

db C0, F9, A4, B0, 99, 92, 82, F8

;8, 9, a, b, c, d, e, f , 灭

db 80, 90, 88, 83, C6, A1, 86, 8E, ff*/

parameter seg0 = 7’hC0,

seg1 = 7‘hF9,

seg2 = 7’hA4,

seg3 = 7‘hB0,

seg4 = 7’h99,

seg5 = 7‘h92,

seg6 = 7’h82,

seg7 = 7‘hF8,

seg8 = 7’h80,

seg9 = 7‘h90,

sega = 7’h88,

segb = 7‘h83,

segc = 7’hC6,

segd = 7‘hA1,

sege = 7’h86,

segf = 7‘h8E;

reg[7:0] sm_dbr; //8段数码管(包括小数点)

always @ (num)

case (num) //NUM值显示在数码管上

4’h0: sm_dbr 《= seg0;

4‘h1: sm_dbr 《= seg1;

4’h2: sm_dbr 《= seg2;

4‘h3: sm_dbr 《= seg3;

4’h4: sm_dbr 《= seg4;

4‘h5: sm_dbr 《= seg5;

4’h6: sm_dbr 《= seg6;

4‘h7: sm_dbr 《= seg7;

4’h8: sm_dbr 《= seg8;

4‘h9: sm_dbr 《= seg9;

4’ha: sm_dbr 《= sega;

4‘hb: sm_dbr 《= segb;

4’hc: sm_dbr 《= segc;

4‘hd: sm_dbr 《= segd;

4’he: sm_dbr 《= sege;

4‘hf: sm_dbr 《= segf;

default: ;

endcase

assign sm_db = sm_dbr;

assign sm_cs1_n = 8’b0000_0000; //数码管常开

endmodule

对上述代码需要解释的是片选信号有8个,低电平有效,我把8个数码区的片选全部赋值为0了,这样8个数码管就全部有效,同步显示0到F.(片选的意思是选择哪一个数码管有效)

这是我的数码管的电路图:

BJ-EPM240学习板之数码管显示实验

更多关于BJ-EPM240学习板之数码管显示实验请看视频

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1624

    文章

    21611

    浏览量

    601091
  • 数码管
    +关注

    关注

    32

    文章

    1873

    浏览量

    90855
收藏 人收藏

    评论

    相关推荐

    简述led数码管的类型和显示原理

    LED数码管是一种常见的显示设备,广泛应用于各种电子设备和系统中。本文将介绍LED数码管的类型和显示原理,以帮助读者更好地了解这种设备。 LED数码
    的头像 发表于 08-29 09:11 494次阅读

    数码管显示屏的静态显示编程是什么

    数码管显示屏的静态显示编程是一种简单的显示方式,它指的是在任意时刻,数码管上的所有段(a, b, c, d, e, f, g, dp等,具体
    的头像 发表于 08-28 17:14 394次阅读

    数码管显示屏的作用和功能是什么

    数码管显示屏是一种广泛应用于各种电子设备中的显示技术,它具有多种作用和功能。 一、数码管显示屏的基本概念 1.1
    的头像 发表于 08-28 17:11 598次阅读

    驱动器数码管显示不良原因

    驱动器数码管显示不良的原因可能有很多,涉及到硬件、软件、环境等多个方面。 一、引言 驱动器数码管是一种广泛应用于工业自动化、电子设备等领域的显示设备。它具有
    的头像 发表于 08-28 16:38 510次阅读

    什么原因造成数码管显示错误

    数码管显示错误是一个常见的问题,可能由多种原因引起。 一、引言 数码管是一种常用的显示设备,广泛应用于各种电子设备中,如电子钟、计算器、温度计等。然而,在使用过程中,
    的头像 发表于 08-28 16:36 994次阅读

    数码管驱动芯片引脚功能

    数码管驱动芯片是一种用于驱动数码管显示数字或字符的集成电路。数码管驱动芯片的引脚功能是实现数码管正常显示
    的头像 发表于 08-28 16:08 598次阅读

    数码管驱动芯片原理是什么

    数码管驱动芯片是一种广泛应用于数字显示领域的电子元件,它能够将数字信号转换为可视的数字显示。 一、数码管驱动芯片概述 1.1 数码管驱动芯片
    的头像 发表于 08-28 16:07 532次阅读

    数码管显示不全是什么原因造成的

    数码管显示不全的原因主要有以下几个方面: 显示模块故障:数码管显示不全可能是由于显示模块自身出现
    的头像 发表于 12-26 13:58 6610次阅读

    单片机是如何控制数码管显示各种字符的?

    单片机是一种集成电路,它由中央处理器、存储器、输入输出接口和定时器等组成。它用于在电子设备中控制各种功能,包括数码管显示数码管是一种常见的显示装置,用于
    的头像 发表于 12-15 10:22 1654次阅读

    单片机是如何控制数码管显示各种字符的?

    单片机控制数码管显示各种字符的过程是一个相对复杂的过程,涉及到硬件电路设计和软件编程两个方面。下面我将详细介绍单片机如何控制数码管显示各种字符。 一、单片机和
    的头像 发表于 12-13 10:47 1915次阅读

    【每周一练】盘古1K开发 练习三:动态数码管显示

    实验目的: 掌握数码管显示原理,实现数码管动态显示 实验要求: 实现四个
    发表于 12-10 16:45

    【每周一练】盘古1K开发 练习三:动态数码管显示实验

    实验目的 动态控制 4 位数码管显示不同的数值; 实验要求 四个数码管显示不同的数字, 按键 K
    发表于 12-09 15:09

    STM32 I2C写入驱动数码管显示实验

    本次实验所用到的simulink模型如图5.2所示,电路原理图如图5.3所示,实验效果为数码管从‘0’~‘A’轮流显示,如图5.1所示。
    的头像 发表于 12-06 16:09 2035次阅读
    STM32 I2C写入驱动<b class='flag-5'>数码管</b><b class='flag-5'>显示</b><b class='flag-5'>实验</b>

    【每周一练】盘古1K开发 练习三:动态数码管显示实验

    实验目的:掌握数码管显示原理,实现数码管动态显示 实验要求:实现四个
    发表于 11-24 11:21

    动态数码管显示原理详解

    动态显示的特点是将所有数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描
    的头像 发表于 11-10 11:38 4438次阅读
    动态<b class='flag-5'>数码管</b><b class='flag-5'>显示</b>原理详解