微机原理实验四 LED数码管显示实验

合集下载

微机原理——数码管显示

微机原理——数码管显示

微机原理与接口技术实验报告实验名称:数码管显示数字的原理姓名:学号:专业班级:指导老师:实验日期:2012年11月一:实验目的掌握数码管显示数字的原理二:实验内容动态显示:按图23连接好电路,七段数码管段码连接不变,位码驱动输入端S1,S0接8255 C 口的PC1,PC0。

编程在两个数码管上显示“56”三:硬件电路四:源程序ioport equ 0d400h-0280h io8255a equ ioport+28ah io8255b equ ioport+28bh io8255c equ ioport+288h led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6f h ;段码buffer1 db 5,6 ;存放要显示的个位和十位bz dw ? ;位码data endscode segmentassume cs:code,ds:data start: mov ax,data mov ds,ax movdx,io8255b ;将8255设为A 口输出mov al,80hout dx,almov di,offset buffer1 ;设di 为显示缓冲区loop2: mov bh,02lll: mov byte ptr bz,bh push di dec di add di, bz movbl,[di] ;bl 为要显示的数pop dimov al,0mov dx,io8255a out dx,al mov bh,0mov si,offset led ;置led 数码表偏移地址为SIaddsi,bx ;求出对应的led数码mov al,byte ptr [si]movdx,io8255c ;自8255A 的口输出out dx,almov al,byte ptr bz ;使相应的数码管亮mov dx,io8255aout dx,almov cx,3000delay: loopdelay ;延时mov bh,byte ptr bzshr bh,1jnz lllmov dx,0ffhmov ah,06int 21hjeloop2 ;有键按下则退出mov dx,io8255amoval,0 ;关掉数码管显示out dx,almovah,4ch ;返回int 21hcode endsend start五:实验难点与重点实验台上的七段数码管为共阴型,段码采用同相驱动,输入端加高电平,选中的数码管亮,位码加反相驱动器,位码输入端高电平选中。

数码管的显示的实验报告

数码管的显示的实验报告

数码管的显示的实验报告数码管的显示的实验报告引言:数码管是一种常见的数字显示装置,广泛应用于各种电子设备中。

本实验旨在通过实际操作,了解数码管的原理和工作方式,并通过一系列实验验证其显示效果和功能。

实验一:数码管的基本原理数码管是由多个发光二极管(LED)组成的,每个发光二极管代表一个数字或符号。

通过对不同的发光二极管进行点亮或熄灭,可以显示出不同的数字或符号。

本实验使用的是共阳数码管,即共阳极连接在一起,而阴极分别连接到控制芯片的输出引脚。

实验二:数码管的驱动电路为了控制数码管的显示,需要使用驱动电路。

常见的驱动电路有共阴极驱动和共阳极驱动两种。

本实验使用的是共阳极驱动电路。

驱动电路由控制芯片、电阻和电容组成。

控制芯片通过控制输出引脚的高低电平来控制数码管的点亮和熄灭。

实验三:数码管的显示效果通过控制芯片的输出引脚,可以实现数码管的显示效果。

本实验使用的是四位数码管,可以显示0-9的数字。

通过改变控制芯片输出引脚的电平,可以控制数码管显示不同的数字。

实验中通过编写程序,使数码管显示从0到9的数字循环显示,并通过按键控制数字的增加和减少。

实验四:数码管的多位显示除了显示单个数字外,数码管还可以实现多位显示。

通过控制不同位数的数码管,可以显示更多的数字或符号。

本实验使用的是四位数码管,可以同时显示四个数字。

通过编写程序,可以实现四位数码管的多位显示,例如显示当前时间、温度等信息。

实验五:数码管的亮度调节数码管的亮度可以通过改变驱动电路中的电阻值来实现。

本实验通过改变电阻值,调节数码管的亮度。

实验中通过编写程序,通过按键控制数码管的亮度增加和减少,从而实现亮度的调节。

结论:通过本次实验,我们深入了解了数码管的原理和工作方式。

数码管可以通过驱动电路的控制,实现数字和符号的显示。

同时,数码管还可以实现多位显示和亮度调节。

数码管作为一种常见的数字显示装置,具有广泛的应用前景,可以应用于各种电子设备中。

通过进一步的研究和实践,我们可以更好地利用数码管的功能,满足不同应用场景的需求。

led数码管实验报告

led数码管实验报告

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数码管实验是数字电路实验的重要内容,通过实验学习,可以加深
对数字电路原理的理解,提高数字显示技术的应用能力。

希望同学们能够认真
学习实验内容,掌握实验技能,为将来的工程实践奠定坚实基础。

数码管动态显示实验报告

数码管动态显示实验报告

数码管动态显示实验报告1.实验目的:本实验旨在通过使用单片机控制数码管的动态显示,了解数码管的原理和使用方法,加深对单片机控制的理解。

2.实验原理:数码管是由许多发光二极管(LED)组成的,每个数码管有7个发光二极管组成7段,再加上一个小数点(或8段数码管),通过控制每个发光二极管的亮灭状态,可以显示出数字、字母等字符。

本实验使用的是共阴极数码管,在通常情况下,数码管引脚为低电平时亮灯,为高电平时灭灯。

3.实验器材:-STC89C52单片机-共阴极数码管-电阻-面包板及连接线-电源4.实验步骤:步骤1:连接电路将数码管的7个引脚分别连接到单片机的7个I/O引脚上,并通过电阻限流。

连接电路后,确认连接无误。

步骤2:编写程序使用C语言编写程序,实现数码管的动态显示。

可以使用延时函数和位操作函数控制数码管的亮灭,通过改变每个数码管引脚的高低电平状态,实现显示不同的数字、字母。

步骤4:实验观察与分析观察数码管的显示效果,通过改变程序中的参数,可以实现不同的显示效果。

5.实验结果与分析:经过实验,我们成功实现了数码管的动态显示。

通过编写程序,我们可以实现数码管显示数字、字母等不同的字符。

调整程序中的参数,可以实现不同的动态显示效果,如流水灯、闪烁等。

数码管的动态显示是通过改变每个数码管引脚的高低电平实现的,通过快速改变引脚电平状态的时间间隔,创建了肉眼无法察觉的视觉效果,从而实现了动态显示。

此外,通过实验我们还了解到了单片机控制数码管的原理和方法,加深了对单片机控制的理解。

6.实验总结:通过本实验,我们了解到了数码管的动态显示原理和方法,并通过编写程序,成功实现了数码管的动态显示。

同时,我们还巩固了单片机控制的知识,提高了自己的动手能力和问题解决能力。

在今后的学习和工作中,我们将进一步掌握数码管的使用方法,并能够将其应用于更加复杂的应用场景中,实现更多有趣的功能。

led数码管显示控制实验报告

led数码管显示控制实验报告

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数码显示控制

实验四  LED数码显示控制

实验四 LED数码显示控制
在LED数码显示控制实验区完成本实验
一、实验目的
了解并掌握置位与复位指令S、R在控制中的应用及其编程方法。

二、置位与复位指令SET、RST的介绍
S为置位指令,使动作保持;R为复位指令,使操作保持复位。

当I0.0一接通,即使再变成断开,Q0.0也保持接通。

I0.1接通后,即使再变成断开,Q0.0也将保持断开。

用R 指令可以对定时器、计数器、数据寄存器、变址寄存器的内容清零。

三、控制要求
按下启动按钮后,由八组LED发光二极管模拟的八段数码管开始显示:先是一段段显示,显示次序是A、B、C、D、E、F、G、H。

随后显示数字及字符,显示次序是0、1、2、3、
4、5、6、7、8、9、A、b、C、d、E、F,再返回初始显示,并循环不止。

四、LED数码显示控制的实验面板图:图6-4-1
LED数码显示控制面板
上图中,下框中的A、B…H分别接主机的输出点Q0.0、Q0.1…Q0.7;SD接主机的输入点I0.0。

上框中的A、B、C、D、E、F、G、H用发光二极管模拟输出。

五、编制梯形图并写出程序:
实验参考程序表6-4-1
参考梯形图如下所示:
图6-4-2
六、实验设备
1、THSMS-A型、THSMS-B型实验装置或THSMS-1型、THSMS-2型实验箱一台
2、安装了STEP7-Micro/WIN32编程软件的计算机一台
3、PC/PPI编程电缆一根
4、锁紧导线若干
七、预习要求
阅读实验指导书,复习教材中有关的内容。

八、报告要求
整理出运行和监视程序时出现的现象。

(完整word版)数码管动态显示实验报告

(完整word版)数码管动态显示实验报告

实验四数码管动向显示实验一一、实验要求1.在 Proteus 软件中画好 51 单片机最小核心电路,包括复位电路和晶振电路2.在电路中增加四个7 段数码管 ( 共阳 / 共阴自选 ), 将 P1 口作数据输出口与 7 段数码管数据引脚相连, P2.0~P2.3 引脚输出选控制信号3.在 Keil 软件中编写程序 , 采用动向显示法 , 实现数码管分别显示数字1,2, 3, 4二、实验目的1.坚固 Proteus 软件和 Keil 软件的使用方法2.学习端口输入输出的高级应用3.掌握 7 段数码管的连接方式和动向显示法4.掌握查表程序和延时等子程序的设计三.实验说明本实验是将单片机的P1 口做为输出口,将四个数码管的七段引脚分别接到至P1.7 。

由于电路中采用共阳极的数码管,因此当P1 端口相应的引脚为0 时,对应的数码管段点亮。

程序中预设了数字0-9 的段码。

由于是让四个数码管显示不同样的数值,因此要用扫描的方式来实现。

因此定义了scan 函数,接到单片机的p2.0 至在实验中,预设的数字段码表存放在数组TAB中,由于段码表是固定的,因此储藏种类可设为 code。

在 Proteus 软件中依照要求画出电路,再利用Keil软件按需要实现的功能编写 c 程序,生成 Hex 文件,把Hex 文件导到Proteus 软件中进行仿真。

为了可以更好的考据明验要求,在编写程序时需要延时0.5s ,能让人眼更好的分辨;89C51 的一个机器周期包括12 个时钟脉冲,而我们采用的是12MHz晶振,每一个时钟脉冲的时间是1/12us ,因此一个机器周期为 1us。

在 keil程序中,子函数的实现是用void delay_ms(int x),其中x为1时是代表1ms。

四、硬件原理图及程序设计〔一〕硬件原理图设计电路中 P1.0 到 P1.7 为数码管七段端口的控制口,排阻 RP1阻值为 220Ω,到为数码管的扫描信号。

实验四 数码管显示控制

实验四 数码管显示控制

实验四数码管显示控制一、实验目的1、熟悉Keil uVision2软件的使用;2、掌握LED数码管显示接口技术;3、理解单片机定时器、中断技术。

二、实验设备及仪器Keil μVision2软件;单片机开发板;PC机一台三、实验原理及内容1、开发板上使用的LED 数码管是四位八段共阴数码管(将公共端COM接地GND),其内部结构原理图,如图4.1所示。

图4.1共阴四位八段LED数码管的原理图图4.1表明共阴四位八段数码管的“位选端”低电平有效,“段选端”高电平有效,即当数码管的位为低电平,且数码管的段为高电平时,相应的段才会被点亮。

实验开发板中LED数码管模块的电路原理图,如图4.2所示。

SP1a~hP0.4~P0.7SP2P0.0~P0.3图4.2 LED数码管模块电路原理图图中,当P1.0“段控制”有效时,P0.0~P0.7分别对应到数码管的a~h段。

当P1.1“位控制”有效时,P0.0~P0.7分别对应到DIG1~DIG8。

训练内容一:轮流点亮数码管来检测数码管是否正常。

参考程序:ORG 00HAJMP MAINMAIN:SETB P1.2;LED流水灯模块锁存器的控制位MOV P0,#0FFH;关闭LED灯CLR P1.2SETB P1.3 ;点阵模块的行控制锁存器MOV P0,#0 ;关闭点阵行CLR P1.3MOV A,#11111110B;数码管“位选信号”初值,低电平有效LOOP:SETB P1.1;数码管位控制锁存器有效MOV P0,ACLR P1.1RL A ;形成新的“位选信号”,为选择下一位数码管做准备SETB P1.0;数码管段控制锁存器有效MOV P0,#0FFH ;数码管的所有段点亮,显示“8”CLR P1.0CALL DELAYSJMP LOOPDELAY:MOV R5,#0;延时子程序D1: MOV R6,#0D2:NOPDJNZ R6,D2DJNZ R5,D1RETEND训练内容二:静态显示,0~9计数。

数码管显示实验报告

数码管显示实验报告

数码管显示实验报告数码管显示实验报告引言:数码管是一种常见的数字显示设备,广泛应用于各种计数、计时和显示系统中。

本实验旨在通过实际操作,了解数码管的工作原理和使用方法,并探索其在电子领域中的应用。

实验原理:数码管是由多个发光二极管组成的,每个发光二极管代表一个数字或字母。

通过控制发光二极管的亮灭来显示不同的字符。

数码管通常分为共阳极和共阴极两种类型,其差别在于亮灭控制信号的电平极性。

实验步骤:1. 准备实验材料:数码管、电路连接线、电阻、开关、电源等。

2. 按照电路图连接电路:将数码管的引脚与其他元件连接,确保电路正确无误。

3. 接通电源,观察数码管的显示效果:根据电路连接的不同,数码管将显示不同的数字或字母。

4. 通过改变电路中的元件参数,如电阻的阻值、开关的状态等,观察数码管的显示变化:可以发现数码管的亮度、显示内容等会随之改变。

实验结果与分析:经过实验,我们发现数码管的显示效果与电路连接方式、元件参数等因素密切相关。

当数码管为共阳极时,需要给对应的引脚施加高电平信号才能使其亮起;而当数码管为共阴极时,则需要给对应的引脚施加低电平信号才能使其亮起。

此外,数码管的亮度也与电阻的阻值有关。

通过改变电阻的阻值,我们可以调节数码管的亮度,使其适应不同的环境要求。

数码管还可以通过组合显示不同的字符。

例如,通过同时点亮数码管的多个发光二极管,我们可以显示出数字、字母、符号等。

这为数码管的应用提供了更多的可能性。

应用领域:数码管广泛应用于各个领域,如计时器、计数器、温度显示器、电子钟等。

在计算机硬件中,数码管也常用于显示硬盘容量、CPU温度等信息。

结论:通过本次实验,我们深入了解了数码管的工作原理和使用方法,并通过实际操作探索了其在电子领域中的应用。

数码管作为一种常见的数字显示设备,具有简单、可靠、易于控制等优点,在现代电子技术中扮演着重要的角色。

通过进一步的研究和应用,我们可以更好地利用数码管的特性,推动电子技术的发展。

实验四 LED数码显示控制

实验四 LED数码显示控制

实验四 LED数码显示控制一、实验目的了解并掌握移位指令在控制中的应用及其编程方法,进一步熟悉掌握程序调试的方法。

二、实验步骤1、根据程序中用到的输入输出点连接输入输出信号。

2、通过专用电缆线连接手持编程器与PLC主机(或连接电脑和PLC),逐条输入程序,检查无误后,将可编程控制器主机上的STOP/RUN按扭拨到RUN位置,运行指示灯点亮,表明程序开始运行,有关的指示灯将显示运行结果。

3、根据要求拨动输入开关(按钮),观察输出指示灯显示结果并记录。

三、控制要求启动开关闭合后,八段数码管开始显示:先是一段显示,显示次序是A、B、C、D、E、F、G、H,随后显示数字及字符,显示次序是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F,再返回初始显示,并循环。

每隔1秒改变一次显示状态。

四、I/O分配输入:启动开关 X0输出:八段数码管 A B C D E F G H分别对应 Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7五、参考程序(见第2页)六、思考1、请先根据控制要求自行编写程序,然后再看参考程序。

2、分析参考程序,思考问题:1)启动开关断开后再次接通,显示字符会混乱,为什么?如何解决?解决方案一:启动开关断开后停在当前状态,再接通后,接着断开前的状态显示。

解决方案二:启动开关断开后数码管全灭,再接通后,从头开始显示。

(如果觉得不好解决,也可考虑再设置一个停止信号)2)要求启动后显示数字9、8、7、6、5、4、3、2、1、0并循环,如何修改程序?(也可自行设定显示字符形状、数量、顺序)3)要求每隔2秒改变一次显示状态,如何修改?附:参考程序。

微机原理数码显示实验报告

微机原理数码显示实验报告

广东海洋大学寸金学院学生实验报告书实验名称数码显示课程名称微机原理与接口技术系机电工程系专业机械设计制造及其自动化班级14机械2班学生姓名陈瑞玲学号20141032102 实验地点实验楼103 实验日期一、实验目的:了解LED数码管动态显示的工作原理及编程方法。

二、实验内容:编制程序,使数码管显示“GOOD88”字样。

三、实验结果:实验程序框图实验步骤联机模式:(1)在PC机和实验系统联机状态下,运行该实验程序,可用鼠标左键单击菜单栏“文件”或工具栏“打开图标”,弹出“打开文件”的对话框,然后打开598K8ASM文件夹,点击S6.ASM文件,单击“确定”即可装入源文件,再单击工具栏中编译装载,即可完成源文件自动编译、装载目标代码功能,再单击“调试”中“连续运行”或工具图标运行,即开始运行程序。

(2)数码管显示“GOOD88”字样。

脱机模式:1、在P.态下,按SCAL键,输入2DF0,按EXEC键。

2、数码管显示“GOOD88”字样。

实验程序清单CODE SEGMENT ;S6.ASM display "GOOD88"ASSUME CS:CODEORG 2DF0HSTART: JMP START0PA EQU 0FF20H ;字位口PB EQU 0FF21H ;字形口PC EQU 0FF22H ;键入口BUF DB ?,?,?,?,?,?data1:db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1hdb 86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH,0F0HSTART0: CALL BUF1 ;缓冲区写初值CON1: CALL DISP ;调显示子程序JMP CON1 ;循环DISP: MOV AL,0FFH ; 位码MOV DX,PA ;数码管字位口OUT DX,AL ;关位码MOV CL,0DFH ; 最高位位码;显示子程序 ,5msMOV BX,OFFSET BUF ;取缓冲区首址DIS1: MOV AL,[BX] ;取缓冲区数字MOV AH,00H ;清零PUSH BX ;压栈MOV BX,OFFSET DATA1 ;字表首址ADD BX,AX ;加偏移量MOV AL,[BX] ;取字形代码POP BX ;出栈MOV DX,PB ;字形口OUT DX,AL ;送字形码MOV AL,CL ;取位码MOV DX,PA ;位口OUT DX,AL ;送位口PUSH CX ;压栈DIS2: MOV CX,00A0H ;点亮延时LOOP $POP CX ;出栈成绩指导教师日期第页,共页。

实验四 数码管显示

实验四 数码管显示

实验四数码管显示1. 驱动原理数码管由7个发光二极管组成,行成一个日字形,它门可以共阴极,也可以共阳极.通过解码电路得到的数码接通相应的发光二极而形成相应的字,这就是它的工作原理.基本的半导体数码管是由7个条状的发光二极管(LED)按图1所示排列而成的,可实现数字"0~9"及少量字符的显示。

另外为了显示小数点,增加了1个点状的发光二极管,因此数码管就由8个LED组成,我们分别把这些发光二极管命名为 "a,b,c,d,e,f,g,dp",排列顺序如下图1。

图1:数码管引脚图及外形图2. 数码管的结构及分类特别提示:注意段码和位码的概念;会找出不同接法的段码分析方法。

数码管按各发光二极管电极的连接方式分为共阳数码管和共阴数码管两种共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。

共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。

当某一字段的阳极为低电平时,相应字段就不亮。

共阴数码管内部连接如图3所示。

共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。

共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。

当某一字段的阴极为高电平时,相应字段就不亮。

共阳数码管内部连接如图2所示。

图2:共阳数码管内部连接图图3:共阴数码管内部连接图二、多位数码管的驱动方法A.静态法静态显示驱动:静态驱动也称直流驱动。

静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。

静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,要知道一个89S51单片机可用的I/O端口才32个呢:),实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。

微机原理实验四LED数码管显示实验

微机原理实验四LED数码管显示实验

微机原理实验四LED数码管显示实验LED数码管显示实验是微机原理中的一项重要实验,通过该实验可以学习到数码管的工作原理以及如何通过控制数字信号来实现数字的显示。

本文将详细介绍实验所需材料和步骤,并解析实验原理。

一、实验材料1.STM32F407开发板2.数码管模块3.面包板4.连接线5.杜邦线二、实验原理数码管是一种能够显示数字的装置,它由七个发光二极管组成,分别代表数字0-9、通过控制这七个发光二极管的亮灭,可以显示出不同的数字。

在实验中,我们使用STM32F407开发板来控制数码管。

数码管模块通过引脚与STM32F407开发板进行连接,其中共阴数码管的引脚与开发板的GPIO引脚相连,通过控制GPIO引脚的高低电平来控制数码管的亮灭。

三、实验步骤1.在面包板上连接数码管模块。

将数码管模块的引脚与STM32F407开发板的相应引脚通过杜邦线连接。

具体连接方式可以参考数码管模块和开发板的引脚定义。

2. 打开STM32CubeMX软件,创建一个新工程。

选择适合的开发板型号,并进行引脚配置。

将引脚配置为通用输出模式,并将相应的引脚定义为控制数码管的引脚。

3. 在生成的代码中找到main.c文件,在其中添加控制数码管的代码。

首先需要引入相应的头文件,并定义控制数码管的引脚宏定义。

4. 在main函数中,初始化控制数码管的引脚为输出模式。

然后通过控制引脚的高低电平来实现数码管的亮灭。

四、实验结果与分析经过以上步骤,我们成功控制了数码管的显示。

数码管显示的数字由控制引脚的高低电平确定,通过改变控制引脚的电平可以实现不同的数字显示。

值得注意的是,数码管的亮灭是通过切换引脚的电平来实现的,当引脚为高电平时,数码管熄灭;反之,当引脚为低电平时,数码管亮起。

在实际应用中,可以通过编写代码来改变控制引脚的电平,从而实现字母、字符、动画等更加复杂的显示效果。

五、实验总结本次实验通过控制STM32F407开发板的GPIO引脚,成功实现了LED数码管的显示。

实验四 数码管的动态显示实验

实验四 数码管的动态显示实验

实验四数码管的动态显示实验班级通信1102 姓名谢剑辉学号20110803223 指导老师袁文澹一、实验目的熟悉掌握数码管动态显示的基本方法;根据已知电路和设计要求在实验板上实现数码管动态显示。

根据已知电路和设计要求在PROTEUS平台仿真实现控制系统。

二、实验内容1、在STC89C52实验平台的4位数码管上实现动态显示0123→1234→2345→3456→4567→5678→6789→7890→8901→9012→0123→不断反复,每隔2s切换显示内容。

2、思考:如何实现当4位数码管显示的内容中有“1”时,蜂鸣器蜂鸣。

三、实验原理实验要求“4位数码管上实现动态显示0123→1234→2345→3456→4567→5678→6789→7890→8901→9012→0123→不断反复,每隔2s切换显示内容”。

动态扫描可以实现要求。

简单地说,动态扫描就是选通一位,送一位数据。

原理图中的P10~P13是位选信号,即选择哪个数码管显示数字;P00~P07是段码,即要显示的数字。

可以通过依次选通一位7段数码管并通过P0端口送出显示数据。

由于人眼的视觉残留原理,如果这种依次唯一选通每一位7段数码管的动作在0.1s内完成,就会造成多位数码管同时点亮显示各自数字的假象。

本实验使用中断,实现每2s更新一次数字。

四、实验方法与步骤设计思路和方法:1、根据电路图,分析数码管动态显示的设计思路,使用中断实现每2秒更新一次数字的设计思路,以及实现当4位数码管显示的内容中有“1”时,蜂鸣器蜂鸣的设计思路。

(1)数码管动态显示的原理如“实验原理”里所述,不赘述;(2)使用中断实现每2s更新一次数字的设计思路:本次实验使用Timer0中断,由于其定时时间最大为65536us,不能实现2s的长延时,那么可以使用多次中断来实现,并且在中断到来时,不断地死循环显示数字,即根据动态显示原理“选通一位,来一位数据”。

由于最大的数字为9,则(x%10),(x+1)%10,(x+2)%10,(x+3)%10分别是千位,百位,十位,个位上的数字。

数码管实验报告实验原理(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. 了解数码管的工作原理和驱动方式。

LED数码管显示实验

LED数码管显示实验

LED数码管显示实验一、实验目的:(1)进一步掌握8255的工作原理。

(2)学习LED数码管的显示原理。

(3)熟悉LED数码管显示器的接口设计方法。

二、实验设备:MUT—Ⅲ型实验箱、8086CPU模块。

三、实验内容:编程实现在六位LED数码管上“E”字跑马灯。

四、实验电路原理图:CPU 8255A八段LED数码管显示器采用共阴极接法,其段码由8255A的A口输出,通过PA0~PA7分别送给LED1~LED6的段码输入端(LED-A,LED-B,…,LED-G,LED-DP)。

显示器的位扫描信号经B口输出,通过PB0~PB5提供给数码管的公共极。

数码管采用动态扫描的方式显示。

八段LED数码管显示原理:如下图(a)所示,LED数码管的主要部分是由八段发光二极管构成,这八段发光二极管分别称为a,b,c,d,e,f,g 和DP(小数点)。

通过7个发光二极管的不同组合,可以显示数字0~9和字母A~F,从而实现十六进制数的显示。

LED数码管可以分为共阳极和共阴极两种结构,图(b)为共阳极结构,数码显示端输入低电平有效,当某一段为低电平时,该段便发光;图(c)为共阴极结构,数码显示端输入高电平有效,当某一段得到高电平时,便发光。

例如,当a,b,g,e,d为高电平,而其他段为低电平时,则显示数字“2”。

显示段码与各段的对应关系如下图所示。

根据对应关系,LED数码管在共阴极结构下,数字“2”的显示段码为01011011 B(即5BH)下表是数字0~9与字母A~F的七段数码管显示段码。

五、实验步骤:(1)实验连线PA0连LED-A,PA1连LED-B,PA2连LED-C,PA3连LED-D,PA4连LED-E,PA5连LED-F,PA6连LED-G,PA7连LED-DP; PB0连LED1,PB1连LED2,PB2连LED3,PB3连LED4,PB4连LED5,PB5连LED6。

CS0 CS8255(注意:运行程序前,需要除去电路板上数码管右侧的跳线!表示使用外部接口电路)(2)编写程序,全速运行,观察实验结果六、参考程序CODE SEGMENTASSUME CS:CODEORG 0100HSTART: MOV DX, 04A6H ;8255控制口地址MOV AL, 80H ;A口和B口工作于方式0,输出OUT DX, ALCOUNT: MOV CX, 6 ;循环次数MOV BL, 11011111B ;位选码初值:PB5=0,选中LED6, 其它灭NEXT: MOV DX, 04A0H ;A口地址MOV AL, 79H ;“E”的段码送ALOUT DX, AL ;显示“E”MOV DX, 04A2H ;B口地址MOV AL, BL ;送位选码给ALOUT DX, ALCALL DELAY ;延时SAR BL, 1 ;位选码右移1位,选择下一位数码管LOOP NEXTJMP COUNT ;显示完一轮后再继续显示下一轮DELAY: MOV SI, 8FFFH ;延时约1秒的子程序DELAY1: NOPNOPDEC SIJNZ DELAY1RETCODE ENDSEND START程序框图:作业题:1、修改上述程序,显示“8”字跑马。

实验四 LED数码管实验

实验四 LED数码管实验

实验四 LED数码管实验一、实验目的本实验旨在通过搭建电路和编写程序,控制LED数码管显示特定的数字。

二、实验器材和材料•Arduino开发板 *1•LED数码管 *1•杜邦线若干三、实验原理LED数码管是一种由多个LED组成的显示器件,可用来显示数字和一些简单的字符。

数码管一般由七个显示单元组成,每个显示单元可以显示数字0-9中的一个。

通过控制不同的显示单元,可以实现显示不同的数字。

Arduino开发板具有数字输出引脚和电源引脚。

通过给数字输出引脚不同的电平(高电平或低电平),就可以控制LED数码管的亮灭。

四、实验步骤1.将数码管的引脚与Arduino开发板的数字输出引脚连接。

通常数码管的引脚分别为a、b、c、d、e、f、g(表示数码管的七个显示单元),接线顺序可以根据具体情况调整。

2.打开Arduino开发环境,编写程序控制数码管显示特定的数字。

以下是一个示例程序,用于控制数码管显示数字1:void setup() {// 将数码管的引脚设置为输出模式pinMode(2, OUTPUT); // apinMode(3, OUTPUT); // bpinMode(4, OUTPUT); // cpinMode(5, OUTPUT); // dpinMode(6, OUTPUT); // epinMode(7, OUTPUT); // fpinMode(8, OUTPUT); // g}void loop() {// 通过设置不同的引脚电平,控制数码管的显示digitalWrite(2, HIGH); // adigitalWrite(3, LOW); // bdigitalWrite(4, LOW); // cdigitalWrite(5, HIGH); // ddigitalWrite(6, HIGH); // edigitalWrite(7, HIGH); // fdigitalWrite(8, LOW); // gdelay(1000); // 等待1秒钟}3.将Arduino开发板连接到计算机,并烧录程序到开发板中。

微机原理数码显示hello

微机原理数码显示hello

实验二数码显示一、实验目的了解LED数码管动态显示的工作原理及编程方法。

二、实验内容编制程序,使数码管显示“HELLO”字样。

三、实验程序框图四、实验过程1、启动运行DICE-8086K软件,屏幕显示DICE-8086K软件的工作窗口,底边状态栏由“下位机没有连接….”变成“连接上下位机”,说明联机成功,否则会弹出对话框提示:“下位机没有连接…”。

单击工具栏上的“重新连接”按钮可以联机,一定要保证上下位机联机成功。

将试验箱上的通讯开关打到最下端86/88档。

2.进入DICE-8086K软件后,默认会打开一个编辑窗口Editor,此时可在此编辑、输入源程序。

输入的源程序如下:CODE SEGMENTASSUME CS:CODESTART: JMP TODA TA DB 89H,86H,0C7H,0C7H,0C0HTO:LEA SI,DA TAMOV BL,11101111BNEXT: MOV DX,0FF20HMOV AL,BLOUT DX,ALROR BL,1CMP AL,10111111BJZ TOMOV DX,0FF21HMOV AL,[SI]OUT DX,ALINC SICALL DELAYJMP NEXTDELAY PROCMOV CL,0FFHX1:DEC CLJNZ X1DELAY ENDPHLTCODE ENDSEND START保存编写好的程序,保存的文件名后缀为.ASM ,保存后,单击工具栏上的编译装载图标,几秒钟后会弹出“编译成功”对话框,单击“OK”,再等几秒钟会弹出“装载成功”对话框,单击“OK”即编译装载完毕。

3、观察试验箱上的数码管显示是否为HELLO,若不是则需检查程序是否出错。

五、实验总结1、学会了数码管的控制方法,以及DICE-8086K软件的使用方式。

2、学会了延时汇编程序的一般书写以及调用。

微机原理实验四LED数码管显示实验_图文(精)

微机原理实验四LED数码管显示实验_图文(精)

实验名称 LED数码管显示实验指导教师专业班级姓名学号联系方式一实验要求:实验四 LED数码管显示实验实验目的:理解LED七段数码管的显示控制原理,掌握数码管与MCU的接口技术,能够编写数码管显示驱动程序;熟悉接口程序调试方法。

实验内容:利用C8051F310单片机控制数码管显示器基本要求:利用末位数码管循环显示数字0-F,显示切换频率为1Hz。

提高要求:在数码管上显示0→199计数,计数间隔为0.5秒。

二、设计思路1 基本要求:对F310信号频率进行8分频,再对定时器进行48分频,以使在一次定时时间范围内实现1s定时。

采用查询方式进行定时。

P0.6,P0.7作为位选信号来一直选择末位数码管输出信号。

再利用R0作为相对寻址来储存数据并赋值给A。

通过MOVCA, @A+DPTR指令,利用顺序查表法取出显示段码数据。

寄存器R0自增1,并赋给A以取出下一个显示段码数据。

2 提高要求:依然对信号频率八分频,对定时器进行48分频,通过P0,6,P0.7进行位控选择数码管输出,定时器定时0.5s,当溢出时进入中断,并通过中断程序将段位控制按序加一,R3,R6,R7分别储存第一第二第三位数码管段位码,利用A 为中间变量,通过P1输出储存的值,查表输出数码管值,达到119时结束。

三、资源分配1 基本要求:P0.6: 位选信号端口P0.7:位选信号端口P1:输出段码数据R0:存放显示数据DPTR:指向段码数据表首2 提高要求:P0.6: 位选信号端口P0.7:位选信号端口P1:输出段码数据DPTR:指向段码数据表首R3,R6,R7:分别储存第三第二第一位数码管数据四、流程图1 基本要求2 提高要求: 主程序接--2 提高要求:动态扫描程序中断程序五、源代码(含文件头说明、语句行注释1 基本要求:ORG 0000HLJMP MAINORG 0100HMAIN:LCALL Init_DeviceMOV SP,#40HMOV DPTR,#TAB ;将DPTR地址指向表头MOV TMOD,#01H ;定时器采用T0定时方式一MOV TH0,#06H ;定时器赋予初值MOV TL0,#0C6HCLR P0.6 ;选择末位数码管CLR P0.7START:MOV R0,#00H ;赋初值0CLR AMOVC A,@A+DPTR ;查表输出MOV P1,ASETB TR0 ;定时器开始工作HERE:JNB TF0,HERE ;等待溢出CLR TR0CLR TF0MOV TH0,#06H ;重新赋予初值MOV TL0,#0C6HCJNE R0,#0FH,NEXT ;等待末位数码管到FSJMP STARTNEXT:INC R0 ; R0加一MOV A,R0MOVC A,@A+DPTRMOV P1,A ;P1输出SETB TR0SJMP HERE ;踏步org 1000hTAB:DB 0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H DB0FEH,0E6H,0EEH,3EH,1AH,7AH,9EH,8EH;------------------------------------;- Generated Initialization File --;------------------------------------$include (C8051F310.incpublic Init_DeviceINIT SEGMENT CODErseg INIT; Peripheral specific initialization functions, ; Called from the Init_Device label PCA_Init:anl PCA0MD, #0BFhmov PCA0MD, #000hretTimer_Init:mov CKCON, #002hretPort_IO_Init:; P0.0 - Unassigned, Open-Drain, Digital ; P0.1 - Unassigned, Open-Drain, Digital ; P0.2 - Unassigned, Open-Drain, Digital ; P0.3 - Unassigned, Open-Drain, Digital ; P0.4 - Unassigned, Open-Drain, Digital ; P0.5 - Unassigned, Open-Drain, Digital ; P0.6 - Unassigned, Open-Drain, Digital ; P0.7 - Unassigned, Open-Drain, Digital; P1.0 - Unassigned, Push-Pull, Digital ; P1.1 - Unassigned, Push-Pull, Digital ; P1.2 - Unassigned, Push-Pull, Digital ; P1.3 - Unassigned, Push-Pull, Digital ; P1.4 - Unassigned, Push-Pull, Digital ; P1.5 - Unassigned, Push-Pull, Digital ; P1.6 - Unassigned, Push-Pull, Digital ; P1.7 - Unassigned, Push-Pull, Digital ; P2.0 - Unassigned, Open-Drain, Digital; P2.1 - Unassigned, Open-Drain, Digital ; P2.2 - Unassigned, Open-Drain, Digital ; P2.3 - Unassigned, Open-Drain, Digitalmov P1MDOUT, #0FFhmov P2MDOUT, #0C0hmov XBR1, #040hret; Initialization function for device,; Call Init_Device from your main program Init_Device:lcall PCA_Initlcall Timer_Initlcall Port_IO_InitretEND2 提高部分:ORG 0000HLJMP STARTORG 000BHLJMP TI00ORG 0300HSTART:LCALL Init_DeviceMOV R3,#00H ;百位数码管赋予初值MOV R6,#00H ;十位数码管赋予初值MOV R7,#01H ;个位数码管赋予初值MOV 60H,#00H ;设置位控码MOV 61H,#40HMOV 62H,#80HMOV TMOD, #01H ;选择定时器T0方式一SETB ET0 ;开外中断T0SETB EAMOV TH0, #131 ;定时器赋予初值MOV TL0, #99MAIN:LJMP DISP ;跳入动态输出子程序MAIN1:LCALL COUNTERAJMP MAIN ;重新扫描;=================动态输出子程序================== DISP:MOV SP,#30H ;设置堆栈指针MOV R1,#60H ;位选指针赋初值MOV P1,#00H ;灯全灭;=================LD0:MOV A,@R1 ;取出位选码ANL P0,#3FH ;将P0端口高两位置零(这样做的目的是为了避免用MOV指令影响到P0端口的低6位ORL P0,A ;输出位选信号MOV A,R7 ;取出段选码MOV DPTR,#TAB ;DPTR指向段选码表第一个数据MOVC A,@ A+DPTR ;查表,取出段选码MOV P1,A ;输出段选码LCALL DL1MS ;延时1ms,灯亮1msMOV P1,#00H ;灯全灭INC R1 ;位选指针加一MOV A,@R1 ;取出位选码ANL P0,#3FH ;将P0端口高两位置零(这样做的目的是为了避免用MOV指令影响到P0端口的低6位ORL P0,A ;输出位选信号MOV A,R6 ;取出段选码MOV DPTR,#TAB ;DPTR指向段选码表第一个数据MOVC A,@ A+DPTR ;查表,取出段选码MOV P1,A ;输出段选码LCALL DL1MS ;延时1ms,灯亮1msMOV P1,#00H ;灯全灭INC R1MOV A,@R1 ;取出位选码ANL P0,#3FH ;将P0端口高两位置零(这样做的目的是为了避免用MOV指令影响到P0端口的低6位ORL P0,A ;输出位选信号MOV A,R3 ;取出段选码MOV DPTR,#TAB ;DPTR指向段选码表第一个数据MOVC A,@ A+DPTR ;查表,取出段选码MOV P1,A ;输出段选码LCALL DL1MS ;延时1ms,灯亮1msMOV P1,#00H ;灯全灭LJMP MAIN1 ;返回主程序;===============延时1ms子程序=============ORG 0050HDL1MS:MOV R4,#4 ;延时程序通过R4,R5 实现D1:MOV R5,#253NOPDJNZ R5,$DJNZ R4,D1RETORG 0100HCOUNTER:SETB TR0 ;定时器开启RET;中断程序TI00:MOV TH0, #133 ;中断程序重新赋予初值MOV TL0,# 99INC R7 ;个位加一CJNE R7,#0BH,S1 ;判断个位是否进位MOV R7,#01H ;重新将个位归零CJNE R6,#00H,S2 ;判断此时十位是否显示MOV R6,#01H ;若不显示则开启显示S2:INC R6 ;十位加一CJNE R6,#0BH,S1 ;判断十位是否进位CJNE R3,#00H,S3 ;判断百位是否显示MOV R3,#01HS3:INC R3 ;百位加一MOV R6,#01H ;十位重新归零CJNE R3,#03H,S1 ;判断百位是否到2MOV P1,#00H ;如果到200则数码管全熄灭SJMP $ ;踏步停止S1:RETI ;中断返回ORG 0200H;===============段选码表==============;TAB: DB 00H,0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H,0FEH,0F6H; $include (C8051F310.incpublic Init_DeviceINIT SEGMENT CODErseg INIT; Peripheral specific initialization functions,; Called from the Init_Device labelPCA_Init:anl PCA0MD, #0BFhmov PCA0MD, #000hretTimer_Init:mov CKCON, #002hretPort_IO_Init:; P0.0 - Unassigned, Open-Drain, Digital ; P0.1 - Unassigned, Open-Drain, Digital ; P0.2 - Unassigned, Open-Drain, Digital ; P0.3 - Unassigned, Open-Drain, Digital ; P0.4 - Unassigned, Open-Drain, Digital ; P0.5 - Unassigned, Open-Drain, Digital ; P0.6 - Unassigned, Push-Pull, Digital ; P0.7 - Unassigned, Push-Pull, Digital; P1.0 - Unassigned, Push-Pull, Digital ; P1.1 - Unassigned, Push-Pull, Digital ; P1.2 - Unassigned, Push-Pull, Digital ; P1.3 - Unassigned, Push-Pull, Digital ; P1.4 - Unassigned, Push-Pull, Digital ; P1.5 - Unassigned, Push-Pull, Digital ; P1.6 - Unassigned, Push-Pull, Digital ; P1.7 - Unassigned, Push-Pull, Digital ; P2.0 -Unassigned, Open-Drain, Digital ; P2.1 - Unassigned, Open-Drain, Digital ; P2.2 - Unassigned, Open-Drain, Digital ; P2.3 - Unassigned, Open-Drain, Digitalmov P0MDOUT, #0C0hmov P1MDOUT, #0FFhmov XBR1, #040hret; Initialization function for device,; Call Init_Device from your main programInit_Device:lcall PCA_Initlcall Timer_Initlcall Port_IO_InitretEND六程序测试方法与结果、软件性能分析1 基本要求:测试方法:观察P1端口输出波形由图可知,LED数码管切换频率为1HZ,跑完一轮经过16s,满足定时要求。

LED数码管显示实验.doc

LED数码管显示实验.doc

第1页共9页信息工程学院实验报告课程名称:单片机原理及接口实验项目名称:LED数码管显示实验实验时间:2016年3月11日班级:通信141 姓名:学号:一、实验目的:熟悉keil仿真软件、proteus仿真软件、软件仿真板的使用。

了解并熟悉一位数码管与多位LED数码管的电路结构、与单片机的连接方法及其应用原理。

学习proteus构建LED数码管显示电路的方法,掌握C51中单片机控制LED数码管动态显示的原理与编程方法。

二、实验设备与器件硬件:微机、单片机仿真器、单片机实验板、连线若干软件:KEIL C51单片机仿真调试软件,proteus系列仿真调试软件三、实验原理LED显示器是由发光二极管显示字段的显示器件。

在单片机应用系统中通常使用的是七段LED,这种显示器有共阴极与共阳极两种。

共阴极LED显示器的发光二极管阴极共地,当某个发光二极管的阳极为高电平时,该发光二极管则点亮;共阳极LED显示器的发光二极管阳极并接。

七段LED数码管与单片机连接时,只要将一个8位并行输出口与显示器的发光二极管引成绩:指导老师(签名):af begcddp1 2 3 4 510 9 8 7 6g f a be d c dp(a) 共阴极(b) 共阳极(c) 管脚配置第2页共9页脚相连即可。

8位并行输出口输出不同的字节数据即可获得不同的数字或字符,通常将控制发光二极管的8位字节数据称为段选码。

多位七段LED数码管与单片机连接时将所有LED的段选线并联在一起,由一个八位I/O口控制,而位选线分别由相应的I/O口线控制。

如:8位LED动态显示电路只需要两个八位I/O口。

其中一个控制段选码,另一个控制位选。

由于所有位的段选码皆由一个I/O控制,因此,在每个瞬间,多位LED 只可能显示相同的字符。

要想每位显示不同的字符,必须采用动态扫描显示方式。

即在每一瞬间只使某一位显示相应字符。

在此瞬间,位选控制I/O口在该显示位送入选通电平(共阴极送低电平、共阳极送高电平)以保证该位显示相应字符,段选控制I/O口输出相应字符段选码。

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

实验名称 LED数码管显示实验指导教师专业班级姓名学号联系方式一实验要求:实验四 LED数码管显示实验实验目的:理解LED七段数码管的显示控制原理,掌握数码管与MCU的接口技术,能够编写数码管显示驱动程序;熟悉接口程序调试方法。

实验内容:利用C8051F310单片机控制数码管显示器基本要求:利用末位数码管循环显示数字0-F,显示切换频率为1Hz。

提高要求:在数码管上显示0→199计数,计数间隔为0.5秒。

二、设计思路1 基本要求:对F310信号频率进行8分频,再对定时器进行48分频,以使在一次定时时间范围内实现1s定时。

采用查询方式进行定时。

P0.6,P0.7作为位选信号来一直选择末位数码管输出信号。

再利用R0作为相对寻址来储存数据并赋值给A。

通过MOVC A, @A+DPTR指令,利用顺序查表法取出显示段码数据。

寄存器R0自增1,并赋给A以取出下一个显示段码数据。

2 提高要求:依然对信号频率八分频,对定时器进行48分频,通过P0,6,P0.7进行位控选择数码管输出,定时器定时0.5s,当溢出时进入中断,并通过中断程序将段位控制按序加一,R3,R6,R7分别储存第一第二第三位数码管段位码,利用A 为中间变量,通过P1输出储存的值,查表输出数码管值,达到119时结束。

三、资源分配1 基本要求:P0.6: 位选信号端口P0.7:位选信号端口P1:输出段码数据R0:存放显示数据DPTR:指向段码数据表首2 提高要求:P0.6: 位选信号端口P0.7:位选信号端口P1:输出段码数据DPTR:指向段码数据表首R3,R6,R7:分别储存第三第二第一位数码管数据四、流程图1 基本要求2 提高要求:主程序延时程序接--2 提高要求:动态扫描程序中断程序五、源代码(含文件头说明、语句行注释)1 基本要求:ORG 0000HLJMP MAINORG 0100HMAIN:LCALL Init_DeviceMOV SP,#40HMOV DPTR,#TAB ;将DPTR地址指向表头MOV TMOD,#01H ;定时器采用T0定时方式一MOV TH0,#06H ;定时器赋予初值MOV TL0,#0C6HCLR P0.6 ;选择末位数码管CLR P0.7START:MOV R0,#00H ;赋初值0CLR AMOVC A,@A+DPTR ;查表输出MOV P1,ASETB TR0 ;定时器开始工作HERE:JNB TF0,HERE ;等待溢出CLR TR0CLR TF0MOV TH0,#06H ;重新赋予初值MOV TL0,#0C6HCJNE R0,#0FH,NEXT ;等待末位数码管到FSJMP STARTNEXT:INC R0 ; R0加一MOV A,R0MOVC A,@A+DPTRMOV P1,A ;P1输出SETB TR0SJMP HERE ;踏步org 1000hTAB:DB 0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H DB 0FEH,0E6H,0EEH,3EH,1AH,7AH,9EH,8EH;------------------------------------;- Generated Initialization File --;------------------------------------$include (C8051F310.inc)public Init_DeviceINIT SEGMENT CODErseg INIT; Peripheral specific initialization functions, ; Called from the Init_Device labelPCA_Init:anl PCA0MD, #0BFhmov PCA0MD, #000hretTimer_Init:mov CKCON, #002hretPort_IO_Init:; P0.0 - Unassigned, Open-Drain, Digital ; P0.1 - Unassigned, Open-Drain, Digital ; P0.2 - Unassigned, Open-Drain, Digital ; P0.3 - Unassigned, Open-Drain, Digital ; P0.4 - Unassigned, Open-Drain, Digital ; P0.5 - Unassigned, Open-Drain, Digital ; P0.6 - Unassigned, Open-Drain, Digital ; P0.7 - Unassigned, Open-Drain, Digital; P1.0 - Unassigned, Push-Pull, Digital ; P1.1 - Unassigned, Push-Pull, Digital ; P1.2 - Unassigned, Push-Pull, Digital ; P1.3 - Unassigned, Push-Pull, Digital ; P1.4 - Unassigned, Push-Pull, Digital ; P1.5 - Unassigned, Push-Pull, Digital ; P1.6 - Unassigned, Push-Pull, Digital ; P1.7 - Unassigned, Push-Pull, Digital ; P2.0 - Unassigned, Open-Drain, Digital; P2.1 - Unassigned, Open-Drain, Digital ; P2.2 - Unassigned, Open-Drain, Digital ; P2.3 - Unassigned, Open-Drain, Digitalmov P1MDOUT, #0FFhmov P2MDOUT, #0C0hmov XBR1, #040hret; Initialization function for device,; Call Init_Device from your main programInit_Device:lcall PCA_Initlcall Timer_Initlcall Port_IO_InitretEND2 提高部分:ORG 0000HLJMP STARTORG 000BHLJMP TI00ORG 0300HSTART:LCALL Init_DeviceMOV R3,#00H ;百位数码管赋予初值MOV R6,#00H ;十位数码管赋予初值MOV R7,#01H ;个位数码管赋予初值MOV 60H,#00H ;设置位控码MOV 61H,#40HMOV 62H,#80HMOV TMOD, #01H ;选择定时器T0方式一SETB ET0 ;开外中断T0SETB EAMOV TH0, #131 ;定时器赋予初值MOV TL0, #99MAIN:LJMP DISP ;跳入动态输出子程序MAIN1:LCALL COUNTERAJMP MAIN ;重新扫描;=================动态输出子程序==================DISP:MOV SP,#30H ;设置堆栈指针MOV R1,#60H ;位选指针赋初值MOV P1,#00H ;灯全灭;=================LD0:MOV A,@R1 ;取出位选码ANL P0,#3FH ;将P0端口高两位置零(这样做的目的是为了避免用MOV指令影响到P0端口的低6位)ORL P0,A ;输出位选信号MOV A,R7 ;取出段选码MOV DPTR,#TAB ;DPTR指向段选码表第一个数据MOVC A,@ A+DPTR ;查表,取出段选码MOV P1,A ;输出段选码LCALL DL1MS ;延时1ms,灯亮1msMOV P1,#00H ;灯全灭INC R1 ;位选指针加一MOV A,@R1 ;取出位选码ANL P0,#3FH ;将P0端口高两位置零(这样做的目的是为了避免用MOV指令影响到P0端口的低6位)ORL P0,A ;输出位选信号MOV A,R6 ;取出段选码MOV DPTR,#TAB ;DPTR指向段选码表第一个数据MOVC A,@ A+DPTR ;查表,取出段选码MOV P1,A ;输出段选码LCALL DL1MS ;延时1ms,灯亮1msMOV P1,#00H ;灯全灭INC R1MOV A,@R1 ;取出位选码ANL P0,#3FH ;将P0端口高两位置零(这样做的目的是为了避免用MOV指令影响到P0端口的低6位)ORL P0,A ;输出位选信号MOV A,R3 ;取出段选码MOV DPTR,#TAB ;DPTR指向段选码表第一个数据MOVC A,@ A+DPTR ;查表,取出段选码MOV P1,A ;输出段选码LCALL DL1MS ;延时1ms,灯亮1msMOV P1,#00H ;灯全灭LJMP MAIN1 ;返回主程序;===============延时1ms子程序=============ORG 0050HDL1MS:MOV R4,#4 ;延时程序通过R4,R5 实现D1:MOV R5,#253NOPDJNZ R5,$DJNZ R4,D1RETORG 0100HCOUNTER:SETB TR0 ;定时器开启RET;中断程序TI00:MOV TH0, #133 ;中断程序重新赋予初值MOV TL0,# 99INC R7 ;个位加一CJNE R7,#0BH,S1 ;判断个位是否进位MOV R7,#01H ;重新将个位归零CJNE R6,#00H,S2 ;判断此时十位是否显示MOV R6,#01H ;若不显示则开启显示S2:INC R6 ;十位加一CJNE R6,#0BH,S1 ;判断十位是否进位CJNE R3,#00H,S3 ;判断百位是否显示MOV R3,#01HS3:INC R3 ;百位加一MOV R6,#01H ;十位重新归零CJNE R3,#03H,S1 ;判断百位是否到2MOV P1,#00H ;如果到200则数码管全熄灭SJMP $ ;踏步停止S1:RETI ;中断返回ORG 0200H;===============段选码表==============;TAB: DB 00H,0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H,0FEH,0F6H; $include (C8051F310.inc)public Init_DeviceINIT SEGMENT CODErseg INIT; Peripheral specific initialization functions,; Called from the Init_Device labelPCA_Init:anl PCA0MD, #0BFhmov PCA0MD, #000hretTimer_Init:mov CKCON, #002hretPort_IO_Init:; P0.0 - Unassigned, Open-Drain, Digital ; P0.1 - Unassigned, Open-Drain, Digital ; P0.2 - Unassigned, Open-Drain, Digital ; P0.3 - Unassigned, Open-Drain, Digital ; P0.4 - Unassigned, Open-Drain, Digital ; P0.5 - Unassigned, Open-Drain, Digital ; P0.6 - Unassigned, Push-Pull, Digital ; P0.7 - Unassigned, Push-Pull, Digital; P1.0 - Unassigned, Push-Pull, Digital ; P1.1 - Unassigned, Push-Pull, Digital ; P1.2 - Unassigned, Push-Pull, Digital ; P1.3 - Unassigned, Push-Pull, Digital ; P1.4 - Unassigned, Push-Pull, Digital ; P1.5 - Unassigned, Push-Pull, Digital ; P1.6 - Unassigned, Push-Pull, Digital ; P1.7 - Unassigned, Push-Pull, Digital ; P2.0 - Unassigned, Open-Drain, Digital ; P2.1 - Unassigned, Open-Drain, Digital ; P2.2 - Unassigned, Open-Drain, Digital ; P2.3 - Unassigned, Open-Drain, Digitalmov P0MDOUT, #0C0hmov P1MDOUT, #0FFhmov XBR1, #040hret; Initialization function for device,; Call Init_Device from your main programInit_Device:lcall PCA_Initlcall Timer_Initlcall Port_IO_InitretEND六程序测试方法与结果、软件性能分析1 基本要求:测试方法:观察P1端口输出波形由图可知,LED数码管切换频率为1HZ,跑完一轮经过16s,满足定时要求。

相关文档
最新文档