51单片机——数码管

51单片机——数码管

在这里插入图片描述
原理图
在这里插入图片描述
位控制8个显示灯
段控制1个显示灯中的8个LED灯
下面为静态数码管实现代码

#include <reg52.h>//静态数码管代码
void delay(unsigned int z){//延时函数
unsigned int x,y;
for(x=z;x>0;x–)
for(y=114;y>0;y–);
}
sbit we=P2^7;//位选锁存器接口
sbit du=P2^6;//段选锁存器接口
void main(){
int a[10]= {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//0-9的十六进制数
int i;
for(i=0;i<10;i++){
we=1;//打开位选
P0=0xfe;//1111 1110,让最后一个数码管显示0-9;
we=0;//关闭位选
du=1;//打开段选
P0=a[i];//让这个数码管显示0-9;
delay(200);
du=0;//关闭段选
}
}

动态数码管的代码实现:
让8个数码管,轮流显示0-9

#include <reg52.h>//动态数码管代码
#include <intrins.h>//右移函数
void delay(unsigned int z){
unsigned int x,y;
for(x=z;x>0;x–)
for(y=114;y>0;y–);
}
sbit we = P2^7;
sbit du = P2^6;
void main()
{
int a[10]= {0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f };//显示0-9
int x=0xfe;//1111 1110,最后一个数码管亮
int i;
for(i=0;i<10;i++){
we=1;
P0=x;
we=0;
du=1;
P0=a[i];//显示某个数字
delay(200);
du=0;
x=crol(x,1);//让数码管显示右移
}
}
2.
//静态数码管
#include <reg52.h>
sbit we=P2^7;
sbit du=P2^6;
void delay(unsigned int z)
{
unsigned int i ,j;
for(i=z;i>0;i–)
for(j=114;j>0;j–);
}
void main()
{
int a[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
int i;
for(i=0;i<10;i++)
{
we=1;
P0=0xfe;
we=0;
du=1;
P0=a[i];
delay(200);
du=0;
}
}
2.
//动态数码管

#include <reg52.h>
#include <intrins.h>
sbit we=P2^7;
sbit du=P2^6;
void delay(unsigned int z)
{
unsigned int i ,j;
for(i=z;i>0;i–)
for(j=114;j>0;j–);
}
void main()
{
int a[9]={0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
int i;
int x=0xfe;
for(i=0;i<9;i++)
{
we=1;
P0=x;
we=0;
du=1;
P0=a[i];
delay(200);
du=0;
x=crol(x,1);
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值