C51单片机秒表计时(C语言)
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
if(mm==80) //考虑其它损耗,调整后约为1S
{ cout++;
mm=0;}
}
效果显示
图一(电路总图)
图二(效果显示)注:第四位显示为单位:S
程序清单
#include<reg51.h>
#include<stdio.h>
unsigned char Tab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F };
sbit P37=P3^7;
}
/*********显示程序*****************/
void display()
{
x=cout/10;//秒十位
P34=0;
P1=Tab[x]; delay();
P34=1;
y=cout-x*10; //秒各位
P35=0;
P1=Tab[y]; delay();
P1=做任何修改或编辑并不能对任何下载内容负责
南开大学滨海学院
C51嵌入式软件设计(C语言)
题目:计时秒表
功能描述:本设计实现在99秒内的秒表计时,一个按键实现开始、暂停、复位。
原理概述:P1接四位七段数码管,P3.2接一按键产生外部中断0,P3.4-P3.7控制扫描显示。计时使用定时器0产生10ms中断累计。按键不同次序决定了对应的控制功能,因为第一次按键必定为开始计时,所以第二次按键判断为暂停,依次第三次为置零。主程序调用显示程序,显示程序实时显示计时时间。
sbit P36=P3^6;
sbit P35=P3^5;
sbit P34=P3^4;
unsigned int a=0,cout=0,mm=0;x,y,p,q;
/*********延时*********************/
void delay()
{
int g;
for(g=70;g>0;g--);
ET0=1;
TMOD=0x01;
TH0=0xD8; //装初值,10ms
TL0=0xF0;
EA=1;
while(1)
{ display(); };
}/*********外部按键中断子程序*********/
void int0 ()interrupt 0
{
if(a==0) //开始计时
{ TR0=1;
P35=1;
p=mm/10; //ms的高位
P36=0;
P1=Tab[p];delay();
P36=1;
P37=0;//显示单位:S
P1=Tab[5]; delay();
P37=1;
}
/*********主程序********************/
void main()
{
IT0=1;
EX0=1;
mm=0;
a++; }
else if(a==1) //暂停计时
{ TR0=0;
a++;}
else//置零
{ a=0;
mm=0;
cout=0;}
}
/*********定时器子程序****************/
void time0() interrupt 1
{
TH0=0xD8;
TL0=0xF0;
mm++;
{ cout++;
mm=0;}
}
效果显示
图一(电路总图)
图二(效果显示)注:第四位显示为单位:S
程序清单
#include<reg51.h>
#include<stdio.h>
unsigned char Tab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F };
sbit P37=P3^7;
}
/*********显示程序*****************/
void display()
{
x=cout/10;//秒十位
P34=0;
P1=Tab[x]; delay();
P34=1;
y=cout-x*10; //秒各位
P35=0;
P1=Tab[y]; delay();
P1=做任何修改或编辑并不能对任何下载内容负责
南开大学滨海学院
C51嵌入式软件设计(C语言)
题目:计时秒表
功能描述:本设计实现在99秒内的秒表计时,一个按键实现开始、暂停、复位。
原理概述:P1接四位七段数码管,P3.2接一按键产生外部中断0,P3.4-P3.7控制扫描显示。计时使用定时器0产生10ms中断累计。按键不同次序决定了对应的控制功能,因为第一次按键必定为开始计时,所以第二次按键判断为暂停,依次第三次为置零。主程序调用显示程序,显示程序实时显示计时时间。
sbit P36=P3^6;
sbit P35=P3^5;
sbit P34=P3^4;
unsigned int a=0,cout=0,mm=0;x,y,p,q;
/*********延时*********************/
void delay()
{
int g;
for(g=70;g>0;g--);
ET0=1;
TMOD=0x01;
TH0=0xD8; //装初值,10ms
TL0=0xF0;
EA=1;
while(1)
{ display(); };
}/*********外部按键中断子程序*********/
void int0 ()interrupt 0
{
if(a==0) //开始计时
{ TR0=1;
P35=1;
p=mm/10; //ms的高位
P36=0;
P1=Tab[p];delay();
P36=1;
P37=0;//显示单位:S
P1=Tab[5]; delay();
P37=1;
}
/*********主程序********************/
void main()
{
IT0=1;
EX0=1;
mm=0;
a++; }
else if(a==1) //暂停计时
{ TR0=0;
a++;}
else//置零
{ a=0;
mm=0;
cout=0;}
}
/*********定时器子程序****************/
void time0() interrupt 1
{
TH0=0xD8;
TL0=0xF0;
mm++;