七段数码管

  • 一、 实验目的
  • 二、 实验内容
    • 1. 实验流程
    • 2. Verilog代码分析
      • (1) Design source(.v文件):
      • (2) Constraints source(.xdc文件)
      • (3) Elaborated design:
  • 三、 实验结论
  • 四、 思考与讨论
    • (一) 问题与提升
    • (二) 实验感想

一、 实验目的

了解七段数码管的构造和工作原理。
输入一个BCD码,使七段数码管显示对应的十进制数,对应0~9如下所示

二、 实验内容

1. 实验流程

① 分析实验目的,本次实验需要一组7段数码管显示对应于输入BCD码的十进制数,故考虑使用实验板上的一组数码管。
② 每组数码管由a~g的7个独立阴极组成,7个独立阴极的亮熄状态决定了数码管显示的状态。
③ 每个BCD码对应数码管的一种显示,故考虑用case语句完成对一组数码管a~g的赋值。
④ 结合数码管的构造(共阳极:点亮,引脚输出为低电平(0);不亮,引脚输出为高电平(1)),作出真值表,编写verilog代码并上板验证。

⑤根据亮灯原理图写真值表:
对于需要使用的某组数码管,赋值AN=0,其他7组数码管赋值AN=1。对于该组数码管中的a~g独立阴极,某一个赋0则亮,赋1则不亮.

BCD码 a_to_g
centered 文本居中 right-aligned 文本居右
0000 0000001
0001 1001111
0010 0010010
0011 0000110
0100 1001100
0101 0100100
0110 0100000
0111 0001111
1000 0000000
1001 0000100

2. Verilog代码分析

(1) Design source(.v文件):

 module BCDsegment(input [3:0]SW,
//输入BCD码SW[3]=R15,SW[2]=M13,SW[1]=L16,SW[0]=J13output reg [6:0]a_to_g,output DP,output [7:0]AN);assign AN=8'b1111_1110;assign DP=1;always@(*)begincase(SW)4'b0000:  a_to_g=7'b0000001;4'b0001:  a_to_g=7'b1001111;4'b0010:  a_to_g=7'b0010010;4'b0011:  a_to_g=7'b0000110;4'b0100:  a_to_g=7'b1001100;4'b0101:  a_to_g=7'b0100100;4'b0110:  a_to_g=7'b0100000;4'b0111:  a_to_g=7'b0001111;4'b1000:  a_to_g=7'b0000000;4'b1001:  a_to_g=7'b0000100;endcaseend
endmodule

.v分析:
① input一个四位向量SW作为输入信号,通过拨动对应的引脚改变输入的BCD码。
② output一个七位向量a_to_g决定一组七段数码管的各二极管亮暗状态,亮起的二极管组合形成一个十进制数。
③ output一个DP信号,是实验板上8组数码管的总开关,用assign语句赋值为1。
④ output一个八位向量AN,AN决定一个实验板上的八组数码管使用状态,赋值为1的不使用,赋值为0的为使用。本次实验中将AN通过assign语句赋值为8’b1111_1110,表示只使用AN[0]对应的那组数码管。
⑤ 在always语句中,用case语句完成BCD码和七段数码管状态的对应工作。

(2) Constraints source(.xdc文件)

##Switchesset_property -dict { PACKAGE_PIN J15   IOSTANDARD LVCMOS33 } [get_ports { SW[0] }];
set_property -dict { PACKAGE_PIN L16   IOSTANDARD LVCMOS33 } [get_ports { SW[1] }];
set_property -dict { PACKAGE_PIN M13   IOSTANDARD LVCMOS33 } [get_ports { SW[2] }];
set_property -dict { PACKAGE_PIN R15   IOSTANDARD LVCMOS33 } [get_ports { SW[3] }];
##7 segment display
set_property -dict { PACKAGE_PIN T10   IOSTANDARD LVCMOS33 } [get_ports { a_to_g[6] }];
set_property -dict { PACKAGE_PIN R10   IOSTANDARD LVCMOS33 } [get_ports { a_to_g[5] }];
set_property -dict { PACKAGE_PIN K16   IOSTANDARD LVCMOS33 } [get_ports { a_to_g[4] }];
set_property -dict { PACKAGE_PIN K13   IOSTANDARD LVCMOS33 } [get_ports { a_to_g[3] }];
set_property -dict { PACKAGE_PIN P15   IOSTANDARD LVCMOS33 } [get_ports { a_to_g[2] }];
set_property -dict { PACKAGE_PIN T11   IOSTANDARD LVCMOS33 } [get_ports { a_to_g[1] }];
set_property -dict { PACKAGE_PIN L18   IOSTANDARD LVCMOS33 } [get_ports { a_to_g[0] }]; set_property -dict { PACKAGE_PIN H15   IOSTANDARD LVCMOS33 } [get_ports { DP }]; set_property -dict { PACKAGE_PIN J17   IOSTANDARD LVCMOS33 } [get_ports { AN[0] }];
set_property -dict { PACKAGE_PIN J18   IOSTANDARD LVCMOS33 } [get_ports { AN[1] }];
set_property -dict { PACKAGE_PIN T9    IOSTANDARD LVCMOS33 } [get_ports { AN[2] }];
set_property -dict { PACKAGE_PIN J14   IOSTANDARD LVCMOS33 } [get_ports { AN[3] }];
set_property -dict { PACKAGE_PIN P14   IOSTANDARD LVCMOS33 } [get_ports { AN[4] }];
set_property -dict { PACKAGE_PIN T14   IOSTANDARD LVCMOS33 } [get_ports { AN[5] }];
set_property -dict { PACKAGE_PIN K2    IOSTANDARD LVCMOS33 } [get_ports { AN[6] }];
set_property -dict { PACKAGE_PIN U13   IOSTANDARD LVCMOS33 } [get_ports { AN[7] }];

.xdc分析
① 每个引脚一行语句:代表引脚在实验板上的位置和输出标准电平3.3V。
② 引脚锁定文件使用到的引脚名称与design source中所使用到变量名称相对应。
③ 该.xdc文件中,SW[0]SW[3]代表输入的BCD码,a_to_g[6] a_to_g[0]代表一组7段数码管的编号a~g的led灯(顺时针方向),DP为总开关,AN为实验板上的8组7段数码管。

(3) Elaborated design:

三、 实验结论

本次实验中,通过完成输入BCD码,七段数码管显示对应的十进制数,我对实验板上8组七段数码管的构造和工作原理有了更加深刻的印象:一个实验板上的8组七段数码管首先由一个总开关DP控制,DP为1时,数码管才能被使用;而每组数码管是否工作,则由一个8位的向量AN控制,因为是共阳极构造,当AN某位为0时,才表示该组数码管投入使用;每组数码管由7个二极管组成,亮暗状态由一个7位向量a_to_g决定,同样因为共阳极的构造,当a_to_g某位为0时对应的二极管亮。这个a_to_g向量同时控制所有组数码管的7段二极管。过程中我也加深了对BCD码的记忆。

四、 思考与讨论

(一) 问题与提升

在本次实验之外,我还对七段数码管的功能做了其他探究,在接触到时序电序后,可以通过控制各组七段数码管进行倒计时,计数等功能,七段数码管的构造从整体到局部,提供了很多变化的可能性。同时我还注意到生活中一些七段数码管的实际应用:洗澡时机器显示消耗的金额,电子手表显示的时间,测温枪显示的温度等,都是通过特定情境下对数码管的状态控制传递了信息。

(二) 实验感想

本次实验在实验前进行了理论分析,使书写代码的过程十分流畅,上板实验也十分顺利。我认识到了解基本概念,熟悉理论知识和实验硬件构造,这三者相结合是十分重要的。通过对BCD码的了解:这是一个从0~9的四位二进制数表示。通过对七段数码管构造的了解:共阳极和对应二极管亮灭。我能通过理论分析将这种状态的对应用数字表示出来,并最终在实验硬件上得到验证,这是一个很奇妙的过程。

数字逻辑——七段数码管相关推荐

  1. python七段数码管绘制单个数字_#Python语言程序设计Demo - 七段数码管绘制

    #七段数码管绘制 importturtle as timporttime as Tdef drawGap(): #绘制数码管的间隔 t.penup() t.fd(5)def drawLine(draw ...

  2. python七段数码管绘制单个数字_使用Python的turtle库实现七段数码管绘制

    七段数码管绘制: 七段数码管是由7段数码管拼接而成,每段有亮或不亮两种情况,改进的七段数码管还包括一个小数点位置. 七段数码管能形成2^7=128种状态,其中部分状态能够显示易于人们理解的数字或字母含 ...

  3. python:七段数码管绘制数字详解

    python:七段数码管绘制数字详解 七段数码管由七段数码管拼接而成,每段有亮或不亮两种情况.这里,先给出程序的全部代码,如下所示. 定义了drawDigit()函数,该函数根据输入的数字绘制七段数码 ...

  4. python七段数码管设计图案-Python绘制七段数码管实例代码

    七段数码管(seven-segmentindicator)由7段数码管拼接而成,每段有亮或不亮两种情况,改进型的七段数码管还包括一个小数点位置 绘制模式: input:输入当前日期的数字形式 proc ...

  5. Python——七段数码管绘制

    基本概念 七段数码管:七段数码管( seven-segment indicator)由 7 段数码管拼接而成,每段有亮或不亮两种情况,改进型的七段数码管还包括一个小数点位置. 源代码 版本一 # Dr ...

  6. 【Python】七段数码管绘制日期年月日

    七段数码管是一种展示数字的有效方式. 请用程序绘制当前系统时间对应的七段数码管,效果如下: ‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬ ...

  7. python七段数码管的详解,Python入门基础:七段数码管绘制

    1.在学习Python的过程中,运用所学的一些基础知识,进行一些简单的编程,可以收获很多乐趣.在生活中,LED灯无处不在,荧幕显示的广告词,给我们呈现出动态的视觉效果.下面,则以最简单的显示日期为例, ...

  8. python七段数码管绘制秒表_Python绘制七段数码管实例代码

    七段数码管(seven-segmentindicator)由7段数码管拼接而成,每段有亮或不亮两种情况,改进型的七段数码管还包括一个小数点位置 绘制模式: input:输入当前日期的数字形式 proc ...

  9. 【Python】七段数码管绘制问题

    问题分析: 绘制路径: 代码: import turtle #引入绘图库turtle def drawLine(draw): #绘制单段数码管turtle.pendown() if draw else ...

  10. python输出生日程序_Python中:利用七段数码管输出自己的生日及系统当前时间

    1.问题描述:利用七段数码管将自己的生日输出,带有年月日,并用不同的颜色表示. import turtle, time def drawLine(draw): #绘制单段数码管 drawGap() # ...

最新文章

  1. 《科学》:中国科学家揭示,人脑中间神经元多样性从何而来?
  2. css中底部sticky footer
  3. Zapcc:一个更快的C++编译器
  4. 【Python刷题】_5
  5. idea运行项目报错Cannot run program “C:\Program Files\Java\jdk1.8.0_121\bin\java.exe......解决办法
  6. 【原】winform高效导出Excel带格式设置
  7. Hemberg-lab单细胞转录组数据分析(一)
  8. 关于如何控制一个页面的Ajax读数据只读一次的简单解决办法!
  9. 双硬盘win10下安装ubuntu的方法
  10. java将页面转为pdf和pdf上添加盖章
  11. Bais(偏差)与Variance(方差)的区别
  12. 裸辞半年,我靠Python闷声赚了20万
  13. 基于BootStrap+Django+MySQL的云笔记平台系统
  14. css图片横向压缩,【css样式生成 图片合并压缩工具】Sprite,你值得拥有
  15. java-对密码进行加密和验证的类
  16. Unity利用双相机巧做水印功能
  17. 【aiy篇】小目标检测综述
  18. Codable实现json转Model,是时候干掉HandyJSON了!
  19. 距离李现生日还有3天 与荣耀30一起解锁生日专属礼包
  20. ps4和php,PS4《战神》通关心得分享与给新手的游玩建议

热门文章

  1. macOS Ventura 13.1 (22C65) 正式版发布,ISO、IPSW、PKG 下载
  2. 【洛谷题解】B2033 A*B 问题
  3. php 自己画地图,绘制自己的独家地图
  4. [转]多媒体范例: 如何使用CSS来格式化TLF文本
  5. Local package.json exists, but node_modules missing, did you mean to install?
  6. NDT Matching 算法学习
  7. 知识图谱(knowledge graph)——概述
  8. WPF - 善用路由事件
  9. 如何通过网页超链接控制电脑应用程序
  10. html 京东购物车样式,购物车css样式效果