扫描驱动显示电路设计(设计性实验)

合集下载

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

扫描驱动显示电路设计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;三、仿真结果:四、管脚分配:。

8位数码扫描显示电路设计实验

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文本设计过程,学习简单时序电路的设计、仿真和硬件测试。

一种八分之一扫描led显示屏驱动电路的制作方法

一种八分之一扫描led显示屏驱动电路的制作方法

一种八分之一扫描led显示屏驱动电路的制作方法八分之一扫描LED显示屏驱动电路是一种常见的驱动电路,它可以控制LED显示屏的亮灭,实现图像、文字或者动画的显示。

本文将详细介绍如何制作一种八分之一扫描LED显示屏驱动电路。

一、器件准备制作八分之一扫描LED显示屏驱动电路,我们首先需要准备一些基本的器件和元件:1. MCU芯片:选择一款合适的单片机芯片作为主控制器,常用的有51单片机、STM8、STM32等。

2.驱动芯片:选择一款合适的驱动芯片,用于控制LED的亮灭。

常见的驱动芯片有74HC595、MAX7219等。

3.电容:选择合适的电容用于电路稳定性的提高。

4.电阻:选择合适的电阻用于限流、分压等功能。

5.电感:选择合适的电感用于滤波和稳定电路效果。

6. LED显示屏:选择合适的LED显示屏,根据项目的需求和规模选择合适的尺寸和颜色。

7.连接线、焊接工具等。

二、电路设计1.建立电路原理图:根据需求和器件的特性,绘制电路原理图。

首先确定MCU芯片的引脚连接方式,然后确定驱动芯片的引脚连接方式,最后将LED显示屏与驱动芯片连接。

2.电源电路设计:为了保证稳定供电,需要设计一个合适的电源电路。

一般来说,可以使用稳压芯片或者直流电源模块来为电路提供稳定的电源。

3.信号传输电路设计:确定MCU与驱动芯片之间的信号传输方式,并设计相应的电路。

一般使用SPI、I2C等总线协议进行数据传输。

4.驱动电路设计:根据LED显示屏的类型和规格,选择合适的驱动芯片,并设计相应的驱动电路。

根据显示屏的行数和列数,确定驱动芯片的引脚数量和功能。

5.亮度调节电路设计:根据需要,设计亮度调节电路,通过改变电阻或者PWM方式来控制LED的亮度。

三、电路制作与连接1. PCB设计:根据电路原理图,使用专业的电路设计软件进行电路板(PCB)设计。

根据需要确定电路板的尺寸、层数和其他特性。

2.制作电路板:使用PCB制作工具,将设计好的电路板制作出来。

多位LED-显示器动态扫描驱动电路设计完整版

多位LED-显示器动态扫描驱动电路设计完整版

《多位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的输出信号。

数据选择器由两片74LS153构成,其功能为四选一数据选择器,接收控制电路的输出信号,分别选择四个输入D0或D1或D2或D3信号传输到LED显示电路,使LED显示不同数字译码驱动电路由一片八选一的数据选择器74LS138组成,它接受控制电路输出的信号同时将自身的输出信号分别连接到4片LED的共阴极控制LED显示器的工作状态.显示电路由一片4511构成,其接收74LS153输出的信号分别使四个LED显示器显示8421BCD码所代表的十进制数。

实验-扫描显示驱动电路

实验-扫描显示驱动电路

实验-扫描显示驱动电路————————————————————————————————作者:————————————————————————————————日期: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.熟悉QuartusⅡ软件应用环境,了解实验流程。

2.编写简单的Verilog代码,并在QuartusⅡ中进行调试和验证,并在EDA6000中下载代码和验证。

3.用扫描方式驱动8x8显示点阵,显示预定的字符”A”。

二、实验原理本实验要实现8x8显示点阵的控制电路,采用扫描方式驱动,分为8条行线,和八条列线,其中列线经反向驱动后接显示点阵。

