想用AT89C51单片机弄个“任意值—99s”的2位数码管秒表程序
定义一个全局变量存储这个值,初始化的时候为你定义的值如27。
下面就是配置好定时器,到定时器中断函数里面去做加
这个简单啊..
求程序参考。
其实我相关概念还掌握有点不好,你能给个程序参考一下吗?
这个相当简单!#include<AT89X51.h>
#define uint unsigned int
#define uchar unsigned char
uchar code tab[]=
{0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f};
uint n;//在这里设初值,如:n=27
void delay(x)
{
uint a,b;
for(a=x;a>0;a--)
for(b=110;b>0;b--);
}
void display()
{
uint a=0;
while(a<20)
{
P2=0xfe;
P0=tab[n%10];
delay(10);
P2=0xfd;
P0=tab[n/10];
delay(1);
a++;
}
}
void judge()
{
if(n==99)
{
n=0;
}
}
void main()
{
while(1)
{
n++;
display();
judge();
}
}
~~ 大侠谢谢啊。真心受用,不过我还想追问一下,就是假如其他条件都不变,我现在只是需要再增加一个位显,也就是改成能到999的这样一个3位数码管显示的,又该嵌入哪些新语句来实现呢?我就是想把2位和3位的对照着看,如果弄明白了,我就能自己往后再写更高位的了 。所以同样还得麻烦你再给这么一个3位的程序,感谢感谢。
呵呵,你是在写时钟吧!#include<AT89X51.h>
#define uint unsigned int
#define uchar unsigned char
uchar code tab[]=
{0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f};
uint x,y=8;//在这里设初值,如:n=27
void delay(x)
{
uint a,b;
for(a=x;a>0;a--)
for(b=110;b>0;b--);
}
void display()
{
uint a=0;
while(a<20)
{
P2=0xfe;
P0=tab[x%10];
delay(10);
P2=0xfd;
P0=tab[x/10];
delay(1);
/**************新加的*********/
P2=0xfb;
P0=tab[y%10];
delay(1);
/****************************/
a++;
}
}
void judge()
{
if(x==99)
{
x=0;
y++;
}
/**************新加的*********/
if(y==9)
{
y=0;
}
/***************************/
}
void main()
{
while(1)
{
x++;
display();
judge();
}
}
不胜感激! 哈哈哈
能不能帮写个倒计时的 25秒 倒计时到0就停止 复位之后又可以重新倒计时
我写了五位可预置加减计数器,并加入倒计时分钟功能,很好用,可预置数值后就不用去理他了,让机器工作到0会释放继电器自停
啊啊!能加你qq吗?你看下我这个程序有啥问题
加下你QQ呗!看下我这程序有啥问题
我QQ:1767802879.。
AT89C51单片机 顶小编一个