电路是P0接的J12,P1接的J16.
单片机采用STC90C516RC+,现在想实现0-60动态显示。现在显示出现8个数码管都会显示,但是前面2个数码管可以正常从0-60的增加再重复。现在想只要前面2个数码管显示即可,代码如下,请各位看看那里出错了。代码:
#include<stc90.h>
#include<intrins.h> //**延时函数头文件**//
#define uchar unsigned char
#define uint unsigned int
uint count=0,sec=0;
uchar table[10]=
{0Xfc,0X60,0Xda,0xf2,
0x66,0xb6,0xbe,0xe0,0xfe,
0xf6,};
uchar wei[]=
{0Xfe,0Xfd
};
void Delay10ms() //@12.000MHz //延时10MS//STC软件复制
{
unsigned char i, j;
i = 20;
j = 113;
do
{
while (--j);
} while (--i);
}
void display() //显示函数//
{
uchar i,temp=0x01;
wei[1]=sec/10;
wei[0]=sec%10;
for(i=0;i<2;i++)
{
P0=table[wei
];
P1=temp;
Delay10ms();
P0=0XFF;
P1=0XFF;
temp<<=1;
}
}
void time0()interrupt 1
{
TH0=(65536-50000); //高8位给初值//
TL0=(65536-50000); //低8位给初值//
if(++count==50) //定时器延时1秒//
{
count=0; //到1秒清零//
sec++; //开始计数//
if(sec==60) //如果计数到60秒就清0//
sec=0;
}
}
void main(void)
{
TMOD=0X01; //开启定时器0//
TH0=(65536-50000); //高8位给初值//
TL0=(65536-50000); //低8位给初值//
IE=0X82;
TR0=1; //开启计数//
while(1) //循环计数//
{
display();
}
}
-
一周热门 更多>