为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

实验六8位数码管扫描显示

2017-11-15 8页 doc 64KB 23阅读

用户头像

is_633423

暂无简介

举报
实验六8位数码管扫描显示实验六8位数码管扫描显示 实验六 8位数码管扫描显示 一、实验目的:1、了解7段数码管的工作原理; 2、学会用于VHDL语言进行程序设计。 二、实验原理:在本实验中,按一下key0,完成复位功能, clk5选择1Hz,clk3选择的频率越高越好。LED的显示模块原理:LED有段码和位码之分,所谓段码就是让LED显示出8.的八位数据,一般情况下要通过一个译码电路,将输入的4位2进制数转换为与LED显示对应的8位段码。位码也就是LED的显示使能端,对于共阴级的LED而言,低电平使能(在本实验箱中所有的LED均位共阴级的),在本...
实验六8位数码管扫描显示
实验六8位数码管扫描显示 实验六 8位数码管扫描显示 一、实验目的:1、了解7段数码管的工作原理; 2、学会用于VHDL语言进行程序设计。 二、实验原理:在本实验中,按一下key0,完成复位功能, clk5选择1Hz,clk3选择的频率越高越好。LED的显示模块原理:LED有段码和位码之分,所谓段码就是让LED显示出8.的八位数据,一般情况下要通过一个译码电路,将输入的4位2进制数转换为与LED显示对应的8位段码。位码也就是LED的显示使能端,对于共阴级的LED而言,低电平使能(在本实验箱中所有的LED均位共阴级的),在本实验中设计了一个3位的循环计数器,将计数结果输入到3,8译码器74ls138,译码结果输出即可依次使能每个LED。例如:要让8个LED同时工作,显示数据,就是要不停的循环扫描每一个LED,并在使能每一个LED的同时,输入所需显示的数据对应的8位段码。虽然8个LED是依次显示,但是受视觉分辨率的影响,看到的现象是8个LED同时工作。 三、实验连线: 1、将EP2C5适配板左下角的JTAG用十芯排线和万用下载区左下角的SOPC JTAG 口连接起来,万用下载区右下角的电源开关拨到 SOPC下载的一边 2、实验板右下方频率源 CLK1接任意频率作为扫描频率。 3、将实验板左端的JP103全部用短路帽接上(共八个)。 四、实验与步骤:(程序:EP2C5\scan_seg8\scan_seg8.sof) 1、打开Quartus II 6.0软件,点击“File?OpenProject”出现如下的对话框(图6.1),选中scan_seg8,点打开即可; 图6.1 2、点击“Tools-Programmer”后出现如下图下载对话窗口, 3、点”Edit?Add File„„„”出现如下对话框(图6.2),在图6.3对话框中,选中EP2C5/scan_seg8/scan_seg8.sof项目后点击打开,回到Programmer对话框, 在下载对话窗口中“选中Program/ Configure”,点击Start”即进行下载。 图6.2 图6.3 现将scan_seg8.vhd原程序作如下说明: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; USE IEEE.STD_LOGIC_SIGNED.ALL; ENTITY SCAN_SEG8 IS PORT(CLK3,CLK5 :IN STD_LOGIC; RST :IN STD_LOGIC; SEG_DA:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); SEG_SEL:OUT STD_LOGIC_VECTOR(2 DOWNTO 0) ); END SCAN_SEG8; ARCHITECTURE ADO OF SCAN_SEG8 IS SIGNAL SEG_BUF1,SEG_BUF2,SEG_BUF3,SEG_BUF4,SEG_BUF0:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL SEG_BUF5,SEG_BUF6,SEG_BUF7,SEG_BUF8 :STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL SEG_CNT :STD_LOGIC_VECTOR(2 DOWNTO 0); SIGNAL SEG_TEMP:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL CLK:STD_LOGIC; BEGIN PROCESS (CLK5) BEGIN IF CLK5'EVENT AND CLK5='1' THEN CLK<=NOT CLK; END IF; END PROCESS; PROCESS(CLK5,RST) BEGIN IF CLK5'EVENT AND CLK5='1' THEN IF CLK='1' THEN SEG_BUF1<= "0001"; SEG_BUF2<= "0010"; SEG_BUF3<= "0011"; SEG_BUF4<= "0100"; SEG_BUF5<= "0101"; SEG_BUF6<= "0110"; SEG_BUF7<= "0111"; SEG_BUF8<= "1000"; ELSE SEG_BUF0<=SEG_BUF8;SEG_BUF8<=SEG_BUF7;SEG_BUF7<=SEG_BUF6;SEG_BUF6<=SEG_BUF5 ; SEG_BUF5<=SEG_BUF4;SEG_BUF4<=SEG_BUF3;SEG_BUF3<=SEG_BUF2;SEG_BUF2<=SEG_BUF1 ;SEG_BUF1<=SEG_BUF0; END IF; END IF; END PROCESS; PROCESS (CLK3,RST) BEGIN IF CLK3'EVENT AND CLK3='1' THEN IF RST='1' THEN SEG_CNT<="000"; ELSE SEG_CNT<=SEG_CNT+1; END IF; END IF; END PROCESS; SEG_SEL<=SEG_CNT; PROCESS (SEG_CNT, SEG_BUF1,SEG_BUF2,SEG_BUF3,SEG_BUF4,SEG_BUF5,SEG_BUF6,SEG_BUF7,SEG_BUF8) BEGIN CASE SEG_CNT IS WHEN O"0" => SEG_TEMP<=SEG_BUF1; WHEN O"1" => SEG_TEMP<=SEG_BUF2; WHEN O"2" => SEG_TEMP<=SEG_BUF3; WHEN O"3" => SEG_TEMP<=SEG_BUF4; WHEN O"4" => SEG_TEMP<=SEG_BUF5; WHEN O"5" => SEG_TEMP<=SEG_BUF6; WHEN O"6" => SEG_TEMP<=SEG_BUF7; WHEN O"7" => SEG_TEMP<=SEG_BUF8; WHEN OTHERS=> SEG_TEMP<="XXXX"; END CASE; END PROCESS; PROCESS(SEG_TEMP) BEGIN CASE SEG_TEMP IS WHEN "0000" => SEG_DA<="00111111"; WHEN "0001" => SEG_DA<="00000110"; WHEN "0010" => SEG_DA<="01011011"; WHEN "0011" => SEG_DA<="01001111"; WHEN "0100" => SEG_DA<="01100110"; WHEN "0101" => SEG_DA<="01101101"; WHEN "0110" => SEG_DA<="01111101"; WHEN "0111" => SEG_DA<="00000111"; WHEN "1000" => SEG_DA<="01111111"; WHEN "1001" => SEG_DA<="01101111"; WHEN "1010" => SEG_DA<="01110111"; WHEN "1011" => SEG_DA<="01111100"; WHEN "1100" => SEG_DA<="00111001"; WHEN "1101" => SEG_DA<="01011110"; WHEN "1110" => SEG_DA<="01111001"; WHEN "1111" => SEG_DA<="01110001"; WHEN OTHERS => NULL; END CASE; END PROCESS; END ADO; 引脚分配(Cyclone EP2C5Q208C8): seg_d0-P3、seg_d1-P5、seg_d2-P6、seg_d3-P8、seg_d4-P10、seg_d5-P11、seg_d6-P12,sel0-P141、sel1-P142、sel2-P143,clk-P130, rst-43. 管脚标号seg_d 0到seg_d 6分别接到LED的8位段码中的7位上(由于实验中不需要在LED上显示“.”,因此8位段码中显示“.”的数据没有接入,其默认为低电平,有兴趣的同学可以自己修改一下程序,其管脚分配如附录三所示);sel0到sel2接到实验箱中74ls138的输入端;clk为LED显示时钟输入,接到频率源clk1。100脚接key0用来复位。管脚标号对应的I/O如下图所示: User Assignments Node Name set_location_assignment PIN_3 -to seg_da[0] set_location_assignment PIN_5 -to seg_da[1] set_location_assignment PIN_6 -to seg_da[2] set_location_assignment PIN_8 -to seg_da[3] set_location_assignment PIN_10 -to seg_da[4] set_location_assignment PIN_11 -to seg_da[5] set_location_assignment PIN_12 -to seg_da[6] set_location_assignment PIN_141 -to seg_sel[0] set_location_assignment PIN_142 -to seg_sel[1] set_location_assignment PIN_143 -to seg_sel[2] set_location_assignment PIN_145 -to clk5 set_location_assignment PIN_43 -to rst set_location_assignment PIN_130 -to clk3 五、实验现象:会发现,在8个数码管显示"8,7,6,5,4,3,2,1"的数据隔一秒中,数据向左移动,显示"7,6,5,4,3,2,1,8"
/
本文档为【实验六8位数码管扫描显示】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索