/*1.按下启动键,秒表计时;按下停止键,秒表暂停计时; 2.再按启动键,秒表接着计时;再按下停止键,秒表暂停计时; 3.再按下停止键,秒表清零;
4.清零后能够回显两次记录的秒数; 5.完成整体设计,交出完整的课设报告。 */
#include
#include
#define uchar unsigned char #define uint unsigned int
#define shuju P0 //LCD1602 P0输出显示数据 sbit wela=P2^7; //数码管位选锁存端 sbit dula=P2^6; //数码管段选锁存端 sbit key1 =P3^2; //启动命令 sbit key2 =P3^3; //停止命令 sbit key3 =P3^4; //清除键 sbit key4 =P3^5; // 空车
//********定义变量***************************** uchar flag; //标志位 uchar flag1; //标志位 uchar flag2; //标志位
uchar table2[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,}; uchar table1[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//位码 uchar tt; // 计时标量每50ms加1 uchar a; // 秒个位 uchar b; // 秒十位 uchar c; // 分个位 uchar d; // 分十位 uchar num1; uchar num2; uchar num3; uchar num4; uchar num5; uchar num6; uchar num7; uchar num8;
//**********延时函数*************** void delayus(uchar t) {
while(--t); }
//**********延时函数***************
//码表 void delay(uchar t) //大致延时1mS { while(t--) {
delayus(235); delayus(235); } }
//*******秒表计时******* void miaobiao(void) { if(tt==2) // 10ms到 { tt=0; // 清零 a++; if(a==10) { a=0; b++; if(b==10) { b=0; c++; if(c==10) { c=0; d++; } } } } }
void display(void) { if(flag1==1) { //flag1=0; wela=1; shuju=table1[0]; wela=0; dula=1; shuju=table2[num1]; dula=0; delayus(200);
wela=1;
shuju=table1[1]; wela=0; dula=1;
shuju=table2[num2]; dula=0;
delayus(200); wela=1;
shuju=table1[2]; wela=0; dula=1; shuju=0x40; dula=0;
delayus(200); wela=1;
shuju=table1[3]; wela=0; dula=1;
shuju=table2[num3]; dula=0;
delayus(200); wela=1;
shuju=table1[4]; wela=0; dula=1;
shuju=table2[num4]; dula=0;
delayus(200); }
else if(flag1==2) {
//flag2=0; wela=1; shuju=table1[0]; wela=0; dula=1;
shuju=table2[num5]; dula=0;
delayus(200);
wela=1;
shuju=table1[1]; wela=0; dula=1;
shuju=table2[num6]; dula=0;
delayus(200); wela=1;
shuju=table1[2]; wela=0; dula=1; shuju=0x40; dula=0;
delayus(200); wela=1;
shuju=table1[3]; wela=0; dula=1;
shuju=table2[num7]; dula=0;
delayus(200); wela=1;
shuju=table1[4]; wela=0; dula=1;
shuju=table2[num8]; dula=0;
delayus(200); } else { wela=1; shuju=table1[0]; wela=0; dula=1; shuju=table2[a]; dula=0; delayus(200); wela=1; shuju=table1[1];
wela=0; dula=1; shuju=table2[b]; dula=0; delayus(200); wela=1; shuju=table1[2]; wela=0; dula=1; shuju=0x40; dula=0; delayus(200); wela=1; shuju=table1[3]; wela=0; dula=1; shuju=table2[c]; dula=0; delayus(200); wela=1; shuju=table1[4]; wela=0; dula=1; shuju=table2[d]; dula=0; delayus(200); } }
//*******定时器初始化******* void Init_Timer0(void) {
TMOD |= 0x01; //使用模式1,16位定时器, TH0=(65535-5000)/256; TL0=(65535-5000)%6; EA=1; //总中断打开 ET0=1; //定时器中断打开 //TR0=1; //定时器开关打开 }
//*******独立按键检测********************** void key(void) {