乐山师范学院毕业设计(论文)
void delay(void) //误差 0us {
unsigned char a,b,c; for(c=10;c>0;c--) for(b=38;b>0;b--) for(a=130;a>0;a--); }
//按键扫描 void Key_() {
//+ if(S1==0) { } //-
else if(S2==0) {
delay(); while(S2==0) {
P1=P1|0x0f; delay(); while(S1==0) { }
BJS++; P1=P1|0x0f;
if(BJS==151) { }
BJS=0;
乐山师范学院毕业设计(论文)
}
}
}
BJS--;
if(BJS==0) { }
BJS=150;
//功能 else if(S3==0) { }
delay(); while(S3==0) { }
Mode++; P1=P1|0x0f;
if(Mode==2) { }
Mode=0;
/**********************************************************************************************************/
//扫描数码管 void Display(void) {
//正常显示 if(Mode==0) {
if(posit==0)//数码管的米标志
乐山师范学院毕业设计(论文)
{ } else { }
P1=positon[posit]; if(++posit>=3)
posit=0;
P0=discode[disbuff[posit]]; P0=(discode[disbuff[posit]])|0x80;
P1=positon[4]; }
//报警显示 else {
if(posit==0)//数码管的米标志 { }
else if(posit==3) { } else { }
P0=discode[disbuff_BJ[posit]]; P0=0x76;
P0=(discode[disbuff_BJ[posit]])|0x80; P0=0x77;
P1=positon[posit]; if(++posit>=4)
posit=0;
乐山师范学院毕业设计(论文)
}
}
/**********************************************************************************************************/
//计算
void Conut(void) {
if(Mode==0) {
if((S>=700)||flag==1) //超出测量范围显示“-” { } else {
//距离大于报警距 if(S<=BJS) { } else {
Feng=1;
Feng=0; Feng=0; flag=0;
disbuff[0]=10; //“-” disbuff[1]=10; //“-” disbuff[2]=10; //“-”
time=TH0*256+TL0; TH0=0; TL0=0;
S=(time*1.7)/100; //算出来是CM
乐山师范学院毕业设计(论文)
}
} else { }
}
}
disbuff[0]=S00/100; disbuff[1]=S000/10; disbuff[2]=S00 ;
Feng=1;
disbuff_BJ[0]=BJS00/100; disbuff_BJ[1]=BJS000/10; disbuff_BJ[2]=BJS00 ;
/**********************************************************************************************************/
//定时器0
void zd0() interrupt 1 { }
/**********************************************************************************************************/
//定时器1
void zd3() interrupt 3 {
TH1=0xf8; TL1=0x30; Key_(); Display(); timer++; if(timer>=400) {
//T1中断用来扫描数码管和计800MS启动模块
flag=1;
//中断溢出标志
//T0中断用来计数器溢出,超过测距范围