源代码 发表于 2020-7-5 15:31
楼主你好,基于你这个问题,有可能是以下原因:1、定时器定时时间过长导致数码管整体扫描时间过长;2、开启 ...
这是有关程序,您看一下
#include<reg51.h>
#define uchar unsigned char
uchar smg[]={0xc0,0xf9,0xa4,0xb0};
sbit a1=P2^0;
sbit a2=P2^1;
sbit a3=P2^2;
sbit a4=P2^3;
sbit feng=P2^5;
sbit jian0=P3^2;
sbit jian1=P3^3;
void delay1()
{
uchar k;
for(k=20;k>0;k--)
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
while(TF1==0);
TF1=0;
}
}
void delay()
{
int i;
for(i=600;i>0;i--);
}
void main()
{
TMOD=0X11;
TH0=(65536-5)/256;
TL0=(65536-5)%256;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
TR1=1;
EA=1;
ET0=1;
while(1)
{
if(jian1==0)
{
delay();
if(jian1==0)
{
while(!jian1);
TR0=1;
}
}
if(jian0==0)
{
delay();
if(jian0==0)
{
while(!jian0);
feng=0;
delay1();
feng=1;
}
}
}
}
void t0(void) interrupt 1
{
a1=0;
P0=smg[2];
delay();
a1=1;
a2=0 ;
P0=smg[0];
delay();
a2=1;
a3=0;
P0=smg[0];
delay();
a3=1;
a4=0;
P0=smg[3];
delay();
a4=1; |