📄 456.c
字号:
#include<reg51.h>
#define unint unsigned int
#define unchar unsigned char
sbit G1=P0^5;
sbit G2=P0^4;
sbit stcp=P3^2;
sbit shcp=P3^1;
sbit DS=P3^0;
sbit p20=P2^0;
sbit p21=P2^1;
sbit p27=P2^7; //键盘扫描
sbit p26=P2^6;
sbit p25=P2^5;
sbit p24=P2^4;
unchar nub;
unchar code stry1[12][16]=
{ /*3(0) 8(1) 4(2) 6(3) 3(4) 9(5)*/
/* 1(0) 8(1) 3(2) 7(3)*/
{0xFF,0xFF,0xFF,0xEF,0x8F,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0x83,0xFF,0xFF},/*"1",0*/
{0xFF,0xFF,0xFF,0xC3,0xBD,0xBD,0xBD,0xDB,0xE7,0xDB,0xBD,0xBD,0xBD,0xC3,0xFF,0xFF},/*"8",1*/
{0xFF,0xFF,0xFF,0xC3,0xBD,0xBD,0xFB,0xE7,0xFB,0xFD,0xFD,0xBD,0xBB,0xC7,0xFF,0xFF},/*"3",2*/
{0xFF,0xFF,0xFF,0x81,0xBB,0xBB,0xF7,0xF7,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xFF,0xFF},/*"7",3*/
{0xFF,0xFF,0xFF,0xC3,0xBD,0xBD,0xFB,0xE7,0xFB,0xFD,0xFD,0xBD,0xBB,0xC7,0xFF,0xFF},/*"3",0*/
{0xFF,0xFF,0xFF,0xC3,0xBD,0xBD,0xBD,0xDB,0xE7,0xDB,0xBD,0xBD,0xBD,0xC3,0xFF,0xFF},/*"8",1*/
{0xFF,0xFF,0xFF,0xFB,0xF3,0xEB,0xDB,0xDB,0xBB,0xBB,0x81,0xFB,0xFB,0xE1,0xFF,0xFF},/*"4",2*/
{0xFF,0xFF,0xFF,0xE3,0xDB,0xBF,0xBF,0xA7,0x9B,0xBD,0xBD,0xBD,0xDB,0xE7,0xFF,0xFF},/*"6",3*/
{0xFF,0xFF,0xFF,0xC3,0xBD,0xBD,0xFB,0xE7,0xFB,0xFD,0xFD,0xBD,0xBB,0xC7,0xFF,0xFF},/*"3",4*/
{0xFF,0xFF,0xFF,0xE7,0xDB,0xBD,0xBD,0xBD,0xD9,0xE5,0xFD,0xFD,0xDB,0xC7,0xFF,0xFF},/*"9",5*/
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},// c0 //
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},// c0 //
};
unchar code stry2[14][16]=
{
/*w(0) e(1) (2) a(3) r(4) e(5) (6) r(7)
e(8) a(9) d(10) y(11)*/
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x28,0x6D,0x6D,0x55,0x55,0xBB,0xBB,0xFF,0xFF},/*"w0*/
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC3,0xBD,0x81,0xBF,0xBF,0xBD,0xC3,0xFF,0xFF},/*"e1*/
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*" 2*/
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC3,0xBD,0xE1,0xDD,0xBD,0xBD,0xC0,0xFF,0xFF},/*"a3*/
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x11,0xCD,0xDF,0xDF,0xDF,0xDF,0x07,0xFF,0xFF},/*"r4*/
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC3,0xBD,0x81,0xBF,0xBF,0xBD,0xC3,0xFF,0xFF},/*"e5*/
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*" 6*/
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x11,0xCD,0xDF,0xDF,0xDF,0xDF,0x07,0xFF,0xFF},/*"r7*/
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC3,0xBD,0x81,0xBF,0xBF,0xBD,0xC3,0xFF,0xFF},/*"e8*/
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC3,0xBD,0xE1,0xDD,0xBD,0xBD,0xC0,0xFF,0xFF},/*"a9*/
{0xFF,0xFF,0xFF,0xF9,0xFD,0xFD,0xFD,0xE1,0xDD,0xBD,0xBD,0xBD,0xD9,0xE4,0xFF,0xFF},/*"d10*/
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x18,0xBD,0xDB,0xDB,0xD7,0xE7,0xEF,0xEF,0x1F},/*"y11*/
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},//c0*//
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},// c0 //
};
unchar code stry3[10][16]=
{/* 5(0) 6(1) 3(2) 4(3) 2(4) 8(5) 4(6) 9(7)*/
{0xFF,0xFF,0xFF,0x81,0xBF,0xBF,0xBF,0xA7,0x9B,0xFD,0xFD,0xBD,0xBB,0xC7,0xFF,0xFF},/*"5",0*/
{0xFF,0xFF,0xFF,0xE3,0xDB,0xBF,0xBF,0xA7,0x9B,0xBD,0xBD,0xBD,0xDB,0xE7,0xFF,0xFF},/*"6",1*/
{0xFF,0xFF,0xFF,0xC3,0xBD,0xBD,0xFB,0xE7,0xFB,0xFD,0xFD,0xBD,0xBB,0xC7,0xFF,0xFF},/*"3",2*/
{0xFF,0xFF,0xFF,0xFB,0xF3,0xEB,0xDB,0xDB,0xBB,0xBB,0x81,0xFB,0xFB,0xE1,0xFF,0xFF},/*"4",3*/
{0xFF,0xFF,0xFF,0xC3,0xBD,0xBD,0xBD,0xFB,0xFB,0xF7,0xEF,0xDF,0xBD,0x81,0xFF,0xFF},/*"2",4*/
{0xFF,0xFF,0xFF,0xC3,0xBD,0xBD,0xBD,0xDB,0xE7,0xDB,0xBD,0xBD,0xBD,0xC3,0xFF,0xFF},/*"8",5*/
{0xFF,0xFF,0xFF,0xFB,0xF3,0xEB,0xDB,0xDB,0xBB,0xBB,0x81,0xFB,0xFB,0xE1,0xFF,0xFF},/*"4",6*/
{0xFF,0xFF,0xFF,0xE7,0xDB,0xBD,0xBD,0xBD,0xD9,0xE5,0xFD,0xFD,0xDB,0xC7,0xFF,0xFF},/*"9",7*/
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},//c0*//
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},// c0 //
};
unchar code stry4[12][16]=
{ /*w(0) e(1) (2) c(3) a(4) n(5) (6) f(7)
l(8) y(9)*/
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x28,0x6D,0x6D,0x55,0x55,0xBB,0xBB,0xFF,0xFF},/*"w",0*/
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC3,0xBD,0x81,0xBF,0xBF,0xBD,0xC3,0xFF,0xFF},/*"e",1*/
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*" ",2*/
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE3,0xDD,0xBF,0xBF,0xBF,0xDD,0xE3,0xFF,0xFF},/*"c",3*/
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC3,0xBD,0xE1,0xDD,0xBD,0xBD,0xC0,0xFF,0xFF},/*"a",4*/
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x23,0x9D,0xBD,0xBD,0xBD,0xBD,0x18,0xFF,0xFF},/*"n",5*/
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*" ",6*/
{0xFF,0xFF,0xFF,0xF0,0xEE,0xEF,0xEF,0x81,0xEF,0xEF,0xEF,0xEF,0xEF,0x83,0xFF,0xFF},/*"f",7*/
{0xFF,0xFF,0xFF,0x8F,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0x83,0xFF,0xFF},/*"l",8*/
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x18,0xBD,0xDB,0xDB,0xD7,0xE7,0xEF,0xEF,0x1F},/*"y",9*/
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},//c0*//
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},// c0 //
};
void delay(void)
{
unchar i,j;
for(i=20;i>0;i--)
for(j=248;j>0;j--)
;
}
void write(unchar dat) //数据传输函数
{
unchar l,kdat;
kdat=dat;
for(l=0;l<8;l++)
{
shcp=0;
DS=(kdat&0x01); //按位传数据
kdat=kdat>>1;
shcp=1;
}
}
void keboard(void)
{
p21=0; //令p24为低电平
if(p27==0) //p27按下侧奴nub为5
{
delay();
if(p27==0)
nub=5;
}
if(p26==0) //p26按下侧奴nub为6
{
delay();
if(p26==0)
nub=6;
}
if(p25==0) //p25按下侧奴nub为7
{
delay();
if(p25==0)
nub=7;
}
if(p24==0) //p24按下侧奴nub为8
{
delay();
if(p24==0)
nub=8;
}
}
unchar bin=8; //补偿位控制
void write1(unchar dat) //补偿传输函数 和write函数一样
{
unchar l,kdat;
kdat=dat;
for(l=bin;l>0;l--)
{
shcp=0;
DS=(kdat&0x01);
kdat=kdat>>1;
shcp=1;
}
}
unchar i=0; //列控制
unchar j=1; //行控制
unchar k=0; //时间控制
void initTimer(void) //定时器1,方式1 定时50us
{
TMOD=0x1;
TH0=0xfe;
TL0=0xc;
}
void timer0(void) interrupt 1
{ keboard(); //调用键盘扫描函数
if(nub==5)
{
EA=0;
TH0=0xfe;
TL0=0xc;
stcp=0;
keboard(); //调用键盘扫描函数
write(stry1[j+1][i+1]);
write(stry1[j+1][i+1]);
write(stry1[j+0][i+1]);
write(stry1[j+0][i+1]);
write(stry1[j-1][i+1]);
write1(stry1[j-1][i+1]);
P0=i;
stcp=1;
i+=1;
if(i==16) {i=0; k+=1;}
if(k==15) {k=0; bin-=1;}
if(bin==0) {bin=8; j+=1;}
if(j==11) j=1;
EA=1;
}
if(nub==6)
{
EA=0;
TH0=0xfe;
TL0=0xc;
stcp=0;
keboard(); //调用键盘扫描函数
write(stry2[j+1][i+1]);
write(stry2[j][i+1]);
write(stry2[j+0][i+1]);
write(stry2[j+0][i]);
write(stry2[j-1][i+1]);
write1(stry2[j-1][i+1]);
P0=i;
stcp=1;
i+=1;
if(i==16) {i=0; k+=1;}
if(k==15) {k=0; bin-=1;}
if(bin==0) {bin=8; j+=1;}
if(j==13) j=1;
EA=1;
}
if(nub==7)
{
EA=0;
TH0=0xfe;
TL0=0xc;
stcp=0;
keboard(); //调用键盘扫描函数
write(stry3[j+1][i+1]);
write(stry3[j+1][i+1]);
write(stry3[j+0][i+1]);
write(stry3[j+0][i+1]);
write(stry3[j-1][i+1]);
write1(stry3[j-1][i+1]);
P0=i;
stcp=1;
i+=1;
if(i==16) {i=0; k+=1;}
if(k==15) {k=0; bin-=1;}
if(bin==0) {bin=8; j+=1;}
if(j==9) j=1;
EA=1;
}
if(nub==8)
{
EA=0;
TH0=0xfe;
TL0=0xc;
stcp=0;
keboard(); //调用键盘扫描函数
write(stry4[j+1][i+1]);
write(stry4[j+1][i+1]);
write(stry4[j+0][i+1]);
write(stry4[j+0][i+1]);
write(stry4[j-1][i+1]);
write1(stry4[j-1][i+1]);
P0=i;
stcp=1;
i+=1;
if(i==16) {i=0; k+=1;}
if(k==15) {k=0; bin-=1;}
if(bin==0) {bin=8; j+=1;}
if(j==11) j=1;
EA=1;
}
}
void main(void)
{
G1=0;
G2=0;
initTimer();
TR0=1;
ET0=1;
EA=1;
while(1)
{
;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -