实验4 扫描显示驱动电路
扫描驱动显示电路设计CPLD-3

内蒙古工业大学信息工程学院实验报告课程名称: CPLD/FPGA应用开发技术实验名称:扫描驱动显示电路设计实验类型:验证性□ 综合性□设计性■实验室名称:班级:学号:姓名:组别:同组人:成绩:实验日期: 2012-5-9月日预习报告一、实验目的:1.了解实验箱中8位七段数码管显示模块的工作原理。
2.熟悉VHDL 硬件描述语言及设计专用数字集成电路的自顶向下的设计思想。
3.掌握利用CPLD/FPGA设计8位七段数码管扫描显示驱动电路的方法。
二、实验设备:1.计算机(配置为:P4 CPU 128M内存);2. MAX+plusⅡ开发工具软件;3. EL教学实验箱;4.万用表;5. DS 5022M型双踪数字示波器;三、实验内容:本实验要求在给定子模块程序的基础上,画出设计原理图。
自行编写顶层模块程序,完成扫描显示驱动电路的设计,实现在8个数码管上轮流显示字符0-F的功能。
四、设计要求1.要求在Max+plusⅡ平台上用VHDL语言编写顶层模块程序,调试、仿真成功后,下载至ALTER EPM7128SLC84-15 芯片,再利用外接电路实现以上设计功能。
2.扫描驱动显示电路有 2 个输入端(clk,reset),14 个输出端(a,b,c,d,e,f,g)和(y0,y1,y2,y3,y4,y5,y6,y7),全部为TTL 电平,管脚分配任意,如下图所示。
3.根据芯片特点,管脚分配时将时钟信号分配给83 脚,复位信号分配给1 脚,使能信号分配给84 脚。
月日实验报告一、实验内容:本实验要求在给定子模块程序的基础上,画出设计原理图。
自行编写顶层模块程序,完成扫描显示驱动电路的设计,实现在8 个数码管上轮流显示字符0-F 的功能。
二、实验程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY XS ISPORT(CLK,RESET: IN STD_LOGIC;A,B,C,D,E,F,G: OUT STD_LOGIC;Y: OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END XS;ARCHITECTURE BEHA OF XS ISCOMPONENT COUNTER16PORT(CLK,CLR: IN STD_LOGIC;COUNT: OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END COMPONENT;COMPONENT DECDISPPORT(DATAIN: IN STD_LOGIC_VECTOR(3 DOWNTO 0);A,B,C,D,E,F,G: OUT STD_LOGIC);END COMPONENT;COMPONENT YIMA3PORT(X: IN STD_LOGIC_VECTOR(2 DOWNTO 0);Y: OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END COMPONENT;SIGNAL CONT: STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL SEL3: STD_LOGIC_VECTOR(2 DOWNTO 0);BEGIND1:COUNTER16 PORT MAP(CLK=>CLK,CLR=>RESET,COUNT=>CONT);D2:DECDISP PORT MAP(DATAIN=>CONT,A=>A,B=>B,C=>C,D=>D,E=>E,F=>F,G=>G);D3:YIMA3 PORT MAP(X=>CONT(2 DOWNTO 0),Y=>Y);END BEHA;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY YIMA3 ISPORT( X: IN STD_LOGIC_VECTOR(2 DOWNTO 0);Y: OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END YIMA3 ;ARCHITECTURE BEHA OF YIMA3 ISBEGINY<=X;END BEHA;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DECDISP ISPORT(DATAIN: IN STD_LOGIC_VECTOR(3 DOWNTO 0);A,B,C,D,E,F,G: OUT STD_LOGIC);END DECDISP;ARCHITECTURE BEHA OF DECDISP ISSIGNAL DATAOUT: STD_LOGIC_VECTOR(6 DOWNTO 0);BEGINA<=DATAOUT(6);B<=DATAOUT(5);C<=DATAOUT(4);D<=DATAOUT(3);E<=DATAOUT(2);F<=DATAOUT(1);G<=DATAOUT(0);PROCESS(DATAIN)BEGINCASE DATAIN ISWHEN "0000"=> DATAOUT<="1111110"; WHEN "0001"=> DATAOUT<="0110000"; WHEN "0010"=> DATAOUT<="1101101"; WHEN "0011"=> DATAOUT<="1111001"; WHEN "0100"=> DATAOUT<="0110011"; WHEN "0101"=> DATAOUT<="1011011"; WHEN "0110"=> DATAOUT<="1011111"; WHEN "0111"=> DATAOUT<="1110000"; WHEN "1000"=> DATAOUT<="1111111"; WHEN "1001"=> DATAOUT<="1111011"; WHEN "1010"=> DATAOUT<="1110111"; WHEN "1011"=> DATAOUT<="0011111"; WHEN "1100"=> DATAOUT<="1001110"; WHEN "1101"=> DATAOUT<="0111101"; WHEN "1110"=> DATAOUT<="1001111"; WHEN "1111"=> DATAOUT<="1000111"; WHEN OTHERS=> DATAOUT<="XXXXXXX"; END CASE;END PROCESS;END BEHA;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY COUNTER16 ISPORT(CLK,CLR: IN STD_LOGIC;COUNT: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); SEL: OUT STD_LOGIC_VECTOR(2 DOWNTO 0)); END COUNTER16;ARCHITECTURE BEHA OF COUNTER16 ISSIGNAL CNT: STD_LOGIC_VECTOR(3 DOWNTO 0); BEGINPROCESS(CLK,CLR)BEGINIF CLR='0'THENCNT<="0000";ELSIF CLK='1' AND CLK'EVENT THENCNT<=CNT+'1';END IF;COUNT<=CNT;SEL<=CNT(2 DOWNTO 0);END PROCESS;三、仿真结果:四、管脚分配:。
eda讲义——7个的

实验一 maxplusII 软件的初步使用(图形的设计)一、实验目的:1、初步掌握Max+PlusII 软件的基本操作与应用。
2、初步了解可编程器件的设计全过程。
二、实验仪器: 1. 电脑一台 2. 实验箱一个三、实验内容:(一)设计输入:1、软件的启动:单击“开始”进入“程序”选中“Max+PlusII 10.1 BASELINE ”,打开“”MaxplusII 软件,如图1.1-1所示。
2、启动File\New 菜单,弹出设计输入选择窗口,如图1.1-2所示:3、选择Graphic Editor File ,单击OK ,打开原理图编辑器,进入原理图设计输入电路编辑状态。
如图1.1-3所示。
4、设计输入1)放置一个器件在原理图上 01.1-4图1.1-1图1.1-2图1.1-3 图1.1-4b 、在光标处输入元件名称(如:input ,output ,and2,and3,nand2,or2,not ,xor ,dff 等)或用鼠标点击库元件,按下OK 即可。
c 、如果安放相同的元件,只要按住Ctrl 键,同时用鼠标按左键拖动该元件复制即可。
d 、一个完整的电路包括:输入端口input 、电路元件集合、输出端口output 。
e 、图1.1-5为3-8译码器元件安放结果。
2)添加连线到器件的引脚上:把鼠标移到元件引脚附近,则鼠标自动由箭头变为十字,按住鼠标左键拖动,即可画出连线。
3-8译码器原理图连线后如图1.1-6所示。
3)标记输入/输出端口属性分别双击输入端口的“PINNAME ”,当变成黑色时,即可输入标记符并回车确认;输出端口标记方法类似。
本译码器的三输入端分别标记为:A 、B 、C ;其八输出端分别为:D0、D1、D2、D3、D4、D5、D6、D7。
如图1.1-7所示。
4)保存原理图单击保存按钮图表,对于新建文件,出现类似文件管理器图框,请选择保存路径/文件名称保存原理图,原理图的扩展名为.gdf ,本实验中取名为test1.gdf 。
实验四 译码扫描显示电路VHDL输入设计

实验二:计数器动态扫描实验一实验目的熟悉译码扫描动态显示的工作原理、设计过程和实现方法。
二实验内容与要求学习用VHDL设计译码扫描动态显示电路,完成编译、综合、适配、仿真和实验箱上的硬件测试。
三实验平台(1)硬件:计算机、GX-SOC/SOPC-DEVLABCycloneII EP2C35F672C8核心扳(2)软件:Quartus II四实验原理通过动态扫描一组4BIT 的输入,有控制开关控制数据的流向,即在哪个数码管上显示,在允许的条件产生后,扫描记录响应位置上的输入数据(开关选择),将结果动态地显示在共阴数码管上。
在能满足人眼要求的一定的扫描频率下,对数据进行动态显示。
五程序--显示电路--显示电路整合--ledscan.vhd 4 digit bcd-to-7 segment scan displaylibrary ieee ;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity ledscan isport(clk : in std_logic; --synchronousenable : in std_logic; --scan clockdata_bcd :in std_logic_vector(3 downto 0);--input bcdctrl : in std_logic_vector(2 downto 0);---ctrl the order of inputi.e. bcd_dataledseg : out std_logic_vector(6 downto 0);--output to 7 segmentledcom : out std_logic_vector(5 downto 0));--7 segment enableend ledscan;architecture behavior of ledscan issignal com_clk : std_logic_vector(2 downto 0);signal bcd_led : std_logic_vector(3 downto 0);signal data2show : std_logic_vector(23 downto 0);component comcounport(clk : in std_logic;--synchronouse clockenable : in std_logic;--scan clockcomclk : out std_logic_vector(2 downto 0));--output count end component;component com_encodeport(com_clk : in std_logic_vector(2 downto 0);--input countledcom : out std_logic_vector(5 downto 0));--output encodeend component;component bcd_muxport(com_clk : in std_logic_vector(2 downto 0);--input countbcd_data : in std_logic_vector(23 downto 0);--input display databcd_led : out std_logic_vector(3 downto 0));--output to 7 segment end component;component bcd_7segport(bcd_led : in std_logic_vector(3 downto 0);--input bcdledseg : out std_logic_vector(6 downto 0));--output to 7 segment end component;begininput_control:process(clk)beginif (clk'event and clk='1') thenif ctrl="000" thendata2show(3 downto 0)<=data_bcd;-- first value to showelsif ctrl="001" thendata2show(7 downto 4)<=data_bcd;-- 2nd value to showelsif ctrl="010" thendata2show(11 downto 8)<=data_bcd;-- 3rd value to showelsif ctrl="011" thendata2show(15 downto 12)<=data_bcd;-- 4th value to showelsif ctrl="100" thendata2show(19 downto 16)<=data_bcd;-- 5th value to showelsif ctrl="101" thendata2show(23 downto 20)<=data_bcd;-- 6th value to showelsedata2show<="000000000000000000000000";end if;end if;end process ;u0: comcoun port map (clk=>clk,enable=>enable,comclk=>com_clk);-- 7 segment com scan counteru1: com_encode port map(com_clk=>com_clk,ledcom=>ledcom);-- 7 segment com scan counter--u1: com_encode port map (com_clk,ledcom); --7 segment com encode u2: bcd_mux port map (com_clk=>com_clk,bcd_data=>data2show,bcd_led=>bcd_led);--multiplexeru3: bcd_7seg port map (bcd_led=>bcd_led,ledseg=>ledseg); --bcd to7 segment encoderend behavior;--七段显示扫描电路--comcoun.vhd 7 segment com scan counterlibrary ieee ;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity comcoun isport(clk : in std_logic;--synchronouse clockenable : in std_logic;--scan clockcomclk : out std_logic_vector(2 downto 0));--output countend comcoun;architecture behavior of comcoun issignal q : std_logic_vector(2 downto 0);--internal counted signal beginfscan:process(clk)beginif (clk'event and clk='1') thenif (enable='1') thenif q>=6 thenq<="000";--initial counterelseq<=q+1;--countingend if;end if;end if;end process fscan;comclk<=q; --output internal countend behavior;--计数译码电路 -- 6 共阴--com_encode.vhd 7 segment com encoderlibrary ieee ;use ieee.std_logic_1164.all;entity com_encode isport(com_clk :in std_logic_vector(2 downto 0);--input countledcom :out std_logic_vector(5 downto 0));--output encodeend com_encode;architecture behavior of com_encode isbeginledcom<="000001" when com_clk="001" else"000010" when com_clk="010" else"000100" when com_clk="011" else"001000"when com_clk="100" else"010000"when com_clk="101" else"100000";end behavior;--bcd_mux.vhd multiplexer of bcd-selectionlibrary ieee ;use ieee.std_logic_1164.all;entity bcd_mux isport(com_clk : in std_logic_vector(2 downto 0);--input countbcd_data :in std_logic_vector(23 downto 0);--input display data bcd_led : out std_logic_vector(3 downto 0));--output to 7 segment end bcd_mux;architecture behavior of bcd_mux isbeginbcd_led<=bcd_data(3 downto 0) when com_clk="001" elsebcd_data(7 downto 4) when com_clk="010" elsebcd_data(11 downto 8) when com_clk="011" elsebcd_data(15 downto 12)when com_clk="100" elsebcd_data(19 downto 16)when com_clk="101" elsebcd_data(23 downto 20)when com_clk="110" else"----";end behavior;--bcd对应七段显示器编码电路--bcd_7seg.vhd bcd to 7 segment encoderlibrary ieee ;use ieee.std_logic_1164.all;entity bcd_7seg isport(bcd_led :in std_logic_vector(3 downto 0);--input bcdledseg : out std_logic_vector(6 downto 0));--output to 7 segment end bcd_7seg;architecture behavior of bcd_7seg isbeginwith bcd_led selectledseg<="0111111" when "0000",--0"0000110" when "0001",--1"1011011" when "0010",--2"1001111" when "0011",--3"1100110" when "0100",--4"1101101" when "0101",--5"1111101" when "0110",--6"0100111" when "0111",--7"1111111" when "1000",--8"1101111" when "1001",--9"1110111" when "1010",--A"1111100"when "1011",--b"0111001"when "1100",--c"1011110" when "1101",--d"1111001"when "1110",--E"1110001" when "1111",--F"0000000" when others;end behavior;六引脚定义及代码图2-1引脚定义代码:# Copyright (C) 1991-2008 Altera Corporation# Your use of Altera Corporation's design tools, logic functions # and other software and tools, and its AMPP partner logic# functions, and any output files from any of the foregoing# (including device programming or simulation files), and any# associated documentation or information are expressly subject # to the terms and conditions of the Altera Program License# Subscription Agreement, Altera MegaCore Function License# Agreement, or other applicable license agreement, including,# without limitation, that your use is for the sole purpose of# programming logic devices manufactured by Altera and sold by# Altera or its authorized distributors. Please refer to the# applicable agreement for further details.# Quartus II: Generate Tcl File for Project# File: ACOUNT10.tcl# Generated on: Tue Nov 03 11:40:42 2009# Load Quartus II Tcl Project packagepackage require ::quartus::projectset need_to_close_project 0set make_assignments 1# Check that the right project is openif {[is_project_open]} {if {[string compare $quartus(project) "ACOUNT10"]} {puts "Project ACOUNT10 is not open"set make_assignments 0}} else {# Only open if not already openif {[project_exists ACOUNT10]} {project_open -revision ACOUNT10 ACOUNT10} else {project_new -revision ACOUNT10 ACOUNT10}set need_to_close_project 1}# Make assignmentsif {$make_assignments} {set_global_assignment -name FAMILY "Cyclone II"set_global_assignment -name DEVICE EP2C35F672C8set_global_assignment -name ORIGINAL_QUARTUS_VERSION 8.0set_global_assignment -name PROJECT_CREATION_TIME_DATE "11:03:58 NOVEMBER 03, 2009"set_global_assignment -name LAST_QUARTUS_VERSION 8.0set_global_assignment -name USE_GENERATED_PHYSICAL_CONSTRAINTS OFF -section_id eda_palaceset_global_assignment -name DEVICE_FILTER_PACKAGE FBGAset_global_assignment -name DEVICE_FILTER_PIN_COUNT 672set_global_assignment -name DEVICE_FILTER_SPEED_GRADE 8set_global_assignment -name MIN_CORE_JUNCTION_TEMP 0set_global_assignment -name MAX_CORE_JUNCTION_TEMP 85set_global_assignment -name VHDL_FILE com_encode.vhdset_global_assignment -name PARTITION_NETLIST_TYPE SOURCE -section_id Topset_global_assignment -name PARTITION_COLOR 14622752 -section_id Top set_global_assignment -name LL_ROOT_REGION ON -section_id "Root Region"set_global_assignment -name LL_MEMBER_STATE LOCKED -section_id "Root Region"set_global_assignment -name VHDL_FILE comcoun.vhdset_global_assignment -name VHDL_FILE COUNT10a.vhdset_global_assignment -name VHDL_FILE bcd_7seg.vhdset_global_assignment -name VHDL_FILE clkgen.vhdset_global_assignment -name VHDL_FILE ACOUNT10.vhdset_global_assignment -name VECTOR_WAVEFORM_FILE warefare.vwfset_global_assignment -name INCREMENTAL_VECTOR_INPUT_SOURCE warefare.vwfset_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Topset_location_assignment PIN_P25 -to clkset_location_assignment PIN_F6 -to Clrset_location_assignment PIN_B22 -to enset_location_assignment PIN_H23 -to LEDCOM[5]set_location_assignment PIN_G26 -to LEDCOM[4]set_location_assignment PIN_G25 -to LEDCOM[3]set_location_assignment PIN_G24 -to LEDCOM[2]set_location_assignment PIN_G23 -to LEDCOM[1]set_location_assignment PIN_P18 -to LEDCOM[0]set_location_assignment PIN_F26 -to LEDSEG[6]set_location_assignment PIN_F25 -to LEDSEG[5]set_location_assignment PIN_J20 -to LEDSEG[4]set_location_assignment PIN_J21 -to LEDSEG[3]set_location_assignment PIN_F23 -to LEDSEG[2]set_location_assignment PIN_F24 -to LEDSEG[1]set_location_assignment PIN_E25 -to LEDSEG[0]set_location_assignment PIN_B21 -to EN6# Commit assignmentsexport_assignments# Close projectif {$need_to_close_project} {project_close}}七仿真图2-2 创建VHDL文件图2-3 PIN口设置图2-4 创建VERILOG文件图2-5 运行八导入程序图2-7 下载图2-8 实验结果。
4led 动态扫描显示及按键实验感想

4led 动态扫描显示及按键实验感想
在完成4LED动态扫描显示及按键实验后,我深深感受到了科技的实际应用与电路设计的美妙结合。
这不仅是一次对于理论知识的学习和巩固,更是一次将知识转化为实践的宝贵体验。
实验中,我们通过编程控制4个LED灯的亮灭,使其按照特定的模式进行动态扫描。
这其中涉及到了数字信号处理、逻辑门电路、微控制器等多个知识点。
每一个LED灯的亮与灭,都代表着一串代码的执行,每一次的动态扫描,都是程序在控制板上跑动的轨迹。
在实验过程中,我深刻体会到了编程的魅力。
通过编写程序,我可以精确地控制每一个LED灯的亮灭时间,甚至可以创造出复杂的扫描效果。
而按键的部分更是增添了实验的趣味性。
通过按键,我可以随时改变LED的扫描模式,每一次按键,都像是给程序注入了一个新的灵魂,使其焕发出不同的光彩。
当然,实验过程中也遇到了不少困难。
例如,如何确保4个LED 灯能够均匀地亮起与熄灭,如何处理按键抖动问题等。
但正是这些问题的存在,使得整个实验更加具有挑战性。
通过不断地尝试、调试,我最终克服了这些困难,也更加深入地理解了相关知识。
这次实验让我认识到,理论知识的学习固然重要,但只有将其应用于实践中,才能真正体会到知识的价值。
同时,实验中的每一个细节、每一个问题,都是对自身能力的锻炼与提升。
通过不断地实践与
尝试,我相信自己能够更好地掌握知识,更好地将理论知识与实践相结合。
未来,我计划进一步深入学习微控制器编程、电路设计等相关知识,希望能够为未来的科技应用做出更大的贡献。
同时,我也希望能够将这次实验的经验分享给更多的同学,共同探索科技的奥秘。
数码管扫描显示控制器实验报告

实验四数码管扫描显示控制器设计与实现2011211208班2011211055 4 于圣泽一、实验目的1.掌握VHDL语言的语法规范, 掌握时序电路描述方法;2.掌握多个数码管动态扫描显示的原理及设计方法。
二、实验原理三、多个数码管动态扫描显示, 是将所有数码管的相同段并联在一起, 通过选通信号分时控制各个数码管的公共端, 循环依次点亮多个数码管, 利用人眼的视觉暂留现象, 只要扫描的频率大于50Hz, 将看不到闪烁现象。
一个数码管要稳定显示要求显示频率大于50Hz, 那么6个数码管则需要50×6=300Hz以上才能看到持续稳定点亮的现象。
四、cat1~cat6是数码管选通控制信号, 分别对应于6个共阴极数码管的公共端, 当catn=‘0’时, 其对应的数码管被点亮。
因此, 通过控制cat1~cat6, 就可以控制6个数码管循环依次点亮。
五、实验内容1.用VHDL语言设计并实现六个数码管串行扫描电路, 要求同时显示0、1.2.3.4.5这6个不同的数字图形到6个数码管上, 仿真验证其功能, 并下载到实验板测试。
2.用VHDL语言设计并实现六个数码管滚动显示电路六、循环左滚动, 始终点亮6个数码管, 左出右进。
状态为: 012345→123450→234501→3450123→450123→501234→012345七、向左滚动, 用全灭的数码管填充右边, 直至全部变灭, 然后再依次从右边一个一个地点亮。
状态为:012345→12345X→2345XX→345XXX→45XXXX→5XXXXX→XXXXXX→XXXXX0→XXXX01→XXX012→XX0123→X01234→012345,其中‘X’表示数码管不显示。
八、设计思路和过程对50MHz时钟进行5000分频, 得到10kHZ时钟scanclk。
把scanclk作为6进制计数器的时钟, 对计数器的状态进行译码, 得到cat(5 downto 0)的选通脉冲。
扫描数码显示器实验

4.2 扫描数码显示器实验4.2.1 实验目的1. 学习状态机的原理及使用VHDL语言设计的方法;2.学习复杂数学系统的设计方法;3.掌握动态扫描数码显示器的设计方法。
4.2.2 实验设备PC微机一台,TD-EDA试验箱一台,SOPC开发板一块。
4.2.3 实验内容状态机是一类很重要的时序电路,是许多数字电路的核心部件。
根据状态机的输出方式可以分为Mealy型和Moore型两种状态机。
输出与状态有关而与输入无关的状态机类型称为Moore型状态机。
输出与状态及输入皆有关系的状态机称为Mealy型状态机。
状态机通常包含:说明部分、主控时序进程、主控组合进程、辅助进程几个部分。
利用状态机进行设计的步骤如下:1.分析设计要求,列出状态机所有可能的状态,并对每一个状态进行状态编码;2.根据状态转移关系和输出函数画出状态转移图;3.由状态转移图,用状态机语句描述状态机。
是数码管动态扫描显示的方式主要是为了节省I/O管脚和内部逻辑资源,它利用人的视觉暂留现象,将6位数数码管分别循环选通,配合传送相应的要显示的数据,只要扫描的速度足够快,就可以使人的视觉感到好像是6位数码管的同时显示。
一般扫描频率使用1KHz 就可以了。
本实验设计一个可以使6位数码管动态刷新显示的扫描电路。
分析系统的要求可知此设计需要包括6进制计数器、BCD译码器、数据选择多路开关等多个小单元模块。
实验需要设计一个模块来为6个数码块提供要显示的数据,设计一个六位数123456从左向右移动的方式,直到最高一位移出最右边数码块后,最低位6再从最左面数码块移进,从而实现循环移动。
4.2.4 实验步骤1.运行QuartusⅡ软件,建立新工程,工程名称及顶层文件名称为SCANLED。
2.选择File→New菜单,创建图形设计文件,在图形编辑器界面中选择Block Tool工具按钮,分别新建DAT、MULX、BCD_LED子模块,完成模块的定义及模块之间的连接,完成如图4-2-1所示的数码扫描显示器顶层设计电路图。
【精品】多位LED-显示器动态扫描驱动电路设计完整版

多位L E D-显示器动态扫描驱动电路设计完整版《多位LED 显示器动态扫描驱动电路》报告(一)目的:1、了解多位LED 显示器动态扫描驱动电路的基本工作原理;2、完成多位LED 显示器动态扫描驱动电路设计并分析计算单元电路;3、绘制多位LED 显示器动态扫描驱动电路图,针对工作原理进行参数估算;4、电路功能的检测和调试;5、设计答辩,完成设计报告。
(二)结构图(三)电路总体功能概述该电路的功能是通过控制数据选择器输入端的高低电平来使四个LED显示器可以显示0-9任意一个数字,实现动态扫描功能。
由振荡电路,控制电路,四位四选一数据选择器,一位LED译码驱动电路和四位LED显示电路组成。
首先用555定时器构成频率为1000赫兹多谐振荡器产生脉冲信号,再将信号传输到74构成的二位二进制触发器,使该触发器输出00,01,10,11。
将触发器的两输出端分别接到数据选择器153的S1,S0,将四个输入D0或D1D2D3信号传输到LED显示电路,使LED显示不同数字,将触发器的两输出端接到138的A1,A0(A2接0),再将138的输出Y0,Y1,Y2,Y3接到四个LED的共阴极,控制LED的显示状态,把74ls153的输出端与cc4511的四个输入端相连,把LED显示器的a,b,c,d,e,f,g与cc4511的输出端相连,这样便可以通过555定时器产生的脉冲控制四个LED的显示顺序,同时调整153的输入端的高低电位,这样便实现了对四个LED的显示控制,可随意现实0至9的数字。
振荡电路由555定时器构成的多谐振荡电路组成,有振荡电路提供脉冲,振荡周期T=Tpl+Tph=R1*C*ln2+(R1+R2)*C*ln2=0.001s,则其振荡频率为1000Hz,多谐振荡器在接通电源后无需外接触发信号就可以产生矩形脉冲或方波。
控制电路是一片74LS74构成的两位二进制触发器,它接收到控制电路的振荡脉冲,产生00,01,10,11的输出信号。
实验-扫描显示驱动电路

实验-扫描显示驱动电路————————————————————————————————作者:————————————————————————————————日期:2实验4 扫描显示驱动电路一、实验目的了解教学系统中8位八段数码管显示模块的工作原理,设计标准扫描驱动电路模块,以备后面实验用。
二、硬件要求主芯片Altera EPM7128SLC84-15,时钟,8位八段数码管显示器,四位拨码开关。
三、实验内容用四位拨码开关产生8421BCD码,用CPLD分别产生字形编码电路和扫描驱动电路,然后进行仿真,观察波形,正确后编程下载实验测试。
1、编一个简单的从0~F轮换显示十六进制数的电路。
2、用计数器产生数码管扫描驱动信号,调节时钟频率,感受扫描的过程,并观察字符的亮度和显示刷新的效果。
7段数码管显示字符0~F,显示字符与7段数码管驱动线的对应关系如下:二进制数字符7段数码管(gfedcba)0000 0 0111111(3F)0001 1 0000110(06)0010 2 1011011(5B)0011 3 1001111(4F)0100 4 1100110(66)0101 5 1101101(6D)0110 6 1111101(7D)0111 7 0000111(07)1000 8 1111111(7F)1001 9 1101111(6F)1010 A 1110111(77)1011 B 1111100(7C)1100 C 0111001(39)1101 D 1011110(5E)1110 E 1111001(79)34 1111F 1110001(71)四、实验原理四位拨码开关提供8421BCD 码,经译码电路DECL7S 后连接8段数码管的字形显示驱动信号a,b,c,d,e,f,g 。
数码管扫描电路可通过片选地址SEL[2..0]控制。
由SEL[2..0]和a,b,c,d,e,f,g 决定了8位数码管中的那一位显示和显示什么字形。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验4 扫描显示驱动电路
一、实验目的
了解教学系统中8位八段数码管显示模块的工作原理,设计标准扫描驱动电路模块,以备后面实验用。
二、硬件要求
主芯片Altera EPM7128SLC84-15,时钟,8位八段数码管显示器,四位拨码开关。
三、实验内容
用四位拨码开关产生8421BCD码,用CPLD分别产生字形编码电路和扫描驱动电路,然后进行仿真,观察波形,正确后编程下载实验测试。
1、编一个简单的从0~F轮换显示十六进制数的电路。
2、用计数器产生数码管扫描驱动信号,调节时钟频率,感受扫描的过程,并观察字符的亮度和显示刷新的效果。
7
四、实验原理
四位拨码开关提供8421BCD 码,经译码电路DECL7S 后连接8段数码管的字形显示驱动信号a,b,c,d,e,f,g 。
数码管扫描电路可通过片选地址SEL[2..0]控制。
由SEL[2..0]和a,b,c,d,e,f,g 决定了8位数码管中的那一位显示和显示什么字形。
SEL[2..0]变化的快慢决定了扫描频率的快慢。
1、参考电路:如图4-1所示(时钟频率
>40Hz)
实验连线:把RESET 和rst0接高电平,CLK 接上时钟信号,可观察到第一个数码管循环显示字符0~F 。
2、参考电路:如图4-2所示
图4-1(t4-1.gdf )
图4-1’(t4-11.gdf )
图4-2(t4_2.gdf)
五、实验连线
输入信号:
D3,D2,D1,D0所对应的管脚同四位拨码开关相连;
清零信号RESET所对应的管脚同按键开关相连;
时钟CLK所对应的管脚同试验箱上的时钟源相连。
输出信号:
代表扫描片选地址信号SEL2,SEL1,SEL0的管脚同四位扫描驱动地址的低三位相连,最高位地址接“0”(也可悬空);
代表七段数码驱动信号a, b, c, d, e, f, g的管脚分别同扫描数码管的段输入a,b,c,d,e,f,g相连。
六、实验报告
1、字形编码的种类,即一个8段数码管可产生多少种字符,产生所有字符需多少根译码信号线?
2、字符显示亮度和扫描频率的关系,且让人感觉不出光烁现象的最低扫描频率是多少?
七、附录
(1) 字符译码器DECL7S的VHDL源程序
library ieee;
use ieee.std_logic_1164.all;
entity decl7s is
port(a:in std_logic_vector(3 downto 0);
led7s:out std_logic_vector(6 downto 0));
end;
architecture one of decl7s is
begin
process(a)
begin
case a is
when "0000" => led7s<="0111111";
when "0001" => led7s<="0000110";
when "0010" => led7s<="1011011";
when "0011" => led7s<="1001111";
when "0100" => led7s<="1100110";
when "0101" => led7s<="1101101";
when "0110" => led7s<="1111101";
when "0111" => led7s<="0000111";
when "1000" => led7s<="1111111";
when "1001" => led7s<="1101111";
when "1010" => led7s<="1110111";
when "1011" => led7s<="1111100";
when "1100" => led7s<="0111001";
when "1101" => led7s<="1011110";
when "1110" => led7s<="1111001";
when "1111" => led7s<="1110001";
when others => null;
end case;
end process;
end;
(2) 16进制4位计数器的VHDL源程序
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity cnt4b is
port(clk,rst,en : in std_logic;
cq : out std_logic_vector(3 downto 0);
cout : out std_logic );
end cnt4b;
architecture behave of cnt4b is
begin
process(clk,rst,en)
variable ci:std_logic_vector(3 downto 0);
begin
if rst='1' then ci:=(others=>'0');--计数器异步复位
elsif clk'event and clk='1' then
if en='1' then --检测是否允许计数
if ci<"1111" then ci:=ci+1; --允许计数,
else ci:=(others=>'0'); --等于15,计数值清零
end if;
end if;
cq<=ci;
end if;
if ci="1111" then cout<='1'; --输出进位信号
else cout<='0';
end if;
end process;
end behave;
※文本编辑器的使用说明
MAX+PLUSII支持AHDL,VHDL及Verilog HDL等硬件描述语言。
下面通过一个例子说明采用文本方式进行设计的步骤。
首先选择File/New,在对话框中选择Text Editor File,打开一个无标题的Text Editor窗口。
然后选择File/Save As,在File Name框内输入文件名为——实体名.vhd,保存文件。
将上面的源程序输入。
完成后,可选择File/Project/Set Project to Current File,将文件设为当前项目。
然后同图形编辑一样,进行编译通过,波形仿真。
为了能在图形编辑器中调用,可以通过File/Greate Default Symbol将这部分生成一个可调用的图形元件符号,可以通过File/Edit Symbol对生成的图形符号进行简单编辑。
注意,只有在同一个文件夹中才可直接调用。
为了在任意文件中调用,可以将编译生成的扩展名为sym的符号文件和扩展名为vhd的文本源程序文件放在同一个文件夹中,通过Option/User library命令建立自己的元件库。