基于单片机及CPLD的B超检测工装设计
[09-12 16:03:58] 来源:http://www.88dzw.com 单片机学习 阅读:8842次
文章摘要:图3 发射、接收工装设计电路中接收部分原理图软件设计本工装使用CPLD产生发射波形,使用微处理器AT89S52控制整个工装板,还给要测试的B超板(AFE9*)提供继电器和高压开关的切换指令。发射波形的产生周期20ms、脉宽330ns、带660ns死区时间的2个方向相反的脉冲信号,是用Verilog HDL语言编写,由EPM7064的21脚和25脚输出。源码如下:module pwm(clock,pwm_out,pwm_out1);input clock;output pwm_out;output pwm_out1;reg [20:0] count;reg pwm_reg;reg pwm_reg
基于单片机及CPLD的B超检测工装设计,标签:单片机开发,单片机原理,单片机教程,http://www.88dzw.com图3 发射、接收工装设计电路中接收部分原理图
软件设计
本工装使用CPLD产生发射波形,使用微处理器AT89S52控制整个工装板,还给要测试的B超板(AFE9*)提供继电器和高压开关的切换指令。
发射波形的产生
周期20ms、脉宽330ns、带660ns死区时间的2个方向相反的脉冲信号,是用Verilog HDL语言编写,由EPM7064的21脚和25脚输出。源码如下:
module pwm(clock,pwm_out,pwm_out1);
input clock;
output pwm_out;
output pwm_out1;
reg [20:0] count;
reg pwm_reg;
reg pwm_reg1;
always @ (posedge clock)
begin
count=count+1;
if (count<4) //330ns脉宽
begin
pwm_reg=1;
pwm_reg1=1;
end
else if (count<12)//660ns死区时间
begin
pwm_reg=0;
pwm_reg1=1;
end
else if(count<21'd16) //330ns负脉冲
begin
pwm_reg=0;
pwm_reg1=0;
end
else if(count==21'd240000)//12M晶振,12000000/240000=50Hz,即20毫秒
begin
unt=21'd000000;
pwm_reg=1;
pwm_reg1=1;
end
else
begin
pwm_reg=0;
pwm_reg1=1;
end
end
assign pwm_out=pwm_reg;
assign pwm_out1=pwm_reg1;
endmodule
微处理器AT89S52控制代码
微处理器AT89S52外接3个轻触开关S3、S4、S5,S3接外中断0,用于继电器控制,上电默认选择探头1(PROBE A),按下S3,则选择探头2(PROBE B),再次按下无效(防止带电换探头)。再重新上电,才能选择探头1。S4接外中断1,上电默认24个通道、96阵元是每隔2s自动检测的,若需要人工检测,则按下S4,此时,每按一次S4,则检测下一通道和阵元。S5是复位开关。根据硬件连接,设置如下:
uchar m=0;//用于96阵元的选择
uchar n=0;//默认选择探头1
uchar l=0;//用于24通道的选择
uchar k;
sbit SDATA1= P1^0; //移位数据1
sbit SCLK1= P1^1; //移位时钟1
sbit SLD1= P1^2; //移位锁定
sbit RESET1=P1^3;//复位1
sbit SDATA3= P1^4; //移位数据3
sbit SCLK3= P1^5; //移位时钟3
sbit SLD3= P1^6; //移位锁定
sbit RESET3=P1^7;//复位3
sbit SDATA2= P0^0; //移位数据2
sbit SCLK2= P0^1; //移位时钟2
sbit SLD2= P0^2; //移位锁定
sbit RESET2=P0^3;//复位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;j<8;j++)
{
HV20220_1(l) ;
HV20220_2( m) ;
HV20220_3(m);
}
}
else{}
EA=1;
}
在本程序中,if( m>96) m=1;if (l>24) l=1; 即:96个阵元是对应24个通道的,在实际的B超工作过程中,一个通道工作的时候,同时会有4个按一定规律排列的阵元在工作。本工装不仅独立检测24个通道的每个通道,同时还检测96个阵元中的每一个,因此,检测96个阵元,24个通道运行了4次。
轻触开关S4外中断1子程序
void serves_int1() interrupt 2 using 2//外中断1
{
EA=0;
TR2=0;//停止计数
m=m+1;
l=l+1;
if( m>96) m=1;
if (l>24) l=1;
DELAY1s( );
for (j=0;j<8;j++)
- 上一篇:单片机EMC设计的几点建议
《基于单片机及CPLD的B超检测工装设计》相关文章
- › 基于单片机的直接数字频率合成器的设计
- › 基于单片机P89C61X2的FPGA配置
- › 基于单片机的直流调速系统设计
- › 基于单片机仿真器的设计
- › 基于单片机和DSP的被动声目标探测平台设计
- › 基于单片机的电子导游系统设计
- 在百度中搜索相关文章:基于单片机及CPLD的B超检测工装设计
- 在谷歌中搜索相关文章:基于单片机及CPLD的B超检测工装设计
- 在soso中搜索相关文章:基于单片机及CPLD的B超检测工装设计
- 在搜狗中搜索相关文章:基于单片机及CPLD的B超检测工装设计