用一个三位2进制数进行计数,控制扫描的过程,时钟信号有效,计数加一,用case语句实现扫描行列的变换。

当某一列为高电平,此列选通,当相应行为高电平时,相交点的led灯点亮,动态扫描,由于视觉延迟最终显示设定的字符”A”。

三、实验内容1、实现8x8点阵扫描驱动的“ Verilog ”语言设计。

2、编程下载并在实验箱上进行验证四、实验步骤与结果1、新建Verilog工程项目,编写代码并保存至与模块名对应的项目文件夹。

2、编译程序,编译无误后,在【tools】里面选择RTL视图,观察电路结构。

3、将实验箱和PC合理连接起来。

打开EDA6000软件,设置好芯片类型为ACEX1K (EP1K30TC144-3),载入模式11。

4、根据EDA6000界面内管脚对应芯片的实际管脚在QUARTUSⅡ里面设定管脚号并检查无误。

5、将程序下载至FPGA试验箱内,并在EDA6000软件界面内进行验证测试。

程序源代码:module ymsm(CLK,row,col);input CLK; output [7:0]row,col;reg [7:0]row,col;reg [2:0]a;always @(posedge CLK) beginif(a<7) a=a+1;else a=0;case(a)3'b000:begin row=10000000;col=00100000;end3'b001:begin row=01000000;col=01010000;end3'b010:begin row=00100000;col=10001000;end3'b011:begin row=00010000;col=10001000;end3'b100:begin row=00001000;col=11111000;end3'b101:begin row=00000100;col=10001000;end3'b110:begin row=00000010;col=10001000;end3'b111:begin row=00000001;col=10001000;endendcaseendendmodule编译:选择processing---start compilation命令,开始编译。

项目6 扫描显示电路设计

项目6 扫描显示电路设计

项目六扫描显示电路设计班级:09电信姓名:曾珍学号:331.实训目标1)了解EDA-V+系统的使用方法,掌握8位七段数码管显示模块的工作原理。

2)设计标准扫描驱动电路模块。

3)在EDA-V+系统上实现一个两位数码显示秒表。

2.实训步骤1)8位七段数码管显示电路参考代码如下:2)设计一个分频器,使其可以将10MHz时钟输入信号分别分为1KHz和1Hz两路输出信号。

3)设计两位数码显示秒表,将60进制计数器、8位8位七段数码管显示电路和分频器连接起来,构建一个秒表电路。

3.实训连线1)输入接口。

1.1代表清零,启动信号CLR,EN的管脚分别连接开关。

1.2代表计数时钟信号CLK 的管脚同10MHz 时钟源相连。

2)输出接口。

1.3代表扫描显示的驱动信号管脚SCAN2,SCAN1,SCAN0 接实验箱上的SEL0~SEL2,A…G 接8位数码管显示模块的A~G。

4.实训数据1)写出分频器的程序代码。

library ieee;use ieee.std_logic_1164.all;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity fenpinqi isport(clk_in :in std_logic;clk_1kHz :out std_logic;clk_1Hz :out std_logic);end fenpinqi;architecture behav of fenpinqi issignal cnt1k :natural range 0 to 5000;signal cnt1 :natural range 0 to 5000000;signal clk_1kHzr,clk_1Hzr:std_logic:='0';beginprocess(clk_in,clk_1kHzr,clk_1Hzr)beginif clk_in'event and clk_in='1' thenif cnt1k = 4999 thencnt1k<=0;clk_1kHzr<=not clk_1kHzr;elsecnt1k<=cnt1k+1;end if;if cnt1 = 4999999 thencnt1<=0;clk_1Hzr<=not clk_1Hzr;elsecnt1<=cnt1+1;end if;end if;clk_1kHz <=clk_1kHzr;clk_1Hz <=clk_1Hzr;end process;end behav;2)记录用实现的显示秒表电路的原理图。

扫描驱动显示电路设计(设计性实验)

扫描驱动显示电路设计(设计性实验)

实验三扫描驱动显示电路设计(设计性实验)一、实验目的1.了解实验箱中8位七段数码管显示模块的工作原理。

2.熟悉VHDL 硬件描述语言及设计专用数字集成电路的自顶向下的设计思想。

3.掌握利用CPLD/FPGA设计8位七段数码管扫描显示驱动电路的方法。

二、实验设备1.计算机(配置为:P4 CPU 128M内存);2. MAX+plusⅡ开发工具软件;3. EL教学实验箱;4.万用表;5. DS 5022M型双踪数字示波器;三、扫描原理为了减少8位显示信号的接口连接线,实验箱中的数码显示采用扫描显示工作模式。

即8位数码管的七段译码输入(a,b,c,d,e,f,g)是并联在一起的,而每一个数码管是通过一个3位选择sel[2..0]来选定的。

sel与数码管之间是一3-8译码的关系,即sel为“000”时,选中第一个数码管,sel为“111”时,选中第八个数码管。

四、设计任务本实验要求在给定子模块程序的基础上,画出设计原理图。

自行编写顶层模块程序,完成扫描显示驱动电路的设计,实现在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脚。

六、实验报告要求1.给出设计源程序、仿真结果、说明设计思路。

2.改变输入时钟信号的频率,观察实验结果如何改变。

3.字符扫描显示亮度与扫描频率的关系,且让人眼感觉不出闪烁现象的最低扫描频率是多少1、程序:library ieee;use ieee.std_logic_1164.all;entity c4 isport(clk,reset: in std_logic;a,b,c,d,e,f,g: out std_logic;y: out std_logic_vector(1 downto 0));end c4;architecture beha of c4 iscomponent counter16port(clk,clr: in std_logic;count: out std_logic_vector(3 downto 0));end component;component mport(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(1 downto 0);y: out std_logic_vector(1 downto 0));end component;signal cont: std_logic_vector(3 downto 0);signal sel3: std_logic_vector(1 downto 0);begind1:counter16 port map(clk=>clk,clr=>reset,count=>cont);d2:m port map(datain=>cont,a=>a,b=>b,c=>c,d=>d,e=>e,f=>f,g=>g);d3:yima3 port map(x=>cont(1 downto 0),y=>y);end beha;library ieee;use ieee.std_logic_1164.all;entity yima3 isport( x: in std_logic_vector(1 downto 0);y: out std_logic_vector(1 downto 0));end yima3 ;architecture beha of yima3 isbeginy<=x;end beha;library ieee;use ieee.std_logic_1164.all;entity m isport(datain: in std_logic_vector(3 downto 0); a,b,c,d,e,f,g: out std_logic);end m;architecture beha of m 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";--0when "0001"=> dataout<="0110000";--1when "0010"=> dataout<="1101101";--2when "0011"=> dataout<="1111001";--3when "0100"=> dataout<="0110011";--4when "0101"=> dataout<="1011011";--5when 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(1 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;end process;end beha;2、程序编译3、仿真编译及仿真结果。

实验二动态扫描显示电路设计

实验二动态扫描显示电路设计

实验二动态扫描显示电路设计一、设计要求1、设计要求设计一个四位LED数码显示动态扫描控制电路,显示4位十进制数或4字母的单词,要求显示内容可以通过按键切换。

2、硬件环境LP-2900开发装置的LED数码管为共阴显示器,六个显示器的七个段控制a~g及小数点dp分别对应相连,各显示器的共阴极分别由一个3线-8线译码器74138的输出Y0~Y5控制。

译码器的3位输入码分别由FPGA的I/O端口DE3、DE2、DE1控制,如图1所示。

图1 LP-2900开发装置FPGA与LED数码显示器的电路连接3线-8线译码器的3位输入码DE3、DE2、DE1为“000”~“101”时,输出Y0~Y5中有一个为0,FPGA的a~g端口将控制共阴极为0的数码管显示。

比如,当DE3、DE2、DE1为“011”时,Y3=0,数码管C4显示。

二、设计原理分析多位七段显示器的控制分为静态和动态扫描两种方法。

静态驱动方法是将所有显示器的公共端都接有效电平,各位显示器的段控制信号互不相干,分别控制。

这样,n位显示器需要7×n个控制信号(不包括小数点),即需要FPGA的56个I/O口对其进行控制。

动态扫描方法是将所有显示器的各个段控制端(a、b…、g、dp)一一对应连接,而各显示器的公共端COM由位扫描信号分别控制。

这样,n位显示器只需要8+n个控制信号(包括小数点)。

比如,LP-2900开发装置上B区的6个共阴显示器采用了动态扫描驱动方式,6个共阴端C1~C6由通过一个3线-8线译码器分时控制,电路原理如图1所示。

这样FPGA 只需要11个I/O口,其中8个控制段信号、3个输出二进制码(“000”~“101”)控制C1~C6。

1.动态显示扫描控制动态扫描驱动电路中所有的显示器由相同的段信号控制,公共端有效的显示器将显示相同的字符。

所以,要使各显示器显示不同的内容,必须控制它们的公共端分时轮流有效。

每个显示器只在其公共端为有效电平时根据段码信号显示相应的字符,公共端无效时灭显。

EDA 技术:EDA实验3 扫描显示电路设计

EDA 技术:EDA实验3 扫描显示电路设计

下载步骤 2、选择start按钮,如果有错,检查电缆是否 连接正确。
注意: 由于本实验箱没有配置器件,每次重 新上电后必须要重新下载!!!
4、根据连接的引脚进行管脚分配(Assign\pin)
5、重新编译
6、打开实验箱电源,选择tools\programmer 开始 下载程序
下载步骤
1、选择下载文件(后缀为sof的文件,文件名与实体名一致)

开始下载 按钮
选择下载 文件
选择下载 电缆
选择下载 模式
下载文件电缆的选择
选择下载电缆,在Hardware Settings一栏内 选择Add Hardware…后,再选择ByteBlaster MV
选择
计数器
4

显示 4 译码显示 7
(BCD输
4值
出) 百
... 其它5路
全0显示
SelTmp[2..0]
Clk
数码管
Sel[2..0]
扫描
实验步骤
1、用VHDL完成上述功能
2、进行时序仿真
3、打开实验箱,用导线连接相关引脚(连接时关 掉电源)
3、选择器件(EPF10K10LC84-4) (Assign\device)
实验三 扫描显示电路设计
实验要求
1、了解实验系统箱中数码管显示模块 的工作原理,学习使用实验箱。
2、设计显示信号选择及扫描控制电路。 将实验二中的计数值用数码管显示出来。
3、当计数器计数到自己的学号+100后, 计数器停止计数。按复位键后重新计数。
原理框图
Reset En Clk3
4
模1000 个

VHDL扫面显示电路设计报告

VHDL扫面显示电路设计报告

电子科技大学学生姓名:学号:指导教师:一、实验室名称:实验报告二、实验项目名称:扫描显示电路设计三、实验原理:数码显示板上一共有8 个数码管,如果按照传统的数码管驱动方式(静态扫描方式),则需要8 个七段译码器进行驱动,这样既浪费资源,有时电路工作也不可靠。

所以现在最常见的数码管驱动电路已经不用上述的静态扫描方式了,而是采用动态扫描显示的方式,这种方式只需一个译码器就可以实现电路正常、可靠的工作,这样大大节省资源。

动态数码扫描显示方式是利用了人眼的视觉暂留效应,把八个数码管按一定顺序(从左至右或从右至左)进行点亮,当点亮的频率(即扫描频率)不大时,我们看到的是数码管一个个的点亮,然而,当点亮频率足够大时,我们看到的不再是一个一个的点亮,而是全部同时显示(点亮),与传统方式得到的视觉效果完全一样。

因此我们只要给数码管这样一个扫描频率,那么就可以实现两个以上的数码管同时点亮。

而这个频率我们可以通过一个计数器来产生,只要计数频率足够大,就可以实现我们的要求。

事实上,因为数码管点亮不是瞬间就可以的,它也需要一定的时间,该时间与数码管的选择有关系。

为了折中这一对矛盾,实验中一般可将计数频率选择在100Hz左右肯定可以满足上述两个要求。

动态数码扫描显示的硬件电路设计要求是:对共阴数码管,将其公共端阴极接三八译码器的输出,三八译码器的输入为位选信号输入;将8 个(或更多)的数码管的相同段接在一起,然后引出。

原理图如下:四、实验目的:1、进一步熟悉用VHDL进行EDA设计方法;2、本实验与实验二的不同之处在八个数码管都要稳定地显示;3、进一步了解EDA实验箱的基本功能;五、实验内容:1、用VHDL设计一个扫描显示电路,使得八个数码管能同时显示(要求显示的值为自己的学号+100,如学号为1,则数码管显示101,多出的数码管全显示0),然后编译、仿真;2、下载该程序,验证程序是否正确。

3、请事先准备一个软盘或优盘,本实验程序需要保存,后面实验需要用到。

扫描驱动显示电路设计 报告(完整版)

扫描驱动显示电路设计  报告(完整版)

实验四扫描驱动显示电路设计(设计性实验)一、实验目的1.了解实验箱中 8 位七段数码管显示模块的工作原理。

2.熟悉 VHDL 硬件描述语言及设计专用数字集成电路的自顶向下的设计思想。

3.掌握利用 CPLD/FPGA设计 8 位七段数码管扫描显示驱动电路的方法。

二、实验设备1.计算机(配置为:P4 CPU 128M 内存);2. MAX+plusⅡ开发工具软件;3.EDA 实验箱(主芯片是ALTERA EPM7128SLC84-6);三、扫描原理为了减少8位显示信号的接口连接线,实验箱中的数码显示采用扫描显示工作模式。

即 8 位数码管的七段译码输入(a,b,c,d,e,f,g)是并联在一起的,而每一个数码管是通过一个3 位选择 sel[2..0]来选定的。

sel 与数码管之间是一 3-8 译码的关系,即sel为“000”时,选中第一个数码管,sel 为“111”时,选中第八个数码管。

四、设计任务本实验要求在给定子模块程序的基础上,画出设计原理图。

自行编写顶层模块程序,完成扫描显示驱动电路的设计,实现在 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脚。

六、程序清单:--顶层程序:library ieee;use ieee.std_logic_1164.all;entity disp 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 disp;architecture beha of disp 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;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;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;--3-8译码器实现数码管选择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;输出仿真波形图:disp.vhd波形:counter16.vhd波形:decdisp.vhd波形:yima3.vhd波形:七、硬件实验1、对芯片进行编程。

动态扫描显示电路设计

动态扫描显示电路设计

实验七、动态扫描显示电路设计(1)实验目的:学习动态扫描显示电路的设计。

(2)实验原理:图1是8位数码扫描显示电路,其中每个数码管的8个段(A、B、C、D、E、F、G、DP)都分别连在一起,8个数码管分别由3个选通信号LI0、LI1、LI2经过译码器得到的8个信号来选择。

当LI2LI1LI0=”000”时L1被选通显示数据,其余的关闭;当LI2LI1LI0=”001”时L2被选通显示数据,其余的关闭。

通过LI2LI1LI0的动态变化到达多位数字的显示。

图1 8位数码扫描显示电路(3)实验内容:在实验三模为60的8421BCD码加1计数器的基础上,采用动态扫描显示计数结果。

(4)附加题:用6个数码管显示数字钟。

(5)思考题:动态扫描显示的频率大致范围是多少?library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity bcd60 isport(clk,rst_n:in std_logic;ql,qh:out std_logic_vector(3 downto 0);cout: out std_logic;we1,we2: out std_logic :='0';LED7S :out std_logic_vector(7 downto 0));end;architecture rtl of bcd60 issignal cnt1hz :std_logic_vector(24 downto 0);signal clk1hz :std_logic;signal cnt20hz: std_logic_vector(24 downto 0);signal clk20hz: std_logic;signal qlt,qht:std_logic_vector(3 downto 0);signal flag: std_logic :='0';beginprocess(rst_n,clk)beginif(rst_n='0')thencnt1hz <=(others=>'0');clk1hz <='0';elsif (clk'event and clk='1')thenif (cnt1hz=9999999)then --仿真时用9,用开发板时用9999999cnt1hz<=(others=>'0');clk1hz<=not clk1hz;else cnt1hz<=cnt1hz+1;end if;end if;end process; -- 分频得到计数时钟process(rst_n,clk)beginif(rst_n='0')thencnt20hz <= (others=>'0');clk20hz <= '0';elsif (clk'event and clk='1')thenif(cnt20hz=99999) thencnt20hz <= (others=>'0');clk20hz <= not clk20hz;else cnt20hz <= cnt20hz +1;end if;end if;end process; ---分频得到扫描时钟200hzprocess(clk20hz)beginif clk20hz 'event and clk20hz='1' thenflag <= not flag;end if;end process; --- 扫描进程process(rst_n,clk1hz)beginif(rst_n='0')thenqlt<="0000";qht<="0000";elsif(clk1hz'event and clk1hz='1')thenif qlt="1001"thenif qht="0101"thenqlt<="0000";qht<="0000";elseqlt<="0000";qht<=qht+1;end if;elseqlt<=qlt+1;end if;end if;end process; --- 模为60的十进制计数器process(flag)beginif (flag = '1') thenwe1<='1';we2<='0';case qlt iswhen "0000" => LED7S <="00111111"; --0when "0001" => LED7S <="00000110"; --1when "0010" => LED7S <="01011011"; --2when "0011" => LED7S <="01001111"; --3when "0100" => LED7S <="01100110"; --4when "0101" => LED7S <="01101101"; --5when "0110" => LED7S <="01111101"; --6when "0111" => LED7S <="00000111"; --7when "1000" => LED7S <="01111111"; --8when "1001" => LED7S <="01101111"; --9WHEN OTHERS => NULL;end case;elsewe2<='1';we1<='0';case qht iswhen "0000" => LED7S <="00111111"; --0when "0001" => LED7S <="00000110"; --1when "0010" => LED7S <="01011011"; --2when "0011" => LED7S <="01001111"; --3when "0100" => LED7S <="01100110"; --4when "0101" => LED7S <="01101101"; --5-- when "0110" => LED7S <="01111101"; --6-- when "0111" => LED7S <="00000111"; --7-- when "1000" => LED7S <="01111111"; --8-- when "1001" => LED7S <="01101111"; --9WHEN OTHERS => NULL;end case;end if;end process; --数码管显示ql<=qlt;qh<=qht;cout<='1'when qlt=9 and qht=5 else '0';end;。

实验五显示驱动电路设计(可编程实验)

实验五显示驱动电路设计(可编程实验)

实验五显示驱动电路设计一、实验目的1、了解八段数码管的工作原理。

2、设计一个数码管驱动电路,现实0~F之间的数字,以备以后调用。

二、实验内容(1)七段数码管电路的设计要求:a.写出实验内容的真值表及逻辑表达式。

b.编写出实现电路的VHDL语言程序。

c.用MAX+plus2进行仿真。

d.将编好的程序下载到CPLD芯片里,用发光二极管观测结果。

(2)设计一个两个2位二进制相乘电路,结果用数码管显示要求:a.写出实验内容的真值表及逻辑表达式。

b.编写出实现电路的VHDL语言程序。

c.用MAX+plus2进行仿真。

d.将编好的程序下载到CPLD芯片里,观测结果。

三、实验逻辑功能分析及预习情况(2)设计一个两个2位二进制相乘电路,结果用数码管显示1四、实验过程(1)启动MAX+plusII软件;(2)创建一个新工程;1)七段数码管电路的设计○1启动文本编译器;○2编译VHDL语言程序为Library ieee;Use ieee.std_logic_1164.all;Entity qiduanshu isPort(A:in std_logic_vector(3 downto 0);Y:out std_logic_vector(6 downto 0));End;Architecture rel of qiduanshu isBeginprocess(A)Begincase A iswhen "0000"=>y<="1111110";when "0001"=>y<="0110000";when "0010"=>y<="1101101";when "0011"=>y<="1111001";when "0100"=>y<="0110011";when "0101"=>y<="1011011";when "0110"=>y<="1011111";when "0111"=>y<="1110000";when "1000"=>y<="1111111";when "1001"=>y<="1111011";when "1010"=>y<="1110111";when "1011"=>y<="0011111";when "1100"=>y<="1001110";when "1101"=>y<="0111101";when "1110"=>y<="1001111";when "1111"=>y<="1000111";when others=>y<="ZZZZ";end case;end process;End;○3启动波形图编译器;○4时间分析图○5利用真值表验证所设电路的逻辑功能;○6经过验证保存仿真原理图。

动态扫描显示电路实验的设计与实现

动态扫描显示电路实验的设计与实现

从无到有:动态扫描显示电路实验的设计与实现动态扫描显示电路是一种常见的电子数字显示技术,其原理是通过快速切换LED单元,从而在观察者眼中呈现出一组数字、字母或符号。

对于初学者而言,常常难以理解其设计和实现过程。

下面将介绍如何从无到有,完成一款具有生动效果的动态扫描显示电路。

一、材料准备1. 数字电路芯片:CD4017B、CD4060B或CD4059B2. LED单元,数量视设计而定。

建议使用3mm或5mm大小的LED。

3. 电源电容:10uF、100uF或470uF电容器。

建议使用50V及以上的规格。

4. 电阻器:220R、1k或10k电阻器,数量视设计而定。

5. 面包板或印制电路板。

6. 其他辅助器件:按钮、开关、电源头等组件。

二、电路设计1. 先了解CD4017B芯片的工作原理。

该芯片是一种低功耗CMOS数码集成电路,具有10位二进制计数器和十个输出端口。

2. 将LED单元连接到芯片对应的输出端口上。

根据需要,可在输出端口前串联电阻器进行电流调节,提高LED的寿命。

3. 通过连接按钮或开关控制器,将CD4017B芯片与CD4060B或CD4059B锁相环组合起来。

锁相环负责调节输出频率,使得LED单元在显示时呈现出连续、动态的效果。

4. 完成电路板的设计和布局。

对于初学者而言,建议使用面包板进行调试,待电路稳定后再将其焊接至印刷电路板上。

三、实验过程1. 将准备好的材料按照电路设计图进行连接。

2. 将电路接入电源头。

确定连接正确、正常工作。

3. 通过按下按钮或开关,观察电路中各个LED单元的状态变化。

调整输出频率使LED单元显示更加流畅。

4. 对电路进行优化,并记录其中的问题、瓶颈及解决方案。

5. 可以在此基础上继续扩展,如添加蜂鸣器、数字显示屏等元件,并将其整合到一起,构建出完整的数字电路系统。

本实验旨在帮助初学者掌握基本的数字电路原理,并能够熟练地设计、调试出具有生动、实用的动态扫描显示电路。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验三扫描驱动显示电路设计(设计性实验)
一、实验目的
1.了解实验箱中8位七段数码管显示模块的工作原理。

2.熟悉VHDL 硬件描述语言及设计专用数字集成电路的自顶向下的设计思想。

3.掌握利用CPLD/FPGA设计8位七段数码管扫描显示驱动电路的方法。

二、实验设备
1.计算机(配置为:P4 CPU 128M内存);
2. MAX+plusⅡ开发工具软件;
3. EL教学实验箱;
4.万用表;
5. DS 5022M型双踪数字示波器;
三、扫描原理
为了减少8位显示信号的接口连接线,实验箱中的数码显示采用扫描显示工作模式。

即8位数码管的七段译码输入(a,b,c,d,e,f,g)是并联在一起的,而每一个数码管是通过一个3位选择sel[2..0]来选定的。

sel与数码管之间是一3-8译码的关系,即sel为“000”时,选中第一个数码管,sel为“111”时,选中第八个数码管。

四、设计任务
本实验要求在给定子模块程序的基础上,画出设计原理图。

自行编写顶层模块程序,完成扫描显示驱动电路的设计,实现在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脚。

六、实验报告要求
1.给出设计源程序、仿真结果、说明设计思路。

2.改变输入时钟信号的频率,观察实验结果如何改变。

3.字符扫描显示亮度与扫描频率的关系,且让人眼感觉不出闪烁现象的最低扫描频率是多少
1、程序:
library ieee;
use ieee.std_logic_1164.all;
entity c4 is
port(clk,reset: in std_logic;
a,b,c,d,e,f,g: out std_logic;
y: out std_logic_vector(1 downto 0));
end c4;
architecture beha of c4 is
component counter16
port(clk,clr: in std_logic;
count: out std_logic_vector(3 downto 0));
end component;
component m
port(datain: in std_logic_vector(3 downto 0);
a,b,c,d,e,f,g: out std_logic);
end component;
component yima3
port(x: in std_logic_vector(1 downto 0);
y: out std_logic_vector(1 downto 0));
end component;
signal cont: std_logic_vector(3 downto 0);
signal sel3: std_logic_vector(1 downto 0);
begin
d1:counter16 port map(clk=>clk,clr=>reset,count=>cont);
d2:m port map(datain=>cont,a=>a,b=>b,c=>c,d=>d,e=>e,f=>f,g=>g);
d3:yima3 port map(x=>cont(1 downto 0),y=>y);
end beha;
library ieee;
use ieee.std_logic_1164.all;
entity yima3 is
port( x: in std_logic_vector(1 downto 0);
y: out std_logic_vector(1 downto 0));
end yima3 ;
architecture beha of yima3 is
begin
y<=x;
end beha;
library ieee;
use ieee.std_logic_1164.all;
entity m is
port(datain: in std_logic_vector(3 downto 0); a,b,c,d,e,f,g: out std_logic);
end m;
architecture beha of m is
signal dataout: std_logic_vector(6 downto 0); begin
a<=dataout(6);
b<=dataout(5);
c<=dataout(4);
d<=dataout(3);
e<=dataout(2);
f<=dataout(1);
g<=dataout(0);
process(datain)
begin
case datain is
when "0000"=> dataout<="1111110";--0
when "0001"=> dataout<="0110000";--1
when "0010"=> dataout<="1101101";--2
when "0011"=> dataout<="1111001";--3
when "0100"=> dataout<="0110011";--4
when "0101"=> dataout<="1011011";--5
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 is
port(clk,clr: in std_logic;
count: out std_logic_vector(3 downto 0);
sel: out std_logic_vector(1 downto 0)); end counter16;
architecture beha of counter16 is
signal cnt: std_logic_vector(3 downto 0);
begin
process(clk,clr)
begin
if clr='0'then
cnt<="0000";
elsif clk='1' and clk'event then
cnt<=cnt+'1';
end if;
count<=cnt;
end process;
end beha;
2、程序编译
3、仿真编译及仿真结果。

相关文档
最新文档