版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
付志洲:利用DFT分析双音频的拨号频谱(在Matlab中进行仿真)(1)双音频拨号系统相关知识;(2)面向对象的Matlab仿真(GUI)(3)如何完善各种功能(声音等)1.双音频拨号背景当前,话机从提高集成度到与其他技术结合发展,以提高机的功能,并行成各种功能的机,如录音机,无绳机,电视机,语音拨号机,数字机。特别是随着通信与计算机技术的结合,使通讯技术日新月异,名目繁多的新通信业务应运生,随着机电式交换机被数字程控交换机的取代,拨好慢,易错号的老式拨号系统早已不再使用,市场上也早已有双音频拨号的机。机按种类分别有按键式机和拨盘式机。其中又有脉冲式机(PULSE)和双音频机(TONE)。拨盘式机属于脉冲式机,这类逐步淘汰的产品不宜选用。双音频机具有接通速度快、声音清晰等很多优点,而且对于新功能的使用来说,双音频机是不可缺的。在打这种时,按键后听到的不再是1至10个脉冲的“嗒嗒——”声音,而是一种短促悦耳的电子音乐,这种声音从号码0到9都是都是由两个音频信号组成的,因而称为双音频。双音频拨号系统的应用优点:(1)发号快。使用双音频机,打一的拨号时间约为1S,而脉冲拨号系统(拨号式机),一般数字较小的7位号码要占用7s左右,如号码中数字较大,则拨号时间约为10s.所以,双音频机缩短了每个在网中占用拨号时间,提高了网的利用率(2)双音频拨号抗干扰强,不易错号。脉冲话机的发号准确性要求脉冲断续比和速率符合标准,否则要错号。有一种老式话机是依靠机械触点式开关的通段产生一系列脉冲电流,就往往易产生错号。(3)可开展各项电信新业务。新业务如:缩位拨号,呼叫等待、转移呼叫、叫醒服务、会议等。中国卡的“200”业务以及“127”自动寻呼的部分自动功能、“388”“460”语音信箱、“800”对方付费业务等,也只限于双音频话机使用网是世界最大的通讯网,特别是当人类进入科技信息时代的今天,一定要充分发挥网资源。通讯网的运行效率每提高1%,每年可以竟增30亿员收益,双音频话机的应用,缩短了拨号所占用的时间,随着数字机的出现,两根线上除了能通外,还可以同时传送,进行网络通信这也是本文分析双音频拨号的意义所在。为了分析双音频拨号时的时域与频域对应关系,我们利用Matlab中的图形用户界面GUI对其进行仿真,具体要完成的内容有:理解双音频拨号系统的原理;熟悉GUI的基本知识;基于Matlab的双音频拨号系统的频谱分析(在编程模拟双音频拨号时的时域信号基础上利用Matlab中的库函数计算其对应频谱。实现每拨一个号码时能够在界面显示对应的时域信息、频域信息;并显示相应的拨号码、高低频率成份;且可实现语音报号的功能。)总结本课题主要解决了双音频拨号拨号时哪些问题,以及可以延伸改进之处。2.双音频拨号原理在双音频(DTMF)机中,包括DTMF发送器和DTMF接受器,是广泛用于快速按键话机和无线通信设备中的专用集成电路。DTMF发送器能根据不同的按键号码发出相应的一组双音频信号,如图1所示(其中f1、f2、f3、f4为低频群,f5、f6、f7为高频群):f4f2f4f2f1f7f5f3314510*667#982f6图1拨号盘对应高低频群其基本原理是由3.58Mhz的晶体振荡器分频后,得到四个高频和四个低频,在高、低频中各取一个频率合成后,就得到双音频信号。在本课题中考虑到双音频信号由两个正弦信号组合而成,可假设双音频信号时域表达形式如下:其中假设每个正弦信号电压为0.25V,为低频信号的频率,为高频信号的频率。信号s,DTMF接收器对输入信号进行分离、译码、缓冲恢复为对应于16种DTMF信号。在机面板上4*4组合的按键组与相应的信号的表达式一一对应,当按下一个数据键时,例如“5”时,则产生频率为770HZ和1336HZ的两个正弦波,并叠加成对应的双音频信号。国际电报咨询委员会和我国标准都规定拨号数字与高、低频的组合关系如下表所示:fH(Hz)1209133614771633fL(Hz)697123A770456B852789C941*0#D表1双音多频信号频率组合利用MATLAB中的图形用户界面GUI进行仿真双音频拨号在实际拨号时对应的时域波形,并利用MATLAB库函数中提供的相应频域变换函数fft、abs做出每一按键时域信号的功率谱。拨号盘上的A、B、C、D键为保留拨号键,在本课题仿真中不对其进行仿真设计。3.GUI的基本知识3.1GUI的M文件和FIG文件在MATLAB中,图形用户界面GUI包含多种对象的图形窗口。用户必须对每一个对象进行界面布局和编程,从而使用户激活GUI每个对象时都能够执行相应的行为。另外,用户必须保存和发布所创建的GUI,使得GUI能够真正得到应用。MATLAB为用户开发图形界面提供了一个方便高效的集成环境:MATLAB图形用户界面开发环境GUIDE(MATLAB’sGraphicalUserInterfaceDevelopmentEnvironment).GUIDE主要是一个界面设计工具集,MATLAB将所有GUI支持的用户控件都集成在这个环境中提供界面外观、属性和行为响应方式的设置方法。GUIDE将用户保存设计好的GUI界面保存在一个FIG资源文件中。同时还能够生成包含GUI初始化和组件界面布局控制代码的M文件。这个M文件为实现回调函数(当用户激活GUI某一组件时执行的函数)提供了一个参考框架。虽然使用用户自己编写的、包含GUI所有发布命令的M文件也能够实现一个GUI,但是使用GUIDE执行效率更高:使用GUIDE不但能够交互式地进行组件界面布局,而且能够生成两个用来保存和发布GUI的文件:M文件:该文件包括GUI设计、控制函数以及定义为子函数的用户控件回调函数,主要用于控制GUI展开时的各种特征。这个M文件可分为GUI初始化和回调函数两个部分,用户控件的回调函数根据用户与GUI的具体交互行为分别调用。这里将GUI的M文件称为应用程序M文件。应用程序M文件使用openfig命令来显示GUI。注意使用程序M文件并不包括用户界面设计的任何代码,这些代码将完全由FIG文件保存。3.2GUI设计的优点及实现步骤GUIDE可以根据用户GUI的版面设计过程直接自动生成M文件框架,这样就简化了GUI应用程序的创建工作,用户可以直接使用这个框架来编写自己的函数代码。这样的编写方法有以下优点:应用程序M文件已经包含实现一些有用的函数编写代码,无需用户自行编写;可以使用该M文件生成的的有效方法来管理图形对象句柄并执行回调函数子程序;提供管理全局数据的途径;文件支持自动插入回调函数原型,确保当前GUI与未来发布版本的兼容性。用户也可以选择由GUIDE生成FIG文件、自己编写应用程序M文件的GUI创建方式。编写M文件是要注意,应用程序M文件中不能包含用户控件创建命令,所有的界面设计信息都保存在由界面设计编辑器生成的FIG文件中。实现一个GUI主要包括以下两项工作:GUI界面设计和GUI组件编程。整个GUI的实现过程可以分为以下几步:(1)通过设置GUIDE应用程序的选项来进行GUIDE组态;(2)使用界面设计编辑器进行GUI界面设计;(3)理解应用程序M文件中所使用的编程技术;(4)编写用户GUI组件行为响应控制(即回调函数)代码。3.3控件的概念和特点界面设计编辑器组件平台中包含所有能够在GUI中使用的用户界面控件。这些控件都属于MATLAB的用户控件对象(uicontrol),可以通过Callback属性来进行回调函数编程。下面将主要介绍在本课题中所使用到的各种控件的概念和特点:按扭(Pushbutton):通过鼠标点击按扭可以实现某种行为(按扭陷下和弹起等)并调用相应的回调子函数;复选框(Checkbox):复选框能够产生一个二进制状态的行动(on或off)。当复选框被选中时,其属性中的Value值变为‘1’,同时调用相应的回调函数;未被选中时,其值为‘0’。Checkbox的回调函数首先要对按钮的Value的值进行判断,然后才能决定相应的行为。静态文本(StaticText):静态文本通常作为其他控件的标签使用,用户不能采用交互方式修改静态文本或调用相应的回调函数;坐标轴(Axes):在GUI界面上的任意位置绘制坐标轴,可设置相应的横、纵坐标范围,并且可将坐标设置成封闭的形式。组合框:组合框是图形窗口中的一个封闭区域,它把相关联的控件(例如一组单选按钮)组合在一起,使得用户界面更容易理解;4.GUI界面设计图形用户界面(GraphicalUserInterface,简称GUI)就是通过窗口、选单、按钮、文字说明等构成一个美观的界面,提供用户利用鼠标或键盘方便地实现操作。Matlab设计图形用户界面的方法有两种:使用可视化的界面环境和通过编写程序,本课题采用可视化的界面环境仿真双音频波号。通过打开Matlab的菜单File/New/GUI即可打开如下的窗口,选择CreateNewGUI选单中的“BlankGUI(Default)”后设置相应的存储位置,单击OK即可得到如下未命名的图形用户界面“”编辑器外观:在弹出的“”的图形对象面板中选择可用来仿真双音频面板的各个控件,并设置各个控件的属性值以便在编写回调函数(Callback)时有效利用各个控件的属性值,使编写的函数易于读懂。单击运行后的得到如下的图形用户界面:实现GUI的基本机制是对控件的Callback属性编程以期实现界面上各个控件的功能。在本课题中对各个控件的Callback进行编程后再次运行时,用鼠标单击按键“5”后出现的界面如下。若Sound的复选框选中后再进行拨号,则可实现语音报号的功能。Sound的复选框选中后若用鼠标单击Info(ON)的按钮,此时再单击拨号盘上的按键则不仅能在界面上显示信号的时域,频域信息以及实现报号的功能外,还能在界面上显示相应的拨号码和对应的高、低频率。如下图是在单击“6”在界面中用鼠标单击“Close”选项,则整个界面将被关闭5.总结在本课题的研究过程中,主要学习掌握了如何使用MATLAB中的图形用户界面GUIDE的编程工具集来实现自身的GUI界面设计和编程。本课题完成了双音频拨号时的时域以及频域的仿真,实现了语音报号的功能;并可在界面上显示对应的拨号信息以及相应的高低频率信息。本课题未研究国际电报咨询委员会规定的4*4键盘中的保留拨号键的信号仿真。在此课题基础之上还可以对其继续进行仿真,实现连续拨号时可在界面上连续显示信号的时域和频域成分,或者是考虑在存在加性高斯白噪声时双音频拨号拨号时的时域及频域的影响;也可以利用Simulink对双音频的拨号时发送信号的过程及其接收的过程进行仿真并通,并通过示波器显示信号的频域成分。致谢值此毕业答辩之时,首先要感谢我的父母,四年之中一直都是他们在背后支持、鼓励我,感谢父母的养育之恩。还要感谢我的老师,是他们在四年中给了我走向社会的所需的知识与能力,“饮其流者怀其源,学其成时年其师”,我不会忘记栽培我的老师。尤其是带我毕业设计的伍老师,在完成本课题时,伍老师给了很多的指导。最后还要感谢我的同学与朋友,他们不仅陪我走过了这短暂的四年,在本课题完成过程中,他们也给了我很大的帮助。参考文献[1].陈怀琛.Matlab及其原理在工科课程中的应用指南[M].西安:西安电子科技大学出版社,2000——Matlab释义与实现[M].北京:电子工业出版社,2004[5].陈桂明等.应用Matlab建模与仿真[M].北京:科学出版社,2001[6].郑阿奇.MATLAB实用教程[M].北京:电子工业出版社,2004[7].苏晓生.掌握MATLAB6.0及其工程应用[M].北京:科学出版社,2002[8].飞思科技产品研发中心.MATLAB7辅助信号处理技术与应用[M],北京:电子工业出版社,2005[9].施晓红,周佳.精通GUI图形界面编程[M],北京:北京大学出版社2003[10].吴志雄.利用MATLAB仿真DTMF音频的产生及其解码[J],福建商业高等专科学校学报,2002(6)[11].王艳芬,刘剑科等.基于MATLABLinkforCCS的DTMF信号检测系统的实现[J],电气电子学报,2007,27(4):55-58[12].赵霞.双音多频信号产生及解码的研究[J],微电子学2001,31(6):418-421[13].申平,曾运,华王晖.无绳集团双音多频DTMF信号的实现[J],暨南大学学报(自然科学版),1996,17(1):47-52[14].姜立中,的双音频拨号[J],物理教师,2000,21(1):40[15].王志高.基于软件的DTMF产生器及其性能研究.长春理工大学学报,2007,3(1):146-149[16].张力.MATLAB在语音信号处理辅助教学中的应用[J].电气电子教学学报,2005,27(2):96-99[17].孙兆林.MATLAB6.X图像处理[M].北京:清华大学出版社,2002[18].张森,陈正亮MATLAB仿真技术与实例应用教程[M].北京:机械工业出版社,2004附件:原程序代码:functionvarargout=phone_pad(varargin)%LastModifiedbyGUIDEv2.516-Apr-200811:27:17%Begininitializationcode-DONOTEDITgui_Singleton=1;gui_State=struct('gui_Name',mfilename,...'gui_Singleton',gui_Singleton,...'gui_OpeningFcn',@phone_pad_OpeningFcn,...'gui_OutputFcn',@phone_pad_OutputFcn,...'gui_LayoutFcn',[],...'gui_Callback',[]);ifnargin&&ischar(varargin{1})gui_State.gui_Callback=str2func(varargin{1});endifnargout[varargout{1:nargout}]=gui_mainfcn(gui_State,varargin{:});elsegui_mainfcn(gui_State,varargin{:});end%Endinitializationcode-DONOTEDIT%---Executesjustbeforephone_padismadevisible.functionphone_pad_OpeningFcn(hObject,eventdata,handles,varargin)handles.output=hObject;guidata(hObject,handles);functionvarargout=phone_pad_OutputFcn(hObject,eventdata,handles)varargout{1}=handles.output;%---Executesonbuttonpressinbohao1.functionbohao1_Callback(hObject,eventdata,handles,varargin)fL=697;fH=1209;t=0:0.0001:0.05;x=0.25*sin(2*pi*fL*t)+0.25*sin(2*pi*fH*t);y=fft(x,1280);pyy=y.*conj(y)/256;f=2000*(0:255)/256;%creattime_axesplotaxes(handles.time_axes)plot(t,x)gridonset(handles.time_axes,'XMinorTick','on')axis([00.05-11])ylabel('Signal');%CreatFrequencyplotaxes(handles.Frequency)plot(f,pyy(1:256));ylabel('SignalPower');set(handles.Frequency,'XMinorTick','on')gridonset(handles.bohao,'string',1)set(handles.dipin,'string',697)set(handles.gaopin,'string',1209)ifget(handles.sound,'Value')==1;[y,fs]=wavread('d:\毕设fzz\1');sound(y,fs)end%N=2000;%y=0.25*sin(2*pi*f1*(0:N-1))+0.25*sin(2*pi*f2*(0:N-1));%Y=fft(y,N);%f=(0:length(Y)-1)'*2000/length(Y);%subplot(2,1,2);%plot(f,abs(Y));%functionbohao2_Callback(hObject,eventdata,handles)%datafL=697;fH=1336;t=0:0.0001:0.05;x=0.25*sin(2*pi*fL*t)+0.25*sin(2*pi*fH*t);%creattime_axesplotaxes(handles.time_axes)plot(t,x)axis([00.05-11])set(handles.time_axes,'XMinorTick','on')ylabel('Signal');gridon%CreatFrequencyplotaxes(handles.Frequency)y=fft(x,1280);pyy=y.*conj(y)/256;f=2000*(0:255)/256;plot(f,pyy(1:256));ylabel('SignalPower');set(handles.Frequency,'XMinorTick','on')gridonset(handles.bohao,'string',2)set(handles.dipin,'string',697)set(handles.gaopin,'string',1336)ifget(handles.sound,'Value')==1;[y,fs]=wavread('d:\毕设fzz\2');sound(y,fs)endfunctionbohao3_Callback(hObject,eventdata,handles)%datafL=697;fH=1477;1:0.05;x=0.25*sin(2*pi*fL*t)+0.25*sin(2*pi*fH*t);%creattime_axesplotaxes(handles.time_axes)plot(t,x)axis([00.05-11])set(handles.time_axes,'XMinorTick','on')ylabel('Signal');gridon%CreatFrequencyplotaxes(handles.Frequency)y=fft(x,1280);pyy=y.*conj(y)/256;f=2000*(0:255)/256;plot(f,pyy(1:256));ylabel('SignalPower');set(handles.Frequency,'XMinorTick','on')gridonset(handles.bohao,'string',3)set(handles.dipin,'string',697)set(handles.gaopin,'string',1477)ifget(handles.sound,'Value')==1;[y,fs]=wavread('d:\毕设fzz\3');sound(y,fs)endfunctionbohao4_Callback(hObject,eventdata,handles)%datafL=770;fH=1209;t=0:0.0001:0.05;x=0.25*sin(2*pi*fL*t)+0.25*sin(2*pi*fH*t);%creattime_axesplotaxes(handles.time_axes)plot(t,x)axis([00.05-11])set(handles.time_axes,'XMinorTick','on')ylabel('Signal');gridon%CreatFrequencyplotaxes(handles.Frequency)y=fft(x,1280);pyy=y.*conj(y)/256;f=2000*(0:255)/256;plot(f,pyy(1:256));ylabel('SignalPower');set(handles.Frequency,'XMinorTick','on')gridonset(handles.bohao,'string',4)set(handles.dipin,'string',770)set(handles.gaopin,'string',1209)ifget(handles.sound,'Value')==1;[y,fs]=wavread('d:\毕设fzz\4');sound(y,fs)endfunctionbohao5_Callback(hObject,eventdata,handles)%datafL=770;fH=1336;t=0:0.0001:0.05;x=0.25*sin(2*pi*fL*t)+0.25*sin(2*pi*fH*t);%creattime_axesplotaxes(handles.time_axes)plot(t,x)axis([00.05-11])set(handles.time_axes,'XMinorTick','on')ylabel('Signal');gridon%CreatFrequencyplotaxes(handles.Frequency)y=fft(x,1280);pyy=y.*conj(y)/256;f=2000*(0:255)/256;plot(f,pyy(1:256));ylabel('SignalPower');set(handles.Frequency,'XMinorTick','on')gridonset(handles.bohao,'string',5)set(handles.dipin,'string',770)set(handles.gaopin,'string',1336)ifget(handles.sound,'Value')==1;[y,fs]=wavread('d:\毕设fzz\5');sound(y,fs)endfunctionbohao6_Callback(hObject,eventdata,handles)%datafL=770;fH=1477;t=0:0.0001:0.05;x=0.25*sin(2*pi*fL*t)+0.25*sin(2*pi*fH*t);%creattime_axesplotaxes(handles.time_axes)plot(t,x)axis([00.05-11])set(handles.time_axes,'XMinorTick','on')ylabel('Signal');gridon%CreatFrequencyplotaxes(handles.Frequency)y=fft(x,1280);pyy=y.*conj(y)/256;f=2000*(0:255)/256;plot(f,pyy(1:256));ylabel('SignalPower');set(handles.Frequency,'XMinorTick','on')gridonset(handles.bohao,'string',6)set(handles.dipin,'string',770)set(handles.gaopin,'string',1477)ifget(handles.sound,'Value')==1;[y,fs]=wavread('d:\毕设fzz\6');sound(y,fs)endfunctionbohao7_Callback(hObject,eventdata,handles)%datafL=852;fH=1209;t=0:0.0001:0.05;x=0.25*sin(2*pi*fL*t)+0.25*sin(2*pi*fH*t);%creattime_axesplotaxes(handles.time_axes)plot(t,x)axis([00.05-11])set(handles.time_axes,'XMinorTick','on')ylabel('Signal');gridon%CreatFrequencyplotaxes(handles.Frequency)y=fft(x,1280);pyy=y.*conj(y)/256;f=2000*(0:255)/256;plot(f,pyy(1:256));ylabel('SignalPower');set(handles.Frequency,'XMinorTick','on')gridonset(handles.bohao,'string',7)set(handles.dipin,'string',852)set(handles.gaopin,'string',1209)ifget(handles.sound,'Value')==1;[y,fs]=wavread('d:\毕设fzz\7');sound(y,fs)endfunctionbohao8_Callback(hObject,eventdata,handles)%datafL=852;fH=1336;t=0:0.0001:0.05;x=0.25*sin(2*pi*fL*t)+0.25*sin(2*pi*fH*t);%creattime_axesplotaxes(handles.time_axes)plot(t,x)axis([00.05-11])set(handles.time_axes,'XMinorTick','on')ylabel('Signal');gridon%CreatFrequencyplotaxes(handles.Frequency)y=fft(x,1280);pyy=y.*conj(y)/256;f=2000*(0:255)/256;plot(f,pyy(1:256));ylabel('SignalPower');set(handles.Frequency,'XMinorTick','on')gridonset(handles.bohao,'string',8)set(handles.dipin,'string',852)set(handles.gaopin,'string',1336)ifget(handles.sound,'Value')==1;[y,fs]=wavread('d:\毕设fzz\8');sound(y,fs)endfunctionbohao9_Callback(hObject,eventdata,handles)%datafL=852;fH=1477;t=0:0.0001:0.05;x=0.25*sin(2*pi*fL*t)+0.25*sin(2*pi*fH*t);%creattime_axesplotaxes(handles.time_axes)plot(t,x)axis([00.05-11])set(handles.time_axes,'XMinorTick','on')ylabel('Signal');gridon%CreatFrequencyplotaxes(handles.Frequency)y=fft(x,1280);pyy=y.*conj(y)/256;f=2000*(0:255)/256;plot(f,pyy(1:256));ylabel('SignalPower');set(handles.Frequency,'XMinorTick','on')gridonset(handles.bohao,'string',9)set(handles.dipin,'string',852)set(handles.gaopin,'string',1477)ifget(handles.sound,'Value')==1;[y,fs]=wavread('d:\毕设fzz\9');sound(y,fs)endfunctionbohao10_Callback(hObject,eventdata,handles)%datafL=941;fH=1209;t=0:0.0001:0.05;x=0.25*sin(2*pi*fL*t)+0.25*sin(2*pi*fH*t);%creattime_axesplotaxes(handles.time_axes)plot(t,x)axis([00.05-11])set(handles.time_axes,'XMinorTick','on')ylabel('Signal');gridon%CreatFrequencyplotaxes(handles.Frequency)y=fft(x,1280);pyy=y.*conj(y)/256;f=2000*(0:255)/256;plot(f,pyy(1:256));ylabel('SignalPower');set(handles.Frequency,'XMinorTick','on')gridonset(handles.bohao,'string','*')set(handles.dipin,'string',941)set(handles.gaopin,'string',1209)ifget(handles.sound,'Value')==1;[y,fs]=wavread('d:\毕设fzz\10');sound(y,fs)endfunctionbohao11_Callback(hObject,eventdata,handles)%datafL=941;fH=1477;t=0:0.0001:0.05;x=0.25*sin(2*pi*fL*t)+0.25*sin(2*pi*fH*t);%creattime_axesplotaxes(handles.time_axes)plot(t,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度年福建省高校教师资格证之高等教育法规测试卷(含答案)
- 咨询工程师(投资)《宏观经济政策与发展规划》考前冲刺必会试题及答案
- 我在国旗下讲话演讲稿
- 致施工单位的感谢信范文
- 研究生考试考研教育学专业基础(311)试卷及答案指导(2024年)
- 幼儿园评估自查报告15篇
- 2024年度设备保修服务协议细则
- 2024年商业买卖合作协议精简
- 2024年合作伙伴保密协议
- 2024年监理协议延期实施细则协议
- (必会)企业人力资源管理师(三级)近年考试真题题库(含答案解析)
- 电力工程投标方案(技术标)
- 正畸提前结束协议书
- 2024年山西电力职业技术学院单招职业适应性测试题库汇编
- 故事绘本愚公移山
- 中国文化概论-第三章中国传统服饰文化
- 工程标书范文(十六篇)
- MOOC 地理信息系统(GIS)实验-南京师范大学 中国大学慕课答案
- (2024年)游泳教学课程教案
- 业务经营策略分析报告
- 2024年网络安全理论知识考试题库及答案(含各题型)
评论
0/150
提交评论