8位8段LED数码管动态扫描显示
实验报告 - - 实验七 - 八段数码管显示实验

实验报告 - - 实验七 - 八段数码管显示实验EDA实验报告之实验七八段数码管显示实验1、实验目的1)了解数码管动态显示的原理。
2)了解用总线方式控制数码管显示2、实验要求:利用实验仪提供的显示电路, 动态显示一行数据.提示:把显示缓冲区(例如可为60H~65H作为缓冲区)的内容显示出来,当修改显示缓冲区的内容时,可显示修改后的内容(为键盘扫描、显示实验做准备)。
3、实验说明本实验仪提供了6 位8段码LED显示电路,学生只要按地址输出相应数据,就可以实现对显示器的控制。
显示共有6位,用动态方式显示。
8位段码、6位位码是由两片74LS374输出。
位码经MC1413或ULN2021倒相驱动后,选择相应显示位。
本实验仪中 8位段码输出地址为0X004H,位码输出地址为0X002H。
此处X是由KEY/LED CS 决定,参见地址译码。
做键盘和LED实验时,需将KEY/LED CS 接到相应的地址译码上。
以便用相应的地址来访问。
例如,将KEY/LED CS接到CS0上,则段码地址为08004H,位码地址为08002H。
七段数码管的字型代码表如下表:a ----- f| |b | | ----- | g | e| |c -----d 。
h显示字形 g f e d c b a 段码 0 0 1 1 1 1 1 1 3fh 10 0 0 0 1 1 0 06h 2 1 0 1 1 0 1 1 5bh 3 1 0 01 1 1 1 4fh 4 1 1 0 0 1 1 0 66h 5 1 1 0 1 1 01 6dh 6 1 1 1 1 1 0 1 7dh 7 0 0 0 0 1 1 1 07h 8 1 1 1 1 1 1 1 7fh9 1 1 0 1 1 1 1 6fh A 1 1 1 0 1 1 1 77h b1 1 1 1 1 0 0 7ch C 0 1 1 1 0 0 1 39h d 1 0 11 1 1 0 5eh E 1 1 1 1 0 0 1 79h F 1 1 1 0 0 0 1 71h4、原理图及连线5、实验内容1) 使用仪器、仪表,开发平台型号本实验用到了WAVE 6000软件平台,电脑一台,LAB6000实验箱,示波器,若干连线,串行数据线。
两个74hc595 汇编 八位数码管数码管1-8动态扫描显示

;延时子程序
;=============================================================
DELAY:
MOV R6,#02H
DEL1:
MOV R7,#20
DJNZ R7,$
INC R1 ;
MOV A,R1 ;修改显示位
LCALL DELAY ;延时
MOV 31H,#02H
MOV 32H,#03H
MOV 33H,#04H
MOV 34H,#05H
MOV 35H,#06H
MOV R0,#30H ;初始化寄存器
MOV R1,#00H
MOV R2,#00H
MOV 30H,#01H ;显示数据
LCALL DELAY
CLR SCLK_595
DJNZ R4,WR_LOOP
RET
;=============================================================
SDATA_595 EQU P0.0 ;串行数据输入
SCLK_595 EQU P0.1 ;移位时钟脉冲
RCK_595 EQU P0.2 ;输出锁存器控制脉冲
;=====================================================
JMP MAIN1
;=============================================================
;显示子程序
;=============================================================
数码管动态显示实验报告

一、实验目的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. 数字编码方式对于一个七段式数码管来说,每个数字都可以用七位二进制代码来表示。
常用的编码方式有BCD编码和ASCII编码等。
三、静态驱动与动态驱动1. 静态驱动静态驱动是指将每个数码管的控制信号直接连接到单片机的IO口上,并通过程序控制IO口输出高低电平来实现数码管的显示。
静态驱动的优点是驱动简单,控制精度高,但缺点是需要大量的IO口资源,不适用于多数码管显示。
2. 动态驱动动态驱动是指将多个数码管的控制信号通过共用的引脚来传输,并通过程序控制引脚输出高低电平来实现数码管的显示。
动态驱动的优点是可以减少硬件资源和功耗,适用于多数码管显示。
四、数码管动态扫描原理1. 原理概述数码管动态扫描原理是指在一定时间内,依次对多个数码管进行刷新并显示不同数字。
具体实现方式为:将每个数码管与一个引脚相连,并通过程序控制该引脚输出高低电平,在一定时间内循环切换各个引脚的状态,从而实现多个数码管之间的切换和显示。
2. 实现步骤(1)将所有数码管连接到单片机IO口;(2)定义一个循环计时器,在一定时间内循环切换各个IO口状态;(3)对于每一个计时器周期内需要显示的数字进行编码;(4)根据编码结果,在每个IO口上输出对应数字需要显示的控制信号;(5)循环刷新各个数码管,实现动态扫描。
五、动态扫描的优化1. 亮度控制由于数码管的发光强度与电流大小成正比,因此可以通过调节每个数码管的亮度来实现不同数字之间的明暗程度差异。
数码管显示(全面)

