组合电路——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数码管显示电路设计(精)

实验七七段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数码管显示实验报告

实验名称 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段数码管显示实验

实验报告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接口,设置为主机。

八位七段数码管动态显示电路设计

八位七段数码管动态显示电路设计

八位七段数码管动态显示电路的设计一七段显示器介绍七段显示器,在许多产品或场合上经常可见。

其内部结构是由八个发光二极管所组成,为七个笔画与一个小数点,依顺时针方向为A、B、C、D、E、F、G与DP等八组发光二极管之排列,可用以显示0~9数字及英文数A、b、C、d、E、F。

目前常用的七段显示器通常附有小数点,如此使其得以显示阿拉伯数之小数点部份。

七段显示器的脚位和线路图如下图4.1所示( 其第一支接脚位于俯视图之左上角)。

图4.1、七段显示器俯视图由于发光二极管只有在顺向偏压的时候才会发光。

因此,七段显示器依其结构不同的应用需求,区分为低电位动作与高电位动作的两种型态的组件,另一种常见的说法则是共阳极( 低电位动作)与共阴极( 高电位动作)七段显示器,如下图4.2所示。

( 共阳极) ( 共阴极)图4.2、共阳极(低电位动作)与共阴极(高电位动作)要如何使七段显示器发光呢?对于共阴极规格的七段显示器来说,必须使用“ Sink Current ”方式,亦即是共同接脚COM为VCC,并由Cyclone II FPGA使接脚成为高电位,进而使外部电源将流经七段显示器,再流入Cyclone II FPGA的一种方式本实验平台之七段显示器模块接线图如下图4.5所示。

此平台配置了八组共阳极之七段显示器,亦即是每一组七段显示器之COM接脚,均接连至VCC电源。

而每一段发光二极管,其脚位亦均与Cyclone II FPGA接连。

四位一体的七段数码管在单个静态数码管的基础上加入了用于选择哪一位数码管的位选信号端口。

八个数码管的a、b、c、d、e、f、g、h、dp都连在了一起,8个数码管分别由各自的位选信号来控制,被选通的数码管显示数据,其余关闭。

图4.5、七段显示器模块接线图七段显示器之常见应用如下可作为与数值显示相关之设计。

⏹电子时钟应用显示⏹倒数定时器⏹秒表⏹计数器、定时器⏹算数运算之数值显示器二七段显示器显示原理七段显示器可用来显示单一的十进制或十六进制的数字,它是由八个发光二极管所构成的( 每一个二极管依位置不同而赋予不同的名称,请参见图4.1 ) 。

led数码显示实验报告

led数码显示实验报告

led数码显示实验报告LED数码显示实验报告引言:在现代电子技术领域中,LED(Light Emitting Diode)作为一种重要的光电器件,被广泛应用于数码显示、照明和通信等领域。

本实验旨在通过对LED数码显示的实验研究,深入了解其工作原理和特性。

一、实验目的本实验的主要目的是通过实际操作,掌握LED数码显示的原理和应用。

具体目标包括:1. 理解LED数码显示的基本工作原理;2. 掌握LED数码显示的驱动电路设计;3. 学会使用Arduino等开发板进行LED数码显示的控制。

二、实验原理1. LED数码显示的基本工作原理LED数码显示是利用LED的发光特性,通过控制不同的LED点亮或熄灭,来显示数字或字符。

每个LED都是由一个发光二极管和一个驱动电路组成。

当驱动电路给LED提供足够的电流时,LED会发光。

而当电流不足时,LED则熄灭。

2. LED数码显示的驱动电路设计LED数码显示的驱动电路通常采用多路复用方式。

以共阳极七段数码管为例,其驱动电路设计如下:- 使用NPN型晶体管作为开关,控制每个LED的点亮和熄灭;- 使用限流电阻限制LED的电流,避免过流损坏;- 使用Arduino等开发板产生控制信号,实现对LED数码显示的控制。

三、实验步骤1. 准备实验材料和设备,包括七段数码管、NPN型晶体管、限流电阻、Arduino开发板等;2. 按照电路图连接实验电路,确保连接正确无误;3. 编写Arduino程序,控制各个LED的点亮和熄灭,实现数字显示;4. 上传程序到Arduino开发板,并观察LED数码显示的效果;5. 调整程序,实现不同数字或字符的显示。

四、实验结果与分析通过实验,我们成功实现了LED数码显示的控制。

通过编写程序,我们可以控制每个LED的点亮和熄灭,从而实现数字或字符的显示。

同时,我们还观察到LED数码显示的亮度和颜色随电流的变化而变化。

通过调整限流电阻的值,我们可以控制LED的亮度,而通过改变驱动电流的方向,我们可以改变LED的颜色。

实验四 七段数码管显示实验报告

实验四 七段数码管显示实验报告

实验四七段数码管显示实验一、实验目的掌握数码管显示数字的原理。

二、实验内容1.静态显示:数码管为共阴极,通过BCD码译码驱动器CD4511驱动,其输入端A~D输入4位BCD码,位码输入低电平选中。

按图4-1连接好电路,将8255的A口PA0~PA3与七段数码管LED1的BCD码驱动输入端A1~D1相连,8255的A口PA4~PA7与七段数码管LED2的BCD码驱动输入端A2~D2相连,8255的B口PB0~PB3与七段数码管LED3的BCD码驱动输入端A3~D3相连,8255的B口PB4~PB7与七段数码管LED4的BCD码驱动输入端A4~D4相连,8255的C口PC0~PC3分别与七段数码管LED4~LED4的位驱动输入端DG1~DG4相连。

编程从键盘上每输入4个0~9数字,在七段数码管LED4~LED4上依次显示出来。

图4-12.动态显示:数码管为共阴极,段码采用相同驱动,输入端加高电平,选中的数码管对应段点亮,位码采用同相驱动,位码输入端低电平选中,按图4-2连接好电路,图中只画了2个数码管,实际是8个数码管,将8255的A口PA0~PA7分别与七段数码管的段码驱动输入端a~g相连(32TCI0模块上的J1连32LED8模块J2),8255的C口的PC0~PC7接七段数码管的段码驱动输入(32TCI0模块上的J3连32LED8模块J1),跳线器K1连2和3。

编程在8个数码管上显示“12345678”。

按任意键推出运行。

图4-2三、编程提示1.由于DVCC卡使用PCI总线,所以分配的IO地址每台微机可能都不用,编程时需要了解当前的微机使用那段IO地址并进行处理。

2.对实验内容1,七段数码管字型代码与输入的关系如下表:四、参考流程图1.实验内容一的参考流程图图4-3 2.实验内容二的参考流程图图4-4五、参考程序1.内容一的参考程序源程序清单如下:data segmentioport equ 0c400h-0280hio8255a equ ioport+288hio8255b equ ioport+289hio8255c equ ioport+28ahio8255k equ ioport+28bhled db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fhmesg1 db 0dh,0ah,'Input a num (0--9),other key is exit:',0dh,0ah,'$'bz db ?cz db 04hdata endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov dx,io8255k ;使8255的A口为输出方式mov ax,80hout dx,alsss0: mov si,offset bzmov cx,04hsss1: mov dx,offset mesg1 ;显示提示信息mov ah,09hint 21hmov ah,01 ;从键盘接收字符int 21hcmp al,'0' ;是否小于0jl exit ;若是则退出cmp al,'9' ;是否大于9jg exit ;若是则退出sub al,30h ;将所得字符的ASCII码减30Hmov [si],al ;存入显示缓冲区inc si ;显示缓冲区指针加1dec cx ;判断输入满4个数字吗?jnz sss1 ;不满继续mov si,offset bz ;从显示缓冲区取第一个数字的BCD 码mov al,[si]and al,0fh ;屏蔽高四位暂存ALinc si ;显示缓冲区指针加1mov ah,[si] ;取第二个数字的BCD码到AHsal ah,4h ;右移4次到高四位add al,ah ;两个BCD码合并成一个字节mov bl,al ;暂存入BLinc simov al,[si] ;取第三个数字的BCD码and al,0fhinc simov ah,[si] ;取第四个数字的BCD码到AHsal ah,4hadd ah,almov al,ahmov dx,io8255a ;从8255的A口输出(后两个数字)out dx,almov al,blmov dx,io8255b ;从8255的B口输出(前两个数字)out dx,almov al,0f0hmov dx,io8255c ;从8255的C口输出位码out dx,almov dl,0ffhmov ah,06int 21hje sss0 ;有键按下则退出exit: mov ah,4ch ;返回int 21hcode endsend start2.内容二的参考程序源程序清单如下:data segmentioport equ 0C400h-0280hio8255c equ ioport+28ahio8255k equ ioport+28bhio8255a equ ioport+288hled db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh ;段码buffer1 db 01h,02h,03h,04h,05h,06h,07h,08h ;存放要显示的十位和个位con db ? ;位码data endscode segmentassume cs:code, ds:datastart: mov ax,datamov ds,axmov dx,io8255k ;将8255设为A口C口输出mov al,80hout dx,alloop2: mov al,08h ;设置数码管位计数器初值到CON mov byte ptr con,almov si,offset buffer1 ;置显示缓冲器指针SImov ah,7fh ;置位码初值disp0: mov cx,0ffffhmov bl,ds:[si] ;取显示缓冲区显示值存BXmov bh,0hpush simov dx,io8255c ;位码从C口输出mov al,ahout dx,almov dx,io8255amov si,offset led ;置led数码表偏移地址为SIadd si,bx ;求出对应的led数码mov al,byte ptr [si]out dx,al ;段码从A口输出disp1: loop disp1 ;延时mov cx,0ffffhdisp2: loop disp2ror ah,01h ;位码右移1位pop siinc si ;显示缓冲区指针加1mov al,byte ptr condec almov byte ptr con,aljnz disp0 ;数码管位计数器减1为0吗?,不为0继续mov dx,io8255a ;为0,关数码管显示mov al,0out dx,almov dl,0ffhmov ah,06int 21hje loop2 ;有键按下则退出mov ah,4ch ;返回int 21hcode endsend start实验总结:通过这次试验,我了解到自定义数据类型可以根据自己的需要方便设定,有很大的灵活性。

七段数码管动态显示报告

七段数码管动态显示报告

七段数码管动态显示65080619郭燚一、实验目的:熟悉数码管动态显示的原理,掌握编程实现动态显示的方法。

二、实验平台:微机一台(Windows XP 系统、安装QuartusⅡ等相关软件)、CPLD 学习板一块、5V 电源线一个、下载线一条。

三、设计要求:利用动态显示方式,在8 个数码管上依次显示 1~8。

四、设计方案:由于实验平台上没给数码管的电源引脚所以不能实现动态显示,所以使用LED发光管当做片选信号,这样为了能看清不使用一秒钟扫描24次以上,而使用0.5s变化一次。

使用1kHz时钟,计数器每500输出一次,每次讲一个数码管的数字变化,同时给相应的当做片选信号的LED灯高电平,模拟扫描(如果实际每秒24次以上扫描的话同一个数码上输出的数字短时间内不能变),这样可以更明显的看出是扫描了每一个数码管和相应的片选信号。

设计中只用了4个数码管和四个LED灯,而不是8个,因为原理是一样的。

五、源程序:library IEEE;use IEEE.Std_logic_1164.all;use IEEE.Std_logic_arith.all;use IEEE.Std_logic_unsigned.all;entity ledcircle isport(clk:in std_logic;c1,c2,c3,c4:out std_logic;d1,d2,d3,d4:out std_logic_vector(3 downto 0));end ledcircle ;architecture ledcircle of ledcircle issignal s1,s2: integer range 1 to 500:=1;beginprocess(clk)beginif clk'event and clk='1' thenif s1<20 then s1<=s1+1;elses1<=1;if s2<9 then s2<=s2+1;else s2<=1;end if;end if;if s1=1 then c1<='1';c2<='0';c3<='0';c4<='0';d1<=conv_std_logic_vector(s2,4);elsif s1=5 then c1<='0';c2<='1';c3<='0';c4<='0';d2<=conv_std_logic_vector(s2,4);elsif s1=10 then c1<='0';c2<='0';c3<='1';c4<='0';d3<=conv_std_logic_vector(s2,4);elsif s1=15 then c1<='0';c2<='0';c3<='0';c4<='1';d4<=conv_std_logic_vector(s2,4);end if;end if;end process;end;六、实验结果:部分仿真结果如下:从上图可以看出设计结果达到了自己的设计要求。

七段数码管的动态扫描显示实验报告

七段数码管的动态扫描显示实验报告

实验四七段数码管的动态扫描显示一、实验目的1.进一步熟悉QuartusII软件进行FPGA设计的流程;2.掌握利用宏功能模块进行常用的计数器,译码器的设计;3.学习和了解动态扫描数码管的工作原理的程序设计方法;二、实验原理及过程实验板上面常用的4为联体的共阳极7段数码管。

其接口电路是把所有数码管的8个笔划段a-h同名端连接起来,而每一个数码管由一个独立的公共极COM端控制。

对于这种结构的数码管,采用动态显示的方法是最为广泛的一种显示方式之一。

在轮流点亮的过程中每位显示器的点亮时间都极为短暂,但由于人的视觉暂留现象以及发光二极管的余晖效应,尽管实际上每个显示器并非同时点亮,但只要扫描的速度足够快(如达到30Hz 以上),给人的印象就是一组稳定的显示数据,不会有闪烁感。

本次实验要求在实验板上实现显示00000000-99999999的十进制计数器。

使用的是宏模块产生一个16位的二进制计数器counter()作为4个数码管的显示数据;编写一个分频模块div,其输出作为计数器counter()的时钟信号;编写数码管驱动模块segmain,完成7段译码和扫描显示控制1、建立工程,并建立顶层图。

2、设计计数时钟设计一分频器,对50Mhz分频输出到计数器,让计数器以较慢速度递增。

建立.v文件,输入以下代码module int_div(clk,div_out);input clk;output reg div_out;reg[31:0] clk_div;parameter CLK_FREQ='D50_000_000;parameter DCLK_FREQ='D10;always@(posedge clk)beginif(clk_div<CLK_FREQ/DCLK_FREQ)clk_div<=clk_div+1;elsebeginclk_div<=0;div_out=~div_out;endendendmodule输入完成后,将该文件设为顶层文件,并分析该设计文件,用于检查设计错误。

共阴极七段数码显示驱动电路

共阴极七段数码显示驱动电路

共阴极七段数码显示驱动电路一、实验目的了解EDA实验箱8位八段数码管显示模块的工作原理,设计标准扫描驱动电路模块,以备后面实验用。

二、硬件要求主芯片Altera EPM7128SLC84-15,时钟,8位八段数码管显示器,四位拨码开关。

三、实验内容描述一个七段数码显示的驱动电路。

该电路有BCD码输入端db,两个输入控制端lt、bi,控制输出端bio,输出端segout(7位)。

四、实验连线输入:将芯片输入管角分别接4个拨码开关;输出:将芯片输出管角分别接到数码管7段驱动信号a、b、c、d、e、f、g上。

五、实验源程序library ieee;use ieee.std_logic_1164.all;entity display isport(lt:in bit;bi:in bit;bio:out bit;db:in std_logic_vector(3 downto 0);segout:out std_logic_vector(6 downto 0));end ;architecture a of display isbeginprocessbeginif lt='0' and bi='0' thensegout<="0000000";bio<='0';elsif lt='0' and bi='1' thensegout<="1111111";bio<='1';elsif lt='1' and bi='0' and db="0000" thensegout<="0000000";bio<='0';elsif lt='1' and bi='1' and db="0000" thensegout<="0111111";bio<='1';elsif lt='1' and db="0001" thensegout<="0000110";bio<='1';elsif lt='1' and db="0010" then segout<="1011011";bio<='1';elsif lt='1' and db="0011" then segout<="1001111";bio<='1';elsif lt='1' and db="0100" then segout<="1100110";bio<='1';elsif lt='1' and db="0101" then segout<="1101101";bio<='1';elsif lt='1' and db="0110" then segout<="1111101";bio<='1';elsif lt='1' and db="0111" then segout<="0000111";bio<='1';elsif lt='1' and db="1000" then segout<="1111111";bio<='1';elsif lt='1' and db="1001" then segout<="1101111";bio<='1';elsif lt='1' and db>"1001" then segout<="0000000";bio<='0';end if;end process;end;六、波形仿真结果。

七段数码管数字显示

七段数码管数字显示

永城职业学院项目设计七段数码管数字显示班 级:082班专 业:矿山机电姓名:倪开放指导老师:马红雷日期:2010年6月8日目录摘要 (2)关键词: (2)1、PLC概况 (3)1.1 PLC的特点 (3)1.2 PLC应用领域 (3)1.3 PLC的发展 (4)2、控制要求 (4)3、硬件控制设计 (4)3.1 PLC的选型 (4)3.2 I/O设备的选择 (5)4软件控制设计 (6)4.1I/O接线图及I/O分配图 (6)4.2波形图 (7)4.3逻辑表达式 (9)4.4梯形图 (9)4.5程序显示工作原理 (11)4.6流程图 (11)4.7助记符 (13)4.8程序的调试 (14)5、心得体会 (16)参考文献 (17)评分标准 (18)摘要七段数码管广泛应用于医院、学校及一些商业机构。

7段LED数码管,则在一定形状的绝缘材料上,利用单只LED组合排列成“8”字型的数码管,分别引出它们的电极,点亮相应的点划来显示出0-9的数字。

本次设计就是利用这个特点显示自己的学号,选用的是松下FP0系列进行控制的。

本次设机采用的是共阴极七段数码管数码管。

关键词:PLC 控制设计工作原理1、PLC概况1.1 PLC的特点PLC即可编程控制器(Programmable logic Controller,是指以计算机技术为基础的新型工业控制装置。

“PLC是一种专门为在工业环境下应用而设计的数字运算操作的电子装置。

它采用可以编制程序的存储器,用来在其内部存储执行逻辑运算、顺序运算、计时、计数和算术运算等操作的指令,并能通过数字式或模拟式的输入和输出,控制各种类型的机械或生产过程。

具体特点如下:(1)可靠性高,抗干扰能力强(2)配套齐全,功能完善,适用性强(3)易学易用,深受工程技术人员欢迎(4)系统的设计、建造工作量小,维护方便,容易改造(5)体积小,重量轻,能耗低1.2 PLC应用领域目前,PLC在国内外已广泛应用于钢铁、石油、化工、电力、建材、机械制造、汽车、轻纺、交通运输、环保及文化娱乐等各个行业,使用情况大致可归纳为如下几类: a:开关量的逻辑控制b:模拟量控制c:运动控制d:过程控制e:数据处理f:通信与联网1.3 PLC的发展PLC技术的发展,其中有两个趋势方向,一方面,PLC已经不再是自成体系的封闭系统,而是迅速向开放式系统发展,各大品牌PLC除了形成自己各具特色的PLC系统,完成设备控制任务之外,还可以与上位计算机管理系统,实现信息交流,成为整个信息管理系统的一部分。

数码管实验报告实验原理(3篇)

数码管实验报告实验原理(3篇)

第1篇一、实验背景数码管是一种常用的显示器件,它可以将数字、字母或其他符号显示出来。

数码管广泛应用于各种电子设备中,如计算器、电子钟、电子秤等。

本实验旨在通过实践操作,让学生了解数码管的工作原理,掌握数码管的驱动方法,以及数码管在电子系统中的应用。

二、实验原理1. 数码管类型数码管分为两种类型:七段数码管和液晶数码管。

本实验主要介绍七段数码管。

七段数码管由七个发光二极管(LED)组成,分别代表七个笔画。

当七个LED中的某个或某几个LED点亮时,就可以显示出相应的数字或符号。

根据发光二极管的连接方式,七段数码管可分为共阳极和共阴极两种类型。

2. 数码管驱动方式(1)静态驱动静态驱动是指每个数码管独立驱动,每个数码管都连接到单片机的I/O端口。

这种方式下,数码管显示的数字或符号不会闪烁,但需要较多的I/O端口资源。

(2)动态驱动动态驱动是指多个数码管共用一组I/O端口,通过控制每个数码管的扫描时间来实现动态显示。

这种方式可以节省I/O端口资源,但显示的数字或符号会有闪烁现象。

3. 数码管显示原理(1)共阳极数码管共阳极数码管的特点是七个LED的阳极连接在一起,形成公共阳极。

当要显示数字时,将对应的LED阴极接地,其他LED阴极接高电平,即可显示出相应的数字。

(2)共阴极数码管共阴极数码管的特点是七个LED的阴极连接在一起,形成公共阴极。

当要显示数字时,将对应的LED阳极接地,其他LED阳极接高电平,即可显示出相应的数字。

4. 数码管驱动电路(1)BCD码译码驱动器BCD码译码驱动器是一种将BCD码转换为七段数码管所需段码的电路。

常用的BCD码译码驱动器有CD4511、CD4518等。

(2)74HC595移位寄存器74HC595是一种8位串行输入、并行输出的移位寄存器,常用于数码管的动态驱动。

它可以将单片机输出的串行信号转换为并行信号,驱动数码管显示。

三、实验目的1. 了解数码管的工作原理和驱动方式。

七段数码管及其驱动七段数码管及其驱动原理,

七段数码管及其驱动七段数码管及其驱动原理,

[转]7段数码管管脚顺序及译码驱动集成电路74LS47,487段数码管管脚顺序及译码驱动集成电路74LS47,48 这里介绍一下7段数码管见下图7段数码管又分共阴和共阳两种显示方式。

如果把7段数码管的每一段都等效成发光二极管的正负两个极,那共阴就是把abcdefg 这7个发光二极管的负极连接在一起并接地;它们的7个正极接到7段译码驱动电路74LS48的相对应的驱动端上(也是abcdefg)!此时若显示数字1,那么译码驱动电路输出段bc为高电平,其他段扫描输出端为低电平,以此类推。

如果7段数码管是共阳显示电路,那就需要选用74LS47译码驱动集成电路。

共阳就是把abcdefg的7个发光二极管的正极连接在一起并接到5V电源上,其余的7个负极接到74LS47相应的abcdefg输出端上。

无论共阴共阳7段显示电路,都需要加限流电阻,否则通电后就把7段译码管烧坏了!限流电阻的选取是:5V电源电压减去发光二极管的工作电压除上10ma到15ma得数即为限流电阻的值。

发光二极管的工作电压一般在1.8V--2.2V,为计算方便,通常选2V即可!发光二极管的工作电流选取在10-20ma,电流选小了,7段数码管不太亮,选大了工作时间长了发光管易烧坏!对于大功率7段数码管可根据实际情况来选取限流电阻及电阻的瓦数!74ls48引脚图管脚功能表74LS48芯片是一种常用的七段数码管译码器驱动器,常用在各种数字电路和单片机系统的显示系统中,下面我就给大家介绍一下这个元件的一些参数与应用技术等资料。

74ls48引脚功能表—七段译码驱动器功能表http://www.51hei. com/chip/312.html74LS47引脚图管脚功能表:共阳数码管管脚图三位共阳数码管管脚图以及封装尺寸四位数码管引脚图以及封装尺寸六位数码管引脚图门电路逻辑符号大全(三态门,同或门,异或门,或非门,与或非门, 传输门,全加器,半加器等) 常用集成门电路的逻辑符号对照表三态门,同或门,异或门,或非门,与或非门,传输门,全加器,半加器,基本rs触发器,同步rs触发器,jk触发器,d触发器7段数码管管脚顺序及驱动集成电路这里介绍一下7段数码管见下图7段数码管又分共阴和共阳两种显示方式。

5、7段LED数码管驱动

5、7段LED数码管驱动

5、7段LED数码管驱动实验5、7 段LED 数码管驱动1、实验目的(1)了解7段LED数码管的组成结构、功能、工作原理和编码方式。

(2)了解BCD 码及其产生的方法,掌握CD4518二进制计数器的使用方法。

(3)了解BCD 码-7段LED码的转换方法,掌握CD4511数码管驱动器的工作原理及使用方法。

(4)学会用7段LED数码管显示分段调光电路的档位的方法和接口电路。

2、实验材料、仪器与用具PCB 板、元器件、焊锡丝、导线;电烙铁、镊子、稳压限流直流电源、VC890C+数字万用表、CD4017分段调光模块、PT4115恒流驱动模块、LED灯板。

3、实验原理(用文字简单描述,可引用实验指导书的图表)(1).数码管的结构用一位7 段LED 数码管来实现用数字直观地显示分段调光的亮度档位。

7 段LED 数码管由7 个LED 按照“8”字形排列构成,根据点亮不同字段的LED 可以显示出数字0-9 和字母A~F 等内容。

7 段LED 数码管分为共阴极和共阳极两种,图s5-2(c)所示为共阴极,即8 只LED (7段数字或字母位加上一段小数点dp 位)的阴极接在一起,通过每只LED 的阳极来选择要点亮的LED 字段;图s5-2(d)则为共阳极的接法。

数码管的引脚顺序都是一致的,如图s5-2(b)所示,左下角e 脚为每1 脚,逆时针至左上角的g 脚依次为第2~10 脚,其中第3 脚和第8 脚为公共端,即gnd 脚(共阴)或Vcc(共阳)脚。

(2).数码管的编码根据数码管显示不同数字时需要给相应的LED 字段施加有效电平的不同,可以编成7 段数字码。

以共阴极7 段数码管为例,若高电平为1,低电平为0,g 段为高位,a 段为低位。

以后,根据要显示的内容,按照编码赋予相应的数据,就可以很方便地控制数码管的显示。

(3).数码管的译码和驱动根据上述要使7 段LED 数码管显示出相应的数字,需要8 根据信号线,如果是用单片机的IO 口来驱动数码管,则须占用8 位的IO 口,而且由于单片机的IO 口驱动能力局限,会造成LED 的亮度较低和每段亮度不一致的情况,需要外加驱动电路调节,这样做不仅浪费硬件资源,同时还会使电路布线变得困难。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;
七、波形仿真结果。

相关文档
最新文档