组合电路——7段数码管显示驱动电路设计报告
计算机组成原理实验报告

实验一:数字逻辑——交通灯系统设计子实验1:7 段数码管驱动电路设计(1)理解利用真值表的方式设计电路的原理;(2)利用Logisim 真值表自动生成电路的功能,设计一个 7 段数码管显示驱动。
二、实验方案设计7 段数码管显示驱动的设计方案:(1)输入:4 位二进制(2)输出:7 段数码管 7 个输出控制信号(3)电路引脚:(4)实现功能:利用 7 段数码管显示 4 位二进制的 16 进制值(5)设计方法:由于该实验若直接进行硬件设计会比较复杂,而7 段数码管显示的真值表较容易掌握,所以我们选择由真值表自动生成电路的方法完成该实验。
先分析设计 7 段数码管显示驱动的真值表,再利用Logisim 中的“分析组合逻辑电路”功能,将真值表填入,自动生成电路。
(6)真值表的设计:由于是 4输入 7输出,真值表共有 16 行。
7输出对应 7个引脚,所以需要依次对照LED 灯的引脚顺序进行设计,如下图所示(注意LED 的引脚顺序):三、实验步骤(1)在实验平台下载实验框架文件RGLED.circ;(2)在Logisim 中打开RGLED.circ 文件,选择数码管驱动子电路;(3)点击“工程”中的“分析组合逻辑电路”功能,先构建4输入和7输出,再在“真值表”中,将已设计好的真值表的所有数值仔细对照着填入表格中,确认无误后点击“生成电路”,自动生成的电路如下图所示:(4)将子电路封装为如下形式:(5)进行电路测试:·自动测试在数码管驱动测试子电路中进行测试;·平台评测自动测试结果满足实验要求后,再利用记事本打开RGLED.circ 文件,将所有文字信息复制粘贴到Educoder 平台代码区域,点击评测按钮进行测试。
四、实验结果测试与分析(1)自动测试的部分结果如下:(2)平台测试结果如下:综上,本实验测试结果为通过,无故障显示。
本实验的关键点在于:在设计时需要格外注重LED 灯的引脚顺序,保证0-9 数字显示的正确性,设计出正确的真值表。
七段数码管显示实验报告

七段数码管显示实验报告实验目的:本实验的目的是通过控制7段数码管的亮灭状态来显示不同的数字和字母。
实验原理:7段数码管常用于显示数字和字母,每个数码管由7个LED灯组成,分别表示A、B、C、D、E、F、G等7个段。
通过控制这些LED灯的亮灭状态,就可以显示不同的数字和字母。
在实际应用中,通常需要使用一个译码器来根据输入的数字或字母输出相应的控制信号。
常用的译码器有7447、DM9368等。
这些译码器通常都是BCD码到7段数码管的译码器。
在本实验中,我们将使用7447译码器来控制7段数码管的亮灭状态。
7447译码器具有4个输入线和7个输出线,每个输入线上的BCD码可以转换成相应的控制信号,用于控制数码管的7个LED 灯。
实验材料:1.7段数码管2.7447译码器3.电路板4.电压源5.连接线实验步骤:1.将7447译码器插入电路板上相应的插槽中,并将数码管连接到电路板上。
2.将电压源连接到电路板上,并调节电压和电流值。
3.根据所需显示的数字或字母,设置相应的BCD码输入信号。
4.打开电源,观察数码管是否能够正确显示。
实验结果:通过本实验,我们可以成功控制7段数码管的亮灭状态,实现了数字和字母的显示。
同时,我们也了解了7447译码器的原理和使用方法。
实验小结:本实验是电子技术的基础实验之一,通过实验我们深入了解了7段数码管和7447译码器的原理和应用,同时也锻炼了我们的动手能力和实验技能。
在实际应用中,7段数码管和译码器常常被用于数字显示、计数器、时钟、温度计等电子设备中,具有广泛的应用前景。
七段数码管设计电路

EDA基础及应用实验项目报告项目题目:七段数码管显示电路设计姓名:胡小琴院系:电子信息工程学院专业:电子信息工程(对口高职)学号: 201315294127指导教师:徐正坤综合成绩:完成时间: 2015年5月22日一、项目实验内容摘要1、设计一个共阴7段数码管控制接口,要求:在时钟信号的控制下,使8位数码管动态刷新显示0—9。
2、设计一个基本功能十进制计数器,实现十进制计数器输出的动态显示。
二、项目实验源代码程序1LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY countbasic ISPORT(CLK:IN STD_LOGIC;DOUT:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);COUT:OUT STD_LOGIC);END countbasic ;ARCHITECTURE behav OF countbasic ISBEGINPROCESS(CLK)V ARIABLE Q:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINIF CLK'EVENT AND CLK='1' THENIF Q<9 THEN Q:=Q+1;ELSE Q:=(OTHERS=>'0');END IF;END IF;IF Q="1001" THEN COUT<='1';ELSE COUT<='0';END IF;DOUT<=Q;END PROCESS;END behav;程序2 ENTITY countbasic_vhd_tst ISEND countbasic_vhd_tst;ARCHITECTURE countbasic_arch OF countbasic_vhd_tst IS -- constants-- signalsSIGNAL CLK : STD_LOGIC;SIGNAL COUT : STD_LOGIC;SIGNAL DOUT : STD_LOGIC_VECTOR(3 DOWNTO 0); constant clk_cycle : time := 100 ns;COMPONENT countbasicPORT (CLK : IN STD_LOGIC;COUT : OUT STD_LOGIC;DOUT : OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END COMPONENT;BEGINi1 : countbasicPORT MAP (-- list connections between master ports and signalsCLK => CLK,COUT => COUT,DOUT => DOUT);processbeginclk <= '1';wait for clk_cycle;clk <= '0';wait for clk_cycle;end process;END countbasic_arch;程序3LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY Seg7_Dsp isPORT(CP : IN STD_LOGIC; -- CLOCKSEGOUT : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); -- SEG7 Display O/PSELOUT : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); -- Select SEG7 O/PNUMOUT : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); -- Number Display Signal OUTNUM : IN STD_LOGIC_VECTOR( 3 DOWNTO 0); -- Number Display Signal INM : OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END Seg7_Dsp;ARCHITECTURE a OF Seg7_Dsp ISSIGNAL SEG : STD_LOGIC_VECTOR( 7 DOWNTO 0); -- SEG7 Display Signal SIGNAL SEL : STD_LOGIC_VECTOR( 7 DOWNTO 0); -- Select SEG7 Signal BEGINConnection : BlockBeginM <= "0010";SELOUT <= SEL; -- Seg7 Disp Selection SEGOUT(7 DOWNTO 0) <= SEG; -- Seven Segment Display NUMOUT <= NUM;End Block Connection;Free_Counter : Block -- 计数器-- 产生扫描信号Signal Q : STD_LOGIC_VECTOR(24 DOWNTO 0);Signal S : STD_LOGIC_VECTOR(2 DOWNTO 0);BeginPROCESS (CP) -- 计数器计数BeginIF CP'Event AND CP='1' thenQ <= Q+1;END IF;END PROCESS;S <= Q(15 DOWNTO 13); --about 300 Hz--扫描信号SEL <= "11111110" WHEN S=0 ELSE"11111101" WHEN S=1 ELSE"11111011" WHEN S=2 ELSE"11110111" WHEN S=3 ELSE"11101111" WHEN S=4 ELSE"11011111" WHEN S=5 ELSE"10111111" WHEN S=6 ELSE"01111111" WHEN S=7 ELSE"11111111";End Block Free_Counter;SEVEN_SEGMENT : Block -- Binary Code -> Segment 7 CodeBegin--SEG <= "00111111"WHEN NUM = 0 ELSE"00000110"WHEN NUM = 1 ELSE"01011011"WHEN NUM = 2 ELSE"01001111"WHEN NUM = 3 ELSE"01100110"WHEN NUM = 4 ELSE"01101101"WHEN NUM = 5 ELSE"01111101"WHEN NUM = 6 ELSE"00000111"WHEN NUM = 7 ELSE"01111111"WHEN NUM = 8 ELSE"01101111"WHEN NUM = 9 ELSE"01110111"WHEN NUM = 10 ELSE"01111100"WHEN NUM = 11 ELSE"00111001"WHEN NUM = 12 ELSE"01011110"WHEN NUM = 13 ELSE"01111001"WHEN NUM = 14 ELSE"01110001"WHEN NUM = 15 ELSE"00000000";End Block SEVEN_SEGMENT;END a;三、项目实验工具软件项目试验工具:EL-SOPC400试验箱、主芯片:EP4CE22F17C8、计算机与QUARTUS Ⅱ软件四、实验步骤1、建立项目文件以及VHDL文件同前几个实验一样2、将前两个程序按照一点的步骤设置然后进行仿真3、将三个实验添加到项目中来并设置为顶层文件4、建立顶层图,选择“File→New→Block Diorgram Schematic File”按OK 就可以建立一个顶层图,我们在把他进行保存,名字为默认的文件名,并将“Add file to current project”选项选中,让他加入到工程中去。
七段数码管驱动电路设计

七段数码管驱动电路设计说起这七段数码管驱动电路设计,咱们得先来聊聊它是个啥宝贝。
想象一下,那些电子钟、计算器上闪烁的数字,还有咱们游戏机上计分用的那些酷炫数字,它们背后可都离不开这七段数码管的默默付出。
今儿个,咱们就来手把手,用大白话聊聊怎么给这七段数码管搭个温馨的小窝,让它能在咱的电路世界里大放异彩。
一、初探七段数码管首先,咱们得认识这位主角——七段数码管。
它呀,就像是个简约版的霓虹灯,由七条线段(a到g)和一个小数点组成,通过不同的组合,能显示出0到9这十个数字,外加一些简单的字符。
想象一下,这七条线段就像是小朋友手里的画笔,一笔一划地勾勒出数字的模样,多有趣!1.1 挑选合适的数码管挑数码管,得看看它是共阳极的还是共阴极的。
这就像选房子,有的房子阳台朝南采光好(共阳极),有的则朝北凉爽些(共阴极)。
选对了,后续设计才省心。
1.2 理解工作原理数码管工作的秘密在于电流。
咱们通过控制哪些线段通电,哪些不通电,来“画”出不同的数字。
这就像是在玩灯光秀,开灯关灯之间,数字就活灵活现地出现了。
二、设计驱动电路接下来,就是给数码管找个好搭档——驱动电路。
这就像是给数码管找了个司机,告诉它啥时候该亮,啥时候该暗。
2.1 选择驱动芯片市面上有好多驱动芯片,比如74HC595、TM1637等,它们就像是不同类型的汽车,有的省油(功耗低),有的跑得快(驱动能力强)。
咱们得根据实际需求,挑个最合适的。
2.2 搭建电路框架搭电路就像搭积木,把电源、驱动芯片、数码管还有必要的电阻电容按规矩摆好。
电源是心脏,驱动芯片是大脑,数码管是显示屏,电阻电容则是调节器,保证电路稳定运行。
2.3 编程控制电路搭好了,还得给它编个程序,告诉它怎么工作。
这就像是在教小朋友跳舞,一步步指导它怎么迈步、转身。
编程时,咱们得设定好每个数字对应的线段组合,让数码管能按咱们的意愿显示。
三、调试与优化电路搭完,程序编好,接下来就是见证奇迹的时刻了。
七段LED数码管显示电路设计(精)

实验七七段LED数码管显示电路设计一、实验目的1.学习EDA软件的基本操作2.学习使用原理图进行设计输入3.初步掌握软件输入、编译、仿真和编程的过程4.学习实验开发系统的使用方法二、实验说明本实验通过七段LED数码管显示电路的设计,初步掌握EDA 设计方法中的设计输入、编译、综合、仿真和编程的基本过程。
七段LED数码管显示电路有四个数据输入端(D0-D3),七个数据输出端(A-G。
三、实验要求1、完成七段LED数码管显示电路的原理图输入并进行编译2、对设计的电路经行仿真验证3、编程下载并在实验开发系统上验证设计结果四、实验步骤1、新建工程2、新建Verilog HDL文件3、在文本输入窗口键入代码4、保存HDL文件5、编译文件直至没有错误6、新建波形文件7、添加观察信号8、添加输入激励,保存波形文件9、功能仿真七段LED数码管显示电路真值表:输入D3D2D1D0G F E D C B A 000000111111 100010000110 200101011011 300111001111 401001100110 501011101101 601101111101 701110001111 810001111111910011101111 A10101110111 B10111111100 C11001111001 D110111011110 E11101111001 F11111110001五、电路原理图啊Verilog代码描述:module qiduan(data_in,data_out;input [3:0]data_in;output [6:0]data_out;reg [6:0]data_out;always @(data_inbegincasex(data_in4'b0000:data_out<=7'b0111111;4'b0001:data_out<=7'b0000110; 4'b0010:data_out<=7'b1011011; 4'b0011:data_out<=7'b1001111; 4'b0100:data_out<=7'b1100110; 4'b0101:data_out<=7'b1101101; 4'b0110:data_out<=7'b1111100; 4'b0111:data_out<=7'b0000111; 4'b1000:data_out<=7'b1111111; 4'b1001:data_out<=7'b1100111; 4'b1010:data_out<=7'b1110111; 4'b1011:data_out<=7'b1111100; 4'b1100:data_out<=7'b0111001; 4'b1101:data_out<=7'b1011110; 4'b1110:data_out<=7'b1111001; 4'b1111:data_out<=7'b1110001; default:data_out<=7'b0000000; endcaseendendmodule仿真波形:六、实验体会七段LED数码管显示电路是常用的数码管之一,它有四个数据输入端(D0-D3),七个数据输出端(A-G。
七段数码管驱动实验报告

班级_08网络__ 学号20080611052______ 姓名_袁晓洋__七段数码管驱动实验[实验目的]深入理解单片机IO口编程原理掌握七段数码管的原理和驱动方法掌握7段数码显示编码的方法[实验内容]采用单片机的IO驱动共阳极七段数码管,采用灌电流的方式使对应的LED 发光,并采用代码延时的方式实现七段数码管循环显示从0-9的数字,数字变化的间隔大约为1秒钟。
[实验步骤]在此填写在proteus中的操作步骤,并附绘制的电路图在此填写keil C51代码并附详细注释这是一个共阳极七段数码管将端口接至单片机P0 在共阳极接一个电源!及可实现;#include <reg51.h> //添加头文件#define SEG P0 //定义七段数码管LED连接P0Char code TAB[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x83,0xf8,0x80,0x98};//定义数字数组 0--9void delay(int); //声明delay函数main() //主函数{unsigned char i;while(1) 不停地循环for(i=0;i<10;i++){SEG=TAB[i]; 显示数字delay(1000); 延时1秒}}void delay(int x) //延时X*1ms{int i,j;for(i=0;i<x;i++)for(j=0;j<120;j++);}[实验总结]总结试验中遇到的问题和问题的解决方法。
刚开始接触单片机和数码管对电路图和代码不明白,不知道什么是共阳极和共阴极,有什么区别,后来通过反复的看代码,看书和老师的指导对其进行了了解,掌握!。
实验四 LED数码管显示实验报告

实验名称 LED数码管显示实验指导教师曹丹华专业班级光电1202班姓名陈敬人学号联系电话一、任务要求实验目的:理解LED七段数码管的显示控制原理,掌握数码管与MCU的接口技术,能够编写数码管显示驱动程序;熟悉接口程序调试方法。
实验内容:1.基础部分:利用C8051F310单片机控制数码管显示器。
利用末位数码管循环显示数字0-F,显示切换频率为1Hz。
2.提高部分:在数码管上显示0→199计数,计数间隔为0.5秒。
二、设计思路1.基础部分C8051F310单片机片上晶振为24.5MHz,采用8分频后为3.0625MHz ,输入时钟信号为48个机器周期,T1采用定时器工作方式1,单次定时最长可达1.027s,可以实现1s定时要求。
定时采用软件查询工作方式,利用JNB TF0, HERE实现。
置P0.6和P0.7端口为0,位选信号选定末位数码管。
通过MOVC A, @A+DPTR指令,利用顺序查表法取出显示段码数据。
寄存器R0自增1,并赋给A以取出下一个显示段码数据。
为减短代码长度,利用CJNE指令实现循环结构。
当寄存器R0增至0FH后,跳转至开头,重新开始下一轮显示。
2.提高部分定时方式及查表方式同基础部分,由于要实现三个数码管同时显示,因此采用动态扫描显示法。
三、资源分配1.基础部分P0.6: 位选信号端口P0.7:位选信号端口P1:输出段码数据R0:存放显示数据DPTR:指向段码数据表首 2.提高部分P0.6:位选信号端口P0.7:位选信号端口R0:存放个位显示数据 R5:存放十位显示数据 R6:存放百位显示数据 P1:输出段码数据DPTR: 指向段码数据表首四、流程图1.基础部分2.提高部分五、源代码(含文件头说明、语句行注释)1.基础部分;******************基础部分源代码***************************;Filename: test.asm;Decription: 末位数码管循环显示数字0-F,显示切换频率为1Hz。
实验报告2--7段数码管显示实验

SPI主机实验——7段数码显示一、实验目的1、通过本实验进一步掌握对ARM7.0软件和EasyJTAG仿真器的使用;2、进一步熟悉EasyARM2131开发板硬件结构,掌握各引脚功能和接线;3、掌握SPI主机实验,熟悉该实验程序,并能作出简单的修改并实现其功能;4、在SPI实验中,通过改变实验程序,实现7段数码管和流水灯同时运行的功能。
二、实验仪器装有ADS1.2及EasyJTAG仿真器的电脑一台;ARM7开发板一块。
三、实验原理图4.61 SPI接口控制74HC595图中已经将最高位输出(SQH)连线到LPC2131的SPI接口的MISO0,可用来读回74HC595移位输出的数据。
下图是8路LED控制电路:该实验演示在7段数码管上显示一些字符,字符的字模表存于一数组中,流程图如下图4.62所示。
图4.62 LED数码管显示实验流程图1、特性2、结构SPI总线配置及数据传输3、SPI外设描述4、基本操作5主机操作四、实验内容与结果1、实验程序如下#include "config.h"#define HC595_CS (1 << 29) // P0.29口为74HC595的片选const uint32 LEDS8 = (0xFF << 18); // P1[25:18]控制LED8~LED1,低电平点亮/************************************************************************ ******************************** 函数名称:DelayNS()** 函数功能:长软件延时** 入口参数:dly 延时参数,值越大,延时越久** 出口参数:无************************************************************************* *******************************/void DelayNS(uint32 dly){uint32 i;for(; dly>0; dly--)for(i=0; i<50000; i++);}const uint32 LED_TBL[] = {0x00, 0xFF, // 全部熄灭后,再全部点亮0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, // 依次逐个点亮0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F, 0xFF, // 依次逐个叠加0xFF, 0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x01, // 依次逐个递减0x81, 0x42, 0x24, 0x18, 0x18, 0x24, 0x42, 0x81, // 两个靠拢后分开0x81, 0xC3, 0xE7, 0xFF, 0xFF, 0xE7, 0xC3, 0x81 // 从两边叠加后递减};/********************************************************************************************************** 函数名称:MSPI_Init()** 函数功能:初始化SPI接口,设置为主机。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一、组合电路——7段数码管显示驱动电路设计
一、实验目的
了解EDA实验箱7位八段数码管显示模块的工作原理,设计标准扫描驱动电路模块,以备后面实验用。
二、硬件要求
主芯片为Cyclone V E,型号为EP4CE22F17C8,7位八段数码管显示器,四位拨码开关。
三、实验内容
用四位拨码开关产生8421BCD码,用CPLD分别产生7段数码管扫描驱动电路,然后进行仿真,观察波形,正确后编程下载实验测试。
四、实验原理
1、7
2、
动信号a,b,c,d,e,f,g。
通过调节四位拨码开关的状态,数码管应显示与之对应的字符。
五、实验连线
输入:将芯片管角a0~a3分别接4个拨码开关;
输出:将芯片管角led7s0~7分别接到数码管7段驱动信号a、b、c、d、e、f、g上。
六、实验源程序:decl7s.vhd
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;
七、波形仿真结果。