实验二 数码管动态扫描显示实验

合集下载

实验二 LED数码管动态显示

实验二  LED数码管动态显示

特点
动态显示方式
图3
首先从段选线上送出字段码, 首先从段选线上送出字段码,再控制位选 字符就显示在指定位置上,持续一段时间, 线,字符就显示在指定位置上,持续一段时间,然 后关闭所有显示;接下来又送出新的字段码, 后关闭所有显示;接下来又送出新的字段码,按照 上述过程又显示在新的位置上, 上述过程又显示在新的位置上,直到每一位数码管 都扫描完为止,即为一个扫描周期。 都扫描完为止,即为一个扫描周期。
概念
I/O口线上 每个LED I/O口线上,每个LED的数码管的位码单独使用一 口线上, LED的数码管的位码单独使用一 I/O口线 口线, 位动态显示的LED LED数码管只需 个 I/O 口线 , 则 n 位动态显示的 LED 数码管只需 +n位I/O口线 从而大大地简化了硬件电路。 口线, 8+n位I/O口线,从而大大地简化了硬件电路。选 亮数码管采用动态扫描显示。 亮数码管采用动态扫描显示 。 所谓动态扫描显示 即轮流向各位数码管送出字形码和相应的位选, 即轮流向各位数码管送出字形码和相应的位选 , 利用发光管的余辉和人眼视觉暂留作用, 利用发光管的余辉和人眼视觉暂留作用 , 使人的 感觉好像各位数码管同时都在显示。 感觉好像各位数码管同时都在显示。 比较节省I/O口 硬件电路也较静态显示方式简单, 比较节省I/O口,硬件电路也较静态显示方式简单, I/O 但其亮度不如静态显示方式, 但其亮度不如静态显示方式 , 而且在显示位数较 多时, CPU要依次扫描 占用CPU 较多的时间。 要依次扫描, CPU较多的时间 多时 , CPU 要依次扫描 , 占用 CPU 较多的时间 。 单 片机控制系统常采用此方式。 片机控制系统常采用此方式。
3、LED显示器显示接口按驱动方式的分类 LED显示器显示接口按驱动方式的示是指数码管显示某一字符时, 概念 静态显示是指数码管显示某一字符时, 相应的发光二极管恒定导通或恒定截止。 相应的发光二极管恒定导通或恒定截止。

02实验二数码管动态显示程序设计

02实验二数码管动态显示程序设计

02实验二数码管动态显示程序设计数码管是一种常见的数字显示器件,通常由七段LED组成。

通过控制不同的LED亮灭状态,可以显示出0到9的数字和一些字母。

数码管通常被广泛应用于计时器、温度显示器等设备中,用于显示数字和一些特定的符号。

数码管的动态显示是指通过快速切换数码管显示的内容,从而实现多个数码管连续显示不同的数字。

这种显示方式使得数字的显示看起来像是连续变化的,给人一种流动的感觉。

在进行数码管动态显示的程序设计时,需要考虑以下几个方面:1.数码管的接口:数码管通常使用共阴极或共阳极的接口方式,需要根据实际的硬件接口进行相应的程序设计。

2.显示内容的切换:数码管需要显示不同的数字,需要通过程序控制数码管的显示内容。

可以通过数组或者其他数据结构来存储需要显示的数字,并通过循环,依次将不同的数字输出到数码管上。

3.显示周期的控制:数码管动态显示的关键是控制显示的刷新速度。

数码管的刷新速度通常以帧率进行表示,即每秒显示的帧数。

常见的数码管帧率为50Hz或60Hz,即每秒刷新50次或60次。

程序需要根据帧率来控制数码管显示的频率。

4.数码管的亮度控制:数码管的亮度通常通过PWM(脉宽调制)来控制,即快速开关数码管的亮灭状态,通过调整开关的占空比来控制数码管的亮度。

程序需要实现相应的PWM控制函数,可以通过改变PWM的占空比来控制数码管的亮度。

下面是一个简单的数码管动态显示的程序设计示例:```c++#include <arduino.h>//数码管引脚定义const int digitPins[] = {2, 3, 4, 5};const int segmentPins[] = {6, 7, 8, 9, 10, 11, 12}; //数码管显示的数字const int numbers[] =// abcdefg};//数码管显示的当前数字int currentNumber = 0;// 数码管显示的刷新速度,单位为msconst int refreshRate = 10;void setu//设置数码管引脚的模式for (int i = 0; i < 4; ++i)pinMode(digitPins[i], OUTPUT);}for (int i = 0; i < 7; ++i)pinMode(segmentPins[i], OUTPUT);}void loo//刷新数码管显示refreshDisplay(;//数码管显示的数字切换currentNumber = (currentNumber + 1) % 10; //延时delay(refreshRate);//刷新数码管显示的函数void refreshDispla//显示当前数字for (int i = 0; i < 4; ++i)digitalWrite(digitPins[i], LOW); setSegments(numbers[currentNumber]); delayMicroseconds(500);digitalWrite(digitPins[i], HIGH);}//设置数码管的段void setSegments(int segments)for (int i = 0; i < 7; ++i)digitalWrite(segmentPins[i], (segments >> i) & 1);}```该程序通过设置数码管引脚的模式来控制数码管的显示。

数码管动态显示实训报告

数码管动态显示实训报告

一、实训目的本次实训旨在通过实际操作,让学生掌握数码管动态显示的原理,了解数码管动态扫描显示电路的设计方法,提高学生使用Verilog HDL进行层次化设计电路的能力。

通过实训,学生能够理解并应用动态扫描显示数码管、数据选择器及其信号分配方法,同时熟悉使用可编程芯片(如FPGA/CPLD)控制多位动态扫描数码管的显示。

二、实训环境1. 实训设备:FPGA开发板、数码管、信号源、示波器等。

2. 软件工具:Quartus II、ModelSim等。

3. 实训教材:相关电子设计教材、Verilog HDL编程指南。

三、实训原理数码管动态显示技术是利用人眼的视觉暂留效应,通过快速切换显示不同的数码管,使观察者感觉多个数码管同时显示。

具体原理如下:1. 数码管结构:数码管由若干个LED段组成,通过点亮不同的段来显示数字或字符。

2. 共阳/共阴数码管:数码管分为共阳和共阴两种类型。

共阳数码管的阳极连接在一起,共阴数码管的阴极连接在一起。

3. 动态扫描:通过控制每个数码管的点亮和熄灭,实现多位数码管的动态显示。

4. 数据选择器:用于选择要显示的数字或字符对应的段编码。

四、实训过程1. 设计3位数码管动态扫描显示电路:- 使用Verilog HDL设计数码管显示模块,包括段编码生成、位选控制、时钟分频等。

- 设计数据选择器,用于选择要显示的数字或字符对应的段编码。

- 设计主控制器,用于控制动态扫描的时序。

2. 实现显示功能:- 将学号的后3位数字输入到数码管显示电路中。

- 使用可编程芯片(如FPGA/CPLD)实现电路的编译和下载。

3. 提高性实验:- 增加一个功能切换控制开关,实现数码管显示数字的自动循环移位。

- 设计其他显示功能,如显示不同的字符或图案。

4. 实验测试:- 使用示波器观察数码管显示电路的时序信号,确保电路正常工作。

- 使用Quartus II进行仿真测试,验证电路的功能。

五、实验结果与分析1. 3位数码管动态扫描显示电路:- 成功实现了学号后3位数字的动态显示。

数码管动态显示实验报告

数码管动态显示实验报告

一、实验目的1. 掌握数码管动态扫描显示的原理和编程实现方法;2. 熟悉单片机与数码管之间的接口连接;3. 学会使用定时器中断控制数码管的动态显示;4. 培养动手能力和问题解决能力。

二、实验原理数码管动态显示是通过单片机控制多个数码管同时显示不同的数字或字符,利用人眼的视觉暂留效应,实现快速切换显示内容,从而在有限的引脚数下显示更多的信息。

实验中,我们采用动态扫描的方式,依次点亮数码管,通过定时器中断控制扫描速度。

三、实验器材1. 单片机开发板(如51单片机、AVR单片机等);2. 数码管(共阳/共阴自选);3. 连接线;4. 电阻;5. 实验台;6. 编译器(如Keil、IAR等)。

四、实验步骤1. 设计电路图:根据实验要求,设计单片机与数码管的连接电路图,包括数码管的段码、位选信号、电源等。

2. 编写程序:使用C语言或汇编语言编写程序,实现数码管的动态显示功能。

(1)初始化:设置单片机的工作模式、定时器模式、端口方向等。

(2)显示函数:编写显示函数,实现数码管的点亮和熄灭。

(3)定时器中断服务程序:设置定时器中断,实现数码管的动态扫描。

3. 编译程序:将编写的程序编译成机器码。

4. 烧录程序:将编译后的程序烧录到单片机中。

5. 连接电路:将单片机与数码管连接好,包括数码管的段码、位选信号、电源等。

6. 运行实验:打开电源,观察数码管的显示效果。

五、实验结果与分析1. 实验结果:数码管按照预期实现了动态显示功能,依次点亮每位数码管,并显示出不同的数字或字符。

2. 分析:(1)通过调整定时器中断的周期,可以改变数码管的扫描速度,从而控制显示效果。

(2)在编写显示函数时,要考虑到数码管的共阳/共阴特性,选择合适的点亮和熄灭方式。

(3)在实际应用中,可以根据需要添加其他功能,如显示时间、温度等。

六、实验总结1. 通过本次实验,掌握了数码管动态显示的原理和编程实现方法。

2. 熟悉了单片机与数码管之间的接口连接,提高了动手能力。

数码管动态显示实验报告

数码管动态显示实验报告

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

EDA实验报告-实验2-数码管扫描显示电路

EDA实验报告-实验2-数码管扫描显示电路

EDA实验报告-实验2-数码管扫描显⽰电路暨南⼤学本科实验报告专⽤纸课程名称 EDA 实验成绩评定实验项⽬名称数码管扫描显⽰电路指导教师郭江陵实验项⽬编号 02 实验项⽬类型验证实验地点 B305 学院电⽓信息学院系专业物联⽹⼯程组号: A6⼀、实验前准备本实验例⼦使⽤独⽴扩展下载板EP1K10_30_50_100QC208(芯⽚为EP1K100QC208)。

EDAPRO/240H 实验仪主板的VCCINT 跳线器右跳设定为3.3V ;EDAPRO/240H 实验仪主板的VCCIO 跳线器组中“VCCIO3.3V ”应短接,其余VCCIO 均断开;独⽴扩展下载板“EP1K10_30_50_100QC208”的VCCINT 跳线器组设定为 2.5V ;独⽴扩展下载板“EP1K10_30_50_100QC208”的VCCIO 跳线器组设定为3.3V 。

请参考前⾯第⼆章中关于“电源模块”的说明。

⼆、实验⽬的1、了解时序电路设计。

2、制作⼀个数码管显⽰的7段译码电路,以备以后调⽤。

三、实验原理在电⼦电路显⽰部分⾥,发光⼆极管(LED )、七段显⽰数码管、液晶显⽰(LCD )均是⼗分常见的⼈机接⼝电路。

通常点亮⼀个LED 所需的电流在5~20mA 之间,电流愈⼤,LED 的亮度也⾼,相对的使⽤寿命也愈短。

若以10mA 导通电流来估算⼀个接5V 的串接电阻值计算应为:(5-1.6)/10mA ≈0.34K Ω。

七段显⽰数码管分为共阳、共阴⼆种极性。

它们等效成⼋个LED 相连电路。

共阴极七段显⽰器的LED 位置定义和等效电路共阴极七段显⽰码⼗六进制转换表四、实验内容⽤拨码开关产⽣8421BCD 码,CPLD 器件产⽣译码及扫描电路,把BCD 码显⽰在LED 数码管上,通过改变扫描频率观察数码管刷新效果。

五、实验要求学习在MAX+PLUS II 中使⽤VHDL 设计功能模块,并将所⽣成的功能模块转换成MAX+PLUS II 原理图的符号库,以便在使⽤原理图时调⽤该库。

实验二 数码管动态显示模块设计2

实验二 数码管动态显示模块设计2
图4-9定时器应用程序流程图
6、单片机中断系统结构及工作原理
标准51单片机的中断系统有五个中断源。分别为:
中断源入口地址优先级别(同级)
外部中断00003H最高
定时器0溢出000BH
外部中断10013H
定时器1溢出001BH
串行口中断0023H最低
使用中断之前,必须对中断允许寄存器IE进行设置,将中断允许标志EA和对应中断位置1,以将中断打开。中断控制结构如图4-10所示。
实验内容
1、在数码管上显示学号的后8位
2、设计一个以学号后两位加10秒的倒计时程序
实验步骤及现象
打开万利仿真机,接好单片机开发板,新建工程,下载安装程序。我们这次实验的程序如下:
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
图4-10 MSC51中断结构图
CPU中断的过程为:当有中断源发生中断信号时,首先对IE中对应的中断位判断;如打开,则进行EA判断;如EA=1,将根据中断优先级IP的设置情况进行优先级判别;如该中断优先级较高,在硬件控制下,先将程序计数器PC的内容压入堆栈,同时把被响应的中断服务程序的入口地址装入PC中,以执行中断服务程序。中断服务程序的最后一条指令必须是中断返回指令RETI。CPU执行完这条指令后,将从堆栈中弹出两个字节内容(断点地址)装入PC中,从而执行被中断的程序。
图4-7定时器模式控制字格式
TCON寄存器用于定时器的计数控制和中断标志。如图4-8所示。
图4-8定时控制寄存器数据格式
编写程序控制这两个寄存器就可以控制定时器的运行方式。
单片机内部定时器/计数器的使用,简而概之:(1)如需用中断,则将EA和相关中断控制位置1;(2)根据需要设置工作方式,即对TMOD设置;(3)然后启动计数,即对TR0或TR1置1。(4)如使用中断,则计数溢出后硬件会自动转入中断入口地址;如使用查询,则必须对溢出中断标志位TF0或TF1进行判断。

实验二 数码管显示

实验二 数码管显示

实验二数码管显示本实验的目的是掌握数码管的工作原理与使用,实现数码管的静、动态显示。

静态数码管我们先看看什么是数码管,上图就是各种长相各种样子的数码管了,肯定很眼熟了吧。

不管将几位数码管连在一起,数码管的显示原理都是一样的,都是靠点亮内部的发光二极管来发光,下面就来我们讲解一个数码管是如何亮起来的。

数码管内部电路如下图所示,从右图可看出,一位数码管的引脚是10个,显示一个8字需要7个小段,另外还有一个小数点,所以其内部一共有8个小的发光二极管,最后还有一个公共端,生产商为了封装统一,单位数码管都封装10个引脚,其中第3和第8引脚是连接在一起的。

而它们的公共端又可分为共阳极和共阴极,中间图为共阴极内部原理图,右图为共阳极内部原理图。

上图展出了常用的两种数码管的引脚排列和内部结构。

总所周知,点亮发光二极管就是要给予它足够大的正向压降。

所以点亮数码管其实也就是给它内部相应的发光二极管正向压降。

如上图左(一共a、b、c、d、e、f、g、DP 八段),如果要显示“1”则要点亮b、c 两段LED;显示“A”则点亮a、b、c、e、f、g 这六段LED;我们还知道,既然LED 加载的是正向压降,它的两端电压必然会有高低之分:如果八段LED 电压高的一端为公共端,我们称之为共阳极数码管(如上图中);如果八段LED 电压低的一段为公共端,则称之为共阴极数码管(上图右)。

所以,要点亮共阳极数码管,则要在公共端给予高于非公共端的电平;反之点亮共阴极数码管,则要在非公共端给予较高电平。

对共阴极数码来说,其8个发光二极管的阴极在数码管内部全部连接在一起,所以称“共阴”,而它们的阳极是独立的,通常在设计电路时一般把阴极接地。

当我们给数码管的任意一个阳极加一个高电平时,对应的这个发光二极管就点亮了。

如果想要显示出一个8字,并且把右下角的小数点也点亮的话,可以给8个阳极全部送高电平,如果想让它显示出一个0字,那么我们可以除了给第“g, dp”这两位送低电平外,其余引脚全部都送高电平,这样它就显示出0字了。

数码管显示实验 实验报告

数码管显示实验 实验报告

数码管显示实验实验报告一、实验目的本次数码管显示实验的主要目的是深入了解数码管的工作原理和显示控制方式,通过实际操作掌握数码管与微控制器的接口技术,并能够编写相应的程序实现各种数字和字符的显示。

二、实验原理数码管是一种由多个发光二极管组成的显示器件,常见的有共阴数码管和共阳数码管两种类型。

共阴数码管是将所有发光二极管的阴极连接在一起,当阳极接高电平时,相应的二极管发光;共阳数码管则是将所有发光二极管的阳极连接在一起,当阴极接低电平时,相应的二极管发光。

在控制数码管显示时,通常采用动态扫描的方式,即依次快速地给每个数码管的段选端送入相应的字形码,同时使位选端选通对应的数码管,利用人眼的视觉暂留效应,使人看起来好像所有数码管同时在显示。

三、实验设备与材料1、实验开发板2、数码管模块3、杜邦线若干4、电脑5、编程软件四、实验步骤1、硬件连接将数码管模块与实验开发板进行连接,确定好段选和位选引脚的连接。

检查连接是否牢固,确保电路无短路或断路现象。

2、软件编程打开编程软件,选择相应的开发板型号和编程语言。

定义数码管的段选和位选引脚。

编写控制程序,实现数字 0 到 9 的循环显示。

3、编译与下载对编写好的程序进行编译,检查是否有语法错误。

将编译成功的程序下载到实验开发板上。

4、观察实验现象接通实验开发板的电源,观察数码管的显示情况。

检查显示的数字是否正确,显示的亮度和稳定性是否符合要求。

五、实验结果与分析1、实验结果数码管能够正常显示数字 0 到 9,并且能够按照设定的频率循环显示。

显示的数字清晰、稳定,没有出现闪烁或模糊的现象。

2、结果分析程序编写正确,能够准确地控制数码管的段选和位选信号,实现数字的显示。

动态扫描的频率设置合理,既保证了显示的稳定性,又不会出现明显的闪烁。

六、实验中遇到的问题及解决方法1、问题数码管显示出现闪烁现象。

解决方法调整动态扫描的频率,增加扫描的速度,减少每个数码管的点亮时间,从而减轻闪烁现象。

汽车接口实验——数码管动态扫描显示

汽车接口实验——数码管动态扫描显示

实验三数码管动态扫描显示实验
一、实验目的
1、掌握数字、字符转换成显示段码的方法
2、动态显示的原理和相关程序的编写
二、实验说明
动态显示,也称扫描显示。

显示器由6个共阴极LED数码管构成。

单片机的P0口输出显示段码,由一片74LS245驱动输出给LED管,由P1口输出位码,经74LS06输出给LED 管。

三、实验内容及步骤
单片机P0输出段码,P1口输出位控码,输出6个字符。

1、单片机最小应用系统1的P0口接段码口a~h,P1口接位码口S1~S6。

2、安装好伟福仿真器,用串行数据通信线连接计算机与仿真器,把仿真头插到模块的单片机插座中,打开模块电源,插上仿真器电源插头。

3、启动计算机,打开伟福仿真软件,进入仿真环境。

选择仿真器型号、仿真头型号、CPU类型;选择通信端口,测试串行口。

4、打开扫描显示.ASM源程序,编译无误后,全速运行程序。

6LED显示“168168”。

程序停止运行后,显示随之变化,说明动态扫描显示模块不具有数据锁存的功能。

5、可把源程序编译成可执行文件,烧录到89C51芯片中。

四、流程图
五、思考题
1、如何修改程序,实现六位LED数码管只显示其中的两位?
六、电路图。

数码管的动态显示实验报告

数码管的动态显示实验报告

数码管的动态显示实验报告数码管的动态显示实验报告一、引言数码管是一种常见的数字显示器件,广泛应用于计算机、电子仪器和仪表等领域。

本实验旨在通过动态显示的方式,展示数码管的工作原理和应用。

二、实验目的1. 了解数码管的基本结构和工作原理;2. 学习使用单片机控制数码管进行动态显示;3. 掌握数码管的编码方式和显示原理。

三、实验器材和原理1. 实验器材:数码管、Arduino开发板、面包板、杜邦线等;2. 实验原理:数码管是由多个发光二极管组成的,每个发光二极管可以通过控制其阳极和阴极来实现亮灭。

通过快速切换不同的发光二极管,可以实现数码管的动态显示。

四、实验步骤1. 连接电路:将数码管的阳极和阴极分别连接到Arduino开发板的数字输出引脚和地线上;2. 编写程序:使用Arduino开发环境,编写程序控制数码管的动态显示;3. 上传程序:将编写好的程序上传到Arduino开发板;4. 运行实验:观察数码管的动态显示效果。

五、实验结果和分析经过实验,我们成功实现了数码管的动态显示。

通过控制不同的数字和显示时间间隔,我们可以展示各种数字、字母、符号等。

数码管的动态显示效果生动鲜明,能够吸引人的注意力。

六、实验心得通过本次实验,我深入了解了数码管的工作原理和应用。

数码管作为一种常见的显示器件,在现代电子领域扮演着重要的角色。

掌握数码管的编码方式和显示原理,对于今后的学习和工作都具有重要意义。

七、实验应用数码管广泛应用于各种计算机和电子设备中,如电子钟、电子秤、数字仪表等。

其动态显示效果可以提高用户体验,增加信息传递效果。

同时,数码管的低功耗、易控制等特点也使其成为电子产品中不可或缺的一部分。

八、实验展望数码管作为一种显示器件,随着科技的发展,其在分辨率、显示效果、节能等方面还有很大的发展空间。

未来,我们可以期待更加智能化、高清晰度的数码管产品的出现,为人们的生活和工作带来更多的便利和乐趣。

九、结论通过本次实验,我们深入了解了数码管的动态显示原理和应用。

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

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

实验二动态扫描显示电路设计一、设计要求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.动态显示扫描控制动态扫描驱动电路中所有的显示器由相同的段信号控制,公共端有效的显示器将显示相同的字符。

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

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

[实验二]数码管动态扫描显示及外部中断的使用

[实验二]数码管动态扫描显示及外部中断的使用

[实验二]数码管动态扫描显示及外部中断的使用[实验目的]1.掌握Mega16的I/O输出特性和使用,以及单片机I/O输出口串行扩充的方法。

2.掌握LED数码管动态扫描的原理和设计方法,了解数码管及LED点阵模块的使用。

3.了解AVR中断系统原理,响应过程,以及外部中断程序的编写。

4.设计实现一个秒表系统。

[基本实验内容]1.阅读芯片数据手册,掌握GPIO口有几种工作模式,如何控制I/O口的输出应用。

2.实现6位LED数码管的动态扫描显示的软件设计和硬件设计。

a)根据例6.5 六位LED 数码管动态扫描控制显示设计(一),掌握其硬件连线,在实验板上实现该设计。

源程序参考demo_6_5.c,读懂该程序,回答以下问题:b)时、分、秒的计算采用何种数制?到数码管的时间显示之间经过了几种数制的转换?为什么要转换(不转换行吗)?怎样转换的?时分秒本身是十进制,秒到分和分到时都是60进制;三种,十进制到七段数码管,六十进制到七段数码管;根据十进制数的字形,写出相应的字形代码,同理六十进制c)Display()函数是如何工作的?每秒钟执行几次?动态扫描显示函数,每2ms对各位数码管扫描一次;40次;d)说明time_to_buffer()的功能,每秒执行几次?时间值送显示缓冲区,将两个子程序分离开来,635次e)说出和深入体会程序中的变量time_counter、point_on 的作用。

time_counter实际代表1s中扫描的次数;控制秒显示标志亮暗的频率f)将程序中有(3)注释标记的语句去掉,会产生什么现象,为什么?说明该语句的作用。

最高位数码管显示明显比其他亮度高,因为当最高位数码管被扫描以后PORTC没有关闭,持续时间延时了13ms,因此扫描时间长,亮度高;保持各数码管扫描时间均匀,亮度一致;g)将程序中有(4)注释标记的语句去掉,会产生什么现象?变成分秒十分秒百分秒计数,经过3s36,会有一次停顿,此时秒显示标志会灭h)如何调整程序,使数码管的显示亮度有变化?将数码管显示时间由2ms改为1ms,亮度明显变暗了delay_ms(2)------ delay_ms(1)delay_ms(13) ------ delay_ms(19)i)程序中使用了显示缓冲区,占用了6 个字节。

实验2LED数码管动态和静态显示实验

实验2LED数码管动态和静态显示实验

广东海洋大学学生实验报告书实验名称实验2 LED数码管动态和静态显示课程名称计算机控制技术系自动化系专业自动化班级1132 学生姓名袁明星/201311632223 实验地点科技楼403实验日期王波成绩指导教师一、设计目的:LED数码管动态和静态显示二、设计任务:1.LED数码管动态显示,动态扫描时间间隔可调;2.LED数码管静态显示,显示动态扫描时间间隔;三、操作流图:步骤:1.上排的三个数码管用静态扫描方式,显示动态扫描时间间隔;2.下排的6用数码管用动态扫描方式,显示时钟;3.一个独立的按键,每按一次,可增加动态扫描时间间隔四、实验要求:1、态度严谨,独立完成,勤于思考,善于总结;2、认真完成实验报告。

ORG 0000HAJMP STARTORG 0003HAJMP INT_0ORG 000BHAJMP INT_T0ORG 0030H START:MOV 30H,#0 ;秒MOV 31H,#0 ;分MOV 32H,#0 ;时MOV 33H,#1MOV SP,#40HSETB IT0MOV TMOD,#01HMOV TH0,#3CHMOV TL0,#0B0HMOV IE,#83HSETB TR0MOV R0,#20V1: MOV A,33HMOV B,#100DIV ABMOV DPTR,#TABMOVC A,@A+DPTRMOV P3,#4FHMOV P2,AMOV A,BMOV B,#10DIV ABMOV DPTR,#TABMOVC A,@A+DPTRMOV P3,#2FHMOV P2,AMOV A,BMOV DPTR,#TABMOVC A,@A+DPTRMOV P3,#1FHMOV P2,AMOV A,30HMOV B,#10DIV ABMOV DPTR,#TAB MOVC A,@A+DPTR MOV P1,#02H MOV P0,AACALL DELAY MOV A,BMOV DPTR,#TAB MOVC A,@A+DPTR MOV P1,#01H MOV P0,AACALL DELAYMOV A,31HMOV B,#10DIV ABMOV DPTR,#TAB MOVC A,@A+DPTR MOV P1,#08H MOV P0,AACALL DELAY MOV A,BMOV DPTR,#TAB MOVC A,@A+DPTR MOV P1,#04H MOV P0,AACALL DELAYMOV A,32HMOV B,#10DIV ABMOV DPTR,#TAB MOVC A,@A+DPTR MOV P1,#20H MOV P0,AACALL DELAY MOV A,BMOV DPTR,#TAB MOVC A,@A+DPTR MOV P1,#10H MOV P0,AACALL DELAYAJMP V1INT_T0:PUSH ACCDJNZ R0,NEXTMOV A,30HINC ACJNE A,#60,NEXT1MOV 30H,#0MOV A,31HINC ACJNE A,#60,NEXT2MOV 31H,#0MOV A,32HINC ACJNE A,#24,NEXT3MOV 32H,#0AJMP NEXT4NEXT1: MOV 30H,AAJMP NEXT4NEXT2: MOV 31H,AAJMP NEXT4NEXT3: MOV 32H,ANEXT4: MOV R0,#20 NEXT: MOV TH0,#3CHMOV TL0,#0B0HPOP ACCRETIINT_0: PUSH ACCMOV A,33HCJNE A,#100,NEXT01MOV 33H,#1AJMP NEXT0NEXT01:MOV B,#10MUL ABMOV 33H,ANEXT0: POP ACCRETIDELAY:MOV R7,33HDEL1: MOV R6,#4NOPDEL2: MOV R5,#123DEL3: DJNZ R5,DEL3DJNZ R6,DEL2DJNZ R7,DEL1RETTAB: DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H END六、实验心得:通过实验,让我对这门课程有了更深入的了解。

数码管动态显示实验实验

数码管动态显示实验实验

数码管动态显示实验实验
一、实验目的
1. 熟悉Keil IDE u Vision集成开发环境软件的使用方法。

2. 熟悉51单片机仿真软件的使用方法。

3. 熟悉单片机程序设计的基本思路和方法。

4. 理解数码管动态显示的工作原理、掌握其编程方法。

二、实验内容
利用数码管动态显示方式,AT89C51外接两个共阳极数码管,P2.6和P2.7分别与三极管基极相连作位选端。

实现间隔0.5s循环流水显示数字0-9,开始显示“1 2”,0.5s后变为“2 3”,再过0.5s后变为“3 4”……
三、实验要求
1. 0.5s延时,可采用定时/计数器查询方式实现,也可采用for循环方式实现。

给定晶振为11.0592MHz。

2. 画出程序流程图,并独立编写C51程序。

3. 做好实验前预习,完成proteus仿真。

四、实验硬件电路
五、实验步骤
1. 在Keil IDE u Vision 集成开发环境下建立工程文件,编辑源文件、编译、链接并生成目标文件,仿真调试验证结果。

2. 分析本次实验的电路图,并结合控制程序,理解控制原理。

3.打开proteus仿真软件,新建工程,放置电路图所需的各类元器件。

更改各类元器件的数值和名称。

将各类元器件进行电气连接。

4. 双击AT89C51单片机,设置单片机的程序文件路径。

5. 运行proteus仿真软件,观察仿真效果。

6. 观察能否实现目标功能,如有问题查找原因,最终实现目标功能。

六、题目分析
七、程序流程图及程序清单。

实验二 LED数码管动态显示(报告要求)

实验二  LED数码管动态显示(报告要求)

实验二LED数码管动态显示
一、实验目的
1.掌握LED数码管动态显示的原理和设计方法
2. 掌握使用Keil C51项目文件创建、编译、运行和硬件仿真的基本操作方法
二、实验原理
1.LED数码管的结构及显示方式
2.实验仪的LED接口电路
3.动态LED的编程方法
三、实验内容与要求
1. 在Keil C51集成环境下输入示例“LED数码管动态显示”程序。

学习显
示缓冲存储器,LED段码表和位码初值的设置方法.然后,修改该程序段,使6位LED数码管从左至右依次稳定显示CPU_52。

2. 编写从左至右每过1秒钟移位间隔显示字符”H”和”P”的程序。

四、上机操作要求
1. 完成实验内容1、2,形成改写后的程序,以DPJ21、DPJ22为文件名,保存于自己实验二的文件夹中。

2. 思考题:
(1)LED显示器显示接口按驱动方式分为哪两类?特点是什么?
(2)分析延时程序,你能提出一些提高延时精度的方法吗?(程序或算法)五、实验报告要求
(1)对实验修改部分写出基本的流程图或算法;
(2)附上修改程序的代码;(3)完成本次实验布置的思考题。

数码管的动态显示实验报告

数码管的动态显示实验报告

数码管的动态显示实验报告一、实验目的1、了解数码管的工作原理和显示方式。

2、掌握数码管动态显示的编程方法和技巧。

3、通过实验,提高对数字电路和单片机编程的综合应用能力。

二、实验原理数码管是一种常用的数字显示器件,分为共阴极和共阳极两种类型。

共阴极数码管的阴极连接在一起并接地,当阳极接高电平时,对应的段点亮;共阳极数码管则是阳极连接在一起并接电源,当阴极接低电平时,对应的段点亮。

动态显示是指依次快速地轮流点亮多个数码管,利用人眼的视觉暂留效应,使人感觉多个数码管同时稳定地显示不同的数字。

在动态显示中,需要通过控制数码管的位选和段选信号来实现数字的显示。

三、实验设备1、单片机开发板2、电脑3、编程软件四、实验步骤1、硬件连接将数码管与单片机的 I/O 口进行连接,确定位选和段选的引脚。

连接好电源和地线,确保电路连接正确无误。

2、软件编程选择合适的编程语言,如 C 语言。

定义数码管的引脚和相关的控制变量。

编写数码管显示的函数,包括位选函数和段选函数。

在主函数中,通过循环调用显示函数,实现数字的动态显示。

3、编译下载使用编程软件对编写的程序进行编译,检查是否有语法错误。

将编译成功的程序下载到单片机开发板中。

五、实验程序```cinclude <reg52h> //包含 52 系列单片机的头文件//数码管段选引脚定义sbit SEG_A = P2^0;sbit SEG_B = P2^1;sbit SEG_C = P2^2;sbit SEG_D = P2^3;sbit SEG_E = P2^4;sbit SEG_F = P2^5;sbit SEG_G = P2^6;sbit SEG_DP = P2^7;//数码管位选引脚定义sbit BIT1 = P1^0;sbit BIT2 = P1^1;sbit BIT3 = P1^2;sbit BIT4 = P1^3;//显示数字 0 9 的段码unsigned char code SEGMENT_CODE ={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};//数码管位选函数void SelectBit(unsigned char bit){switch (bit){case 1:BIT1 = 0; BIT2 = 1; BIT3 = 1; BIT4 = 1; break;case 2:BIT1 = 1; BIT2 = 0; BIT3 = 1; BIT4 = 1; break;case 3:BIT1 = 1; BIT2 = 1; BIT3 = 0;BIT4 = 1;break;case 4:BIT1 = 1;BIT2 = 1;BIT3 = 1;BIT4 = 0;break;}}//数码管段选函数void SelectSegment(unsigned char num){SEG_A =(num & 0x01)? 1 : 0; SEG_B =(num & 0x02)? 1 : 0; SEG_C =(num & 0x04)? 1 : 0; SEG_D =(num & 0x08)? 1 : 0; SEG_E =(num & 0x10)? 1 : 0;SEG_F =(num & 0x20)? 1 : 0; SEG_G =(num & 0x40)? 1 : 0; SEG_DP =(num & 0x80)? 1 : 0;}//主函数void main(){unsigned char i, num = 0;while (1){for (i = 1; i <= 4; i++){SelectBit(i);SelectSegment(SEGMENT_CODEnum);num++;if (num == 10)num = 0;delay_ms(5);//适当的延时,以实现稳定显示}}}```六、实验现象与结果在实验中,当程序下载到单片机开发板后,数码管依次快速地显示数字 0 到 9,循环往复。

数码管动态显示实验报告

数码管动态显示实验报告

数码管动态显示实验报告数码管动态显示实验报告一、引言数码管是一种常见的电子显示器件,广泛应用于各种仪器仪表、计时器、计算器等电子设备中。

数码管动态显示实验是电子技术实验中的一项基础实验,通过控制数码管的亮灭状态,可以实现数字的显示。

本实验旨在通过实际操作,加深对数码管工作原理的理解,并掌握数码管的动态显示方法。

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

通过对发光二极管的亮灭状态进行控制,可以显示不同的数字或字符。

数码管一般采用共阳极或共阴极的方式接线,共阳极的数码管的阳极连接在一起,而共阴极的数码管的阴极连接在一起。

在动态显示实验中,采用的是共阳极数码管。

数码管的亮灭状态是通过控制数码管的阳极与地之间的电压差来实现的。

当某个数码管需要亮时,将其对应的阳极与地连接,电流通过发光二极管,使其发光。

当某个数码管需要灭时,将其对应的阳极与电源正极连接,断开与地的连接,发光二极管不通电,不发光。

三、实验步骤1. 准备实验所需材料:共阳极数码管、面包板、电阻、导线等。

2. 将数码管与面包板连接,确保连接正确,数码管的阳极连接到面包板的相应引脚。

3. 连接电路:将电源正极与数码管的共阳极连接,电源负极与面包板的地引脚连接。

4. 编写程序:根据控制数码管显示数字的逻辑,编写相应的程序。

5. 将程序下载到单片机中,通过单片机控制数码管的亮灭状态。

四、实验结果经过实验,我们成功实现了数码管的动态显示。

在程序的控制下,数码管可以显示不同的数字或字符,实现了数字的动态变化。

通过调整程序中的参数,可以实现不同的显示效果,如闪烁、滚动、循环等。

五、实验总结本次实验通过实际操作,加深了对数码管工作原理的理解。

通过编写程序,我们掌握了控制数码管动态显示的方法。

在实验过程中,我们遇到了一些问题,如数码管显示不正常、程序错误等,但通过仔细检查和调试,最终解决了这些问题。

通过这次实验,我们不仅学到了知识,还培养了动手实践和问题解决的能力。

实验2 数码管动态扫描显示

