本帖最后由 房一鹏 于 2022-1-8 22:28 编辑
数码管的动态显示if语句
#include<reg52.h>
sbit ENLED = P1^1;
sbit P20 = P2^0;
sbit P21 = P2^1;
sbit P22 = P2^2;
unsigned char ledchar[]={
0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,
};
unsigned char ledbuff[]={
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
};
void main ()
{
unsigned int cnt=0; //最大值为1000
unsigned long sec=0; //最大值为999999(注:是数码管的最大显示数字)
unsigned char i=0; //最大值为5
ENLED=0;
TMOD=0x01;
TH0=0xF5;
TL0=0x55;
TR0=1;
while(1)
{
if(TF0==1)
{
TF0=0;
TH0=0xF5;
TL0=0x55;
cnt++;
if(cnt>=1000)
{
cnt=0;
sec++;
ledbuff[0]=ledchar[sec%10];
ledbuff[1]=ledchar[sec/10%10];
ledbuff[2]=ledchar[sec/100%10];
ledbuff[3]=ledchar[sec/1000%10];
ledbuff[4]=ledchar[sec/10000%10];
ledbuff[5]=ledchar[sec/100000%10];
}
P0=0xFF;
if(i==0)
{P20=1; P21=0; P22=1;i++; P0=ledbuff[0];}
else if(i==1)
{P20=0; P21=0; P22=1;i++; P0=ledbuff[1];}
else if(i==2)
{P20=1; P21=1; P22=0;i++; P0=ledbuff[2];}
else if(i==3)
{P20=0; P21=1; P22=0;i++; P0=ledbuff[3];}
else if(i==4)
{P20=1; P21=0; P22=0;i++; P0=ledbuff[4];}
else if(i==5)
{P20=0; P21=0; P22=0;i=0; P0=ledbuff[5];}
}
}
}
switch语句
#include<reg52.h>
sbit ENLED = P1^1;
sbit P20 = P2^0;
sbit P21 = P2^1;
sbit P22 = P2^2;
unsigned char ledchar[]={
0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,
};
unsigned char ledbuff[]={
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
};
void main ()
{
unsigned int cnt=0;
unsigned long sec=0;
unsigned char i=0;
ENLED=0;
TMOD=0x01;
TH0=0xF5;
TL0=0x55; //x*12/32768000=0.001 初值=65536-x
TR0=1;
while(1)
{
if(TF0==1)
{
TF0=0;
TH0=0xF5;
TL0=0x55;
cnt++;
if(cnt>=1000)
{
cnt=0;
sec++;
ledbuff[0]=ledchar[sec%10];
ledbuff[1]=ledchar[sec/10%10];
ledbuff[2]=ledchar[sec/100%10];
ledbuff[3]=ledchar[sec/1000%10];
ledbuff[4]=ledchar[sec/10000%10];
ledbuff[5]=ledchar[sec/100000%10];
}
switch(i)
{
case 0:
P20=1; P21=0; P22=1; i++; P0=ledbuff[0];break;
case 1:
P20=0; P21=0; P22=1; i++; P0=ledbuff[1];break;
case 2:
P20=1; P21=1; P22=0; i++; P0=ledbuff[2];break;
case 3:
P20=0; P21=1; P22=0; i++; P0=ledbuff[3];break;
case 4:
P20=1; P21=0; P22=0; i++; P0=ledbuff[4];break;
case 5:
P20=0; P21=0; P22=0; i=0; P0=ledbuff[5];break;
default: break;
}
}
}
}
中断
#include<reg52.h>
sbit ENLED = P1^1;
sbit P20 = P2^0;
sbit P21 = P2^1;
sbit P22 = P2^2;
unsigned char ledchar[]={
0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,
};
unsigned char ledbuff[]={
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
};
unsigned int cnt=0;
unsigned char i=0;
unsigned char flag1s=0;
void main ()
{
unsigned long sec=0;
ENLED=0;
TMOD=0x01;
TH0=0xF5;
TL0=0x55; //x*12/32768000=0.001 3õÖμ=65536-x
TR0=1;
EA=1;
ET0=1;
while(1)
{
// if(TF0==1)
// {
// TF0=0;
// TH0=0xF5;
// TL0=0x55; //Öظ33õÖμ
// cnt++;
if(flag1s==1)
{
flag1s=0;
sec++;
ledbuff[0]=ledchar[sec%10];
ledbuff[1]=ledchar[sec/10%10];
ledbuff[2]=ledchar[sec/100%10];
ledbuff[3]=ledchar[sec/1000%10];
ledbuff[4]=ledchar[sec/10000%10];
ledbuff[5]=ledchar[sec/100000%10];
}
}
}
void interruptTime() interrupt 1
{
TH0=0xF5;
TL0=0x55;
cnt++;
if(cnt>=1000)
{
cnt=0;
flag1s=1;
}
P0=0xFF;
switch(i)
{
case 0:
P20=1; P21=0; P22=1;i++; P0=ledbuff[0];break;
case 1:
P20=0; P21=0; P22=1;i++; P0=ledbuff[1];break;
case 2:
P20=1; P21=1; P22=0;i++; P0=ledbuff[2];break;
case 3:
P20=0; P21=1; P22=0;i++; P0=ledbuff[3];break;
case 4:
P20=1; P21=0; P22=0;i++; P0=ledbuff[4];break;
case 5:
P20=0; P21=0; P22=0;i=0; P0=ledbuff[5];break;
default: break;
}
}
|