显示器显示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]];
}
}
}
51单片机LED显示
本文介绍使用51单片机实现LED数字显示的方法,包括单个数字的静态显示和多个数字的动态扫描显示。代码示例展示了如何通过控制不同端口实现数字变换,并介绍了按键输入控制LED显示的功能。
1万+

被折叠的 条评论
为什么被折叠?