实验2  数码管动态扫描显示

} while ( --t != 0 );
}
/* 函数:SysInit() 功能:系统初始化 */ void SysInit() {
TMOD &= 0xF0; TMOD |= 0x01; DispInit();
}
//设置定时器T0为16位定时器 //数码管扫描显示初始化
有缘学习更多+谓ygd3076或关注桃报:奉献教育(店铺)
void main() {
code unsigned char s[] = "0123456789ABCDEF"; unsigned char i; unsigned char x; bit dp; SysInit(); dp = 0; for (;;) {
for ( i=0; i<16; i++ ) { for ( x=0; x<8; x++ ) { DispChar(x,s[i],dp); } Delay(60);
0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};
unsigned char t; //临时变量//防止显示位置超出范围
x &= 0x07;
x = 7 - x;
//分析字符c,取得对应的数码管字型数据
if ( c == '-' ) {
t = 0x40;
}
else {
t = toint(c); //toint()为库函数,详见C:\Keil\C51\HLP\C51.pdf
}
/*函数:DispInit() 功能:数码管扫描显示初始化*/ void DispInit() {
DispClear(); //初始为全灭 EA = 0; TMOD &= 0x0F; TMOD |= 0x10; TH1 = 0xFC; TL1 = 0x66; TR1 = 1; ET1 = 1; EA = 1; }

实验二 数码管显示实验

实验二  数码管显示实验

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;}五、体会讨论。

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

实验二数码管动态扫描显示实验
一、实验目的
1.学习和理解数码管动态扫描的工作原理。

2.学习和掌握数码管动态扫描的电路接口设计及程序编写。

二、实验设备
1.USB线
2.单片机最小系统教学实验模块
3.动态数码管显示模块
三、实验要求
1. 使8位数码管动态显示“0 1 2 3 4 5 6 7”字样
2. 使8位数码管动态显示时间2013年4月18日,即“2 0 1 3 04 18”字样
3. 用Proteus仿真软件画出实验电路图,将在uVision3 IDE软件中生成*.hex 下载到Proteus仿真电路图中的单片机芯片中,观察实验现象。

四、实验原理
1. 8段数码管显示原理
数码管中的每一段相当于一个发光二极管,8段数码管则具有8个发光二极管。

对于“共阳极”的数码管,内部每个发光二极管的阳极被接在一起,成为该各段的公共选通线;发光二极管的阴极则成为段选线。

对于“共阴极”数码管,则正
好相反,内部发光二极管的阴极接在一起,阳极成为段选
线。

这两种数码管的驱动方式是不同的。

当需要点亮“共
阳极”数码管的一段时,公共段需接高电平(即写逻辑1)、
该段的段选线接低电平(即写逻辑0),从而该段被点亮。

当需要点亮“共阴极”数码管的一段时,公共段需接低电平
(即写逻辑0)、该段的段选线接高电平(即写逻辑1),
该段被点亮。

数码管的段位顺序如右图所示:
一般来说在一个字节中按照dpgfedcba的顺序放置字型码,比如在一个“共阴极”数码管上要显示“1”,则b、c段需被点亮,因此在段选线中写入06H。

例如使用P0口接段选线,则使用下面的语句即可点亮数码管:
P0=0x06;
对应规则:
dp----->D7
g----->D6
f----->D5
e----->D4
d----->D3
c----->D2
b----->D1
a--->D0
2. 多位数码管的显示
在多位8段数码管显示时,为了简化硬件电路,通常将所有位的段选线相应地并联在一起,由一个单片机的8位I/O口控制,形成段选线的多路复用。

而各位数码管的共阳极或共阴极分别由单片机独立的I/O口线控制,顺序循环地点亮每位数码管,这样的数码管驱动方式就称为“动态扫描”。

在这种方式中,虽然每一时刻只选通一位数码管,但由于人眼具有一定的“视觉残留”,只要延时时间设置恰当,便会感觉到多位数码管同时被点亮了。

8位8段LED动态显示器电原理图如表2-1所示。

表2-1 8位8段LED动态显示器电原理图表2-1所示为一个8位8段LED动态显示器电路原理图。

其中段选线占用一个8位I/O口,位选线占用一个8位I/O口,由于各位的段选线并联,段线码的输出对各位来说都是相同的。

因此,同一时刻,如果各位位选线都处于选通状态的话,8位LED将显示相同的字符。

若要各位LED能够显示出与本位相应的显示字符,就必须采用扫描显示方式,即在某一位的位选线处于选通状态时,其它各位的位选线处于关闭状态,这样,8位LED中只有选通的那一位显示出字符,而其它位则是熄灭的。

同样,在下一时刻,只让下一位的位选线处于选通状态,而其他的位选线处于关闭状态。

如此循环下去,就可以使各位“同时”显示出将要显示的字符。

由于人眼有视觉暂留现象,只要每位显示间隔足够短,则可造成多位同时亮的假象,达到显示的目的。

五、实验步骤
8位共阴极数码管动态扫描显示的单片机电路连线如图2-2所示,图中的三角形符号是加在位选线上的驱动,即74LS244,这一举措使得数码管能够得到合适的亮度。

数码管的位选是由P2口控制,第一个数码管的位选由P2.0控制,数码管的段选由P0口控制,P0.7~P0.0分别连接数码管的dp~a。

1、按照图2-2的电路原理,用导线正确连接动态扫描方式实验模块和单片机最小系统模块。

图2-2 扫描8位LED动态显示器
2、实验要求1的示例程序如下:
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]=
{ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//0~9的字符编码
void delay(uchar z)
{
uchar i,j;
for(i=z;i>0;i--)
for(j=110;j>0;j--);
}
void main()
{
uchar i,m=0xfe;
P0=0x00;//关闭数码管的段选
P2=0xff;//关闭数码管的位选
while(1)
{
for(i=0;i<8;i++)
{
P2=m; //选通某个数码管的位选
P0=DSY_CODE[k]; //将段码送给上面数码管的段
m=_crol_(m,1);
delay(2);
}
}
} 将程序进行调试,直至达到实验要求。

3.仿真电路图
将在uVision3 IDE软件中生成*.hex下载到Proteus仿真电路图中的单片机芯片中,观察实验现象,实验仿真电路如图6-3所示。

选取的元器件:
(1)单片机:AT89C51
(2)电阻:RES
(3)排阻:RX8
(4)瓷片电容:CAP
(5)电解电容:CAP-ELEC
(6)8位共阴极数码管:7SEG-MPX8-CC-BLUE
(7)晶振:CRYSTAL
图6-3硬件仿真图和仿真结果
六、实验报告
1. 画出实验电路原理图,并简要分析电路的执行过程。

2. 画出单片机程序的流程图,给出程序清单,并给予适当注释。

3. 电路中74LS244的作用是什么?
4. 如果将数码管换成共阳极,电路中要做那些修改?程序中要做哪些修改,给出共阳极数码管动态扫描显示的电路和程序清单。

5.实验过程中遇到哪些问题,是如何解决的?。

相关文档
最新文档