显示器显示1-9变换。显示函数。矩阵按后在左边显示-----数码管

51单片机LED显示
本文介绍使用51单片机实现LED数字显示的方法,包括单个数字的静态显示和多个数字的动态扫描显示。代码示例展示了如何通过控制不同端口实现数字变换,并介绍了按键输入控制LED显示的功能。

显示器显示1-9变换

#include<reg51.h>
typedef unsigned char uchar;
typedef unsigned int uint;
uchar code led[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void delay(uint i)
{
	uint j;
	while(i--)
	{	
		j=124;
		while(j--);
	}
}
void main()
{
	uchar i;
	P2=0;
	while(1)
	{
		for(i=0;i<10;i++)
		{
		P0=led[i];
		delay(500);
		}
	}
}

显示函数

#include <reg51.h>
typedef unsigned char u8;
typedef unsigned int u16;
sbit weia=P2^2;
sbit weib=P2^3;
sbit weic=P2^4;
u8 code duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}
void delay(u16 t)    
{  u8 i;
   while(t--)
   { i=124; 
     while(i--);
	 }
}
void xianshi()//显示函数
{
	u8 i;
	for(i=0;i<8;i--)
	{
		switch(i)
		{
		  case 0:weia=0;weib=0;weic=0;break;
		  case 1:weia=1;weib=0;weic=0;break;
		  case 2:weia=0;weib=1;weic=0;break;
		  case 3:weia=1;weib=1;weic=0;break;
		  case 4:weia=0;weib=0;weic=1;break;
		  case 5:weia=1;weib=0;weic=1;break;
		  case 6:weia=0;weib=1;weic=1;break;
		  case 7:weia=1;weib=1;weic=1;break;
		}  
		P0=duan[i];
		delay(1);
		P0=0x00;//消影
	}
}
void main()
{
	xianshi();
}

矩阵按后在左边显示

#include<reg51.h>
#include<intrins.h>
typedef unsigned char u8;
typedef unsigned int u16;
#define key P1
u8 code wei[8]={0xe3,0xe7,0xeb,0xef,0xf3,0xf7,0xfb,0xff}; 
u8 duan2[16]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
u8 code duan[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
u16 t,j,a,i;
//u8 b=0;
u8 b=0,x;
void delay(t)    
{
    while (t--)
    {  j=124;
        while(j--);
    }
}
void anjian()
{		
	key=0x0f;
	if(key!=0x0f)
	{
		delay(10);
		if(key!=0x0f)
		{	
			key=0x0f;
			switch(key)
			{
			 case 0x07:a=0;break;
			 case 0x0b:a=1;break;
			 case 0x0d:a=2;break;
			 case 0x0e:a=3;break;
			}	
			key=0xf0;
			switch(key)
			{
			 case 0x70:a=a;break;
			 case 0xb0:a=a+4;break;
			 case 0xd0:a=a+8;break;
			 case 0xe0:a=a+12;break;
			}		
			for(x=15;x>0;x--)
			{
			duan2[x]=duan2[x-1];
			}
			duan2[0]=a;
			while(key!=0xf0);
		/*	duan2[b]=a;
			b++;
			if(b==8)
				b=0;*/
			
}}}
void main()
{
	while(1)
	{ 
		for(i=0;i<8;i++)
	 {	
		P0=0;
		anjian();
		P2=wei[i];
		P0=duan[duan2[i]];
	 }
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

静安书以沫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值