📄 text1.c
字号:
#include <REG51.H>
#include <INTRINS.H>
sbit row = P3 ^ 4;
sbit col1 = P3 ^ 0;
sbit col2 = P3 ^ 1;
unsigned char i=0,j=0;
unsigned char a[8]={0,0,19,0,0,19,0,0};
unsigned char DISPTABLE[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0x8C,0xC1,0xFF,0xBF};//加了一横杠0xbf
void Delay(unsigned int count)
{
unsigned char i;
while(--count != 0)
for(i = 0; i < 125; i++);
}
unsigned char KeyDown(void)
{
row=0;
if((col1==0) || (col2==0))
{
Delay(80);
if((col1==0) || (col2==0))
return 1;
else
return 0;
}
else
return 0;
}
unsigned char KeyNum(void)
{
unsigned char KeyTemp;
KeyTemp=0;
if(KeyDown()==1) // 若键盘被按下
{
while(1)
{
col1=col2=1;
row=0;
if (col1==0) {KeyTemp=0; break;} // 若列线1读回状态为低,则表明按键0被按下
if (col2==0) {KeyTemp=1; break;} // 若列线2读回状态为低,则表明按键1被按下
}
return KeyTemp;
}
else
return 0x55;
}
void DisPlay(unsigned char seg,unsigned char dat)
{
unsigned char i;
P0=DISPTABLE[dat];
switch(seg)
{
case 1: i=0x7F; break;
case 2: i=0xBF; break;
case 3: i=0xDF; break;
case 4: i=0xEF; break;
case 5: i=0xF7; break;
case 6: i=0xFB; break;
case 7: i=0xFD; break;
case 8: i=0xFE; break;
default: break;
}
P2=i;
}
void timer1( )interrupt 3 using 1
{
/*DisPlay(8-i,a[i]);
i++;
if(i>7)i=0;*/
/* for(i=0;i<8;i++)
{
DisPlay(8-i,a[i]);
}*/
DisPlay(8,a[0]);
DisPlay(7,a[1]);
DisPlay(6,a[2]);
DisPlay(5,a[3]);
DisPlay(4,a[4]);
DisPlay(3,a[5]);
DisPlay(2,a[6]);
DisPlay(1,a[7]);
if(j>90)
{
a[0]++;
if(a[0]>9)
{
a[0]=0;
a[1]++;
if(a[1]>5)
{
a[1]=0;
a[3]++;
if(a[3]>9)
{
a[3]=0;
a[4]++;
if(a[4]>5)
{
a[4]=0;
a[6]++;
if(a[7]==1 && a[6]>9)
{
a[7]++;
}
else if(a[7]==2 && a[6]>3)
{
a[0]=a[1]=a[3]=a[4]=a[6]=a[7]=0;
}
else
{
a[7]++;
}
}
}
}
}
j=0;
}
else
{
j++;
}
}
void main(void)
{
unsigned char key;
TMOD = 0X20;
TH1= - 120000/256;
TL1= - 120000%256;
EA=1;
ET1=1;
TR1=1;
// a[2]=a[5]=19;
while(1)
{
/* row=col1=col2=1;
key=KeyNum();
if(key==0)
{
EA=0;
ET1=0;
TR1=0;
}
else if(key==1)
{
EA=1;
ET1=1;
TR1=1;
}*/
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -