📄 02.c
字号:
#include<reg51.h>
sbit c1 = P2^3;
sbit c2 = P2^2;
sbit c3 = P2^1;
sbit r1 = P2^4;
sbit r2 = P2^5;
sbit r3 = P2^6;
sbit r4 = P2^7;
int i;
int a;
unsigned int w,x,y,z,o,p,q,r;
void show ( int a);
void show1 ( int a);
void Shift (void);
void Shift1 (void);
unsigned char Patturn [10] = {0x00,0x10,0x20,0x30,0x40,0x50,0x60,0x70,0x80,0x90};
unsigned char Buffer1[4],Buffer3[4];
unsigned char Buffer2[4],Buffer4[4];
void delay_db(int time)
{
do
{
time--;
}while(time>0);
}
unsigned char scankey(void)
{
unsigned char ret = 0xFF;
c1 = 0;
if(r1==0)
{
delay_db(30000);
ret = 0x01;
}
if(r2==0)
{
delay_db(30000);
ret = 0x04;
}
if(r3==0)
{
delay_db(30000);
ret = 0x07;
}
if(r4==0)
{
delay_db(30000);
ret = 0x11; //*+++++
}
c1 = 1;
//------------------------------------------------//
c2 = 0;
if(r1==0)
{
delay_db(30000);
ret = 0x02;
}
if(r2==0)
{
delay_db(30000);
ret = 0x05;
}
if(r3==0)
{
delay_db(30000);
ret = 0x08;
}
if(r4==0)
{
delay_db(30000);
ret = 0x00;
}
c2 = 1;
//----------------------------------------//
c3 = 0;
if(r1==0)
{
delay_db(30000);
ret = 0x03;
}
if(r2==0)
{
delay_db(30000);
ret = 0x06;
}
if(r3==0)
{
delay_db(30000);
ret = 0x09;
}
if(r4==0)
{
delay_db(30000);
ret = 0x12; //#======
}
c3 = 1;
return(ret);
}
/*************************** Main loop **************************/
void main(void)
{
unsigned char key = 0;
P0 = 0xff;
P2 = 0xff;
while(1)
{
key = scankey();
if( key != 0xFF)
{
i++;
if(i<=4)
Buffer1[i]=key;
if (i>4)
{
i=4;
Shift ();
Buffer1[4]=key;
}
}
show (i);
}
}
/***********************************************************************************************************************/
void Shift (void)
{
Buffer2[1]= Buffer1[1];
Buffer2[2]= Buffer1[2];
Buffer2[3]= Buffer1[3];
Buffer2[4]= Buffer1[4];
//--------------------
Buffer1[3]= Buffer2[4];
Buffer1[2]= Buffer2[3];
Buffer1[1]= Buffer2[2];
}
void show(i)
{
switch (i)
{
case 1:
P0 = Patturn[Buffer1 [1]]|0x0e;
delay_db(25);
break;
case 2:
P0 = Patturn[Buffer1 [2]]|0x0e;
delay_db(25);
P0 = Patturn[Buffer1 [1]]|0x0d;
delay_db(25);
break;
case 3:
P0 = Patturn[Buffer1 [3]]|0x0E;
delay_db(25);
P0 = Patturn[Buffer1 [2]]|0x0d;
delay_db(25);
P0 = Patturn[Buffer1 [1]]|0x0b;
delay_db(25);
break;
case 4:
P0 = Patturn[Buffer1 [4]]|0x0E;
delay_db(25);
P0 = Patturn[Buffer1 [3]]|0x0d;
delay_db(25);
P0 = Patturn[Buffer1 [2]]|0x0b;
delay_db(25);
P0 = Patturn[Buffer1 [1]]|0x07;
delay_db(25);
break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -