智能仪器课程设计报告Word格式.docx
- 文档编号:16380085
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:15
- 大小:123.25KB
智能仪器课程设计报告Word格式.docx
《智能仪器课程设计报告Word格式.docx》由会员分享,可在线阅读,更多相关《智能仪器课程设计报告Word格式.docx(15页珍藏版)》请在冰豆网上搜索。
voidkeyscan();
//按键扫描函数声明
voidk1manage();
//k1键处理函数分校准声明
voidk2manage();
//k2键处理函数时校准声明
voidshansuo();
//时分闪烁函数声明
voidDS();
//定时函数声明
voidnz();
//闹钟函数声明
voidk3manage();
voidk4manage();
sbitkey1=P2^0;
sbitkey2=P2^1;
sbitkey3=P2^2;
sbitkey4=P2^3;
sbitfm=P2^6;
uintsec,min,hour,psec,pmin,phour,Dsec,Dmin,Dhour;
ucharaa,num,a,b,keycode,k1,k2;
//中断次数变量
ucharflag=0,flage=0;
ucharflagee=0;
unsignedssec,gsec,smin,gmin,shour,ghour,gpsec,spsec,gpmin,spmin,gphour,sphour,GDsec,GDmin,GDhour;
SDsec,SDmin,SDhour;
ucharcodetabe[]={0x00,0x03,0x0c,0x30};
ucharcodetable[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09,0xff};
main()
{
TMOD=0x01;
TH0=(65536-CYCLE)/256;
TL0=(65536-CYCLE)%256;
ET0=1;
TR0=1;
EA=1;
sec=0;
min=0;
hour=0;
while
(1)
{
keyscan();
nz();
dataprocess();
Display();
}
}
voidt0ser()interrupt1using1//定时计数器T0中断服务函数定义
{if(flagee==1)
{psec++;
if(psec>
50)
{psec=0;
pmin++;
if(pmin>
59)
{pmin=0;
phour++;
if(phour>
{phour=0;
}
if(flagee==0)
{psec=0;
pmin=0;
phour=0;
if(num==50)
{
num=0;
sec++;
if(sec>
{
sec=0;
min++;
if(min>
{
min=0;
hour++;
if(hour>
24)
{
hour=0;
}
else
;
}
else
;
else
;
else
num++;
TH0=(65536-CYCLE)/256;
TL0=(65536-CYCLE)%256;
voidDisplay()//显示函数
{if(flage==2)//切换到定时显示
P1=0xfe;
if((num<
=6)||(num>
=14))
{
P1=P1|tabe[flag];
else
{P1=0xfe;
}//选中秒个位数码管亮
sbuf(GDsec);
//发断码
P1=0xff;
P1=0xfd;
{P1=0xfd;
}//关闭显示器,消影
sbuf(SDsec);
P1=0xfb;
{P1=0xfb;
sbuf(GDmin);
P1=0xf7;
{P1=0xf7;
sbuf(SDmin);
P1=0xef;
{P1=0xef;
sbuf(GDhour);
P1=0xdf;
//选中时十位显示数码管
{P1=0xdf;
sbuf(SDhour);
P1=0x0ff;
{if(flage==1)//切换到跑表
{P1=0xfe;
sbuf(gpsec);
P1=0xff;
P1=0xfd;
sbuf(spsec);
P1=0xfb;
sbuf(gpmin);
P1=0xf7;
sbuf(spmin);
P1=0xef;
sbuf(gphour);
P1=0xdf;
sbuf(sphour);
{if(flage==0)
P1=0xfe;
sbuf(gsec);
sbuf(ssec);
sbuf(gmin);
sbuf(smin);
sbuf(ghour);
sbuf(shour);
voidsbuf(unsignedc)//送断码函数
SBUF=table[c];
while(!
TI)
{TI=0;
Delayxms(5);
voiddataprocess()//数据处理函数
ssec=sec/10;
//秒十位数求取
gsec=sec-ssec*10;
//秒个位数求取
smin=min/10;
//分十位数求取
gmin=min-smin*10;
//分个位数求取
shour=hour/10;
//时十位数求取
ghour=hour-shour*10;
//时个位数求取
spsec=psec/10;
gpsec=psec-spsec*10;
spmin=pmin/10;
gpmin=pmin-spmin*10;
sphour=phour/10;
gphour=phour-sphour*10;
SDsec=Dsec/10;
GDsec=Dsec-SDsec*10;
SDmin=Dmin/10;
GDmin=Dmin-SDmin*10;
SDhour=Dhour/10;
GDhour=Dhour-SDhour*10;
voidkeyscan()//按键扫描函数
if(key1==0)
flag++;
if(flag==4)
flag=0;
key1)
Display();
if(key2==0)
while(!
key2)
Display();
k2manage();
if(key3==0)
key3)
k3manage();
if(key4==0)
key4)
k4manage();
voidk2manage()//k2键处理函数时校准
{if(flage==2)
{DS();
else
{if(flag==1)
if(sec==59)
sec++;
if(flag==2)
if(min==59)
min=0;
min++;
if(flag==3)
if(hour==59)
hour++;
voidk3manage()//flage为1切换到跑表显示,为2切换到定时界面,为0走时界面
flage++;
if(flage>
2)
flage=0;
voidk4manage()//flagee为1启动跑表,为2关闭跑表,为0清零
flagee++;
if(flagee>
flagee=0;
voidDS()//定时修改函数
{if(flag==1)
if(Dsec==59)
Dsec=0;
Dsec++;
if(Dmin==59)
Dmin=0;
Dmin++;
if(Dhour==59)
Dhour=0;
Dhour++;
voidnz()//闹钟函数
if(Dsec==sec)
if(Dmin==min)
if(Dhour==hour)
fm=0;
Delayxms(1000);
fm=1;
voiddelayxms(unsignedintms)//延时函数
unsignedinti;
for(i=0;
i<
ms;
i++)
{delay1ms();
voiddelay1ms()
unsignedcharj;
for(j=0;
j<
140;
j++)
{_nop_();
附录调试图:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 智能 仪器 课程设计 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)