1、精品文档南开大学滨海学院C51嵌入式软件设计(C语言) 题目:计时秒表 l 功能描述:本设计实现在99秒内的秒表计时,一个按键实现开始、暂停、复位。l 原理概述:P1接四位七段数码管,P3.2接一按键产生外部中断0,P3.4-P3.7控制扫描显示。计时使用定时器0产生10ms中断累计。按键不同次序决定了对应的控制功能,因为第一次按键必定为开始计时,所以第二次按键判断为暂停,依次第三次为置零。主程序调用显示程序,显示程序实时显示计时时间。l 效果显示l 图一(电路总图)l 图二(效果显示) 注:第四位显示为单位:Sl 程序清单#include#includeunsigned char Tab=0
2、x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F ;sbit P37=P37;sbit P36=P36;sbit P35=P35;sbit P34=P34;unsigned int a=0,cout=0,mm=0;x,y,p,q;/*延时*/void delay() int g;for(g=70;g0;g-);/*显示程序*/void display()x=cout/10;/秒十位P34=0;P1=Tabx; delay();P34=1;y=cout-x*10; /秒各位P35=0;P1=Taby; delay();P1=0x80; delay(
3、);P35=1;p=mm/10; /ms的高位P36=0;P1=Tabp;delay();P36=1;P37=0; /显示单位:SP1=Tab5; delay();P37=1;/*主程序*/void main()IT0=1;EX0=1;ET0=1;TMOD=0x01; TH0=0xD8; /装初值,10msTL0=0xF0;EA=1;while(1) display(); ;/*外部按键中断子程序*/void int0 ()interrupt 0if(a=0) /开始计时 TR0=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+;if(mm=80) /考虑其它损耗,调整后约为1S cout+; mm=0;可修改