基于單片機(jī)及CPLD的B超檢測工裝設(shè)計
微處理器AT89S52外接3個輕觸開關(guān)S3、S4、S5,S3接外中斷0,用于繼電器控制,上電默認(rèn)選擇探頭1(PROBE A),按下S3,則選擇探頭2(PROBE B),再次按下無效(防止帶電換探頭)。再重新上電,才能選擇探頭1。S4接外中斷1,上電默認(rèn)24個通道、96陣元是每隔2s自動檢測的,若需要人工檢測,則按下S4,此時,每按一次S4,則檢測下一通道和陣元。S5是復(fù)位開關(guān)。根據(jù)硬件連接,設(shè)置如下:
uchar m=0;//用于96陣元的選擇
uchar n=0;//默認(rèn)選擇探頭1
uchar l=0;//用于24通道的選擇
uchar k;
sbit SDATA1= P1^0; //移位數(shù)據(jù)1
sbit SCLK1= P1^1; //移位時鐘1
sbit SLD1= P1^2; //移位鎖定
sbit RESET1=P1^3;//復(fù)位1
sbit SDATA3= P1^4; //移位數(shù)據(jù)3
sbit SCLK3= P1^5; //移位時鐘3
sbit SLD3= P1^6; //移位鎖定
sbit RESET3=P1^7;//復(fù)位3
sbit SDATA2= P0^0; //移位數(shù)據(jù)2
sbit SCLK2= P0^1; //移位時鐘2
sbit SLD2= P0^2; //移位鎖定
sbit RESET2=P0^3;//復(fù)位2
sbit SRELAY=P0^4;//探頭繼電器選擇
定時器自動檢測子程序
void serves_timer2() interrupt 5 using 0
{
EA=0;
TF2=0;
k=k+1;
if(k==40)//2秒
{ k=0;
m=m+1;
l=l+1;
if( m>96) m=1;
if (l>24) l=1;
DELAY1s( );
for (j=0;j8;j++)
{
HV20220_1(l) ;
HV20220_2( m) ;
HV20220_3(m);
}
}
else{}
EA=1;
}
在本程序中,if( m>96) m=1;if (l>24) l=1; 即:96個陣元是對應(yīng)24個通道的,在實際的B超工作過程中,一個通道工作的時候,同時會有4個按一定規(guī)律排列的陣元在工作。本工裝不僅獨(dú)立檢測24個通道的每個通道,同時還檢測96個陣元中的每一個,因此,檢測96個陣元,24個通道運(yùn)行了4次。
輕觸開關(guān)S4外中斷1子程序
void serves_int1() interrupt 2 using 2//外中斷1
{
EA=0;
TR2=0;//停止計數(shù)
m=m+1;
l=l+1;
if( m>96) m=1;
if (l>24) l=1;
DELAY1s( );
for (j=0;j8;j++)
{
HV20220_1(l) ;
HV20220_2( m) ;
HV20220_3(m);
}
EA=1;
}
輕觸開關(guān)S3外外中斷0子程序
void serves_int0() interrupt 0 using 0//外中斷0
{
EA=0;
n=1;//顯示01
SRELAY=1;//選擇探頭2
DELAY1s( );
EA=1;
}
工裝先檢測探頭1,探頭1的96個陣元都檢測通過后,斷電,將探頭轉(zhuǎn)接線放到探頭2的位置;上電,按下輕觸按鈕S3,此時數(shù)碼管前2位顯示01,是選擇探頭2的標(biāo)志。微處理器控制繼電器把所有通道都轉(zhuǎn)接到探頭2的測量上。
評論