• 程序设计内容
由于显示的数字0-9的字形码没有规律可循,只能采用 查表的方式来完成P0口对数码管的控制。方法是找出 共阴极数码管显示0-9的字形码,按着数字0-9的顺序, 把这十个字形码放入数组table[]中。
• C语言源程序 • 调试与仿真
4.3 I/O口应用实例与仿真
例4.6 动态数码管显示的proteus仿真及C语言 程序设计
4.3 I/O口应用实例与仿真
• 程序设计内容
(1)动态扫描方法:动态扫描采用各数码管循环轮流 显示的方法,本例中,先让左边第一位数码管显示数 字“1”,延时一定时间后,第二位显示“2”,以此类 推,到第五位显示“5”后,又从“1”开始循环显示。 当循环显示频率较高时,利用人眼的暂留特性,我们 看到这五位数码管仿佛在同时显示,而看不出闪烁显 示现象。这种显示需要一个接口完成字形码的输出 (字形选择),另一接口完成各数码管的轮流点亮 (数位选择)。需要注意一点,由于电路的特性,在 点亮每一位数码管之前,一定要对整个数码管清屏 (场消隐),即让所有位选信号都处于不被选中状态。
g f GND a b a a f e d g b c dp b c d e f g dp a b c d e f g dp
+5V
·
e d GND c dp
(a)
共阴极
(b)
共阳极
使用LED显示器时,要注意区分这两种不同的接法。为了显 示数字或字符,必须对数字或字符进行编码。七段数码管加上一 个小数点,共计8段。因此为LED显示器提供的编码正好是一个字 节。TX-1B实验板用共阴LED显示器,根据电路连接图显示16进制
数码管是如何显示出字符的 数码管静态显示与动态显示原理
显示器及其接口
8位LED动态显示电路

8位LED动态显示电路1 电路的硬件连接和工作原理图1所示为单片机系统构成的8位LED动态显示电路,该电路以AT89C2051单片机为例。
电路使用器件少,仅用到了2片中规模集成电路74LS164和74LS138,占用CPU的I/O线少,特别适合于I/O线不是很多的单片机如AT89C2051/1051,97C2051/1051,PIC16Cxx 等系统中使用。
74LS164为串-并转换移位寄存器,数据端A,B(第1,2脚)接单片机RXD引脚,时钟端CLK接单片机TXD,并行8位数据输出端分别接8个数码管的A,B,C,D,E,F,G,H;74LS138为3线~8线译码器,译码器输入端A,B,C分别接AT89C2051的P1.0,P1.1,P1.2,译码器输出端Y0~Y7接8个数码管从低位到高位的共阴极端。
若所用的单片机不是AT89C2051,而选用了其他没有串行口的单片机如AT89C1051,则74LS164的数据输入端A,B可连接到P1.3,CLK端可连接到P1.4,这样设计不会影响系统的功能,仅仅在编写程序时略有差别。
若系统只需至多4位数码管显示,则74LS138可用74LS139(2线~4线译码器)代替。
电路中,要显示的数字所对应的字形码通过串行口送到74LS164,74LS138在同一时刻只有1位输出端为低电平,其他7位输出全为高电平,为低电平的对应的数码管选中,因此作为数码管显示时的位选信号。
系统在工作时,通过74LS164每次输出一个字形码,同时控制74LS138的译码器输入端A,B,C的电平状态,即从P1.0,P1.1,P1.2送出相应的电平,译码后使得要显示的对应位数码管共阴极端依次为低电平,即依次选中要显示的位,完成整个显示电路的动态扫描,依此扫描8次,完成8位数据的显示。
2 软件编写以AT89C2051单片机系统构成的8位LED动态显示电路的显示子程序流程如图2所示。
设待显示的数据放在显示缓冲区中,显示缓冲区的地址为70H,71H,…,77H,依次存放从低位到高位待显示的数据。
8段数码管动态显示详解

原理图:8 个数码管它的数据线并联接到 JP5,位控制由 8 个 PNP 型三级管驱动后由 JP8 引出。
个。
我们分别把他命名为 A,B,C,D,E,F,G,H搞懂了这个原理, 我们如果要显示一个数字 2, 那么 A,B,G,E,D 这 5 个段的发光管亮就可以了。
也就是把B,E,H(小数点)不亮,其余全亮。
根据硬件的接法我们编出以下程序。
当然在此之前,还必须指定哪一个数码管亮,这里我们就指定最后一个 P2.7。
显示数字 2 则是 C,F,H(小数点)不亮,同时由于接法为共阳接法,那么为 0(低电平)是亮为 1(高电平)是灭。
从高往低排列,(p0.7_p0.0)写成二进制为 01111110,把他转化为 16 进制则为A2H。
我们可以根据硬件的接线把数码管显示数字编制成一个表格,以后直接调用就行了。
原理图中把所有数码管的 8 个笔划段 a-h 同名端连在一起,而每一个显示器的公共极 COM 是各自独立地受 I/O 线控制。
CPU 向字段输出口送出字形码时,所有显示器接收到相同的字形码,由 8 个 PNP 的三极管,来控制这 8 位哪一位工作,例如上面的例子中我们选中的是 P2.7.就是最后的一位亮了. 同样的如果要第一位亮, 只需要把程序 CLR P2.7 改为 CLR P2.0 即可。
在这里就有了一个矛盾, 所有数码管的 8 个笔划段 a-h 同名端连在一起, 那么在一个屏幕上如何显示0,1,2,3,4,5 这样不同的数字呢? 的确, 在这样的接法中,同一个瞬间所有的数码管显示都是相同的, 不能显示不同的数字。
在单片机里,首先显示一个数, 然后关掉.然后显示第二个数,又关掉, 那么将看到连续的数字显示,轮流点亮扫描过程中,每位显示器的点亮时间是极为短暂的(约 1ms),由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位显示器并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。
数码管的几种驱动方式汇总

动态的也叫扫描方式,是利用发光二极管的余辉效应和人眼的视觉暂留效应来实现的,只要在在一定时间内数码管的笔段亮的频率够快,人眼就看不出闪烁,一般外围硬件较少,但是对单片机资源耗用巨大。
静态的也较锁存方式,单片机送出数据后控制外围锁存器件锁存数据,这样数码管笔段里的电流不变,数码管稳定显示,这样单片机可以干别的活不用管数码管了。这种方案的优点是对单片机的P口资源和时间耗用很少,但是数码管的外围辅助电路复杂。
●支持段电流上限调整,可以省去所有限流电阻。
●扫描极限控制,支持1到8个数码管,只为有效数码管分配扫描时间。
(二)键盘控制
●内置64键键盘控制器,基于8×8矩阵键盘扫描。
●内置按键状态输入的下拉电阻,内置去抖动电路。
●键盘中断,低电平有效输出。
●提供按键释放标志位,可供查询按键按下与释放。
(三)其它
特点
I2C串行接口,提供键盘中断信号,方便于处理器接口;
可驱动8位共阴数码管或64只独立LED和64个按键;
可控扫描位数,可控任一数码管闪烁;
提供数据译码和循环,移位,段寻址等控制;
8个功能键,可检测任一键的连击次数;
无需外接元件即直接驱LED,可扩展驱动电流和驱动电压;
提供工业级器件,多种封装形式PDIP24,SO24。
●高速的4线串行接口,支持多片级联,时钟速度从0到10MHz。
●串行接口中的DIN和DCLK信号线可以与其它接口电路共用,节约引脚。
●完全内置时钟振荡电路,不需要外接晶体或者阻容振荡。
●内置上电复位和看门狗Watch-Dog,提供高电平有效和低电平有效复位输出。
●支持3V~5V电源电压。
●提供SOP28和DIP24S两种无铅封装,兼容RoHS。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
项目名称:8位8段LED数码管动态扫描显示班级:09电二姓名:解健学号:09020313
一.实验目的
1.掌握数码管动态扫描显示原理及实现方法。
2.掌握动态扫描显示电路驱动程序的编写方法。
二.实验电路
三.元器件
四.实验步骤
第一步:先在Proteus软件中设计仿真电路原理图。
第二步:再在Keil C51软件中编写且编译程序,程序后缀必须是.c。
然后在打开的“Option for Target‘Target 1’”选项卡,“Target”标签下频率设置为“11.0592”,“Output”标签下,将“Creat HEX File”项打勾选中,设置生成一个.hex文件。
第三步:接着将.hex文件导入原理图中U1芯片。
双击U1,打开Edit Component对话框,选择生成的hex文件。
第四步:最后观察设计的电路图是否能得到预想的效果,若不能,进行检查,找到毛病且纠正。
流程图
实验现象:
显示器点亮所有段,持续约1s,然后灭显示器,持续2s,最后显示“hello-93”,保持。
附:程序
#include<intrins.h>
#include<REGX52.H>
#define TRUE 1
#define dataPort P0
#define ledConPort P2
unsigned char code ch[8]={0x76,0x79,0x38,0x38,0x3f,0x40,0x6f,0x4f};
void time(unsigned int ucMs);
void main(void)
{unsigned char i,counter=0;
for(i=0;i<30;i++){
for(counter=0;counter<8;counter++) { ledConPort=counter;
dataPort=0xff;
time(5);}}
ledConPort=0xff;
time(2000);
while(TRUE)
{for(counter=0;counter<8;counter++){ ledConPort=counter;
dataPort=ch[counter];
time(5);}}}
void delay_5us(void)
{_nop_();
_nop_();}
void delay_50us(void)
{ unsigned char i;
for(i=0;i<4;i++)
{delay_5us();}}
void delay_100us(void)
{delay_50us();
delay_50us();}
void time(unsigned int ucMs) {unsigned char j;
while(ucMs>0){
for(j=0;j<10;j++) delay_100us();
ucMs--;}}。