EDA课程设计八位数码管扫描显示电路的设计资料
8位数码扫描显示电路设计实验

实验一基本组合电路设计(1)实验目的:熟悉 Quartus U的文本输入设计法和原理图输入设计法,学习简单组合电路以及多层次电路的设计、仿真和硬件测试。
(2)实验内容:I.利用Quartus U完成2选1多路选择器的文本编辑输入。
【参考程序】:ENTITY mux21a ISPORT ( a, b, s: IN BIT;y : OUT BIT );END ENTITY mux21a;ARCHITECTURE one OF mux21a ISBEGINPROCESS (a,b,s)BEGINIF s = ' O' THEN y <= a ;ELSE y<= b ;END IF;END PROCESS;END ARCHITECTURE one ;n .将实验I中的2选1多路选择器生成一个元件 mux21a利用原理图输入设计方法实现图1-1的双2选1多路选择器,并将此文件放在同一目录中。
最后进行编译、仿真,并对其仿真波形作出分析说明。
川.对U进行引脚锁定及硬件下载测试。
建议选择实验电路模式5,用键1(PIOO, 引脚号为1)控制sO;用键2(PIO1,引脚号为2)控制s1; a3、a2和a1分别接clock5(引脚号为16)、clockO (引脚号为93)和clock2 (引脚号为17);输出信号outy接扬声器spker (引脚号为129)。
通过短路帽选择clock5接1024Hz 信号,clock0接256Hz信号,clock2接8Hz信号。
最后进行编译、下载和硬件测试实验(通过选择键1、键2、控制s0、s1,可使扬声器输出不同音调)。
(3)实验报告:1.实验U的原理图。
2•实验U的仿真波形报告分析说明。
3.实验川硬件测试的详细实验说明。
图1-1 双2选1多路选择器实验_二基本时序电路设计(1)实验目的:熟悉Quartus U的VHDL文本设计过程,学习简单时序电路的设计、仿真和硬件测试。
EDA 数码管动态扫描电路

数码管动态扫描电路设计试设计一个数码管动态显示的扫面控制电路。
它能将8路位二进制数显示在实验箱上的8个数码管上。
要求:当输入为‘0000’----‘1001’时显示为0—9,‘1010’---‘1111’时显示ABCDEF字母。
先将该控制电路分为几个模块,然后用VHDL的结构化描述方式实现该电路。
3—8译码器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY LIN_EDA ISPORT(ABC:IN STD_LOGIC_VECTOR(2 DOWNTO 0);BT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0) );END;ARCHITECTURE ONE OF LIN_EDA ISBEGINPROCESS(ABC)BEGINCASE ABC ISWHEN "000"=>BT<="00000001";WHEN "001"=>BT<="00000010";WHEN "010"=>BT<="00000100";WHEN "011"=>BT<="00001000";WHEN "100"=>BT<="00010000";WHEN "101"=>BT<="00100000";WHEN "110"=>BT<="01000000";WHEN "111"=>BT<="10000000";WHEN OTHERS=>NULL;END CASE;END PROCESS;END;3位二进制计数器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY OK_B ISPORT(CLK1:IN STD_LOGIC;Q:BUFFER STD_LOGIC_VECTOR(2 DOWNTO 0));END;ARCHITECTURE BBC OF OK_B ISSIGNAL Q1:STD_LOGIC_VECTOR(2 DOWNTO 0);BEGINPROCESS(CLK)BEGINIF CLK1'EVENT AND CLK1='1' THENQ1<=Q1+1;END IF;END PROCESS;Q<=Q1;END;7段译码器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY DECL7S ISPORT(A:IN STD_LOGIC_VECTOR(3 DOWNTO 0);LED7S:OUT STD_LOGIC_VECTOR(6 DOWNTO 0) ); END;ARCHITECTURE ONE OF DECL7S ISBEGINPROCESS(A)BEGINCASE A ISWHEN "0000"=>DECL7S<="0111111";WHEN "0001"=>DECL7S<="0000110";WHEN "0010"=>DECL7S<="1011011";WHEN "0011"=>DECL7S<="1001111";WHEN "0100"=>DECL7S<="1100110";WHEN "0101"=>DECL7S<="1101101";WHEN "0110"=>DECL7S<="1111101";WHEN "0111"=>DECL7S<="0000111";WHEN "1000"=>DECL7S<="1111111";WHEN "1001"=>DECL7S<="1101111";WHEN "1010"=>DECL7S<="1110111";WHEN "1011"=>DECL7S<="1111100";WHEN "1100"=>DECL7S<="0111001";WHEN "1101"=>DECL7S<="1011110";WHEN "1110"=>DECL7S<="1111001";WHEN "1111"=>DECL7S<="1110001";WHEN OTHERS=>NULL;END CASE;END PROCESS;END;顶层文件LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY sccbc_led ISPORT(B:IN STD_LOGIC_VECTOR(3 DOWNTO 0);LED7S1:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);BT1:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END;ARCHITECTURE CNT_ABC OF sccbc_led IS COMPONENT LIN_EDAPORT(ABC:IN STD_LOGIC_VECTOR(2 DOWNTO 0);BT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ); END COMPONENT;COMPONENT OK_BPORT(CLK1:IN STD_LOGIC;Q:BUFFER STD_LOGIC_VECTOR(2 DOWNTO 0)); END COMPONENT;COMPONENT DECL7SPORT(A:IN STD_LOGIC_VECTOR(3 DOWNTO 0);LED7S:OUT STD_LOGIC_VECTOR(6 DOWNTO 0) ); END COMPONENT;COMPONENT ABC_HPORT(B1:IN STD_LOGIC_VECTOR(3 DOWNTO 0);Q:OUT INTEGER RANGE 0 TO 15 );END COMPONENT;SIGNAL B:STD_LOGIC;SIGNAL A2:INTEGER;BEGINU1:ABC_H PORT MAP(B1=>B,A1=>A2);U2:DECL7S PORT MAP(A=>A2,LED7S=>LED7S1);U3:OK_B PORT MAP(CLK1=>CLK,Q=>B);U4:LIN_EDA PORT MAP(ABC=>B,BT=>BT1);END ARCHITECTURE CNT_ABC ;数据选择器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ABC_H ISPORT(B1:IN STD_LOGIC_VECTOR(3 DOWNTO 0);Q:OUT INTEGER RANGE 0 TO 15 );END;ARCHITECTURE ABC_C OF ABC_H ISBEGINPROCESS(B1)BEGINCASE B1 ISWHEN "0000"=>A1<=0; WHEN "0001"=>A1<=1; WHEN "0010"=>A1<=2; WHEN "0011"=>A1<=3; WHEN "0100"=>A1<=4; WHEN "0101"=>A1<=5; WHEN "0110"=>A1<=6; WHEN "0111"=>A1<=7; WHEN "1000"=>A1<=8; WHEN "1001"=>A1<=9; WHEN "1010"=>A1<=10; WHEN "1011"=>A1<=11; WHEN "1100"=>A1<=12; WHEN "1101"=>A1<=13; WHEN "1110"=>A1<=14; WHEN "1111"=>A1<=15; WHEN OTHERS=>NULL; END CASE;END PROCESS;END;。
实验五 八位数码扫描显示电路设计

实验五八位数码扫描显示电路设计[实验目的]1、熟悉7段数码显示译码器设计;2、学习硬件扫描显示电路的设计。
*[实验仪器]PC机、EDA实验箱一台Quartus II 6.0软件[实验内容](1) 实验内容1:说明例7-1中各语句的含义,以及该例的整体功能。
对该例进行编辑、编译、综合、适配、仿真,给出仿真波形。
实验方式:若考虑小数点,SG的8个段分别与PIO49、PIO48、…、PIO42(高位在左)、BT的8个位分别与PIO34、PIO35、…、PIO41(高位在左);电路模式不限。
将GW48EDA 系统左下方的拨码开关全部向上拨,时钟CLK可选择clock0,通过跳线选择16384Hz信号。
引脚锁定后进行编译、下载和硬件测试实验。
(2) 实验内容2:修改例7-1的进程P1中的显示数据直接给出的方式,增加8个4位锁存器,作为显示数据缓冲器,使得所有8个显示数据都必须来自缓冲器。
缓冲器中的数据可以通过不同方式锁入,如来自A/D采样的数据、来自分时锁入的数据、来自串行方式输入的数据,或来自单片机等。
[实验原理]图3-4所示的是8位数码扫描显示电路,其中每个数码管的8个段:h、g、f、e、d、c、b、a(h是小数点)都分别连在一起,8个数码管分别由8个选通信号k1、k2、…k8来选择。
被选通的数码管显示数据,其余关闭。
如在某一时刻,k3为高电平,其余选通信号为低电平,这时仅k3对应的数码管显示来自段信号端的数据,而其它7个数码管呈现关闭状态。
根据这种电路状况,如果希望在8个数码管显示希望的数据,就必须使得8个选通信号k1、k2、…k8分别被单独选通,并在此同时,在段信号输入口加上希望在该对应数码管上显示的数据,于是随着选通信号的扫变,就能实现扫描显示的目的。
[参考设计文本描述] 图3-4 8位数码扫描显示电路LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY SCAN_LED ISPORT ( CLK : IN STD_LOGIC;SG : OUT STD_LOGIC_VECTOR(6 DOWNTO 0);--段控制信号输出BT : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) );--位控制信号输出END;ARCHITECTURE one OF SCAN_LED ISSIGNAL CNT8 : STD_LOGIC_VECTOR(2 DOWNTO 0);SIGNAL A : INTEGER RANGE 0 TO 15;BEGINP1:PROCESS( CNT8 )BEGINCASE CNT8 ISWHEN "000" => BT <= "00000001" ; A <= 1 ;WHEN "001" => BT <= "00000010" ; A <= 3 ;WHEN "010" => BT <= "00000100" ; A <= 5 ;WHEN "011" => BT <= "00001000" ; A <= 7 ;WHEN "100" => BT <= "00010000" ; A <= 9 ;WHEN "101" => BT <= "00100000" ; A <= 11 ;WHEN "110" => BT <= "01000000" ; A <= 13 ;WHEN "111" => BT <= "10000000" ; A <= 15 ;WHEN OTHERS => NULL ;END CASE ;END PROCESS P1;P2:PROCESS(CLK)BEGINIF CLK'EVENT AND CLK = '1' THEN CNT8 <= CNT8 + 1;END IF;END PROCESS P2 ;P3:PROCESS( A ) –-译码电路BEGINCASE A ISWHEN 0 => SG <= "0111111"; WHEN 1 => SG <= "0000110";WHEN 2 => SG <= "1011011"; WHEN 3 => SG <= "1001111";WHEN 4 => SG <= "1100110"; WHEN 5 => SG <= "1101101";WHEN 6 => SG <= "1111101"; WHEN 7 => SG <= "0000111";WHEN 8 => SG <= "1111111"; WHEN 9 => SG <= "1101111";WHEN 10=> SG <= "1110111"; WHEN 11 => SG <= "1111100";WHEN 12=> SG <= "0111001"; WHEN 13 => SG <= "1011110";WHEN 14=> SG <= "1111001"; WHEN 15 => SG <= "1110001";WHEN OTHERS =>NULL ;END CASE ;END PROCESS P3;END;[实验报告要求]1、写出实验源程序,画出仿真波形;2、分析实验结果,以及它们的硬件测试实验结果写进实验报告。
8位8段LED数码管动态扫描显示

8位8段LED数码管动态扫描显示
项目名称:8位8段LED数码管动态扫描显示班级:09电二姓名:解健学号:09020313
一.实验目的
1.掌握数码管动态扫描显示原理及实现方法。
2.掌握动态扫描显示电路驱动程序的编写方法。
二.实验电路
第一步:先在Proteu软件中设计仿真电路原理图。
第四步:最后观察设计的电路图是否能得到预想的效果,若不能,进行检查,找到毛病且纠正。
流程图
开始灭显示器I=0延时Counter=0Counter=0选择段选择段点亮所有位按数值点亮位延时延时
Counter++YCounter<8NI++YNNCounter++YCounter<8N停止Y结束I<30
实验现象:
显示器点亮所有段,持续约1,然后灭显示器,持续2,最后显示“hello-93”,保持。
附:程序
#include#include#defineTRUE1#definedataPortP0#defineledConPortP 2
{unignedchari,counter=0;
for(i=0;i<30;i++){
voiddelay_5u(void){_nop_();_nop_();}
voiddelay_50u(void){unignedchari;for(i=0;i<4;i++){delay_5u() ;}}
voiddelay_100u(void){delay_50u();delay_50u();}
for(j=0;j<10;j++)delay_100u();ucM--;}}。
八位数码扫描显示电路设计

library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity shuma isport(clk:in std_logic;--时钟seg:out std_logic_vector(7 downto 0);--段显示控制(abcdefg)scan:out std_logic_vector(7 downto 0));--数码管地址选择控制end entity shuma;architecture one of shuma issignal cnt8:integer range 0 to 7;signal data:integer range 0 to 15;begin ----------扫描数码管地址计数器process(clk)beginif clk'event and clk='1' thencnt8<=cnt8+1;end if;end process; -----------数码管地址扫描process(cnt8)begincase cnt8 iswhen 0=>scan<="00000001";data<=1;when 1=>scan<="00000010";data<=2;when 2=>scan<="00000100";data<=4; when 3=>scan<="00001000";data<=5; when 4=>scan<="00010000";data<=7; when 5=>scan<="00100000";data<=9; when 6=>scan<="01000000";data<=13; when 7=>scan<="10000000";data<=15; when others=>null;end case;end process; -----------7段译码process(data)begincase data is ---abcdefgwhen 0=>seg<="11111100";when 1=>seg<="01100000";when 2=>seg<="11011010";when 3=>seg<="11110010";when 4=>seg<="01100110";when 5=>seg<="10110110";when 6=>seg<="10111110";when 7=>seg<="11100000";when 8=>seg<="11111110";when 9=>seg<="11110110";when 10=>seg<="11101110";when 11=>seg<="00111110";when 12=>seg<="10011100";when 13=>seg<="01111010";when 14=>seg<="10011110";when 15=>seg<="10001110";when others=>null;end case;end process;end architecture one;。
8位数码扫描显示电路设计

EDA与VHD1语言课程实验报告实验名称:班级:学号:姓名:实验日期:8位数码扫描显示电路设计2012.10.27实验五8位数码扫描显示电路设计一、实验目的:学习硬件扫描显示电路的设计。
二、实验原理:图1所示是8位数码扫描显示电路。
图1中g~a为数码管段信号输入端,每个数码管的七个段(g、f、e、d、c、b、a)都分别连在一起;k1~k8 为数码管的位选信号输入端。
8个数码管分别由8个位选信号k1、k2、…k8来选通,被选通的数码管才显示数据,未选通的数码管关闭。
如在某一时刻,k3为高电平,其余选通信号均为低电平,这时仅k3对应的数码管显示来自段信号端的数据,而其它7个数码管呈现关闭状态。
因此,如果希望在8个数码管上显示希望的数据,就必须使得8个选通信号k1、k2、…k8分别被单独选通,同时,在段信号输入口加上希望在该对应数码管上显示的数据,于是随着选通信号的扫变,就能实现扫描显示的目的。
AAAAAAAAK1 K2 K3 K4 K5 K6 K7 K3图1 8位数码扫描显示电路三、实验内容1:用VHDL语言设计8位数码扫描显示电路,显示输出数据直接在程序中给出。
1、程序设计LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY scan play ISPORT( CLK:IN STD_LOGIC;SI:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);BI:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));END ;ARCHITECTURE bhv OF scan play ISSIGNAL S: STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL B: STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(CLK) --产生动态扫描显示的控制信号VARIABLE SIO: STD_LOGIC_VECTOR(3 DOWNTO 0); VARIABLE BIO:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGINIF CLK'EVENT AND CLK='1' THENIF BIO < 8 THEN BIO:=BIO+1; ELSE BIO:=(others=>'0');END IF;IF SIO < 8 THEN SIO:=SIO+1; ELSE SIO:=(others=>'0');END IF;END IF;S<=SIO;B<=BIO;END PROCESS;PROCESS(S)BEGINCASE S ISWHEN "0000"=> SI<="00000001";WHEN "0001"=> SI<="00000010";WHEN "0010"=> SI<="00000100";WHEN "0011"=> SI<="00001000";WHEN "0100"=> SI<="00010000";WHEN "0101"=> SI<="00100000";WHEN "0110"=> SI<="01000000";WHEN "0111"=> SI<="10000000";WHEN OTHERS=> SI<="00000000"; END CASE;END PROCESS;PROCESS(B)BEGINCASE B ISWHEN "0000"=> BI<="0111111";WHEN "0001"=> BI<="0000110";WHEN "0010"=> BI<="1011011";WHEN "0011"=> BI<="1001111";WHEN "0100"=> BI<="1100110";WHEN "0101"=> BI<="1101101";WHEN "0110"=> BI<="1111101";WHEN "0111"=> BI<="0100111";WHEN "1000"=> BI<="1111111";WHEN "1001"=> BI<="1101111";WHEN "1010"=> BI<="1110111";WHEN "1011"=> BI<="1111100";WHEN "1100"=> BI<="0111001";WHEN "1101"=> BI<="1011110";WHEN "1110"=> BI<="1111001";WHEN OTHERS=> BI<="1110001"; END CASE; END PROCESS; END bhv;注意:编程下载之前,将扬声器下方的 JDSP 跳线开关跳至“ close ”任意电 路模式皆可。
8位数码管动态显示电路设计

