资源描述:
《单片机及接口技术软件实验6》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、课程名称:单片机及接口技术软件实验项目名称:电子钟姓名:_专业:电子信息工程班级:电信2班学号:22同组成员」、实验预习部分:#incIude#incIude//定时器每50ms进入一次中断//闹钟报警显示灯//按键标志位#defineuintunsignedint#defineucharunsignedchar#definedata50000sbitBEEPCLK二P3八4;sbitBEEPDIN二P2飞;sbitPoint二P(T0;sbitkey_input=
2、P1"0;sbitBEEP二P广2;bitkeyup;ucharkeytemp二0,keyvaI,keybak;//按键值,键值,按键备份值ucharmescond;ucharsecond,minute,hour二14,date=2,month=1;//设计时间uintyear二2013;ucharminutel,hour1,aIm1,minute2,hour2,aIm2;//定义闹钟1:分钟,小时,开关标志,闹钟2:分钟,小时,开关标志uchara,wss;//显示状态标志,控制位标志voidjia()
3、;//加调节函数voidjian0;//减调节函数ucharcodeBEEPtabIe□二{0x03,0x9F,0x25,OxOD,0x99,0x49,0x41,0x1F,0x01,0x09,0x11,0xC1,0x63,0x85,0x61,0x71,Oxff,Oxfd};//数码管各个数值段码数组uchardispbuf[8],dispbuf1[8],dispbuf2[8],dispbuf3[8];voiddeIay_ms(unsignedinttms)//延时函数unsignedchari;while
4、(tms-一)for(i二123;i>0;i—);voidcIose_BEEP()//关闭显示函数uchari;for(i二0;i〈8;i++)BEEPCLK二0;BEEPDIN二1;nop();BEEPCLK二1;}}/*定时器1中断函数*/voidtime1_int()interrupt3{—TH1二(65536-data)/256;TL1二(65536-data)%256;//设置定时器初值mescond++;if(mescond==20){second++;mescond二0;}if(second
5、=60){second二0;minute++;}if(minute==60){hour++;minute=0;}if(hour==24){date++;hour二0;}if(month=1
6、
7、month=3
8、
9、month=5
10、
11、month=7
12、
13、//小月30天month==81
14、month=10
15、
16、morrth=12){if(date==32){month++;date二1;}}eIseif(month==2){if(year%400=0
17、
18、(year%4=0&&year%100!二0))//是否为闰年{
19、if(date=29)//如果是闰年,2月份有29天{month++;date二1;}}eIse{if(date=28)//不是闰年,2月有28天{month++;date二1;}}}eIseif(month=4
20、
21、month=6
22、
23、month=9
24、
25、month=11)//大月31天{if(date==31){month++;date二1;}}if(month==13)year++;month二1;}}voidRead_Key()//读键值函数{keytemp26、temp++;//*T***键盘扫描函数voidkeyscan()//键值扫描函数{if(keytemp=0xff){keyup二1;//按键已经放开keybak-0;//清除按键备份值}elseif(keytemp二二keybak&&keyup=1)//两次的检测的值一样且按键已经放开{keyval二keytemp;//存放按键值keyup二0;}〃按键已经执行且还没放开keybak二keytemp;//把新的键值放入备份单元}voidkey_job()//键值确认函数{switch(keyval){c
27、ase0x7f:a++;wss二0;if(a=4)a=0;keyvaI=0xff;break;//键1按下,切换数码管显示caseOxbf:if(wss==0)wss=4;wss--;keyvaI=0xff;break;//键2按下,切换控制caseOxdf:jia();keyvaI=0xff;break;//对控制位加1caseOxef:jian0;keyvaI=0xff;break;//对控制位减1case0xf7:aIm