单片机原理实验led数码管显示
电子信息工程系实验
报告
软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载
课程名称:单片机原理及接口(应用)
成 绩:
实验3 LED数码管显示实验 实验时间:2011.11.4 实验项目名称:
指导教师(签名): 班级: 电信092 姓名: 学号:
实验目的:
熟悉keil仿真软件、proteus仿真软件、软件仿真板的使用。了解并熟悉一位数码管与多位LED数码管的电路结构、与单片机的连接
方法
快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载
及其应用原理。学习proteus构建LED数码管显示电路的方法,掌握C51中单片机控制LED数码管动态显示的原理与编程方法。
实验环境:
Window 7
Keil2仿真软件
实验原理:
1、LED显示器是由发光二极管显示字段的显示器件。在单片机应用系统中通常使用的是七段LED,这种显示器有共阴极与共阳极两种,如图1。
g f a b
10 9 8 7 6
a
f b
g
e c
dp d
1 2 3 4 5
e d c dp
(a) 共阴极 (b) 共阳极 (c) 管脚配置
图 LED显示器 图1 共阴和共阳显示原理
共阴极LED显示器的发光二极管阴极共地,当某个发光二极管的阳极为高电平时,该发光二极管则点亮;共阳极LED显示器的发光二极管阳极并接。下面简单举共阴数码管显示“1”为例“三步骤”
说明
关于失联党员情况说明岗位说明总经理岗位说明书会计岗位说明书行政主管岗位说明书
其原理:
1 第 页 共 7 页
(1) 要显示“1”b、c两个灯是亮的;
(2) 因为其为共阴,所以b、c应该取1才亮;
(3) 所以dp、g、f、e、d、c、b、a分别为00000110B即0x06。
2、LED显示器有静态显示与动态显示两种方式:
(1)LED静态显示方式。各位LED的位选线连在一起接地或接+5V;每位LED的段选线(a,dp)各与一个八位并行口相连;在同一时间里每一位显示的字符可以各不相同。
图 2 四位静态LED显示器电路
(2)LED动态显示方式。将所有LED的段选线并联在一起,由一个八位I,O口控制,而位选线分别由相应的I,O口线控制。如:8位LED动态显示电路只需要两个八位I,O口。其中一个控制段选码,另一个控制位选。动态显示三部曲:
图3 八位LED动态显示器电路
由于所有位的段选码皆由一个I,O控制,因此,在每个瞬间,多位LED只可能显示相同的字符。要想每位显示不同的字符,必须采用动态扫描显示方式。即在每一瞬间只使某一位
2 第 页 共 7 页
显示相应字符。在此瞬间,位选控制I,O口在该显示位送入选通电平(共阴极送低电平、共阳极送高电平)以保证该位显示相应字符,段选控制I,O口输出相应字符段选码。如此轮流,使每位显示该位应显示字符,并保持延时一段时间,以造成视觉暂留效果。不断循环送出相应的段选码、位选码,就可以获得视觉稳定的显示状态。由人眼的视觉特性,每一位LED在一秒钟内点亮不少于30次,其效果和一直点亮相差不多。
3、用Proteus仿真软件画出其电路图,用到的元器件有:AT89C51RB2、CAP、7SEG-MPX8-CC-BLUE、CRYSTAL、RES、RESPACK-8、BUTTON及电源和接地。图如3所示:
图3 proteus原理图
实验内容及过程:
一、用仿真软件构建一个8位的LED数码管显示电路,然后在左边第5位显示 “A”
(1)、启动Keil仿真软件后,点击Project菜单新建项目(new project),给项目取个文件名;
(2)、新建项目后,选择仿真单片机型号,并新建、保存、然后加入程序文件(add files to group“source group”),然后输入以下程序:
#include "reg51.h"
main()
{
P2=0Xef;//位选
P0=0X77;//段选
}
3 第 页 共 7 页
(3)、程序写好后,进行连接、编译、生成hex文件,如图4、图5所示:
图4 单击Output,然后点击creat hex Fi: 图5 生成led.Hex文件 (4)、打开用proteus仿真软件画出的电路图,导入hex文件,运行结果得到如图6所示:
图6 数码管显示‘A’
二、用仿真软件构建一个8位的LED数码管显示电路,然后在左边第3位循环显示 “1-8”。
(1)、同样执行第一步中(1)、(2),然后输入以下程序(程序省略了延时程序):
#include "reg51.h"
unsigned char led[8]={0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f};
main()
{unsigned char i;
while(1)
{
for(i=0;i<8;i++)
{
P2=0xfb;
P0=led[i];
delay(1000);
}
}
}
4 第 页 共 7 页
(2)、程序编好后进行编译,生成hex文件,然后导入proteus电路图中,结果显示如
图7所示(图中只截取其中的三副图):
图7 第三位循环显示1-8
三、用仿真软件构建一个8位的LED数码管显示电路,然后在数码管上"同时“显示1-8” (1)、同样执行第一步的(1)、(2)然后输入以下程序(程序省略延时函数):
#include "reg51.h"
unsigned char led[8]={0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f};
unsigned char wei[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
main()
{unsigned char i;
while(1)
{
for(i=0;i<8;i++)
{
P2=wei[i];
P0=led[i];
delay(10);
}
}
}
5 第 页 共 7 页
(2)、程序编好后进行编译,生成hex文件,然后导入proteus电路图中,结果显示如图
8所示:
图8,数码管同时显示1-8
四、用仿真软件建一个8位的LED数码管显示电路,然后用一个开关控制6从右边跑马8遍
(1)、同样执行第一步的(1)、(2)然后输入以下程序(程序省略延时函数):
#include "reg51.h"
sbit P30=P3^0;
unsigned char wei[8]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
main()
{unsigned char i,j;
while(1)
{
if(P30==0)
{
for(j=0;j<8;j++)
{
for(i=0;i<8;i++)
{
P2=wei[i];
P0=0x7d;
delay(500);
}
}while(1)
P2=0xff;
}
}
}
6 第 页 共 7 页
(2)、程序编好后进行编译,生成hex文件,然后导入proteus电路图中,运行后打开开关结果显示如图9所示(图中只是一瞬间的截图,其会向左连续跑8遍之后全灭):
图9 显示‘6’从右向左连续跑8遍
实验心得:
通过此次实验,熟悉了keil仿真软件、proteus仿真软件、软件仿真板的使用。了解并熟悉一位数码管与多位LED数码管的电路结构、与单片机的连接方法及其应用原理。学习proteus构建LED数码管显示电路的方法,掌握C51中单片机控制LED数码管动态显示的原理与编程方法。
7 第 页 共 7 页