📄 led.c
字号:
#include <AT89X51.H>
unsigned char code LEDTAB[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};/*0-9LED编码*/
unsigned char code LED[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};/*数码管自左向右0-7*/
unsigned char NUM[8];
unsigned char k=9;
void delay(unsigned char g){/*延时gms*/
unsigned char i,j;
for(i=0;i<g;i++){
for(j=0;j<121;j++){;}}
}
void calculate() //计算频率值,最后一位四舍五入
{
unsigned char i;
unsigned int yu,jin;
NUM[0]=1000/(360*k);
yu=1000%(360*k);
for(i=1;i<8;i++){
yu*=10;
NUM[i]=yu/(360*k);
yu=yu%(360*k);
}
yu*=10;
jin=yu/(360*k);
if(jin>=5)
NUM[7]++;
if(NUM[7]>9)
{NUM[7]--;
NUM[6]++;
if(NUM[6]>9)
{NUM[6]--;
NUM[5]++;
if(NUM[5]>9)
{NUM[5]--;
NUM[4]++;
if(NUM[4]>9)
{NUM[4]--;
NUM[3]++;
if(NUM[3]>9)
{NUM[3]--;
NUM[2]++;
if(NUM[2]>9)
{NUM[2]--;
NUM[1]++;
if(NUM[1]>9)
{NUM[1]--;
NUM[0]++;
}
}
}
}
}
}
}
}
void display()interrupt 2 using 0
{
unsigned char i,temp;
calculate();
while(1){
P2=LED[0];
temp=NUM[0];
P0=LEDTAB[temp]&0x7F;
delay(1);
for(i=1;i<8;i++){
P2=LED[i];
temp=NUM[i];
P0=LEDTAB[temp];
delay(1);
if(P3_3==1)
return;
}
}
}
void main()
{
EA=1;
EX1=1;
while(1)
P2=0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -