资源描述
燕山大学课程设计指导书DTMF通信系统设计与仿真燕山大学信息科学与工程学院通信电子教研室1、任务、性质与意义用数学模型的方法对信息传输的过程进行仿真, 是分析、设计及改进通信系统性能的重要手段。本次课程设计的任务是综合运用通信原理、数字信号处理等课程所学知识,实现一个双音多频 (DTMF)信号传输过程的软件仿真。本次课程设计的性质是通信原理、数字信号处理等课的综合实践环节。它的意义在于,通过本次课程设计可以从理论上加深对有关通信、 数字信号处理原理的综合理解, 了解 DTMF 信号原理和用数字信号处理的方法实现 DTMF信号的产生、传输与检测的过程。还可以从实践能力上掌握一门新的计算机编程工具 MATLAB语言。2、基本原理双音多频 (DTMF)信号双音多频 (DTMF)信号就是用两个不同频率的音频信号的组合来传输信息的一种通信信号形式,可以用数学式表示为s(t ) A(cos 2 f H t cos 2 f L t )( 1)式中 f H和 f L 分别是高频组和低频组的两个信号频率。对这两个频率的要求是:1、位于人而能够听到的音频频率范围内;2、频率间隔近似为乐音音阶的频率间隔(按十二平均律,相邻各个音的频率呈等比关系,其比值约为,例如C3 , C4=,D4 )。这种信号在电话线路上传输,而且声音悦耳。在电话系统中,高低频组的频率已经标准化,如图1 所示。DTMF最早应用是在电话通信系统中作为控制信令使用的。在电话通信系统中,最早的图 1 DTMF 拨号频率标准控制信令是使用直流脉冲信号。 脉冲拨号方式是由接在旋转拨盘位置上的开关或电子开关控制二线电路的通与断。每拨出一位数字,都有唯一一串电流脉冲相对应,图 2 中给出了数字 3的电流脉冲序列。每个脉冲周期通常为 100ms,其中有 40%的占空时间,在人工控制条件下,两个相继数字的时间间隔可以从到数秒之间变化不等。由此可见,利用拨号脉冲拨号,发送一个 10 位长的号码大约需要 7 秒的时间。图2脉冲拨号示意图当采用 DTMF拨号方式时,号码的每一个数字用一对音频表示,话机中有8 个单音频,分为两组,通过拨号盘选拨号码时,各位数字由触键开关输入,其对应的某个频率对(高频和低频)同时传输,图3 所示为各频率对应位置。对DTMF信号所规定的指标为:传送速率为每秒 10 个数字,即每个数字100ms。每个数字传送过程中,信号必须存在至少45ms,且不得多于 55ms,100ms里其余时间是静音。另外 ITU ( 国际电信联盟 ) 还规定, DTMF信号在每个频率点上允许有 %的偏移,任何超出给定 %的信号认为无效,拒绝承认接收。还规定,在最坏检测条件下,信噪比不得低于 15dB。显然。 DTMF的拨号方式比双脉冲拨号方式可快至 10 倍,明显缩短了拨号时间。而且 DTMF拨号方式发出的信号抗干扰能力大大高于脉冲拨号方式。因此,目前普遍使用 DTMF拨号方式。采用 DTMF信号,用话音频率发送数字,可以避免占用额外的信道,又比脉冲拨号方式节约时间。在通信、测量、控制、自动服务等领域有着广泛的应用。在基于电话的各种信息服务系统中,广泛使用了 DTMF信号来传送按键操作信息。利用这种按键信息,人们可以直接通过电话查询所需要的信息以及进行各种远程控制。 在实际系统中, 首次拨号由程控交换机识别,完成主叫与被叫之间的接续; 二次乃至多次拨号的识别以及操作由用户系统自己完成。 DTMF信号还可以用来在话音信道上传送各种类型的控制指令,例如利用电话控制家用电器的启停, 传送远方的状态监测信息。 目前 DTMF信号已经不仅仅限于在电话系统中应用,在测量、控制、遥测遥控等各个领域都有应用。DTMF 信号的硬件产生与检测通常是用硬件产生和检测 DTMF信号。已经有多种专用的产生和检测 DTMF信号的集成电路器件。具有代表性的 DTMF发送、接收器的型号为 MT8860, MT8862, MT8870, MT8872等。DTMF信号发送器电路原理如图3 所示,它主要包括: (1) 晶体振荡器外接晶体( 通常采用与片内电路构成振荡器、经分频产生参考信号。(2) 键控可变速率时钟产生电路它是一种可变分频比的分频器,通常由n 级移位寄存器与键控反馈逻辑单元组成。(3) 正弦波产生电路它出正弦波编码器与DA 变换器构成。通常可变速时钟信号先经过5 位移位寄存器,产生组5 位移位代码,再由可编程逻辑阵列(PLA) 将其转换成二进制代码,送到 DA 变换器转换成台阶形正弦波。显然台阶的宽度等于时钟频率的倒数,这样形成的正弦波频率必然对应于时钟的速率和按键的号码。 (4) 混合电路将键盘所对应产生的行、图 3 DTMF 信号发送器电路原理列正弦波信号 ( 即低高群 f L、f H 单音 ) 相加,混合成双音信号而输出。 (5) 附加功能单元,如含有单音抑制、输出控制 ( 禁止 ) 、双键向按无输出等控制电路。DTMF接收器主要包括DTMF分组滤波器和DTMF译码器,其基本原理如图4 所示。 DTMF接收信号先经高、低群带通滤波进行f L/f H区分,然后过零检测、比较,得到相应于DTMF的两路 f L /f H 信号输出。该两路信号经译码、锁存、缓冲,恢复成对应于16 种 DTMF信号音对的 4 比特二进制码 (L 1 一 L4) 。图 4硬件接收 DTMF信号的电路原理双音多频信号软件产生与检测近年来 DTMF也应用在交互式控制中,诸如语言菜单、语言邮件、电话银行和 ATM终端等。将 DTMF信令的产生与检测集成到任一含有数字信号处理器 (DSP)的系统中,是一项较有价值的工程应用。为了产生 DTMF信号, DSP用软件产生两个正弦波叠加在一起后发送,软件具体实现方式可以有三种方法:( 1)用软件模拟 DSP的方式产生两个数字正弦波振荡器并把输出合成起来,建立所希望的双音频。( 2)通过产生的某频率的方波后再附加滤波器滤出二次以上的谐波,产生DTMF信号。( 3)查表输出产生 DTMF信号。软件检测 DTMF信号主要有以下方法:( 1)利用离散傅立叶变换 (DFT) 及其快速算法 (FFT) ,求取 DTMF信号频谱的峰值点,进而利用峰值点的频率判断发送的数字。这种方法的缺点是计算量大,不利于实时处理。但是如果使用 MATLAB软件仿真则可以用很简单的几条语句实现。( 2)对于 DTMF信号的波形,波形过零点数量决定了低频信号的频率,而极值点数量决定了高频信号的频率。因此通过软件分别计算出高频频率和低频频率,从而实现 DTMF的解码。这里选择采样频率为8K,已知每一个信号的频率至少持续40ms 的时间,我们对DTMF采样 160 个点,即 20ms,这样总会有一个 20ms的采样点全部落在 40ms的发送范围内,对采样的点进行 6 次求和取平均, 去掉噪声成分, 然后分别计算过零点的数目 a 和极值点的数目 b,对应频率可以计算为:既然可以求出 DTMF信号的一组频率值,那么就可以得出对应电话号码值。这种算法比较适合于单片机硬件实现,但是其抗噪声性能较差。(3)计算接收到的 DTMF信号在 8 个既定频率的能量, 进而确定是否有 DTMF信号到达以及收到的是哪一对信号,此外通过计算接收信号的总能量来防止误判。采用 Geortzel 算法可进一步提高计算效率, Goertzel 算法实质是一个两极点的 IIR 滤波器,对应每一个频点有一个匹配滤波器,在抽样时刻检测。这种方法理论上属于最佳接收方法,而且算法有利于用 DSP实现。在本次课程设计中要求使用这种方法。DTMF解码即是在输入信号中搜索出有效的行频和列频。数字正弦波振荡器原理数字正弦波振荡器的功能是利用数字信号处理的方法产生正弦波信号cos( t ) 的抽样序列 cos( nT ) 。基本原理是:设数字正弦波振荡器要产生的波形为y(n) cos( nT )u(nT )1 (e j nTe j nT )u (nT )( 1)2则其 Z 变换为上式的分子与分母同时乘以z 2y(n) 可以看作是一个单位冲击函数激励了一个线性系统的冲击响应。这个线性系统的传递函数就是 Y(z) 。由 Y(z) 可以写出该线性系统的差分方程:式中0Ts2 f / f s 为数字角频率。令输入 x(n) 为单位冲击函数,即则可以得到下面的递推方程当 n2 时,()2 cos( 0 ) (n1)(2)(2)y nyy n实现时,首先将每个频率常数存在一个表中,用来初始化给定键的振荡器;再按照(2)进行迭代计算,就得到正弦序列的输出;将两个这样的输出叠加即可得到双音频的输出。每个数字输出的样本数取决于数字速率与采样速率。双音频中的每一个音调之后都是同样长度的无音周期,从而可以检测到按键的释放。数字匹配滤波器原理( Geortzel算法)计算接收到的DTMF信号在 8 个既定频率的能量,进而确定是否有 DTMF信号到达以及收到的是哪一对信号,此外通过计算接收信号的总能量来防止误判。为满足检测8 个 DTMF频点(偏差 %),需计算 256 点 FFT,因只对 8 个频点感兴趣,故可以直接计算8 个频点附近的 DFTN 1X (k)x(n)e j 2 kn / N , k k1 , k 2 , k3 ,k 4 , k 5 , k6 ,k 7 , k8n 0计算数字信号的频谱可以采用DFT 及其快速算法FFT,而在实现DTMF解码时,采用Goertzel算法要比 FFT 更快。通过 FFT 可以计算得到信号所有谱线,了解信号整个频域信息,而对于 DTMF信号只用关心其 8 个行频 / 列频及其二次谐波信息即可 (二次谐波的信息用于将 DTMF信号与声音信号区别开) 。此时 Goertzel 算法能更加快速地在输入信号中提取频谱信息。 Goertzel 算法实质是一个两极点的 IIR 滤波器,其算法原理框图如图 5。图 5 Geortzel 算法信号流图对应每一个频点有一个匹配滤波器,第 k 个频率匹配滤波器的传递函数为其中H k1( z)112 , H k 2 ( z)1 WNk z 1 ,2zcos kz1f k2kf2kkj 2keNcos k j sin kk2NfN, WNf s对应的前、后向差分方程为:后一个方程无需全部计算,只需要在n=N时刻,即最后的输出时刻计算。如果考虑同步相位误差,也可以在n=N时刻附近计算一段时间内的输出。前向差分方程也可以改写为便于计算的递归形式:并令初始值为 vk ( n)0,n0 。在 n=N时刻既可以得到所需要的X(k) 。由于在 DTMF检测中,输入的信号是实数序列,并不需要检测出 8 个行频 / 列频的相位,只需要计算出其幅度平方即可。因此计算 |X(k)| 2 如下:这里 v k (N ), vk ( N1) 分别表示状态变量在N和 N-1 时刻的值。在输入信号中检测DTMF信号,并将其转换为实际的数字,这一解码过程本质是连续的过程,需要在输入的数据信号流中连续地搜索DTMF信号频谱的存在。 整个检测过程分两步:首先采用 Goertzel算法在输入信号中提取频谱信息;接着作检测结果的有效性检查。仿真系统框图DTMF 信高斯DTMF 信键控输入号的产噪声号检测生电话信道判断输出图 6仿真系统框图软件流程图(1)输入键号(2)生成 DTMF信号(时域、频域显示)(3)产生高斯噪声(时域、频域显示)(4)信道传输(高斯白噪声信道,可选作带限滤波器信道)(5)接收端随机延迟( 30 个点以内)(6)匹配滤波接收(7)DTMF信号到达检测(8)DTMF信号识别(时域、频域显示)(9)DTMF键号识别3. 工作内容与思考题工作内容1、设计计算正弦波数字振荡器、数字匹配滤波器的参数;2、用 MATLAB语言设计一个利用DTMF信号传输学号代码的仿真系统。观察下列信号的波形:学号代码的非归零基带信号、DTMF信号、信道加入噪声、接收信号、匹配滤波器输出、译码判决结果;3、利用仿真的系统进行抗干扰性能等方面的试验分析,试验分析的具体内容详见思考题。思考题1 分析 DTMF信号的频谱,为什么 DTMF信号能够在电话信道传输,要求的带宽为多少?2 设信噪比分别为 20dB, 10dB, 0dB, -6dB ,-10dB,-20dB,分析在理想(信道无失真)情况下,仿真计算误码率与信噪比的关系,并与理论分析结果比较。3 仿真分析匹配滤波器中心频率误差对 DTMF信号检测有什么影响?4 仿真分析 DTMF信号的时间长度对信号的检测有什么影响?5 如果在匹配滤波器前插入 FIR 带通滤波器, 通频带在 600-1800Hz 之间。用窗函数法设计 FIR 带通滤波器,并分析插入带通滤波器对检测性能有什么影响?4 设计要求1、自学复习通信原理、数字信号处理的有关内容,掌握算法原理;2、掌握 MATLAB语言的使用;3、完整实现仿真系统,发送自己的学号,接收自己的学号;4、记录观察到的各种波形;5、撰写课程设计报告。报告统一使用B5纸,统一报告封面,报告篇幅以3000 字为宜。报告中要有设计目的;设计基本内容及步骤; 每一步中应用的原理方法; 试验仿真结果及相关波形;对试验结果进行的性能分析。报告正文用手写,图、程序可以打印作为附件。5编程工具 MATLAB简介(亦可以采用C 语言、 C+、 VC、VB等编程语言实现)基本运算与函数在 MATLAB下进行基本数学运算, 只需将运算式直接打入提示号 ()之后,并按入 Enter 键即可。例如:(5*2+ans =MATLAB 会将运算结果直接存入一变量 ans,代表 MATLAB运算后的答案( Answer),并显示其数值于屏幕上。(为简便起见,在下述各例中,我们不再印出 MATLAB的提示号。) 我们也可将上述运算式的结果设定给另一个变量 x:x = (5*2+x =42此时 MATLAB会直接显示 x 的值。若不想让 MATLAB每次都显示运算结果, 只需在运算式最後加上分号(;)即可。由上例可知, MATLAB认识所有一般常用到的加( +)、减( - )、乘( * )、除( / )的数学运算符号,以及幂次运算( )。MATLAB将所有变量均存成 double 的形式,所以不需经过变量声明。 MATLAB同时也会自动进行存储器的使用和回收,而不必像 C 语言,必须由使用者一一指定。变量也可用来存放向量或矩阵,并进行各种运算, 如下例的行向量 (Rowvector )运算:x = 1 3 5 2;y = 2*x+1y =37115控制命令for 语句,其基本形式为:for变量 = 矩阵;运算式;end其中变量的值会被依次设定为矩阵的每一行,来执行介于for 和 end 之间的运算式。因此,若无意外情况,运算式执行的次数会等于矩阵的行数。举例来说,下列命令会产生一个长度为6 的调和数列:x = zeros(1,6); % x是一个 16 的零矩阵for i = 1:6,x(i) = 1/i;endwhile 语句基本形式为:while条件式;运算式;end也就是说,只要条件示成立,运算式就会一再被执行。例如先前产生调和数列的例子,我们可用 while圈改写如下:x = zeros(1,6); % x是一个 16 的零矩阵i = 1;while i ,disp(Given random number is greater than .);endMATLAB文件若要一次执行大量的MATLAB命令,可将这些命令存放于一个扩展名为m的文件。包含MATLAB命令的文件都以m为扩展名,因此通称m文件,只要直接键入文件名,就可执行其所包含的命令。严格来说,m文件可再细分为命令集(Scripts )及函数( Functions )。命令集的效果和将命令逐一输入完全一样, 因此若在命令集可以直接使用工作空间的变量,而且在命令集中设定的变量,也都在工作空间中看得到。函数则需要用到输入参数和输出参数来传递变量, 这就像是 C 语言的函数。 在调用函数时,你只能经由输入参数来控制函数的输入,经由输出参数来得到函数的输出,但所有的暂时变量都会随着函数的结束而消失。MATLAB常用的数学函数abs(x) :标量的绝对值或向量的长度angle(z) :复数 z 的相角 (Phase angle)sqrt(x):开平方real(z):复数 z 的实部imag(z) :复数 z 的虚部conj(z) :复数 z 的共轭复数round(x) :四舍五入至最近整数fix(x):无论正负,舍去小数至最近整数sign(x):符号函数。当x0时,。rem(x,y) :求 x 除以 y 的余数gcd(x,y) :整数 x 和 y 的最大公因数lcm(x,y):整数 x 和 y 的最小公倍数exp(x) :自然指数pow2(x) :2 的指数log(x) :以 e 为底的对数,即自然对数或log2(x) :以 2 为底的对数log10(x) :以 10 为底的对数sin(x) :正弦函数cos(x) :余弦函数tan(x) :正切函数asin(x) :反正弦函数acos(x) :反馀弦函数atan(x) :反正切函数min(x):向量 x 的元素的最小值max(x):向量 x 的元素的最大值sort(x):对向量 x 的元素进行排序( Sorting )length(x):向量 x 的元素个数sum(x):向量 x 的元素总和cumsum(x): 向量 x 的累计元素总和dot(x, y):向量 x 和 y 的内积cross(x, y):向量 x 和 y 的外积MATLAB 绘图MATLAB不但擅长于矩阵相关的数值运算,还适合于各种科学绘图。这里简介几种基本平面绘图命令。plot是绘制一维曲线的基本函数,但在使用此函数之前, 需要先定义曲线上每一点的x及 y 座标。下例可画出一条正弦曲线:close all; x=linspace(0, 2*pi, 100); % 100个点的 x 座标y=sin(x); %对应的 y 座标plot(x,y);MATLAB基本绘图函数plot: x轴和 y 轴均为线性刻度( Linear scale)loglog: x轴和 y 轴均为对数刻度( Logarithmic scale)semilogx: x轴为对数刻度, y 轴为线性刻度semilogy: x轴为线性刻度, y 轴为对数刻度若要画出多条曲线,只需将座标对依次放入plot函数即可:plot(x, sin(x), x, cos(x);若要改变颜色,在座标对後面加上相关字串即可:plot(x, sin(x), c, x, cos(x), g);若要同时改变颜色及图线型态(Line style),也是在座标对後面加上相关字串即可:plot(x, sin(x), co, x, cos(x), g*);plot 绘图函数的叁数字符颜色字符图线型态y黄色.点k黑色o圆w白色xxb蓝色+g绿色*r红色-实线c亮青色:点线m锰紫色-.点虚线用 subplot来同时画出数个小图形于同一个视窗之中:例如:subplot(2,2,1); plot(x, sin(x);subplot(2,2,2); plot(x, cos(x);MATLAB帮助MATLAB功能强大,命令众多,很难记全,但是MATLAB提供了友好的帮助界面。因此利用 MATLAB提供的帮助可以方便使用,边用边学。 MATLAB帮助界面有两种形式:命令行帮助和网页浏览帮助。 这里仅简单介绍命令行帮助。 在 MATLAB命令(command)窗口中键入 help XXX,MATLAB就会给出相应命令的功能、语法解释。例如,在 MATLAB命令( command)窗口中键入 help plotMATLAB就会给出如下提示:PLOTLinear plot.PLOT(X,Y) plots vector Y versus vector X. If X or Y is a matrix, then the vector is plotted versus therows or columns of the matrix, whichever line up. If X is a scalar and Y is a vector, length(Y) disconnected points are plotted.PLOT(Y) plots the columns of Y versus their index.If Y is complex, PLOT(Y) is equivalent to PLOT(real(Y),imag(Y).In all other uses of PLOT, the imaginary part is ignored. Various line types, plot symbols and colors may be obtained with PLOT(X,Y,S) where S is a character string made from one element from any or all the following 3 columns:bblue.point-solidggreenocircle:dottedrredxx-mark-.dashdotccyan+plus-dashedmmagenta* staryyellowssquarekblackddiamondv triangle (down) triangle (up) triangle (right) p pentagramh hexagramFor example,PLOT(X,Y,c+:)plotsa cyan dottedlinewitha plusat each data point;PLOT(X,Y,bd)plotsblue diamond at each data point but does not draw any line.PLOT(X1,Y1,S1,X2,Y2,S2,X3,Y3,S3,.) combines the plots defined by the (X,Y,S) triples, where the Xsand Ys are vectors or matrices and the Ss are strings.For example, PLOT(X,Y,y-,X,Y,go) plots the data twice, with a solid yellow line interpolating greencirclesat the data points.The PLOTcommand, ifno coloris specified,makes automaticuse of the colorsspecifiedby the axes ColorOrderproperty. ThedefaultColor Orderis listed inthe table above for colorsystems wherethe default is blue for one line, and for multiple lines, to cycle through the first six colors in the table.For monochrome systems, PLOT cycles over the axes LineStyleOrder property.PLOT returns a column vector of handles to LINE objects, one handle per line. The X,Y pairs, or X,Y,S triples, can be followed by parameter/value pairs to specify additional properties of the lines.6. 程序与波形示例部分程序代码如下:%General parameterclear all;t_symbol=;f_sample=8000;t_sample=1/8000;frequency_LL=697 770 852 941;frequency_HH=1209 1336 1477 1633;symbols=1 2 3 a ;4 5 6 b ;7 8 9 c;# 0 * d;ID_string=input(please input your Identical String,s)SNR_dB =input(please input SNR in dB);SNR=power(10,SNR_dB/10);signal_amplitude=1;power_of_signal=1;sigma=sqrt(1/SNR);LL=length(ID_string);total_ss=;for nn=1:LLrow,col=identify_ID(ID_string(nn);ss1,ss2=generate_DTMF_signal(row,col);ss=ss1+ss2;total_ss=total_ss ss;endfigurenoise=sigma*randn(1,length(total_ss);zz=total_ss + noise;subplot(2,1,1);plot(zz);subplot(2,1,2);plot(abs(fft(zz);zzz=zz;%detect signal starting positionNN1=t_symbol/t_sample;NN2=NN1/2;NN=length(zzz)/NN1;vector=1,NN1,-500,500;% 符号检测for nn=0:NN-1 %对 N 个符号检测figurefor k=1:4%对低频组 4 个匹配滤波器运算ss(1)=1;ss(2)=0;coef=2*pi*frequency_LL(k)/f_sample;b0=sin(coef);a1=2*cos(coef);for n=3:NN1ss(n)=a1*ss(n-1)-ss(n-2)+b0 * zzz(n+nn*NN1);end% 匹配滤波器输出信号的模值XX(k)=0;for tt=1:5,endXX(k)subplot(4,2,k);plot(ss,r);AXIS (vector);endfor k=1:4 %对高频组 4 个匹配滤波器运算ss(1)=1;ss(2)=0;coef=2*pi*frequency_HH(k)/f_sample;b0=sin(coef);a1=2*cos(coef);for n=3:NN1ss(n)=a1*ss(n-1)-ss(n-2)+b0 * zzz(n+nn*NN1);end% 匹配滤波器输出信号的模值YY(k)=0;for tt=1:5,YY(k)=YY(k)+ss(NN2-tt)*ss(NN2-tt);endsubplot(4,2,k+4);plot(ss,r);AXIS (vector);end% 符号判决xxx,row_r =max(XX);yyy,col_r = max(YY);symbol_r(nn+1)=symbols(row_r,col_r);end程序运行,传送字符为2008 、信噪比为 0dB 时绘出波形如下:图 1 发送“ 2008”、信噪比为 5dB 时接收波形与频谱图 2 发送字符为“ 2”时匹配滤波器输出波形7. 时间安排十八周日12月 29日12月 30日12月 31日期星三四五期课程设计介绍自学阅读基本程序讲解软件设计上午主讲:吴长奇文献资料()()()自学阅读自学阅读软件设计下午文献资料文献资料()()十九周日期1月3日1月4日1月5日1月6日1月 7日星期一二三四五上机上机上机上机上机上午Matlab 使用练习Matlab 使用练习仿真程序调适仿真程序调适仿真程序调适上机上机上机上机上机下午Matlab 使用练习Matlab 使用练习仿真程序调适仿真程序调适仿真程序调适二十周日期1月10日1月11日1月12日1月 13日1月14日星期一二三四五上机上午仿真程序验收写报告下午上机交报告仿真程序验收大院DTMF课程设计负责人:吴长奇(16-18周 )电子 1班吴长奇胡正平电子 2班肖丽萍史洪印电子 3班孙洁娣刘洺辛电子 4班李英伟牛晓霞通信 1班李刚李段通信 2班孟玲玲李林通信 3班陈书贞顾广华通信 4班练秋生崔冬单片机课程设计负责人:李英伟(19-21周 )电子 1班李英伟李林电子 2班肖丽萍史洪印电子 3班孙洁娣刘洺辛电子 4班吴长奇牛晓霞通信 1班李刚李段通信 2班孟玲玲李朝辉通信 3班陈书贞顾广华通信 4班练秋生崔冬理仁DTMF课程设计负责人:胡正平(17-18周)电子 1班胡正平吴长奇电子 2班荆楠徐爱霞电子 3班王玉宝王金甲电子 4班王成儒史洪印通信 1班李林李朝辉通信 2班于丽娜张涛通信 3班邢光龙李英伟通信 4班许成谦刘燕燕单片机课程设计负责人:李林 (19-21周)电子 1班李林李英伟电子 2班荆楠徐爱霞电子 3班王玉宝王金甲电子 4班王成儒史洪印通信 1班胡正平李朝辉通信 2班于丽娜张涛通信 3班邢光龙李刚通信 4班许成谦刘燕燕
展开阅读全文