拨码开关控制数码管的数字显示_VHDL编程

电路结构简图

在这里插入图片描述

需求

  1. 以拨码开关sw1到sw10,控制实验箱的数码管显示数字0到9
  2. 不可使用元件例化,建议使用多进程的方法实现需求

器件引脚说明

  1. 本工程使用 EL-SOPC3000 实验箱,使用的芯片是EP3C25F324C8

  2. 拨码开关
    在这里插入图片描述在这里插入图片描述

  3. 数码管的地址
    底板上共有16位数码管,16个数码管的段选由8位数据线D0-D7提供,D0-D7分别对应数码管位选的a-Dp;16位地址线中的高四位A12-A15通过一个LS138译出两个大片选,分别选中数码管和16X16点阵,其中数码管对应A15-A12为1011,点阵对应A15-A12为1010 。
    在这里插入图片描述在这里插入图片描述

  4. 数码管的位选
    由数码管的大片选通过两片LS138译出16个小片选以作为16位数码管的位选。两片LS138的地址为A3-A0。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

器件编程前的注意事项

器件默认引脚属性会导致分配引脚不成功,请按以下步骤操作,设置引脚类型
在这里插入图片描述在这里插入图片描述

代码与电路

--         +------------+                  +-----------+
--   A0 ***|            |                  |           |*** SEG7 *** a
--         |            |                  |           |
--   A1 ***|            |                  |           |*** SEG6 *** b
--         |            |                  |           |
--   A2 ***|            |*** transfer0 *** |           |*** SEG5 *** c
--         |            |                  |           |
--   A3 ***|            |*** transfer1 *** |           |*** SEG4 *** d
--         |            |                  |           |
--   A4 ***|            |*** transfer2 *** |           |*** SEG3 *** e
--         |            |                  |           |
--   A5 ***|            |*** transfer3 *** |           |*** SEG2 *** f
--         |            |                  |           |
--   A6 ***|            |                  |           |*** SEG1 *** g
--         |            |                  |           |
--   A7 ***|            |                  |           |*** SEG0 *** dp
--         |            |                  |           |
--   A8 ***|            |                  |           |
--         |            |                  |           |
--   A9 ***|            |                  |           |
--         +------------+                  +-----------+

结构体设计

  1. 编码器进程
	encoder : Process (A)
		Begin
		Case A Is
			When "0000000001" => transfer <= "0000";										--输出 0
			When "0000000010" => transfer <= "0001";										--输出 1
			When "0000000100" => transfer <= "0010";										--输出 2
			When "0000001000" => transfer <= "0011";										--输出 3
			When "0000010000" => transfer <= "0100";										--输出 4
			When "0000100000" => transfer <= "0101";										--输出 5
			When "0001000000" => transfer <= "0110";										--输出 6
			When "0010000000" => transfer <= "0111";										--输出 7
			When "0100000000" => transfer <= "1000";										--输出 8
			When "1000000000" => transfer <= "1001";										--输出 9
			When Others			=>	transfer <= "1010";										--用于数码管不显示数字
		End Case;
	End Process encoder;
  1. 译码器进程
	decoder : Process (transfer)
		Begin
		Case transfer Is
			When "0000" => SEG <= "11111100";						-- 0
			When "0001" => SEG <= "01100000";						-- 1
			When "0010" => SEG <= "11011010";						-- 2
			When "0011" => SEG <= "11110010";						-- 3
			When "0100" => SEG <= "01100110";						-- 4
			When "0101" => SEG <= "10110110";						-- 5
			When "0110" => SEG <= "10111110";						-- 6
			When "0111" => SEG <= "11100000";						-- 7
			When "1000" => SEG <= "11111110";						-- 8
			When "1001" => SEG <= "11110110";						-- 9
			When Others => SEG <= "00000000"; 						-- 共阴数码管不显示
		End Case;
	End Process	decoder;
  1. 数码管进程
	ShuMaGuan : Process (transfer)
		Begin
		s   <= "1011";					--选择数码管
		SEL <= "0000";					--选择数码管的com0位
	End Process ShuMaGuan;

全工程下载

拨码开关控制数码管显示_VHDL编程

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值