📄 epromgen.m
字号:
function wave=epromgen(fname,filestr)
if isempty(fname) | fname==0
warndlg('未设置保存路径!','错误');%文件夹出错
return;
end
wavenum=5; %波形数目
Bit=12; %量化位数
add0=16; %开关误差设定
SW=5*240;
h=waitbar(0,'正在计算波形数据,请等待...');
set(h,'position',[200 200 280 50]);
%------------------------------------装入各原始波形数据------------------------------------------
wave=zeros(1,2^18*4);
SWdata=zeros(1,2^18*4);
for i=1:3
filen=filestr{i};
if isempty(filen) | filen==0
else
fp=fopen(filen,'r');
data=load(filen);
fclose(fp);
SWdata((i-1)*2^12*4+1+add0:(i-1)*2^12*4+add0+SW+length(data))=1;
wave((i-1)*2^12*4+1+add0+SW/2:(i-1)*2^12*4+add0+SW/2+length(data))=data;
waitbar(i/(wavenum+10),h);
end
end
filen=filestr{4};
if isempty(filen) | filen==0
else
fp=fopen(filen,'r');
data=load(filen);
fclose(fp);
SWdata(3*2^12*4+1+add0:3*2^12*4+add0+SW+length(data))=1;
wave(3*2^12*4+1+add0+SW/2:3*2^12*4+add0+SW/2+length(data))=data;
waitbar(4/(wavenum+10),h);
end
filen=filestr{5};
if isempty(filen) | filen==0
else
fp=fopen(filen,'r');
data=load(filen);
fclose(fp);
SWdata(311296+1+add0:311296+add0+SW+length(data))=1;
wave(311296+1+add0+SW/2:311296+add0+SW/2+length(data))=data;
waitbar(5/(wavenum+10),h);
end
data=wave+1;
data=round((2^(Bit-1)-1)*data);%按Bit位量化
waitbar(0.7,h);
%-----------------------------------------生成EPROM数据----------------------------------
i=1:2^18;
waveA=data(4*i-3); waveB=data(4*i-2); waveC=data(4*i-1); waveD=data(4*i);
SW=SWdata(4*i-3);
waitbar(0.8,h);
temp1=bitand(waveA,4080); %提取DA11-DA4
temp1=bitshift(temp1,4); %将DA11-DA4移至Q15-Q8
temp2=bitand(waveB,4080); %提取DB11-DB4
temp2=bitshift(temp2,-4); %将DB11-DB4移至Q7-Q0
data1=bitor(temp1,temp2); %合成EPROM1数据
temp1=bitand(waveC,4080); %提取DC11-DC4
temp1=bitshift(temp1,4); %将DC11-DC4移至Q15-Q8
temp2=bitand(waveD,4080); %提取DD11-DD4
temp2=bitshift(temp2,-4); %将DD11-DD4移至Q7-Q0
data2=bitor(temp1,temp2); %合成EPROM2数据
waitbar(0.9,h);
temp1=bitand(waveA,15); %提取DA3-DA0
temp1=bitshift(temp1,12); %将DA3-DA0移至Q15-Q12
temp2=bitand(waveB,15); %提取DB3-DB0
temp2=bitshift(temp2,8); %将DB3-DB0移至Q11-Q8
data3=bitor(temp1,temp2);
temp2=bitand(waveC,15); %提取DC3-DC0
temp2=bitshift(temp2,4); %将DC3-DC0移至Q7-Q4
data3=bitor(data3,temp2);
temp2=bitand(waveD,15); %提取DD3-DD0
data3=bitor(data3,temp2); %合成EPROM3数据
data4=bitshift(SW,9); %合成EPROM4数据
waitbar(0.95,h);
%-----------------------------------------生成EPROM数据-------------------------------------------
filenameA=[fname,'A'];
fp=fopen(filenameA,'w');
fwrite(fp,data1,'uint16');
fclose(fp);
filenameB=[fname,'B'];
fp=fopen(filenameB,'w');
fwrite(fp,data2,'uint16');
fclose(fp);
filenameC=[fname,'C'];
fp=fopen(filenameC,'w');
fwrite(fp,data3,'uint16');
fclose(fp);
filenameD=[fname,'D'];
fp=fopen(filenameD,'w');
fwrite(fp,data4,'uint16');
fclose(fp);
waitbar(0.99,h);
close(h);
msgbox([fname,'A-D文件保存完毕!!!']);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -