LED数码管驱动显示实验
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
//0-9,a-f显示的段码
void main()
{
unsigned int i,j;
while(1)
{
for(j=0;j<16;j++)//为了循环显示数组b[9]里的9个数字0-9
{
for(i=0;i<8;i++)//为了让8个数码管轮流亮一遍过去
{
P0=b[j];
P2=0;
delaym(250);
②动态显示驱动:数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。
{
unsigned char j;//j=0~255
while(t--)
{
for(j = 0; j < 125; j++);//j进行的内部循环,1次延迟8us
}
}
//数码管显示程序
unsigned char b[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
1
0
1
1
1
1
Y4对应的数码管亮
0x05
1
0
1
1
1
0
1
1
1
1
1
Y5对应的数码管亮
0x06
1
1
0
1
0
1
1
1
1
1
1
Y6对应的数码管亮
0x07
1
1
1
0
1
1
1
1
1
1
1
Y7对应的数码管亮
三、数码管驱动方式及动态显示工作原理分析与计算
1、人眼的视觉暂留现象
数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。
}
}
}
}
P0.7
P0.6
P0.5
P0.4
P0.3
P0.2
P0.1
P0.0
P0(16进制)
全灭
1
1
1
1
1
1
1
1
FF
显示0
1
1
0
0
0
0
0
0
C0H
显示1
1
1
1
1
1
0
0
1
F9H
显示2
1
0
1
0
0
1
0
0
A4H
显示3
1
0
1
1
0
0
0
0
B0H
显示4
1
0
0
1
1
0
0
1
99H
显示5
1
0
0
1
0
0
1
0
92H
显示6
1
0
0
0
0
0
1
0
8源自文库H
利用3-8译码器来选择需要显示(亮)哪个数码管,利用P0口来负责显示什么数字或符号
1、让Y0所对应的数码管显示“0”—“9”,间隔1秒
2、让Y0所对应的数码管显示“0”,Y1显示“1”,Y2显示“2”…………以此类推最后Y7显示“7”,间隔1秒
3、让Y0所对应的数码管显示“0”,Y1显示“1”,Y2显示“2”…………以此类推最后Y7显示“7”,间隔4毫秒,注意观察现象,和实验2有何区别
输入
3—8译码器输出
现象
P2口的值
P21
P21
P20
C
B
A
Y7
Y6
Y5
Y4
Y3
Y2
Y1
Y0
0x00
0
0
0
1
1
1
1
1
1
1
0
Y0对应的数码管亮
0x01
0
0
1
1
1
1
1
1
1
0
1
Y1对应的数码管亮
0x02
0
1
0
1
1
1
1
1
0
1
1
Y2对应的数码管亮
0x03
0
1
1
1
1
1
1
0
1
1
1
Y3对应的数码管亮
0x04
1
0
0
1
1
4、让Y0所对应的数码管显示“5”,停留1秒,再让Y1显示“5”,…………以此类推最后Y7显示“5”,移动字幕
5、在8个数码管上稳定显示“i love you”
6、数码管动态显示程序清单
#include<reg52.h>
void delaym(unsigned int t)//延时子程序,入口参数ms,延迟时间=t*1ms,t=0~65535
LED数码管驱动显示实验
实验内容:
1、八字段LED数码管驱动显示工作原理
2、74LS138三—八译码器工作原理及如何控制数码管工作原理
3、数码管动态显示工作原理分析与计算
4、数码管多种显示实验
实验讲义:
一、七字段数码管显示工作原理
共阴级接法
共阳级接法
共阳极接法字形表
字符
h(DP)
g
f
e
d
c
b
a
P0口
①静态显示驱动:静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,要知道一个89S52单片机可用的I/O端口才32个呢:),实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。
2、数码管使用的电流与电压计算
电流:静态时,推荐使用10-15mA;动态时,16/1动态扫描时,平均电流为4-5mA,峰值电流50-60mA。
电压:查引脚排布图,看一下每段的芯片数量是多少?当红色时,使用1.9V乘以每段的芯片串联的个数;当绿色时,使用2.1V乘以每段的芯片串联的个数。
四、数码管显示实验
显示7
1
1
1
1
1
0
0
0
F8H
显示8
1
0
0
0
0
0
0
0
80H
显示9
1
0
0
1
1
0
0
0
98H
详情分析可以启动51单片机工具箱软件,选择“数码管字形”生成选项进行字形分析。
二、74LS138三—八译码器工作原理及如何控制数码管工作原理
注:上图是工程样品图。实际修改后的电路板图将接入9012三极管的Y0-Y7顺序改为Y7-Y0
void main()
{
unsigned int i,j;
while(1)
{
for(j=0;j<16;j++)//为了循环显示数组b[9]里的9个数字0-9
{
for(i=0;i<8;i++)//为了让8个数码管轮流亮一遍过去
{
P0=b[j];
P2=0;
delaym(250);
②动态显示驱动:数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。
{
unsigned char j;//j=0~255
while(t--)
{
for(j = 0; j < 125; j++);//j进行的内部循环,1次延迟8us
}
}
//数码管显示程序
unsigned char b[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
1
0
1
1
1
1
Y4对应的数码管亮
0x05
1
0
1
1
1
0
1
1
1
1
1
Y5对应的数码管亮
0x06
1
1
0
1
0
1
1
1
1
1
1
Y6对应的数码管亮
0x07
1
1
1
0
1
1
1
1
1
1
1
Y7对应的数码管亮
三、数码管驱动方式及动态显示工作原理分析与计算
1、人眼的视觉暂留现象
数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。
}
}
}
}
P0.7
P0.6
P0.5
P0.4
P0.3
P0.2
P0.1
P0.0
P0(16进制)
全灭
1
1
1
1
1
1
1
1
FF
显示0
1
1
0
0
0
0
0
0
C0H
显示1
1
1
1
1
1
0
0
1
F9H
显示2
1
0
1
0
0
1
0
0
A4H
显示3
1
0
1
1
0
0
0
0
B0H
显示4
1
0
0
1
1
0
0
1
99H
显示5
1
0
0
1
0
0
1
0
92H
显示6
1
0
0
0
0
0
1
0
8源自文库H
利用3-8译码器来选择需要显示(亮)哪个数码管,利用P0口来负责显示什么数字或符号
1、让Y0所对应的数码管显示“0”—“9”,间隔1秒
2、让Y0所对应的数码管显示“0”,Y1显示“1”,Y2显示“2”…………以此类推最后Y7显示“7”,间隔1秒
3、让Y0所对应的数码管显示“0”,Y1显示“1”,Y2显示“2”…………以此类推最后Y7显示“7”,间隔4毫秒,注意观察现象,和实验2有何区别
输入
3—8译码器输出
现象
P2口的值
P21
P21
P20
C
B
A
Y7
Y6
Y5
Y4
Y3
Y2
Y1
Y0
0x00
0
0
0
1
1
1
1
1
1
1
0
Y0对应的数码管亮
0x01
0
0
1
1
1
1
1
1
1
0
1
Y1对应的数码管亮
0x02
0
1
0
1
1
1
1
1
0
1
1
Y2对应的数码管亮
0x03
0
1
1
1
1
1
1
0
1
1
1
Y3对应的数码管亮
0x04
1
0
0
1
1
4、让Y0所对应的数码管显示“5”,停留1秒,再让Y1显示“5”,…………以此类推最后Y7显示“5”,移动字幕
5、在8个数码管上稳定显示“i love you”
6、数码管动态显示程序清单
#include<reg52.h>
void delaym(unsigned int t)//延时子程序,入口参数ms,延迟时间=t*1ms,t=0~65535
LED数码管驱动显示实验
实验内容:
1、八字段LED数码管驱动显示工作原理
2、74LS138三—八译码器工作原理及如何控制数码管工作原理
3、数码管动态显示工作原理分析与计算
4、数码管多种显示实验
实验讲义:
一、七字段数码管显示工作原理
共阴级接法
共阳级接法
共阳极接法字形表
字符
h(DP)
g
f
e
d
c
b
a
P0口
①静态显示驱动:静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,要知道一个89S52单片机可用的I/O端口才32个呢:),实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。
2、数码管使用的电流与电压计算
电流:静态时,推荐使用10-15mA;动态时,16/1动态扫描时,平均电流为4-5mA,峰值电流50-60mA。
电压:查引脚排布图,看一下每段的芯片数量是多少?当红色时,使用1.9V乘以每段的芯片串联的个数;当绿色时,使用2.1V乘以每段的芯片串联的个数。
四、数码管显示实验
显示7
1
1
1
1
1
0
0
0
F8H
显示8
1
0
0
0
0
0
0
0
80H
显示9
1
0
0
1
1
0
0
0
98H
详情分析可以启动51单片机工具箱软件,选择“数码管字形”生成选项进行字形分析。
二、74LS138三—八译码器工作原理及如何控制数码管工作原理
注:上图是工程样品图。实际修改后的电路板图将接入9012三极管的Y0-Y7顺序改为Y7-Y0