电子课程设计—8位数码管动态显示电路设计学院:电子信息工程学院专业、班级:姓名:学号:指导老师:2014年12月目录一、设计任务与要求................................................. (3)二、总体框图................................................. (3)三、选择器件................................................. (3)四、功能模块................................................. (9)五、总体设计电路图................................................. . (10)六、心得体会.................................................. .. (12)8位数码管动态显示电路设计一、设计任务与要求1. 设计个8位数码管动态显示电路,动态显示1、2、3、4、5、6、7、8。
2. 要求在某一时刻,仅有一个LED数码管发光。
3. 该数码管发光一段时间后,下一个LED发光,这样8只数码管循环发光。
4. 当循环扫描速度足够快时,由于视觉暂留的原因,就会感觉8只数码管是在持续发光。
5、研究循环地址码发生器的时钟频率和显示闪烁的关系。
二、总体框图设计的总体框图如图2-1所示。
图2-1总体框图三、选择器件1、数码管数码管是一种由发光二极管组成的断码型显示器件,如图1所示。
U13DCD_HEX图1 数码管数码管里有八个小LED发光二极管,通过控制不同的LED的亮灭来显示出不同的字形。
数码管又分为共阴极和共阳极两种类型,其实共阴极就是将八个LED 的阴极连在一起,让其接地,这样给任何一个LED的另一端高电平,它便能点亮。
而共阳极就是将八个LED的阳极连在一起。
单片机课程设计-8位8段LED数码管动态扫描显示资料

华南理工大学广州汽车学院单片机课程设计题目:8位8段LED数码管动态扫描专业:电子信息工程班级:09电信(1 )班姓名:付锦辉学号:200930062745一、内容要求:在8位8段LED数码管显示8.8.8.8.8.8.8.8.”持续500ms,之后灭显示器200ms;然后显示“ WELCOM-1 ”(由于8位8段LED数码管显示不能显示字母 W 和M,所以改为显示“ HELLO-93 ”)二、目的和意义1、掌握数码管动态扫描显示原理及实现方法。
2、掌握动态扫描显示电路驱动程序的编写方法。
三、总体方案设计思路LED 数码动态显示的基本做法在于分时轮流选通数码管的公共端,使得各数码管轮流导通,再选通相应的数码管后,即显示字段上得到显示字形码。
这种方式数码管的发光效率,而且由于各个数码管的字段线是并联使用的,从而大大简化了硬件线路。
动态扫描显示接口是单片机系统中应用最为广泛的一种显示方式。
其接口电路是把所有显示器的 8 个笔画段 A-DP 同名端并联在一起,而每个显示器的公共极 COM 各自独立地接受 I/O 线控制, CPU 向字段输出口送出字段形码是,所有显示器由于同名端并连接收到相同的字形码,但究竟是哪个显示器亮,则取决于COM 端,而这一端是由 I/O 控制的,所以就可以自行决定何时显示哪一位了。
而所谓动态扫描是指采用分时的方法,轮流控制各个显示器的 COM 端,使各个显示器轮流点亮。
再轮流点亮扫描过程中,每位显示器的点亮时间是极为短暂的(约1ms),但由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上个位显示器并非同时点亮,但只要扫描的速度足够快,给人的影响就是一组稳定的显示数据,不会有闪烁感。
采用总线驱动器 74HC245 提供 LED 数码管的段驱动,输出高电平时点亮相应段;采用集电极开路的BCD-十进制译码器/驱动器完成LED数码管位驱动,输出低电平时选通相应位。
P2 口每个口线输出灌电流不足以驱动一个数码管显示器的位-公共极,所依通过集电极开路的BCD-十进制译码器/驱动器7445驱动,即节约P2 口线,又增加驱动能力。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《EDA技术及应用》课程设计报告题目:八位数码管扫描显示电路的设计院(系):机电与自动化学院专业班级:电气自动化技术1001学生姓名:学号: 20102822018指导教师:何为2012年6月10日至2012年6月23日《EDA技术及应用》课程设计任务书一、设计题目八位数码管扫描显示电路的设计二、设计主要内容本课题要求掌握使用Quartus II设计数字系统的设计思路和设计方法。
学习VHDL基本逻辑电路的综合设计应用。
掌握VHDL语言的语法规范,掌握时序电路描述方法。
掌握多个数码管动态扫描显示的原理及设计方法。
设计一个八位数码管共阴极动态扫描显示控制电路,要求显示学生自己的学号。
利用实验室设备完成系统设计并进行运行调试。
1、具体设计内容如下:(1)静止显示学号;(2)动态循环显示学号。
2、提供设计报告,报告要求包括以下内容:设计思路、设计输入文件、设计与调试过程、模拟仿真结果和设计结论。
三、原始资料1、LED显示模块原理LED有段码和位码之分,所谓段码就是让LED显示出“8.”的八位数据,一般情况下要通过一个译码电路,将输入的4位2进制数转换为与LED显示对应的8位段码。
位码也就是LED的显示使能端,对于共阳级的LED而言,高电平使能。
要让8个LED同时工作,显示数据,就是要不停的循环扫描每一个LED,并在使能每一个LED的同时,输入所需显示的数据对应的8位段码。
虽然8个LED是依次显示,但是受视觉分辨率的影响,看到的现象是8个LED同时工作。
多个数码管动态扫描显示,是将所有数码管的相同段并联在一起,通过选通信号分时控制各个数码管的公共端,循环点亮多个数码管,并利用人眼的视觉暂留现象,只要扫描的频率大于50Hz,将看不到闪烁现象。
2、系统结构图信号名与芯片引脚对照表硬件资源元件引脚EP3C引脚序号电路使用说明LED 数码显示A 133该部分电路为固定电路。
使用LED数码显示时请按照器件引脚分配表进行引脚分配后再下载到芯片中。
B 135C 136D 137E 138F 141G 142Dp 12874LS138 S1 125 S2 126 S3 1273、LED连接图4、课程设计使用设备(1)EDA及SOPC综合实验平台;(2)导线若干;(3)PC机;(4)Quartus II开发工具软件。
四、要求的设计成果(1)根据控制要求设计硬件电路原理图。
(2)编写用于系统仿真的VHDL源程序。
(3)系统仿真及验证结果。
(4)编写《EDA技术及应用课程设计》报告,课程设计报告内容包括:①设计方案、课程设计过程和设计思想、方法、原理。
②画出系统的原理图。
③VHDL语言程序及仿真波形。
④参考资料、参考书及参考手册。
⑤其他需要说明的问题,例如操作说明、程序的调试过程、遇到的问题及解决方法、对课程设计的认识和建议等。
⑥《可编程控制器技术课程设计》报告可以手写,也可以用电脑编排打印,报告格式按照《华中科技大学武昌分校课程设计管理办法》执行。
课程设计报告要求内容正确完整,图表清晰,叙述简明,语句通顺,字数不得少于2000汉字。
⑦课程设计报告按封面、任务书、设计说明书、图纸、实物照片贴页(实物照片贴在A4复印纸上)、成绩评定表的顺序装订。
五、进程安排内容时间下达课程设计任务书。
讲解课程设计的任务与要求、1天进度安排、指导时间、注意事项、提供参考资料。
学生到实验室熟悉设备。
搜集资料、方案论证、初步设计。
1天设计VHDL语言程序。
2天在实验装置上进行硬件测试。
3天方案优化、总结完善、整理资料、撰写课程设计报告。
2天答辩、课程设计总结。
1天共计10天(2周)六、主要参考资料[1] 郑燕,赫建国. 基于VHDL与Quartus II软件的可编程逻辑器件应用于开发.北京:国防工业出版社,2011.[2] Altera. Pin Information for the Cyclone III EP3C10 Device.San José:Altera Corp,2008.[3] 潘松,黄继业.EDA技术实用教程——VHDL版.北京:科学出版社,2010.指导教师(签名):20 年月日目录1.课程设计题目及要求 (7)1.1课程设计题目 (7)1.2课程设计要求 (7)1.3系统总体方案设计 (7)2. LED的工作原理 (8)2.1 LED工作原理 (8)2.2 LED动态扫描显示原理 (9)3.系统设计 (9)3.1硬件电路设计 (9)3.2 VHDL代码设计 (9)4.运行调试......................................................,,13 4.1时序仿真. (13)4.2 硬件逻辑验证..................................................,15 4.3调试结果分析 (16)4.4 调试中出现的问题及解决方法 (16)5 总结..............................................,,,,,,,,,,,,,,,166.参考文献 (17)7. 附录1系统硬件电路图 (18)附录2实物照片 (19)1.课程设计题目及要求1.1课程设计题目八位数码管静态扫描显示电路的设计1.2课程设计要求本课题要求掌握使用Quartus II设计数字系统的设计思路和设计方法。
学习VHDL基本逻辑电路的综合设计应用。
掌握VHDL语言的语法规范,掌握时序电路描述方法。
掌握多个数码管动态扫描显示的原理及设计方法。
设计一个八位数码管共阴极动态扫描显示控制电路,要求显示学生自己的学号。
利用实验室设备完成系统设计并进行运行调试。
1.3系统总体方案设计设计流程图如下:生成VHDL源程序VHDL逻辑综合﹑优化自动优化﹑布局﹑布线∕适配编程、下载首先,我们要对所要设计的八位数码管静态扫描显示电路充分理解,同时在了解了所给的硬件器材的基础上需进行“源程序的编辑和编译”——用一定的逻辑表达手段将设计表达出来;其次要进行“逻辑综合”——将用一定的逻辑表达手段表达出来的设计,经过一系列的操作,分解成一系列的基本逻辑电路及对应关系;然后要进行“目标器件的布线∕适配”——在选定的目标器件中建立这些基本逻辑电路及对应关系;最后,目标器件的编程下载——将前面的软件设计经过编程变成具体的设计系统,同时在设计过程中要进行有关“仿真”——模拟有关设计结果,看是否与设计构想相符。
系统结构框图如下:硬件资源元件引脚EP3C引脚序号电路使用说明LED 数码显示A 133该部分电路为固定电路。
使用LED数码显示时请按照器件引脚分配表进行引脚分配后再下载到芯片中。
B 135C 136D 137E 138F 141G 142Dp 12874LS138S1 125S2 126S3 1272. LED的工作原理2.1 LED工作原理LED为分段式半导体显示器,通常称为七段发光二极管显示器。
下图为七段发光二极管显示器共阴极和共阳极的电路图。
对共阴极显示器的公共端应接地,给a-g输入相应高电平,对应字段的发光二极管显示十进制数;对共阳极的公共端应接+5V电源,给a-g输入端相应低电平,对应字段的发光二极管也显示十进制数。
2.2 LED动态扫描显示原理LED有段码和位码之分,所谓段码就是让LED显示出“8.”的八位数据,一般情况下要通过一个译码电路,将输入的4位2进制数转换为与LED显示对应的8位段码。
位码也就是LED的显示使能端,对于共阳级的LED而言,高电平使能。
要让8个LED同时工作,显示数据,就是要不停的循环扫描每一个LED,并在使能每一个LED的同时,输入所需显示的数据对应的8位段码。
虽然8个LED是依次显示,但是受视觉分辨率的影响,看到的现象是8个LED同时工作。
多个数码管动态扫描显示,是将所有数码管的相同段并联在一起,通过选通信号分时控制各个数码管的公共端,循环点亮多个数码管,并利用人眼的视觉暂留现象,只要扫描的频率大于50Hz,将看不到闪烁现象。
3 系统设计3.1 硬件电路设计3.2 VHDL程序设计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 isport(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 issignalseg_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;beginprocess(clk5)beginif clk5'event and clk5='1' thenclk<=not clk;end if;end process;process(clk5,rst)beginif clk5' event and clk5='1' thenif clk='1' thenseg_buf1<="0010";seg_buf2<="0010";seg_buf3<="1000";seg_buf4<="0010";seg_buf5<="0000";seg_buf6<="0001";seg_buf7<="0000";seg_buf8<="0010";elseseg_buf1<="1111";seg_buf2<="1111";seg_buf3<="1111";seg_buf4<="1111";seg_buf5<="1111";seg_buf6<="1000";seg_buf7<="0001";seg_buf8<="0000";end if;end if;end process;process (clk3,rst)beginif clk3' event and clk3='1' thenif rst='1' thenseg_cnt<="000";elseseg_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)begincase seg_cnt iswhen 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)begincase seg_temp iswhen "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<="00000000";when others=> null;end case;end process;end architecture ado;4 运行调试4.1 时序仿真(1)建立波形文件。