📄 ad767.c
字号:
#include <reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit CS=P2^3;
uchar dh,dl;
long dat=2000;
uchar code wei[]={0xC0,0xf9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x98};
void delay(uchar Time)
{
uchar i=0;
for(;Time>0;Time--)
{ for(;i<128;i++)
{;;}
}
}
void da(uchar dl,uchar dh)
{ CS=1;
P3=dl;P0=dh;
CS=0; _nop_();
CS=1;
}
uchar keyscan(void)
{
uchar code_h;
uchar code_l;
P2=0xF0;
if((P2&0xF0)!=0xF0)
{ delay(10);
if((P2&0xF0)!=0xF0)
{ code_h=0xFE;
while((code_h&0x10)!=0xF0)
{ P2=code_h;
if((P2&0xF0)!=0xF0)
{code_l=(P2&0xF0|0x0F);
return((~code_h)+(~code_l));
}
else code_h=(code_h<<1)|0x01;
}
}
}
return(0);
}
void display(long dat)
{
uchar bai,shi,ge;
long disnum;
disnum=(dat*1000)/4096;
if(disnum>999)
{ P0=0xFB;
P1=0xc6;
delay(10);
P0=0xFD;
P1=0xc1;
delay(10);
P0=0xFE;
P1=wei[0];
delay(10);
}
else{
// disnum&=0x00ff;
bai=disnum/100;
shi=(disnum-bai*100)/10;
ge=disnum%10;
P0=0xFB;
P1=wei[bai]&0x7f;
delay(10);
P0=0xFD;
P1=wei[shi];
delay(10);
P0=0xFE;
P1=wei[ge];
delay(10);
}
}
void sjb()
{ uint c,j;
for(c=0;c<9&(keyscan()==0);c++)
{ dat=dat+41;
dl=dat&0xff;
dh=((dat>>4)&0xf0)|(P0&0x0f);
da(dl,dh);
for(j=0;j<100;j++)
{delay(255);display(dat);}
}
for(;c>0&(keyscan()==0);c--)
{ dat=dat-41;
dl=dat&0xff;
dh=((dat>>4)&0xf0)|(P0&0x0f);
da(dl,dh);
for(j=0;j<100;j++)
{delay(255);display(dat);}
}
}
void main()
{
// uint disnum;
// long int temp;
uchar keyvalue;
bit flag,flag2;
int i,j;
while(1)
{ if(keyscan()!=0)
{
keyvalue=keyscan();
while(keyscan());
display(keyvalue);
switch(keyvalue){
case 17:
{dat=dat+41;
if(dat>4096)
dat=0;
break;}
case 33:
{dat=dat-41;
if(dat<1)
dat=0;
break;}
case 65:
{dat=dat+4;
if(dat>4096)
dat=0;
break;}
case 129:
{dat=dat-4;
if(dat<1)
dat=0;
break;}
case 130:
{flag=!flag;
break;}
case 66:
{
flag2=!flag2;
break;
}
default:dat=dat;
}
}
if(flag)
{ dat=0;
for(i=0;i<9&(keyscan()==0);i++)
{ dat=dat+41;
dl=dat&0xff;
dh=((dat>>4)&0xf0)|(P0&0x0f);
da(dl,dh);
for(j=0;j<100;j++)
{delay(255);display(dat);}
}
}
else if(flag2==0)
{
display(dat);
dl=dat&0xff;
dh=((dat>>4)&0xf0)|(P0&0x0f);
da(dl,dh);
}
else
{ dat=0;
sjb();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -