sec=Sec[j];ms=Ms[j]; j++;
}
}//下翻 if(!key4) {
delay(50); if(!key4) { while(!key4) {;} TR0=0; key4_flag=1;
//按键4标志
if(j<0) goto start; else if(key3_flag)
j-=2; key3_flag=0;
sec=Sec[j];ms=Ms[j]; //显示数组里的内容
j--;
}
} //清零 if(!key5) {
delay(50); if(!key5) while(!key5) {;} TR0=0; ms=0; sec=0;
for(i=0;i<8;i++) { Sec[i]=0;Ms[i]=0;
}
i=0;
} }
}
/********************************/ /* 定时中断1 */
13
/********************************/
void time1_isr(void) interrupt 3 using 0//定时器1用来动态扫描 {
static unsigned char num; TH1=0xF8;//重入初值
TL1=0xf0; switch(num) {
case 0: P2=0xfe;P0=tab[sec/10];break;//显示秒十位 case 1: P2=0xfd;P0=tab1[sec];break; //显示秒个位 case 2: P2=0xfb;P0=tab[ms/10];break;//显示十位 case 3: P2=0xf7;P0=tab[ms];break; //显示个位 default:break; }
/********************************/ /* 定时中断0 */ /********************************/ void tim(void) interrupt 1 using 1 {
TH0=0xd8;//重新赋值 TL0=0xf0;
ms++;//毫秒单元加1 }
if(ms>=100) { }
ms=0;//等于100时归零 sec++;//秒加1 if(sec>=60) { }
sec=0;//秒等于60时归零
} num++; if(num==4) num=0;
4.PROTEUS软件仿真
4.1仿真
将以上程序清单导入先前做好的Proteus仿真电路,汇编之后,开始进行仿
14
真。仿真结果如下: 显示清零功能: 按下开始键后显示
按下清零键后显示
4.2仿真结果描述:
按“开始”键,秒表开始计时;按“暂停”键,秒表暂停计时;按记录键,秒
15
表记录时间,共可记录八个数值;按上翻下翻键,可查看这八个不同的计时值。
4.3结论及进一步设想:
根据实验要求,本次课设基本完成了设计要求,由于秒表系统并不一定仅仅局限于计时,定时等功能,还可以进行多项的扩展,可以利用AT89C51强大的扩展功能,进一步丰富秒表的功能,例如可设定计时时间,倒计时等等众多功能。单片机以其强大的功能和良好的兼容性可以更好地为我们服务,通过查阅各种资料,多了解一些单片机有关知识,可以为以后的工作和学习生活创造更多的便利条件。
5.元器件清单
元件名称 单片机 晶振 电容 电解电容 电源 数码管 电阻 按键开关
型号 AT89C52 12MHZ 22pF 10uF 5V HS-3461AS 1K/10K 数量/个 1 1 2 1 1 1 5/8 6 6.课程设计体会
通过本次课程设计,我们深刻地认识到自己有很多不足之处,比如在自主学习能力方面的不足,实际动手操作能力的不足等。 这次的单片机课程设计是理论与实践相结合的范例。该设计从头到尾都要自己参与进来,熟悉了整个设计流程才能更快地设计出方案并完成设计。
16
相关推荐: