keil写程序 单片机二位数码管显示倒计时

如题所述

#include<reg52.h>
#define uchar unsigned char
#define duan P0 //共阴数码管的阳极端口

sbit wei1=P2^4; //共阴数码管的阳极端口,我的是四位的,下面语句中把1,2关了,只用到了3,4。
sbit wei2=P2^5;
sbit wei3=P2^6;
sbit wei4=P2^7;

uchar code num[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共阴数码管0~9的十六进制码

void delay(uchar xms) //软件延时
{
int i,j;
for(i=xms;i>0;i--)
for(j=125;j>0;j--);
}
void display(int tens,ones) //用来显示数字的函数,显示此时的十位,个位。
{
int i,j;
for(i=2;i>0;i--)//通过改变i和j的值,可以改变计时时间。
for(j=50;j>0;j--)
{
wei3=1;//扫描原理。
wei4=0;
duan=num[tens];
delay(5);
wei3=0;
wei4=1;
duan=num[ones];
delay(5);
}
}
void main()
{
int onesp=0,tensp=0;//定义ones place和tens place。
wei1=0;
wei2=0;
while(1)
{
for(tensp=9;tensp>=0;tensp--)
{
for(onesp=9;onesp>=0;onesp--)
{
display(tensp,onesp);//调用函数显示此时的数字。
}
}
}
}
这个程序测试可用,从99计数到00。只用了比较简单知识,不涉及定时器和系统中断。不懂可以追问。
温馨提示:答案为网友推荐,仅供参考