EGO1—实现拨码开关控制数码管显示数值
使用软件: Vivado
开发板: EGO1采用Xilinx Artix-7系列XC7A35T-1CSG324C FPGA
实现功能
16个拨码开关,每两个控制一个数码管的数值变化
开发板配置
七段数码管
数码管为共阴极数码管,即公共极输入低电平。共阴极由三极管驱动,FPGA需要提供正向信号。同时段选端连接高电平,数码管上的对应位置才可以被点亮。因此,FPGA 输出有效的片选信号和段选信号都应该是高电平。
管脚约束
A0~DP0控制DN0_K1 — DN0_K4的数码管的段选
A1~DP1控制DN1_K1—DN1_K4的数码管的段选
代码
verilog代码
module v_smg_1(input clk,input rst,input[15:0] sw, //开关output[7:0] seg,//段选,高有效output[7:0] seg1,output[7:0] an //位选,低有效
);reg[18:0] divclk_cnt = 0;//分频计数器reg divclk = 0;//分频后的时钟reg[7:0] seg=0;//段码reg[7:0] seg1=0;reg[7:0] an=8'b00000001;//位码reg[3:0] disp_dat=0;//要显示的数据reg[2:0] disp_bit=0;//要显示的位parameter maxcnt = 50000;// 周期:50000*2/100Malways@(posedge clk)beginif(divclk_cnt==maxcnt)begindivclk=~divclk;divclk_cnt=0;endelsebegindivclk_cnt=divclk_cnt+1'b1;endendalways@(posedge divclk) beginif(disp_bit >= 7)disp_bit=0;elsedisp_bit=disp_bit+1'b1;case (disp_bit)3'b000 :begindisp_dat=sw[1:0];an=8'b00000001;//显示第一个数码管,高电平有效end3'b001 :begindisp_dat=sw[3:2];an=8'b00000010;//显示第二个数码管,低电平有效end3'b010 :begindisp_dat=sw[5:4];an=8'b00000100;//显示第三个数码管,低电平有效end3'b011 :begindisp_dat=sw[7:6];an=8'b00001000;//显示第四个数码管,低电平有效end3'b100 :begindisp_dat=sw[9:8];an=8'b00010000;//显示第五个数码管,低电平有效end3'b101 :begindisp_dat=sw[11:10];an=8'b00100000;//显示第六个数码管,低电平有效end3'b110 :begindisp_dat=sw[13:12];an=8'b01000000;//显示第七个数码管,低电平有效end3'b111 :begindisp_dat=sw[15:14];an=8'b10000000;//显示第八个数码管,低电平有效enddefault:begindisp_dat=0;an=8'b00000000;endendcaseendalways@(disp_dat)beginif(an > 8'b00001000) begincase (disp_dat)//显示0—F4'h0 : seg = 8'hfc;4'h1 : seg = 8'h60;4'h2 : seg = 8'hda;4'h3 : seg = 8'hf2;4'h4 : seg = 8'h66;4'h5 : seg = 8'hb6;4'h6 : seg = 8'hbe;4'h7 : seg = 8'he0;4'h8 : seg = 8'hfe;4'h9 : seg = 8'hf6;4'ha : seg = 8'hee;4'hb : seg = 8'h3e;4'hc : seg = 8'h9c;4'hd : seg = 8'h7a;4'he : seg = 8'h9e;4'hf : seg = 8'h8e;endcaseendelse begincase (disp_dat)//显示0-F4'h0 : seg1 = 8'hfc;4'h1 : seg1 = 8'h60;4'h2 : seg1 = 8'hda;4'h3 : seg1 = 8'hf2;4'h4 : seg1 = 8'h66;4'h5 : seg1 = 8'hb6;4'h6 : seg1 = 8'hbe;4'h7 : seg1 = 8'he0;4'h8 : seg1 = 8'hfe;4'h9 : seg1 = 8'hf6;4'ha : seg1 = 8'hee;4'hb : seg1 = 8'h3e;4'hc : seg1 = 8'h9c;4'hd : seg1 = 8'h7a;4'he : seg1 = 8'h9e;4'hf : seg1 = 8'h8e;endcaseendend
endmodule
约束文件
## clk
set_property PACKAGE_PIN P17 [get_ports clk]
set_property IOSTANDARD LVCMOS33 [get_ports clk]
## switch
set_property PACKAGE_PIN P5 [get_ports {sw[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {sw[1]}]
set_property PACKAGE_PIN P4 [get_ports {sw[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports {sw[0]}]
set_property PACKAGE_PIN P3 [get_ports {sw[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {sw[3]}]
set_property PACKAGE_PIN P2 [get_ports {sw[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {sw[2]}]
set_property PACKAGE_PIN R2 [get_ports {sw[5]}]
set_property IOSTANDARD LVCMOS33 [get_ports {sw[5]}]
set_property PACKAGE_PIN M4 [get_ports {sw[4]}]
set_property IOSTANDARD LVCMOS33 [get_ports {sw[4]}]
set_property PACKAGE_PIN N4 [get_ports {sw[7]}]
set_property IOSTANDARD LVCMOS33 [get_ports {sw[7]}]
set_property PACKAGE_PIN R1 [get_ports {sw[6]}]
set_property IOSTANDARD LVCMOS33 [get_ports {sw[6]}]
set_property PACKAGE_PIN U3 [get_ports {sw[9]}]
set_property IOSTANDARD LVCMOS33 [get_ports {sw[9]}]
set_property PACKAGE_PIN U2 [get_ports {sw[8]}]
set_property IOSTANDARD LVCMOS33 [get_ports {sw[8]}]
set_property PACKAGE_PIN V2 [get_ports {sw[11]}]
set_property IOSTANDARD LVCMOS33 [get_ports {sw[11]}]
set_property PACKAGE_PIN V5 [get_ports {sw[10]}]
set_property IOSTANDARD LVCMOS33 [get_ports {sw[10]}]
set_property PACKAGE_PIN V4 [get_ports {sw[13]}]
set_property IOSTANDARD LVCMOS33 [get_ports {sw[13]}]
set_property PACKAGE_PIN R3 [get_ports {sw[12]}]
set_property IOSTANDARD LVCMOS33 [get_ports {sw[12]}]
set_property PACKAGE_PIN T3 [get_ports {sw[15]}]
set_property IOSTANDARD LVCMOS33 [get_ports {sw[15]}]
set_property PACKAGE_PIN T5 [get_ports {sw[14]}]
set_property IOSTANDARD LVCMOS33 [get_ports {sw[14]}]##smg位码
set_property PACKAGE_PIN G2 [get_ports an[7]]
set_property IOSTANDARD LVCMOS33 [get_ports an[7]]
set_property PACKAGE_PIN C2 [get_ports an[6]]
set_property IOSTANDARD LVCMOS33 [get_ports an[6]]
set_property PACKAGE_PIN C1 [get_ports an[5]]
set_property IOSTANDARD LVCMOS33 [get_ports an[5]]
set_property PACKAGE_PIN H1 [get_ports an[4]]
set_property IOSTANDARD LVCMOS33 [get_ports an[4]]
set_property PACKAGE_PIN G1 [get_ports an[3]]
set_property IOSTANDARD LVCMOS33 [get_ports an[3]]
set_property PACKAGE_PIN F1 [get_ports an[2]]
set_property IOSTANDARD LVCMOS33 [get_ports an[2]]
set_property PACKAGE_PIN E1 [get_ports an[1]]
set_property IOSTANDARD LVCMOS33 [get_ports an[1]]
set_property PACKAGE_PIN G6 [get_ports an[0]]
set_property IOSTANDARD LVCMOS33 [get_ports an[0]]## 段码
set_property PACKAGE_PIN B4 [get_ports {seg[7]}]
set_property IOSTANDARD LVCMOS33 [get_ports {seg[7]}]
set_property PACKAGE_PIN A4 [get_ports {seg[6]}]
set_property IOSTANDARD LVCMOS33 [get_ports {seg[6]}]
set_property PACKAGE_PIN A3 [get_ports {seg[5]}]
set_property IOSTANDARD LVCMOS33 [get_ports {seg[5]}]
set_property PACKAGE_PIN B1 [get_ports {seg[4]}]
set_property IOSTANDARD LVCMOS33 [get_ports {seg[4]}]
set_property PACKAGE_PIN A1 [get_ports {seg[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {seg[3]}]
set_property PACKAGE_PIN B3 [get_ports {seg[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {seg[2]}]
set_property PACKAGE_PIN B2 [get_ports {seg[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {seg[1]}]
set_property PACKAGE_PIN D5 [get_ports {seg[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports {seg[0]}]# 段码2
set_property PACKAGE_PIN D4 [get_ports {seg1[7]}]
set_property IOSTANDARD LVCMOS33 [get_ports {seg1[7]}]
set_property PACKAGE_PIN E3 [get_ports {seg1[6]}]
set_property IOSTANDARD LVCMOS33 [get_ports {seg1[6]}]
set_property PACKAGE_PIN D3 [get_ports {seg1[5]}]
set_property IOSTANDARD LVCMOS33 [get_ports {seg1[5]}]
set_property PACKAGE_PIN F4 [get_ports {seg1[4]}]
set_property IOSTANDARD LVCMOS33 [get_ports {seg1[4]}]
set_property PACKAGE_PIN F3 [get_ports {seg1[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {seg1[3]}]
set_property PACKAGE_PIN E2 [get_ports {seg1[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {seg1[2]}]
set_property PACKAGE_PIN D2 [get_ports {seg1[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {seg1[1]}]
set_property PACKAGE_PIN H2 [get_ports {seg1[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports {seg1[0]}]
结果
EGO1—实现拨码开关控制数码管显示数值相关推荐
- Verilog实现拨码开关控制数码管显示——FPGA
通过一个简单的3-8译码器的设计,掌握组合逻辑电路的设计方法. 掌握拨码开关和数码管的使用. 掌握组合逻辑电路的静态测试方法. 原理及内容: 原理: 根据38译码原理将5bit的编码后四位解码为0~f ...
- 4*4矩阵按键控制数码管显示0-F
4*4矩阵按键原理图如下: 根据原理图,汇编程序代码如下: 4*4矩阵按键控制数码管显示0-F.刚学单片机汇编,是根据单片机C语言思路来写的,写的不好,如果发现有错误或会导致程序跑飞的,麻烦帮我指出, ...
- 应广单片机PFS123按键中断控制数码管显示例程
目录 应广单片机PFS123按键中断控制数码管显示视频 led数码管图片 应广单片机PFS123按键中断控制数码管显示代码 应广科技网址,开发工具,PMS123规格书:http://www.padau ...
- 驱动 - 数码管显示数值
SPI总线 SPI 是串行外设接口(Serial Peripheral Interface)的缩写. 是 Motorola 公司推出的一种同步串行接口技术,是一种 高速的,全双工,同步的通信总线. S ...
- 51单片机按键控制数码管显示0-9
实验题目:使用51单片机设计两个按键控制数码管显示0-9,当K1按下减1,当K2按下加1. 理解程序可参考我的另外两个文章; 51单片机数码管显示0-9_学习笔记吧的博客-CSDN博客 51单片机独立 ...
- c语言控制数码管显示时间,单片机 控制 数码管显示
常见LED数码管 LED数码管(LED Segment Displays)简介 数码管也称LED数码管,是由多个发光二极管封装在一起的"8"字型的器件. 按发光二极管单元连接方式可 ...
- 单个按键控制数码管显示数字(2)
一.主要功能 单个按键控制数码管显示数字 二.代码实现 代码如下: #include <reg52.h> sbit ADDR0=P1^0; sbit ADDR1=P1^1; sbit AD ...
- 零基础无实物一步一步学PLCS7-1200仿真(八)-按键控制数码管显示
项目要求:按照项目的功能完成按键控制数码管的技术显示. 项目目的:学习比较指令.数学函数指令和加减计数指令和数码管的显示原理. 项目功能:数码管可以显示两位数00-99,然后可通过四个按键完成数码管的 ...
- 串口控制74HC164C语言,51单片机74HC164串口控制数码管显示
一般数码管需要接7个脚才能显示,如果用单片机本身的I/O口,虽然可以但是浪费宝贵的i/O口资源.本例用移位寄存器74HC164作为数码管驱动进行控制. 74HC164特性 是一种8位串转并口的控制 ...
最新文章
- 麒麟芯片AI首席科学家,解读AI芯片如何让手机更智能
- CreateThread创建线程函数详细讲解
- mac搭建appium环境之设置chromdriver
- ESP8266和MQTT
- 1058 A+B in Hogwarts (20 分)_7行代码AC
- win10创建c语言文件,c – 如何在Windows中创建扩展(自定义)文件属性?
- 编程之美——数字哑谜
- React Hooks 梳理
- 如何使用Tuxera NTFS for Mac将FAT 32U盘转换为NTFS格式
- axure图表组件。echarts。 axure !important 二维码logo嵌入axure汉化美化定制。图表背景透明
- 第一章 绪论 1.2 时域采样定理及其应用
- (53条消息)MySQL在Windows上的安装流程
- 软考中级软件设计师基础整理(1.计算机组成与体系结构)
- php数据迁移脚本,Laravel中数据迁移与数据填充的详细步骤
- ubuntu 回到根目录,回到上一级 常用指令
- 串口转无线网模块:WizFi630 快速入门指导
- Integer 用 == 比较时 127 相等 128 不相等
- 你可能不了解的《唐诗三百首》
- curl命令 – 文件传输工具
- 【git】使用git链接远程gitee仓库并提交