超聲波流量計的主程序研究與設計 十四
P2=0xfb;
temp=P2;
temp=temp&0xf0;
if(temp!=0xf0)
delay(10);
if(temp!=0xf0)
switch(temp)
{
case 0xe0: key_num=8;break;
case 0xd0: key_num=9;break;
case 0xb0: key_num=10;break;//設置直徑
case 0x70: key_num=11;break;//設置角度
}
P2=0xf7;
temp=P2;
temp=temp&0xf0;
if(temp!=0xf0)
delay(10);
if(temp!=0xf0)
switch(temp)
{
case 0xe0:key_num=12;break;//將直徑和角度清零
case 0xd0:flag_sure=1;break;//sure確認標志位
case 0xb0:key_num=14;break;//加1建
case 0x70:key_num=15;break;//減1建
}
return key_num;
}
//3.對按鍵值進行處理子函數
void key_do()
{
uint i;
while(1)
{
getkey=key_num();//調用鍵值函數
if(getkey==10&&flag_sure==1)//如果鍵值為10則設置直徑d的大小
{
flag_sure=0;//將確認標志位清零
delay(1);//延時1ms
for(i=0;i<3;i++)
{
getkey=key_num();
delay(1);
if(getkey<9)//必須是0---9之間的數據
{
data_d[i]=getkey;//將設定的直徑送到數組中
delay(10);
}
}
}
getkey=key_num();//再次調用鍵值函數,獲取新的鍵值
if(getkey==11&&flag_sure==1)//如果鍵值為12則,設置安裝角度的大小
{
flag_sure==0;
delay(1);//延時1ms
for(i=0;i<3;i++)
{
getkey=key_num();
delay(1);
if(getkey<9) //如果是0--9之間的數據則賦給對應的數組
{
data_jiao[i]=getkey;//將設定的角度送到數組中
delay(10);
}
}
}
if(getkey==12)//如果鍵值為12,則清所設定的直徑和角度參數
{
delay(1);//延時1ms
for(i=0;i<3;i++)
{
data_d[i]=0x00;//參數清零
data_jiao[i]=0x00;
}
}
}
超聲波流量計