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