数码管显示实验
一、实验内容
1、 选用一位数码管,编送不同码字,显示静态数据;
2、 轮流选择不同位数码管,编送不同码字,并做视觉残留,实现动态显示。
二、实验目的
1、了解七段数码显示数字的原理。
2、掌握四个LED动态显示,即一位一位地轮流点亮显示器各个位(扫描)。
三、实验原理
七段LED显示器有共阳极和共阴极两种,共阴极LED显示器是发光二极管的阴极连在一起,通常此公共阴极接地;共阳极LED显示器是发光二极管的阳极连在一起,公共阳极接正电压。通过LED显示器中二极管的亮灭,则显示不同的字符或数字。
数码管外形图如下, 共阴极显示如“HELLO”的数据代码如下。
D7
D6
D5
D4
D3
D2
D1
D0
显示
数值代码
h
g
f
e
d
c
b
a
0
1
1
1
0
1
1
0
H
76H
0
1
1
1
1
0
0
1
E
79H
0
0
1
1
1
0
0
0
L
38H
0
0
1
1
1
0
0
0
L
38H
0
0
1
1
1
1
1
1
O
3FH
0
1
0
0
0
0
0
0
-
40H
共阴极发光二极管内部结构图
(可参考学习板89C52学习板说明书做补充说明 )
四、实验电路
(见学习板说明书)
五、连线方法
(见学习板说明书)
五、参考程序
#include
#define uint unsigned int
#define uchar unsigned char
sbit 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"这四个数字
***************************************************************/
#include "reg52.h"
#define uchar unsigned char
sbit 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 //包含头文件
#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 char d4);
//声明显示函数
/*=====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 F
void main() //主函数开始
{
while(1)
{
display(10,11,12,13); //在循环中调用显示函数
}
}
void delay(unsigned int x) //延时函数,有效效果为数码管不闪烁
{
unsigned int i;
for(i=0;i
本文档为【数码管显示实验】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。