单片机---数码管(一)

//此篇只有基本代码实现
位控制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);//让数码管显示右移
	}
			 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值