else if(keyval==0xf7) //按键5 设置闹钟时间 {
clock_shanshuo=1;
clock_hh=dispbuf[0]*10+dispbuf[1]; //保存所设闹钟时间 clock_mm=dispbuf[2]*10+dispbuf[3]; dispbuf[0]=hh/10; dispbuf[1]=hh; dispbuf[2]=mm/10; dispbuf[3]=mm;
}
break;
case 4: //秒表模式
if(keyval==0x7f) //按键1 调整模式 进入时钟显示模式 {
mode=0;
TR1=0; //关闭秒表 dispbuf[0]=mm/10; dispbuf[1]=mm; dispbuf[2]=ss/10; dispbuf[3]=ss; }
else if(keyval==0xef) //按键4 开始、暂停 {
old_ss=miaobiao_ss; old_ms=miaobiao_ms; TR1=~TR1; }
else if(keyval==0xbf||keyval==0xdf) //按键2或按键3 清零 {
miaobiao_ss=0; miaobiao_ms=0;
dispbuf[0]=miaobiao_ss/10; dispbuf[1]=miaobiao_ss; dispbuf[2]=miaobiao_ms/10; dispbuf[3]=miaobiao_ms; }
break;
default:
break; } }
/******************延时程序******************/ void delay(unsigned int t) {
while(t--); }
/******************中断程序,用于秒表******************/ void t1int(void) interrupt 3 using 3 {
TH1=(0-2000)/256; TL1=(0-2000)%6; cnt2++; if(cnt2>=5) {
cnt2=0;
miaobiao_ms++;
if(miaobiao_ms>=100) {
miaobiao_ms=0; miaobiao_ss++;
if(miaobiao_ss>=60) {
miaobiao_ss=0; } }
dispbuf[0]=miaobiao_ss/10; dispbuf[1]=miaobiao_ss; dispbuf[2]=miaobiao_ms/10; dispbuf[3]=miaobiao_ms; } }
五、 学习体会
通过本次单片机课程设计,不仅加深了我对单片机理论课程知识的认识,而且通过将理论与实践相结合,使我真正地全面理解单片机的功能。
在刚开始编程时,没有一点思路,通过ftp上所提供的例程,慢慢理清了思路、基本了解了程序大致需要那几部分,基本确定编程思想。
在课程设计的整个过程中也遇到了很多问题,但本着遇到问题解决问题的原则,通过查找资料和询问老师、同学的办法,基本解决了所遇到问题。整个课程设计过程学到了不少通过理论学习没法学到的东西,真正增强了自己的能力。 课程设计的三天时间,虽然辛苦但是收获巨大。