51单片机秒表计时,四位数码管显示。上电前显示00.00,一共2个按键,一个启动停止,另一个清零功能,60秒后自动归零,程序可自行修改。
原理图
程序
#include<89C51.h>
#define uchar unsigned char
#define uint unsigned int
void delay(uint c);
#define dula P22
#define wela P23
void keycan();
void init();
void display();
uchar table[]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
uint num,dis,n;
uint ms=0;
uint sec=0;
void main()
{
init();
TR0=0;
while(1)
{
display();
keycan();
}
}
void init()
{
TMOD=0X01;
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
EA=1;
ET0=1;
TR0=1;
EX0=1;
IT0=1;
}
void Time0() interrupt 1
{
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
ms++;
if(ms==100)
{
ms=0;
sec++;
if(sec==60)
{
sec=0;
TR0=0;
}
}
}
void keycan()
{
if(P10==0)
{
delay(5);
if(P10==0)
{
while(!P10);
TR0=~TR0;
}
}
if(P11==0)
{
delay(5);
if(P11==0)
{
while(!P11);
sec=0;
ms=0;
}
}
}
void display()
{
wela=1;
P0=0xfe;
wela=0;
P0=0;
dula=1;
P0=table[sec/10];
dula=0;
delay(5);
wela=1;
P0=0xfd;
wela=0;
P0=0;
dula=1;
P0=table[sec%10]|0x80;
dula=0;
delay(5);
wela=1;
P0=0xfb;
wela=0;
P0=0;
dula=1;
P0=table[ms/10];
dula=0;
delay(5);
wela=1;
P0=0xf7;
wela=0;
P0=0;
dula=1;
P0=table[ms%10];
dula=0;
delay(5);
}
void delay(uint c)
{
uint a,b;
for(a=c;a >0;a--)
for(b=115;b >0;b--);
}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
51单片机
+关注
关注
274文章
5702浏览量
123480 -
数码管
+关注
关注
32文章
1882浏览量
91060 -
秒表
+关注
关注
3文章
77浏览量
22012
发布评论请先 登录
相关推荐
C51单片机秒表计时(C语言) 相关资料下载
功能描述:本设计实现在99秒内的秒表计时,一个按键实现开始、暂停、复位。原理概述:P1接四位七段数码管,P3.2接一按键产生外部中断0,P3.4-P3.7控制扫描显示。计时使用定时器0产生...
发表于 07-01 07:34
评论