




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、中北大学课程设计说明书学生姓名: 崔宝月 学 号: 1305054215 学生姓名: 南 帅 学 号: 1305054230 学 院: 信息与通信工程学院 专 业: 信息对抗技术专业 题 目: 软件信息处理课程设计 利用C语言,生成一个时钟信号 指导教师: 姚金杰 刘宾 杨光 2016年 6月 26 日中北大学课程设计任务书 2015/2016 学年第 二 学期 学 院: 信息与通信工程学院 专 业: 信息对抗技术 学生姓名: 崔宝月 学 号: 1305054215 学生姓名: 刘学文 学 号: 1305054219 学生姓名: 南 帅 学 号: 1305054230 学生姓名: 田 刚 学
2、号: 1305054244 课程设计题目: 软件信息处理课程设计 射频信号相位分析与测量软件模块设计 起 迄 日 期: 2016年6月12 日2015年6月27日 课程设计地点: 信息对抗技术专业综合实验室 指 导 教 师: 姚金杰 刘宾 杨光 学 科部主 任: 张丕状 课 程 设 计 任 务 书1设计目的:(1)通过本课程设计的学习,学生将复习所学的专业知识,使课堂学习的理论知识应用于实践,通过本课程设计的实践使学生具有一定的实践操作能力;(2)掌握C语言的编程方法,能熟练运用;(3)通过软件信息处理实践的课程设计,掌握设计信息处理系统的思维方法和基本开发过程。2设计内容和要求(包括原始数据
3、、技术参数、条件、设计要求等):(1)熟悉C语言开发平台a、熟悉C的运行环境;b、学会并掌握C语言编程;c、根据所选题目的需要,会合理安排程序流程,最终优化程序设计。(2)实践设计要求:a、根据所选题目,设计相应的流程框图。b、编写C语言程序,给出相应的波形。(3)参考题目题目1 射频信号相位分析与测量软件模块设计基本要求与目的:l 了解相位分析在方向和距离测量中作用l 学习相位测量的基本原理l 学习嵌入式系统的轮询软件结构设计l 学习MATLAB在仿真分析中的作用l 学习C语言编程技巧和流程绘制培养能力;掌握断点设置、单步、变量观测等软件调试的一般方法和技巧。初步学习PLL的原理和时钟调节的
4、方法,了解可编程的概念,了解软件无线电的内涵l 培养资料查阅能力和团队合作精神和组织能力课 程 设 计 任 务 书3设计工作任务及工作量的要求包括课程设计计算说明书(论文)、图纸、实物样品等:(1) 要求设计组的每个成员都要了解设计的要求和整体思路;(2) 子题目小组的同学各完成一份设计说明书,突出各自的工作内容;(3) 要求有正确的运行结果及结果分析。4主要参考文献:l 谭浩强.C程序设计(第二版).清华大学出版社.1999年12月l 袁志祥.数据结构(c语言版)例题详解与课程设计指导第二版. 中国科学技术大学出版社出版l 谭浩强.C语言程序设计题解与上机指导.清华大学出版社.2000年11
5、月l 陈朔鹰, 陈英主.C语言程序设计习题集(第二版).人民邮电出版社.2003年2月l 田淑清.C语言程序设计辅导与习题集.中国铁道出版社.2000年1月l 王明泉.信号与系统.科学出版社.2010年6月5设计成果形式及要求:每个子题目小组提供详细的设计说明书一份设计说明书中包含:1、关键词解释,设计方案基本原理;2、软件框图;3、断点设置位置、单步运行的变量值;4、附录软件源代码6工作计划及进度:2016年6月12日 2016年6月18日:学习C预研有关编程方法;2016年6月19日 2016年6月23日:在指导教师指导下实现程序设计;2016年6月24日 2016年6月26日:撰写课程设
6、计说明书; 2016年6月27日:答辩。学科部主任审查意见: 签字: 年 月 日目 录一 设计目的简介与题目解读11.1目的简介11.2题目解读:1二 设计主要理论介绍及方案12.1理论介绍12.1.1基本原理12.1.2关键字的理解:22.2方案:32.2.1方案选择:32.2.2设计原理:3三、设计主要步骤63.1.创建客户端应用程序,采用对话框架构63.2.为对话框界面添加控件对象83.3为对话框中的控件对象定义相应的成员变量103. 4添加响应消息的事件处理成员函数113.5手工添加其他代码123.6添加事件处理函数:163.7.根据实际结果调整控件的位置以防遮挡或被遮挡16四、 设计
7、结果与分析174.1输出界面:174.2选择谐波次数为0 , 相位抖动参数为 0174.3选择谐波次数为7 , 相位抖动参数为 1184.4相位抖动参数为3 谐波次数为33 时:194.5相位抖动参数为5 谐波次数为55 时:19五设计评述及收获体会201、设计评述202、设计过程203、收获体会:20六 参考文献211 设计目的简介与题目解读1.1目的简介(1)通过本课程设计的学习,学生将复习所学的专业知识,使课堂学习的理论知识应用于实践,通过本课程设计的实践使学生具有一定的实践操作能力;(2)掌握C语言的编程方法,能熟练运用;(3)通过软件信息处理实践的课程设计,掌握设计信息处理系统的思维
8、方法和基本开发过程。(4)学习Windows程序设计的语言、过程、思想与方法。全面地学习Windows程序设计所涉及的细枝末节,要求我们从高屋建瓴的角度,建立完整的知识体系,为以后的职业生涯奠定良好的基础。即要学习基础知识,着重学习Windows程序设计中关于图形的编写与实现。1.2题目解读: 利用C语言,生成一个时钟信号,要求:1、频率为30MHz. 2、时钟相位抖动参数、谐波频率参数可设置,3 绘制波形 4生成文件 (4人合作完成)2 设计主要理论介绍及方案2.1理论介绍2.1.1基本原理 1、相位测量的基本原理:通过测量无线电信号到达不同检测地点的天线单元时间差,来对发射无线电信号的发射
9、源进行定位。TDOA定位流程:1.从监测站将同一时间测量同一信号得到的数据发送到主监测站;2.主监测站分别计算出无线电信号到达两个监测站天线的时间差(利用相关算法);3.根据两站之间时间差转换为距离差,可以得到一条双曲线;4.通过三个或多个无线电监测站测得的时间差可以得到两条或多条双曲线相交来实现发射源的定位。 2、PLL(Phase Locked Loop):为锁相回路或锁相环,用来统一整合时脉讯号,使内存能正确的存取资料。PLL用于振荡器中的反馈技术。锁相环是一种反馈电路,其作用是使得电路上的时钟和某一外部时钟的相位同步。PLL通过比较外部信号的相位和由压控晶振(VCXO)的相位来实现同步
10、的,在比较的过程中,锁相环电路会不断根据外部信号的相位来调整本地晶振的时钟相位,直到两个信号的相位同步。2.1.2关键字的理解:1.时钟信号:时钟信号是提供给同步内存做讯号同步之用,同步记忆体的存取动作必需与时钟信号同步。时钟信号是一个特定类型的振荡之间的高和低的状态,并利用像一个节拍器协调电路的动作的信号。(有固定周期并与运行无关的信号量)2.信号抽样:采样也称抽样,是信号在时间上的离散化,即按照一定时间间隔t在模拟信号x(t)上逐点采取其瞬时值。它是通过采样脉冲和模拟信号相乘来实现的。3.抽样频率:定义了每单位时间内的样品数(通常为秒 ),从连续信号作出离散信号。4.谐波:谐波是指电流中所
11、含有的频率为基波的整数倍的电量,一般是指对周期性的非正弦电量进行傅里叶级数分解,其余大于基波频率的电流产生的电量。5.时钟抖动:时钟抖动是指两个时钟周期之间存在的差值,这个误差是在时钟发生器内部产生的,和晶振或者PLL内部电路有关,布线对其没有影响。除此之外,还有一种由于周期内信号的占空比发生变化而引起的抖动,称之为半周期抖动。总的来说,抖动可以认为在时钟信号本身在传输过程中的一些偶然和不定的变化之总和。6.相位:是描述信号波形变化的度量,通常以度(角度)作为单位,也称作相角。当讯号波形以周期的方式变化,波形循环一周即为360。7.相位噪声:相位噪声是衡量频率标准源(高稳晶振、原子频标等)频稳
12、质量的重要指标。相位噪声一般是指在系统内各种噪声作用下引起的输出信号相位的随机起伏。通常相位噪声又分为频率短期稳定度和频率长期稳定度。所谓频率短期稳定度, 是指由随机噪声引起的相位起伏或频率起伏。至于因为温度、老化等引起的频率慢漂移,则称之为频率长期稳定度。8.频率分量:周期性交流量的傅里叶级数中次数高于1的分量,其频率为基波频率的整数倍。9.文件读写操作:文件的读操作以页为单位进行。内核每次会传送几页(文件的预读)。用户发出read()系统调用后,内核先查看要操作的文件是否在缓存中,如果在缓存之中就给进程的用户空间拷贝一份,若所要读的文件的页不在缓冲区,则会在换中区中分配一个页框,然后把相应
13、的页框加入到页高速缓存之中,然后从磁盘读取相应的页到缓冲区并给进程的用户空间拷贝一份。10.文件头:文件头是位于文件开头的一段承担一定任务的数据,一般都在开头的部分。头文件作为一种包含功能函数、数据接口声明的载体文件,用于保存程序的声明,而定义文件用于保存程序的实现。2.2方案: 2.2.1方案选择: 方案一 :利用VC+中MFC部分直接写出方波各个点的坐标,利用画笔连接,直接做出所需方波,即生成时钟信号。接着通过对方波的各个点的坐标进行左移或右移实现相位的抖动。 方案二:同样利用VC+中MFC部分,但是并不仅仅画出各个点再连线,而是通过方波的傅里叶级数的展开式的基波分量及谐波分量合成而生成所
14、需时钟信号,再对其相位及谐波频率加入rand函数使其可调从而达到目的。多次讨论之后,我们决定利用第二套方案。由于一方案中的谐波频率不可调,而且方法过于简单,实现起来较易但要求达不到,故弃之。2.2.2设计原理:1、信号频谱信号频谱可分为幅度频谱和相位频谱。幅度频谱是将谐波振幅用线段高度表示并按各次谐波频率的高低顺序排列而得的图形;相位频谱与幅度频谱类似,是各次谐波的初相与各次谐波频率的关系图形。由于各次谐波角频率是基波角频率的整数倍,因此,这种频率是离散的“线性谱”。2、傅里叶级数(1)概念:任何周期函数都可以用正弦函数和余弦函数构成的无穷级数来表示(选择正弦函数与余弦函数作为基函数是因为它们
15、是正交的),这种三角级数后世称为傅立叶级数。傅里叶级数在数论、组合数学、信号处理、概率论、统计学、密码学、声学、光学等领域都有着广泛的应用。(2)傅里叶级数公式:傅里叶级数的展开式:x(t)=+ x(t)=+式中,T为信号的周期;称为x(t)的直流分量;=称为x(t)的基波;称为x(t)的k次谐波分量。各系数的求解如下: (3)设计步骤: 写出所需方波的函数表达式,需要用题目给定条件30MHZ计算出其周期为s。则方波表达式为分段函数,在为30,在为-30. 利用上式傅里叶级数公式,可以设方波函数为奇函数,则公式可写为 n=1,2,3 将f(x)带入30,l带入3。 通过运算可以求出 ,由已知=
16、0 。将,带入公式x(t)=+ 则可以计算出方波的傅里叶级数展开式。(4)设计的平台环境:在c+开发平台VC+ 中进行代码编写,主要利用MFCMFC是Win32API的包装类,需要理解文档视图类的结构,窗口类的结构,消息流向等等。 程序流程图:文件新建工程创建基本对话框保存文件根据规则绘制波形加入随机抖动定义画刷及谐波频率变量初始化对话框添加控件 打开控件响应函数添加事件成员处理函数退出程序 图2-1 方案程序框图三、设计主要步骤3.1.创建客户端应用程序,采用对话框架构3.1.1运行VC+6.0软件,并新建一个MFC工程,选择”MFC AppWizard (exe)” 选择项目类型为MFC,
17、工程名称为CLOCK,工程路径为:cusers.图3-1 新建mfc工程3.1.2选择基本对话框,点击完成图3-2 选择基本对话框3.1.3出现新建工程对话框 新建工程信息如下: Win32:表明所创建的对话框是基于win32的应用程序 Cclockcpp: 应用程序类,对应的程序是clock.h和clock.cpp cclockDlg:对话框类,对应的程序是cclockDlg.h和cclockDlg.cpp MFC2.dll:使用公用的DLL表示MFC2.dll图3-3 工程信息报表3.1.4默认工程对话框和控件如下图3-4 工作界面3.1.5建立 clock类的主对话框 在MFC界面左方的
18、工作区(workspace)中选择resourceVIEW卡,从中选择dialog,双击IDD-CLOCK-DIALOG.右边会出现对话框,出现控制面板。图3-5 主对话框3.2.为对话框界面添加控件对象 3.2.1删除多余的控件,并修改剩余按钮控件的ID和标题如下:图3-6 制作绘图按钮3.2.2添加两个”静态文本”控件,以便于对”编辑框”控件做标注和解释,并修改其标题图3-7 制作 静态文本 控件3.2.3添加两个”编辑框”控件,并将所有控件摆放成如下图所示布局:图3-8 界面中控件效果图3.3为对话框中的控件对象定义相应的成员变量图3-9 向导类对话框3.3.1在对话框上单击右键,选择”
19、建立类向导”,如下图所示图3-10 修改控件属性3.2选择Member Variables(成员变量卡),并选择IDC_EDIT1和IDC_EDIT2,单击右边”Add Variable”为”编辑框”控件定义相应的成员变量,具体定义如下所示:图3-11 增加控件成员对话框3. 4添加响应消息的事件处理成员函数 点击菜单view/classwizar 进入类向导对话框,选择Message maps(消息映射)卡,确定class name 是CMYSOCKET ,从Messages(消息)栏中选择事件消息,然后选择事件信息。图3-12 添加成员函数3.4.1在对话框上单击右键,选择”建立类向导”,
20、选择Message Maps(消息映射卡),确认Class name是”CClockDlg”,从Object IDs栏中选择IDC_BUTTON(按钮控件),并从Messages栏中选择BN_CLICKED,然后点击Add Function添加该事件,如下所示图3-13 新建按钮控件同样的,给CClockDlg添加OnSetFont事件,如下图所示图3-14 新建按钮控件3.5手工添加其他代码3.4.1定义PI的值并且添加数学函数库头文件,代码如下:#include math.h /调用数序函数库头文件#define PI 3.141592653 /定义PI的取值3.4.2为”编辑框”控件的消
21、息响应函数编写如下代码。void CClockDlg:OnSetFont(CFont* pFont) / TODO: Add your specialized code here and/or call the base classm_edit1=0; /此为添加代码m_edit2=0; /此为添加代码CDialog:OnSetFont(pFont);3.4.3在对话框类的OnInitDialog中添加如下代码。int m_edit1;int m_edit2;UpdateData(FALSE);3.4.4对按钮的单击消息响应函数OnButton编写代码,实现目标,得出最终结果,代码如下。/以下
22、为OnButton中的循环求和函数double make_y(int i,double r)double y=0;for(;i-1;i-)y+=(-12)/(2*i+1)*PI)*sin(2*i+1)*r)*30;return y;void CClockDlg:OnButton() / TODO: Add your control notification handler code herechar buff116; / 定义字符数组,用于存放与X轴交点坐标(显示只能是字符)FILE *fp1;fp1 = fopen(谐波.txt,w+); / 打开文件if( NULL = fp1 ) / 打
23、开文件失败的话,直接 返回return;char buff216; / 定义字符数组,用于存放与X轴交点坐标(显示只能是字符)FILE *fp2;fp2 = fopen(抖动.txt,w+); / 打开文件if( NULL = fp2 ) / 打开文件失败的话,直接 返回return;/谐波参数可调绘图代码CRect rc(0,0,1200,350); / 构造画刷矩形区域rcCPen pen,cpen; / 创建pen和cpen画笔pen.CreatePen(PS_SOLID,2,RGB(0,0,0); / 创建一支黑色实心画笔cpen.CreatePen(PS_SOLID,2,RGB(0,
24、0,255); / 创建一支蓝色实心画笔CDC* pDC=GetDC(); /创建CDC类画图pDC-FillSolidRect(rc,RGB(255,255,255); /使用白色填充矩形rc区域pDC-SelectObject(&cpen); /将定义画笔cpen选入设备上下文pDC-SetViewportOrg(100,200); /设置可视区域上下文的初始位置为(100,200)/绘制坐标轴int a=0; / 初始化参数(初始原点坐标)int b=0;pDC-MoveTo(a,b); / 移动画笔在原点处pDC-TextOut(a-15,b,O); / 添加原点字母OpDC-Line
25、To(a+1000,b); / 绘制X轴直线pDC-MoveTo(a,b); / 画笔回到原点pDC-LineTo(a,b-150); / 绘制Y轴上半轴直线pDC-MoveTo(a,b); pDC-LineTo(a,b+150); / 绘制Y轴下半轴直线pDC-MoveTo(a,b); pDC-TextOut(a+1010,b-5,X/*(10-8)s); / 为x轴添加标识X/*(10-8)spDC-TextOut(a-15,b-150,Y); / 为y轴添加标识YUpdateData(); /将EDIT控件值赋值给成员变量int i;double x,y=0,r;pDC-SelectOb
26、ject(&pen); /将定义画笔pen选入设备上下文for(x=0.0;xMoveTo(double)x,(double)y); pDC-LineTo(double)x,(double)y);for(x=0;xTextOut(x,5,buff1); / 显示横坐标刻度值fprintf(fp1, (%.3f,%d)n,x/4*0.1111,0); / 写入文档中cpen.DeleteObject(); /释放画笔pen.DeleteObject(); /释放画笔/相位抖动参数可调绘图代码int n; / 坐标参数int c=100;int d=500;int freq=70;int freq
27、1 = 1; / 定义一个临时变量,用于判断画刷是否上升或下降CRect rc1(0,380,1200,820); / 构造画刷矩形区域rc1CPen apen,bpen; / 创建apen和bpen画笔apen.CreatePen(PS_SOLID,1,RGB(0,0,0); / 创建一支黑色实心画笔bpen.CreatePen(PS_SOLID,2,RGB(0,0,255); / 创建一支蓝色实心画笔CDC* pDC1=GetDC(); / 利用CDC类绘图pDC1-FillSolidRect(rc1,RGB(255,255,255); /使用白色填充矩形rc1区域pDC1-SelectO
28、bject(&bpen); /将定义画笔bpen选入设备上下文/绘制坐标轴pDC1-MoveTo(c,d); / 确定画笔起点pDC1-TextOut(c-15,d,O); / 添加原点字母OpDC1-LineTo(c+1000,d); / 绘制X轴直线pDC1-MoveTo(c,d); / 画笔回到起点pDC1-LineTo(c,d-150); / 绘制Y轴上半轴直线pDC1-MoveTo(c,d); pDC1-LineTo(c,d+150); / 绘制Y轴下半轴直线pDC1-MoveTo(c,d); pDC1-TextOut(c+1005,d-5,X/(*10-8)s); / 为x轴添加标
29、识X/*(10-8)spDC1-TextOut(c-15,d-150,Y); / 为y轴添加标识YpDC1-SelectObject(&apen); /将定义画笔apen选入设备上下文for(n = c;nLineTo(n,d); / 移动画笔if(1 = freq1) / 如果在横坐标d = 400; / 画上升沿freq1 = 0; / 改变临时变量状态elsed = 600; / 画下降沿freq1 = 1; / 改变临时变量状态,下次绘制时直接开始绘制上升沿sprintf(buff2,%.3f,(n-100)/4*0.1111); / 把横坐标值转换成字符类型pDC1-TextOut(
30、n,505,buff2); / 显示横坐标刻度值fprintf(fp2, (%.3f,%d)n,(n-100)/4*0.1111,0); / 写入文档中pDC1-LineTo(n,d); / 移动画刷bpen.DeleteObject(); /释放画笔apen.DeleteObject(); /释放画笔3.6添加事件处理函数: 在clockdlg.h中自动添加三个事件处理函数的声明图3-15 添加事件处理函数3.7.根据实际结果调整控件的位置以防遮挡或被遮挡 4、 设计结果与分析 4.1输出界面:点击运行后,进入到输出界面,界面中有 相位抖动参数 和 谐波参数 两个变量 分别控制时钟信号的 延
31、时 和 谐波组成 。图4-1 输出界面4.2选择谐波次数为0 , 相位抖动参数为 0图4-2 一次谐波 与 无延时 是输出波形 分析:由于谐波次数为0,所以信号是由基波构成,输出为正弦波。横坐标是时间,从图中可是信号的周期是,则频率是30M Hz无延时体现在对信号抽样、整形后周期没变。4.3选择谐波次数为7 , 相位抖动参数为 1图4-3 七次谐波与一次相位抖动分析:图中信号是由基波和七次谐波构成,周期不变。加入时钟抖动参数后周期变大了,此时的时钟信号频率也小于了30M Hz4.4相位抖动参数为3 谐波次数为33 时:图4.4波形14.5相位抖动参数为5 谐波次数为55 时:图4.5波形2五设
32、计评述及收获体会1、设计评述本次课设是利用C语言生成一个时钟信号,在我们小组的通力合作下,成功的完成了本次课设的设计与制作。本次设计的重点是方波的傅里叶级数展开,在经历了多次失败后,终于成功写出了方波的傅里叶级数展开式。在设计方波时,我们将其写为奇函数,使得cos部分系数为零,减轻了傅里叶展开式的复杂程度,而且使函数绘制的优美,大气。继而在之后的相位抖动参数中,我们将一些变量加入其公式中,并利用C语言rand语句让其参数可以随机改动,从而实现相位的抖动。对于谐波频率参数的设计,我们在多次讨论研究之后,决定利用C语言中的语句将其实现,并使其参数可调。 本次设计中,对傅里叶级数进行了深刻的解读及研究,也加深了对C语言的插入,循环,画笔,绘图等语句的了解。2、设计过程 利用VC+中MFC部分,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 办公室装修合同-装修合同【7篇】
- 与餐厅人员合同标准文本
- 光缆施工合同范例简易
- 农业种植采购合同范例
- 保安工作计划互联网业电子商务部门
- 电商企业会计工作的流行趋势计划
- 集成电路行业改进芯片设计技术计划
- 提升护理部门服务质量的策略计划
- 上海装修设计合同标准文本
- 2025年农村集体土地使用权转让合同书
- 2023年08月中国林业科学研究院公开招聘(7人)笔试历年高频考点试题含答案带详解
- 小学校务监督委员会工作方案
- 中学班容班貌评比细则
- 《中华民族大团结》(初中)第1课-爱我中华教学课件
- 第11课 动物的花衣裳(说课稿)2022-2023学年美术三年级下册 人教版
- 字节跳动目标管理法
- 杏树疮痂病及技巧
- 电动摩托车和电动轻便摩托车通用技术条件
- 高中政治听课记录(合集四篇)
- 幸福河湖建设实施情况及自评报告编制提纲
- 沥青的理化性质与危害特性表
评论
0/150
提交评论