实验02LED数码管
- 格式:doc
- 大小:136.00 KB
- 文档页数:4
实验二LED数码管驱动显示程序实验一、实验目的1、初步学习和了解VHDL语言编程方式2、学习和掌握七段数码显示译码器的设计方法3、学习和掌握VHDL的多层设计方法二、实验要求1、根据硬件设计的思维方式,编制LED七段码的显示程序2、要求是一位LED以定位方式显示3、完成LED七段码波形分析的显示功能4、在EDA实验箱上按要求显示三、实验设备1、计算机一台2、EDA——Ⅳ实验箱一台四、实验原理1、七段码是用一种纯组合的逻辑电路,通常是用小型专用的IC门电路组成,数字输入与输出表达均未16进制,处理一般较复杂,而用FPGA/CPLD来实现较为简单。
2、七段码输入与输出的原理与真值表关系。
(a)输入:七段码输入为四个输入信号,用来表示为“0000”到“1111”,即表示为十六进制的“0”到“F”。
(b)输出:七段码输出为七个输出信号,分别用“A、B、C、D、E、F、G”七个符号来表示。
一般规定,输出信号为“1”时,它所控制的发光二极管为点亮状态,输出信号为“0”时,它所控制的发光二极管为熄灭状。
本实验使用的七段数码管为共阴极组,其电路如图2.1所示。
图2.1 共阴极数码管及其电路(c)输入与输关系为四位二进制代码组成十六进制代码,将其代码显示,其对应关系如表2.1所示。
(d)显示方式是通过选位的方式进行,是将FPGA/CPLD的三位二进制的信号输出,通过外部三——八译码器硬件电路,选中一路LED信号为输出,故选择一位LED数码管显示,本实验是采取选相应的一个指定位置进行LED显示。
3、输入是通过外部的四个按键操作而组成一位十六进制。
其连接到FPGA/CPLD的对应的引脚上,需进行引脚分配。
4、编写译码程序,生成底层组件,组合成底层文件。
表2-1 七段字符显示真值表五、实验步骤1、 在D 盘建立自己的文件目录,D: \ EX \ Z04** \ you*\ex*;2、 在Max+Pluse Ⅱ的界面下,自己的文件目录下,建立项目文件 File \ Project \ 文件名A ;3、 在自己的文件目录下,建立文本文件 File \ New \ 文件名B.vhd ;4、 保存此文件并划归到项目文件内, File \ Project \ Set Project current File ,其中文本文件名B 必须和实体名一致;5、 输入程序,保存文件“文件名B.vhd ”,File \ Save As “文件名B.vhd ”(注意后缀,如保存默认文件名时,其后缀通常为“*.tdf ”文件,必须删除后缀为“*.tdf ”文件名;6、 单击编译器快捷方式按钮,对文本文件进行编译,观察是否有原则错误;7、 如有修改则修改程序中错误,若无错误则可做以下工作; 8、 建立底层器件的封装,File \ Create Default Symbol ;9、 建立图形文件,File \ New \ 文件名C.gdf 并化归到项目内。
数码管的显示的实验报告数码管的显示的实验报告引言:数码管是一种常见的数字显示装置,广泛应用于各种电子设备中。
本实验旨在通过实际操作,了解数码管的原理和工作方式,并通过一系列实验验证其显示效果和功能。
实验一:数码管的基本原理数码管是由多个发光二极管(LED)组成的,每个发光二极管代表一个数字或符号。
通过对不同的发光二极管进行点亮或熄灭,可以显示出不同的数字或符号。
本实验使用的是共阳数码管,即共阳极连接在一起,而阴极分别连接到控制芯片的输出引脚。
实验二:数码管的驱动电路为了控制数码管的显示,需要使用驱动电路。
常见的驱动电路有共阴极驱动和共阳极驱动两种。
本实验使用的是共阳极驱动电路。
驱动电路由控制芯片、电阻和电容组成。
控制芯片通过控制输出引脚的高低电平来控制数码管的点亮和熄灭。
实验三:数码管的显示效果通过控制芯片的输出引脚,可以实现数码管的显示效果。
本实验使用的是四位数码管,可以显示0-9的数字。
通过改变控制芯片输出引脚的电平,可以控制数码管显示不同的数字。
实验中通过编写程序,使数码管显示从0到9的数字循环显示,并通过按键控制数字的增加和减少。
实验四:数码管的多位显示除了显示单个数字外,数码管还可以实现多位显示。
通过控制不同位数的数码管,可以显示更多的数字或符号。
本实验使用的是四位数码管,可以同时显示四个数字。
通过编写程序,可以实现四位数码管的多位显示,例如显示当前时间、温度等信息。
实验五:数码管的亮度调节数码管的亮度可以通过改变驱动电路中的电阻值来实现。
本实验通过改变电阻值,调节数码管的亮度。
实验中通过编写程序,通过按键控制数码管的亮度增加和减少,从而实现亮度的调节。
结论:通过本次实验,我们深入了解了数码管的原理和工作方式。
数码管可以通过驱动电路的控制,实现数字和符号的显示。
同时,数码管还可以实现多位显示和亮度调节。
数码管作为一种常见的数字显示装置,具有广泛的应用前景,可以应用于各种电子设备中。
通过进一步的研究和实践,我们可以更好地利用数码管的功能,满足不同应用场景的需求。
led数码管实验报告
LED数码管实验报告
实验目的:通过LED数码管实验,掌握数字电路的基本原理和数字显示技术。
实验原理:LED数码管是一种数字显示装置,由多个LED灯组成,可以显示0-
9的数字。
在数字电路中,LED数码管通常用于显示数字信号,通过控制LED
的亮灭来显示不同的数字。
实验材料:LED数码管、数字电路实验板、数字信号发生器、数字电路元件等。
实验步骤:
1. 将LED数码管连接到数字电路实验板上,并接入电源。
2. 使用数字信号发生器产生不同的数字信号,将信号输入到LED数码管中。
3. 观察LED数码管的显示效果,记录不同数字信号对应的LED亮灭状态。
4. 分析LED数码管的工作原理,探讨数字信号与LED数码管的对应关系。
实验结果:通过实验观察和记录,得出了不同数字信号与LED数码管显示的对
应关系,掌握了LED数码管的工作原理和数字信号的显示技术。
实验结论:LED数码管是一种常用的数字显示装置,广泛应用于计时器、计数器、电子钟等领域。
通过本次实验,我们深入了解了LED数码管的工作原理,
掌握了数字信号与LED数码管的对应关系,为今后的数字电路设计和应用打下
了基础。
总结:LED数码管实验是数字电路实验的重要内容,通过实验学习,可以加深
对数字电路原理的理解,提高数字显示技术的应用能力。
希望同学们能够认真
学习实验内容,掌握实验技能,为将来的工程实践奠定坚实基础。
电子信息工程系实验报告课程名称: 单片机原理及接口(应用)实验项目名称: LED数码管显示实验实验时间:班级: 姓名: 学号:一、实验目的熟悉keil仿真软件、proteus仿真软件、软件仿真板的使用。
了解并熟悉一位数码管与多位LED数码管的电路结构、与单片机的连接方法及其应用原理。
学习proteus构建LED数码管显示电路的方法, 掌握C51中单片机控制LED数码管动态显示的原理与编程方法。
二、实验环境硬件: Window XP;软件:keil C51单片机仿真调试软件, proteus系列仿真调试软件;三、实验原理LED显示器是由发光二极管显示字段的显示器件。
在单片机应用系统中通常使用的是七段LED, 这种显示器有共阴极与共阳极两种。
例如共阴极, 如图1所示。
管脚配置如图2所示。
图1 共阴极图2 管脚配置共阴极LED显示器的发光二极管阴极共地, 当某个发光二极管的阳极为高电平时, 该发光二极管则点亮;共阳极LED显示器的发光二极管阳极并接。
七段LED数码管与单片机连接时, 只要将一个8位并行输出口与显示器的发光二极管引脚相连即可。
多位七段LED数码管与单片机连接时将所有LED的段选线并联在一起, 由一个八位I/O口控制, 而位选线分别由相应的I/O口线控制。
例如: 段选码的推导(1)要显示字母C——则a、f、e、d灯亮。
(2)因为共阴——则a、f、e、d送0时才亮。
(3)段选dp-a为——11000110。
由于所有位的段选码皆由一个I/O控制, 因此, 在每个瞬间, 多位LED只可能显示相同的字符。
要想每位显示不同的字符, 必须采用动态扫描显示方式。
即在每一瞬间只使某一位显示相应字符。
在此瞬间, 位选控制I/O口在该显示位送入选通电平(共阴极送低电平、共阳极送高电平)以保证该位显示相应字符, 段选控制I/O口输出相应字符段选码。
如此轮流, 使每位显示该位应显示字符, 并保持延时一段时间, 以造成视觉暂留效果。
k实验二数码显示实验一、实验内容1、选用一位数码管,编送不同码字,显示静态数据;2、轮流选择不同位数码管,编送不同码字,并做视觉残留,实现动态显示。
二、实验目的1、了解七段数码显示数字的原理。
2、掌握四个LED动态显示,即一位一位地轮流点亮显示器各个位(扫描)。
三、实验原理七段LED显示器有共阳极和共阴极两种,共阴极LED显示器是发光二极管的阴极连在一起,通常此公共阴极接地;共阳极LED显示器是发光二极管的阳极连在一起,公共阳极接正电压。
通过LED显示器中二极管的亮灭,则显示不同的字符或数字。
共阴极发光二极管内部结构图(可参考学习板89C52学习板说明书做补充说明)四、实验电路(见学习板说明书)五、连线方法(见学习板说明书)五、参考程序程序一,/*************************************************************** 功能:数码管静态显示,数码管1循环显示0-F作者:txl时间:2009-04版本:V1.0***************************************************************/ #include<reg52.h>#define uint unsigned int#define uchar unsigned charsbit wei1=P2^0; //第一位数码管位选uchar num;uchar code table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};//共阳数码管码表void delay(uint z);void main(){while(1){for(num=0;num<16;num++){wei1=0;P0=table[num];delay(1000);}}}void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}程序二、/*************************************************************** 功能:实现4位数码管显示"2009"这四个数字作者:txl时间:2009-04版本:V1.0***************************************************************/ #include "reg52.h"#define uchar unsigned charsbit wei1=P2^0;sbit wei2=P2^1;sbit wei3=P2^2;sbit wei4=P2^3;uchar code table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};//共阳数码管码表//函数声明void led_display(unsigned char *temp );void Delay_xuS(unsigned int x);/*-------------------------------------------------主程序-------------------------------------------------*/void main(){uchar temp[4]={2,0,0,9};while(1){led_display(temp);}}/*------------------------------------------------- 功能100uS延时子程序-------------------------------------------------*/void Delay_xuS(unsigned int x){unsigned int i,j;for( i =0;i < x;i++ ){for( j =0;j<50;j++ );}}/*------------------------------------------------- 功能:数码管显示子程序-------------------------------------------------*/void led_display(unsigned char *temp ) {wei1=0; //点亮第一个数码管P0 = table[temp[0]];Delay_xuS(5);wei1=1;wei2=0; //点亮第二个数码管P0 = table[temp[1]];Delay_xuS(5);wei2=1;wei3=0; //点亮第三个数码管P0 = table[temp[2]];Delay_xuS(5);wei3=1;wei4=0; //点亮第四个数码管P0 = table[temp[3]];Delay_xuS(5);wei4=1;}程序三、显示字母ABCD#include <AT89X52.H> //包含头文件#define shuma P0 //定义数码管数据位sbit LED_0=P2^0; //定义4个控制脚sbit LED_1=P2^1;sbit LED_2=P2^2;sbit LED_3=P2^3;void delay(unsigned int x); //声明延时函数void display(unsigned char d1,unsigned char d2,unsigned char d3,unsigned chard4);//声明显示函数/*=====0-9=====A-G=====*/unsigned char a[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//共阳极数码管的段码0 1 2 3 4 5 6 7 8 9 A B C D E Fvoid main() //主函数开始{while(1){display(10,11,12,13); //在循环中调用显示函数}}void delay(unsigned int x) //延时函数,有效效果为数码管不闪烁{unsigned int i;for(i=0;i<x;i++);}void display(unsigned char d1,unsigned char d2,unsigned char d3,unsigned char d4) {shuma=a[d1]; //选中第一位,发送第一位段码LED_0=0; //第一位显示delay(100); //延时显示LED_0=1; //第一位关显示shuma=a[d2]; //选中第二位,发送第二位段码,以下原理同上LED_1=0;delay(100);LED_1=1;shuma=a[d3]; //选中第三位,发送第三位段码,以下原理同上LED_2=0;delay(100);LED_2=1;shuma=a[d4]; //选中第四位,发送第四位段码,以下原理同上LED_3=0;delay(100);LED_3=1;}五、体会讨论。
led数码管显示控制实验报告实验名称:LED数码管显示控制实验实验目的:1.了解LED数码管及其工作原理。
2.学习如何控制LED数码管显示数字。
3.加强对单片机控制IO口的编程能力。
实验器材:1.STC89C52RC单片机开发板2.数码管(共阳、共阴)3.杜邦线实验原理:LED数码管是一种数字显示组件,在工业控制、计算机等领域都有广泛应用。
LED数码管在显示数字时,通过LED管来显示数字,根据不同的管脚状态,控制LED管的导通和隔离,间隔时间来控制亮和灭的时间,从而显示出不同的数字。
在STC89C52RC单片机上,通过控制IO的高低电平来控制数码管的显示。
当要显示的数字为0~9时,需要将相应的IO输出低电平,同时将其他IO输出高电平,从而实现数字的显示。
实验步骤:1.将共阳数码管的正极连接到P0口(注意极性),并将共阴数码管的负极连接到P0口(注意极性)。
2.将STC89C52RC单片机开发板连接到电源,将USB转串口线连接到电脑。
3.打开Keil uVision5软件,创建一个新工程,配置完工程后编写控制代码(具体代码见附录)。
4.编写完成后,将代码下载到单片机中,开始实验。
实验结果:成功实现了数字0到9的显示。
通过实验,我们了解了LED数码管的工作原理,学会了控制单片机IO口进行数字的显示,加强了对单片机编程的掌握能力。
附录:代码如下:```#include <reg52.h>#define uchar unsigned char#define uint unsigned intsbit dula = P2^6;sbit wela = P2^7;uchar code table[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=114;y>0;y--);}void Display(){uchar i;for(i=0;i<10;i++){P0 = table[i]; dula = 0;dula = 1;delay(500);}}。
实验二查表程序实现LED数字显示一、实验要求通过拨码开关表示16进制数0—F,利用LED数码管显示该数字。
包括硬件电路和程序设计。
二、实验目的理解8段LED数码管的显示原理和LED显示的转化方法,学习查表程序的设计。
三、实验原理图2-1 8段LED数码管显示原理和笔画分布由电路图2-2可以看出,这里需要通过传送指令将P1口拨码开关的状态读入累加器A,利用查表指令转换为LED数码管的显示笔画代码,再传送到P2口驱动数码管。
所谓显示代码就是根据该数字的笔画确定LED数码管中8个笔画段a—h中的哪些段点亮,如数字1要求点亮笔画b和c。
我们可以根据数字与笔画的对应关系列出各数字的笔画代码真值表如表2-1所示,在每个数字需点亮的笔画处填入1,不需要点亮的位填入0,然后转换为16进制数就是该数字的显示代码。
若采用共阳极LED,则由于是0点亮,显示代码也就不同,笔画真值表与表2-1相反。
显然,若各笔画连接的口线不同,显示代码也不同。
图2-2 通过LED数码管显示数字电路图表2-1 LED笔划显示真值表(共阴)有了代码表,还需要通过查表程序将数字转换为显示代码。
查表程序一般是将表格中数据顺序放置在程序存储器的某个区域中,形成一数据表。
程序中需要查表时,将表格首地址送入数据指针DPTR,即使DPTR指向表格首地址,在A中放入待查表格项的序号,例如要显示2,利用“MOVC A,@A+DPTR”指令,即以(A+DPTR)为地址,将数据表中第2字节的表格项数据5BH取出放入A,从而实现查得2的显示代码5BH,然后送端口P2驱动笔画段显示出数字2。
四、实验步骤1.在Proteus ISIS中设计硬件电路(参考图2-2)(1)选择电路元器件并放入原理图编辑区:单片机:AT89C52。
一位共阴极数码管:7SEG-COM-CAT-GRN。
8位拨码开关:DIPSWC_8。
接地:Ground(Terminal模型中)。
(2)参考图2-2完成原理图。
led数码管实验报告LED数码管实验报告一、引言在现代科技领域,LED数码管作为一种常见的数字显示器件,被广泛应用于各种电子设备中。
本次实验旨在通过对LED数码管的实际操控,深入了解其工作原理和使用方法。
二、实验目的1. 理解LED数码管的基本结构和工作原理;2. 学会使用Arduino等开发板进行LED数码管的控制;3. 掌握LED数码管的数字显示和动态显示方法。
三、实验器材和方法1. 实验器材:Arduino开发板、LED数码管、杜邦线等;2. 实验方法:通过连接开发板和数码管,编写相应的程序控制数码管的显示。
四、实验步骤1. 连接电路:使用杜邦线将Arduino开发板与LED数码管连接起来,确保连接正确稳定。
2. 编写程序:在Arduino开发环境中编写程序代码,实现对数码管的控制。
可以通过调节电平、脉冲宽度等方式实现不同的显示效果。
3. 上传程序:将编写好的程序上传至Arduino开发板,确保程序正常运行。
4. 观察实验结果:通过观察数码管的显示效果,验证程序的正确性和数码管的正常工作。
五、实验结果与分析经过实验,我们成功实现了对LED数码管的控制。
通过编写程序,我们可以实现不同数字的显示,甚至可以实现动态的数字滚动效果。
LED数码管的工作原理是基于发光二极管的特性,通过控制不同的电平和脉冲宽度,使得不同的LED发光,从而实现数字的显示。
在实验中,我们可以通过控制Arduino开发板的输出口,改变数码管的亮灭状态,从而显示不同的数字。
六、实验心得通过本次实验,我们对LED数码管的工作原理和使用方法有了更深入的了解。
掌握了Arduino开发板的使用技巧,学会了编写简单的程序控制数码管的显示。
LED数码管作为一种常见的数字显示器件,具有体积小、功耗低、寿命长等优点,在各种电子产品中得到广泛应用。
通过实验,我们发现LED数码管不仅可以用于数字的静态显示,还可以通过动态刷新实现数字的滚动、闪烁等效果,具有较高的实用价值。
实验02------LED数码管显示
在上一期里介绍了LED流水灯的最简单用法,但是在实际当中,一般为了节省端口都是采用串行接口方式,但是在介绍串行方式之前还应该讲解一下LED数码管的基本用法,所以今天说一说LED数码管显示
一、实验目的:
一般,8段位的LED数码管就是8只LED发光管并联于一端,分共共阴和供阳两种,具体硬件结构请参阅相关书籍。
本实验的目的特点是利用最简单的方法在4个LED数码管上分别显示数字
二、实验设备:
“MSB模块化套装”中“51及AVR基本系统板”和“特殊数码显示接口板”,如果采用“SBV2“掌中宝”实验板”无须连线可以直接引用本程序。
实验芯片采用本站的仿真模块,可以在线调试,如果,有网友DIY可以找一片51芯片烧写此程序。
三、原理图:
此主题相关图片如下:
四、实验步骤
按如下图示连接线路,
此主题相关图片如下:
注意:
1)原理上的J1是指“掌中宝”实验板上LED控制跳线帽,在“特殊数码显示接口板”没有。
2)原理上的
此主题相关图片如下:
分别是特殊数码“:”“`”的显示的发光管,这个实验没有用到。
五、程序部分
1、汇编:
;///////////////////////////////////////////
;本程序实现七段码动态显示功能
;///////////////////////////////////////////
org 0000h
ajmp main
org 0030h
main:
mov dptr,#tab ;将表头位置送入DPTR
mov 30h,#00h ;将30H个位显示缓冲单元清零
mov 31h,#00h ;将31H十位显示缓冲单元清零
mov 32h,#00h ;将32H百位显示缓冲单元清零
mov 33h,#00h ;将33H千位显示缓冲单元清零
loop:
mov r4,#5 ;r4作为软件计数器
tt1:
lcall display ;调用显示程序
djnz r4,tt1 ;r4减一后不为零,返回tt1
lcall update ;调用刷新显示子程序
ajmp loop ;跳回loop,继续循环显示.
display: mov p2,#0ffh ;将P2口置高电平
mov r7,#100 ;软件计数器赋值
dd1:
mov a,30h ;将显示缓冲区30H中的值送入ACC
movc a,@a+dptr ;查表取要显示的数并把查表的结果送入ACC mov p0,a ;将要显示的数送入P0口
clr p2.0 ;开个位显示单元
lcall delay100us ;延时100US
setb p2.0 ;关个位显示单
mov a,31h ;将显示缓冲区别31H中的值送入A
movc a,@a+dptr ;查表取要显示的数并把查表的结果送入ACC mov p0,a ;将要显示的数送入P0口
clr p2.1 ;开十位显示单元
lcall delay100us ;延时100US
setb p2.1 ;关十位显示单元
mov a,32h ;将显示缓冲区32H中的值送入ACC
movc a,@a+dptr ;查表取要显示的数并把查表的结果送入ACC mov p0,a ;将要显示的数送入P0口
clr p2.2 ;开百位显示单元
lcall delay100us ;延时100US
setb p2.2 ;关百位显示单元
mov a,33h ;将显示缓冲区33H中的值送入ACC
movc a,@a+dptr ;查表取要显示的数并把查表的结果送入ACC mov p0,a ;将要显示的数送入P0口
clr p2.3 ;开千位显示单元
lcall delay100us ;延时100US
setb p2.3 ;关千位显示单元
djnz r7,dd1 ;R7不等于0返回至DD1处
ret ;R7等于0子程序返回
update: ;刷新显示子程序
inc 30h ;个位显示缓冲单元加一
mov a,30h
cjne a,#10,exit ;还没加到十,退出
mov 30h,#00h ;加到十了,个位清零
inc 31h ;十位显示缓冲单元加一
mov a,31h
cjne a,#10,exit ;还没加到十,退出
mov 31h,#00h ;加到十了,十位清零
inc 32h ;百位显示缓冲单元加一
mov a,32h
cjne a,#10,exit ;还没加到十,退出
mov 32h,#00h ;加到十了,百位清零
inc 33h ;千位显示缓冲单元加一
mov a,33h
cjne a,#10,exit ;还没加到十,退出
mov 33h,#00h ;加到十了,千位清零
exit:
ret ;刷新显示子程序返回
delay100us:
mov r5,#50
djnz r5,$
ret
delay10ms:
mov r6,#100
tt2:
mov r5,#50
djnz r5,$
djnz r6,tt2
ret
tab: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1h,86h,8eh end。