毕业论文用C语言模拟两列波的合成.doc_第1页
毕业论文用C语言模拟两列波的合成.doc_第2页
毕业论文用C语言模拟两列波的合成.doc_第3页
毕业论文用C语言模拟两列波的合成.doc_第4页
毕业论文用C语言模拟两列波的合成.doc_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

苏州工业园区职业技术学院毕业论文苏州工业园区职业技术学院Suzhou Industrial Park Institute Of Vocational Technology2005年6 月毕业设计(论文)课题名称:用C语言模拟两列波的合成 专业名称: 工业电子 设计人 : 胡健 学 号 : 200200219 班 级: E0230 指导教师: 朱利军 目 录毕业设计任务书 2摘要 5一、绪论 5二、C语言概述 61C语言出现的历史背景 62C语言的特点 73Turbo C简介 9三、用C语言模拟两列波的合成 101编译环境的选择 10 2硬件条件 10 3程序代码及相关注释 10 4使用步骤 18结论 20致谢 20毕业论文(设计)任务书院(系): 电子系 论文(设计)题目:用C语言模拟两列波的合成指导教师:朱利军职称:类别:毕业设计学生:胡健专业:工业电子班级:E0230学号:200200219论文(设计)类型:应用型1 论文(设计)的主要任务及目标 输入两列波形的6个参数(任意),然后通过C程序的设计,把两列波形打印在屏幕上,并且实现把两列波形合成一列波形的功能,并输出。2 论文(设计)的主要内容 运行程序,得到欢迎界面; 按回车得到具体的输入波形界面; 输入完两列波的参数后按回车,先在屏幕上画出坐标轴,然后在坐标轴上自动画出两列波的波形图; 按两次回车,画出两列波合成后的波形; 再按回车后退出。3 论文(设计)的基本要求 内容充实、明确,语言用词准确、条理清楚; 体现设计的用途及实用性; 截取相关的程序运行图片 反映出设计思路,阐明程序运行的原理4 主要参考文献1) C程序设计(第二版):谭浩强编著;清华大学出版社2) C语言程序设计教程:顾元刚等编著;机械工业出版社5进度安排 论文(设计)各阶段任务 起止日期1课题选择3.15以前 2资料收集3.154.10 3熟悉软件4.104.15 4程序设计4.155.05 5论文书写5.055.25 6思路总结5.256.10用C语言模拟两列波的合成摘要:本设计采用C语言这门实践性很强的学科,实现波形的输入、合成与输出,其特点是可以把输入的波形较为直观准确的打印在电脑屏幕上相应的坐标轴位置,并通过计算机突出的运算速度,通过运算在短时间内把两列波形合二为一,并准确的打印出来,使用较为方便,大大提高了计算波形的工作效率。关键词:一、绪论 C语言是近年来在国内外得到迅速推广应用的一种计算机语言。C语言功能丰富,表达能力强,使用灵活方便,应用面广,目标程序效率高,可移植性好,既具有高级语言的优点,又具有低级语言的许多特点,使用C语言要比使用汇编语言容易的多。C语言有着不同于或优于其它语言的特点:1) 语言简洁、紧凑,使用方便、灵活;2) 运算符丰富;3) 数据结构丰富,具有现代化语言的各种数据结构;4) 具有结构化的控制语句;5) 语法限制不太严格,程序设计自由度大;6) C语言允许直接访问物理地址;7) 生成目标代码质量高,程序执行率高8) 用C语言写程序可移植性好。 因此,掌握C语言无疑是培养新型人才的一个重要环节,它能启发人们对先进科学的向往,激发创新意识,推动对新知识的学习,锻炼动手实践的本领。二、C语言概述1. C语言出现的历史背景C语言是国际上广泛流行的、很有发展前途的计算机高级语言。它适合于作为系统描述语言,既可用来写系统软件,也可用来写应用软件。以前的操作系统等系统软件主要是用汇编语言编写的(包括UNIX操作系统在内)。由于汇编语言依赖于计算机硬件,程序的可读性和可移植性比较差。为了提高可读性和可移植性,最好改用高级语言,但一般的高级语言难以实现汇编语言的某些功能。人们设想是否能找到一种既具有高级语言的特性,又具有底级语言的特性的语言,集它们的优点于一身。于是,C语言就在这种情况下应运而生了。C语言是在B语言的基础上发展起来的,它的根源可以追溯到ALGOL 60。1960年出现的ALGOL 60是一种面向问题的高级语言,它离硬件比较远,不宜用来编写系统程序。1963年英国的剑桥大学推出了CPL(combined programming language)语言。CPL语言在ALGOL 60的基础上接近硬件一些,但规模比较大,难以实现。1967年英国的剑桥的Matin Richards对CPL做了简化,推出了BCPL(basic combined programming language)语言。1970年美国贝尔实验室的Ken Thompson 以BCPL语言为基础,又做了进一步简化,设计出了很简单的而且很接近硬件的B语言(取BCPL的第一个字母),并用B语言写了第一个UNIX操作系统,在PDP-7上实现。1971年在PDP-11/20上实现了B语言,并写了UNIX操作系统。但B语言过于简单,功能有限。1972年至1973年间,贝尔实验室的D.M.Ritchie 在B语言的基础上设计出了C语言(取BCPL的第二个字母)。C语言既保持了BCPL和B语言的优点(精练,接近硬件),又克服了它们的缺点(过于简单,数据无类型等)。最初的C语言知识为描述和实现UNIX操作系统提供一种工作语言而设计的。1973年,K.Thompson和D.M.Ritchie两人合作把UNIX的90%以上用C语言改写,即UNIX第5版。原来的UNIX操作系统是1969年由美国的贝尔实验室的K.Thompson和D.M.Ritchie开发成功的,是用汇编语言写的。 后来,对C语言多次做了改进,但主要还在贝尔实验室内部使用。直到1975年UNIX第6版公布后,C语言的突出优点才引起人们的普遍注意。1977年出现了不依赖于具体机器的C语言编译文本可移植C语言编译程序,使C移植到其他机器时所需要的工作大大简化了,这也推动了UNIX操作系统在各种机器上实现。例如VAX、AT&T等计算机系统都相继开发了UNIX。随着UNIX的日益广泛使用,C语言也迅速得到推广。C语言和UNIX可以说是一对孪生兄弟,在发展的过程中相辅相成。1978年以后,C语言已先后移植到大、中、小、微型机上,已独立于UNIX和PDP了。现在C语言已风靡世界成为世界上最广泛的几种计算机语言之一。 已1978年发表的UNIX第七版中的C编译程序为基础Brian W.Kernighan和Dennis M.Ritchie(合称K&R)合著了影响深远的名著The C Programming Language,这本书中介绍的C语言成为了日后广泛使用的C语言版本的基础,它被称为标准C。1983年美国国家标准化协会(ANSI)根据C语言问世以来各种版本对C语言的发展和扩充,制定了新的标准,称为ANSI C。ANSI C比原来的标准C有了很大的发展K&R在在1988年修改了他们的经典著作The C Programming Language,按照ANSI C 标准重新写了该书。1987年,ANSI又公布了新标准87 ANSI C为ISO C的标准(ISO 98991990)。目前广泛流行的各种版本C语言编译系统都是以它为基础的。2. C语言的特点 一种语言之所以能存在和发展,并具有生命力,总是有其不同于(或优于)其它语言的特点。C语言的主要特点如下。(1). 语言简洁、紧凑,使用方便、灵活。C语言一共只有32个关键字,9种控制语句程序书写形式自由,主要用小写字母表示,压缩了一切不必要的成分。(2). 运算符丰富。C语言的运算符包含的范围很广泛,共有34种运算符。C把括号、赋值、强制类型转换等都作为运算符处理,从而使C的运算类型极其丰富,表达式类型多样化。灵活使用各种运算符可以实现在其他高级语言中难以实现的运算。(3). 数据结构丰富,具有现代化语言的各种数据结构。C的数据类型有整型、实型、字符型、数组类型、指针类型、结构体类型、共同体类型等。能用来实现各种复杂的数据结构(如链表、树、栈等)的运算,尤其是指针类型数据,使用起来比PASCAL更为灵活、多样。(4). 具有结构化的控制语句(如ifelse语句、while语句、dowhile语句、switch语句、for语句)。用函数作为程序的模块单位,便于实现程序的模块化。C是理想的结构化语言,符合现代的编程风格的要求。(5). 语法限制不太严格,程序设计自由度大。例如对数组下标越界不做检查,由程序编写者自己保证程序的正确。对变量的类型使用比较灵活,例如整型量与字符型数据以及逻辑型数据可以通用。一般的高级语言语法检查比较严,能检查出几乎所有的语法错误。而C语言允许程序编写者有较大的自由度,因此放宽了语法检查。程序员应当仔细检查程序,保证其正确,而不要依赖于C编译程序去查错。“限制”与“灵活”是一对矛盾。限制严格,就失去灵活性;而强调灵活,就必然放松限制。一个不熟练的编程人员,编一个正确的C程序可能会比编一个其他高级语言程序难一些。也就是说,对用C语言的人,要求对程序设计更熟练一些。(6). C语言允许直接访问物理地址。能进行位(bit)操作,能实现汇编语言大部分功能,可以直接对硬件进行操作。因此,C既具有高级语言的功能,又具有低级语言的许多功能,可用来写系统文件。C语言的这种双重性,使它既是成功的系统描述语言,又是通用的程序设计语言。有人把C称为“高级语言中的低级语言”或“中级语言”,意为兼有高级和低级语言的特点。现在一般仍习惯将C语言称为高级语言,因为C程序也要通过编译、连接才能得到可执行的目标程序,这是和其他高级语言相同的。(7). 生成目标代码质量高,程序执行率高。一般只比汇编程序生成的目标代码效率低10%20%。(8). 用C语言写程序可移植性好(与汇编语言比)。基本上不做修改就能用于各种型号的计算机和各种操作系统。3. Turbo C简介Turbo C是在微机上广泛使用的编译程序。它具有方便、直观、易用的界面和丰富的库函数。它向用户提供一个集成环境,把程序的编辑、编译、连接和运行等操作全部集中在一个界面上进行,使用十分方便。为了能使用Turbo C,必须先将Turbo C编译程序装入磁盘的某一目录下,例如放在C盘根目录下一级TC子目录下。(1).调用Turbo C程序。如果用户的当前目录是Turbo C编译程序所在的子目录(例如TC子目录),只须从键盘键入“tc”命令即可:C:TCtc屏幕上出现Turbo C集成环境用户可以通过以上菜单项来选择使用Turbo C集成环境所提供的Turbo C的各项主要功能。以上8个菜单项分别代表:文件操作、编辑、运行、编译、项目文件、选项、调试、中断/观察等功能。(2).编辑源文件。在编辑(Edit)状态下可以根据需要输入或修改源程序。(3).编译源程序。选择“Compile”菜单并在其下拉菜单中选择“Compile to OBJ”则进行编译,得到一个后缀为 .obj的目标程序。然后在选菜单“Compile/Link EXE file”,进行连接操作,可得到后缀为 .exe的可执行文件。(4).执行程序。按“F10”键,窗口上部的主菜单中第一项“File”“反相”显示。用右“ ”键将亮块移到“Run”,按回车键,在其下拉菜单中选择“Run”项,或直接按Ctri+F9键,系统就会执行已编译和连接好的目标文件。此时,就得到程序运行时输出的结果。按Alt+F5键可以看到运行结果。(5).可以用“Alt”和“X”键(同时按此两键),脱离Turbo C,回到DOS命令状态。此时用DOS命令显示源程序和运行程序:CTYPE tc1.c (列出源程序清单)Ctc1 (执行目标程序 tc1.exe) 如果想再修改源程序,可以重复执行步骤(1),并输入源程序文件名即可。三、用C语言模拟两列波的合成设计1. 译环境的选择完全使用Turbo C 2.0 英文版集成环境。 2硬件条件 PC机:Pentium(R) 4 CPU 2.00GHz 256MB内存3程序代码及相关注释#include /*导入库文件math.h,用于公式计算 */#include /*导入库文件string.h,用于字符串操作*/#include /*导入库文件graphics.h,用于图象处理*/ #include /*导入库文件stdlib.h,用于其它命令*/ #define PI 3.1415926 /*定义PI,用于后面角度与弧度之间的转换*/void main() /*主函数部分*/int x1,y1,x2,y2; /*定义6个变量用于输入的两列波总共6个参数的double z1,z2; 接收,以便以值传递的形式传入Graphics函数 */printf(nnnnnnnnnnnnnnnnnnnnnnnn);printf( 0 0 0 0000000 0 0000 000 00 00 0000000 n);delay(65000);printf( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 n);delay(65000);printf( 0 0 0 0 000000 0 0 0 0 0 0 0 0 000000 n);delay(65000);printf( 0 0 0 0 0 0 0 0 0 0 0 0 0 0 n);delay(65000);printf( 0 0 0000000 000000 0000 000 0 0 0 0000000 nnn);delay(65000);printf( *n);delay(65000);printf( *n);delay(65000);printf( *Use C program to realize two waves of composed*n);delay(65000);printf( *n);delay(65000);printf( *Programmer:Hu Jian*n);delay(65000);printf( *n);delay(65000);printf( *Class:E0230*n);delay(65000);printf( *nn);printf(n);delay(65000);printf(n);delay(65000);printf( Please press the Enter key to continue.n);getch();/*蓝色代码部分详见第16页注1*/system(cls); /*清屏命令*/printf(Please input 3 number of the first wave:a1*sin(b1*x+c1):n); /*提示信息:输入 第一列波 */ printf(a1=); scanf(%d,&x1); printf(b1=); /*依次输入第一列波的a1、b1、c1三个参scanf(%d,&y1); 数,并分别用x1、y1、z1进行接收 */printf(c1=);scanf(%lf,&z1);printf(n);printf(Please input 3 number of the second wave:a2*sin(b2*x+c2):n); /*提示信息:输 入第二列波 */ printf(a2=); scanf(%d,&x2); printf(b2=); /*依次输入第二列波的a2、b2、c2三个参scanf(%d,&y2); 数,并分别用x2、y2、z2进行接收 */printf(c2=);scanf(%lf,&z2);Graphics(x1,y1,z1,x2,y2,z2); /*调用Graphics函数,并传递相关参数*/int Graphics(int a1,int b1,double c1,int a2,int b2,double c2) /* Graphics函数,用于画坐标轴、两列输入波形及合成后的输出波形 */int i,j,gdriver=VGA,gmode=VGAHI; /* VGA显卡,指定分辨率640*480,16色 */char a=45 90 135 180 225 270 315 360 405 450 485; /*定义a 数组,用于画出Y坐标轴的刻度 */ char *s,*s150,*s250,*s350; /*用于接收具体波形的字符串*/double x1,x2,y1,y2,dangle; /*x1,x2,y1,y2用于表示具体的点(X,Y), dangle用于接收角度与弧度之间的转换值*/ initgraph(&gdriver,&gmode,c:tcbgi); /*调用初始化函数*/setbkcolor(2); /*设置背景色为绿色*/setcolor(1); /*设置前景色为蓝色*/line(20,240,600,240); /*画X轴*/ line(590,237,600,240); /*画X轴上的箭头*/line(590,243,600,240);line(40,80,40,400); /*画Y轴*/ line(40,80,37,90); /*画Y轴上的箭头*/line(40,80,43,90);sprintf(s1,y=%d*sin(%d*X+%.2lf),a1,b1,c1); /*接收第一列波形的字符串,并存入s1中*/sprintf(s2,y=%d*sin(%d*X+%.2lf),a2,b2,c2); /*接收第二列波形的字符串,并存入s2中*/sprintf(s3,y=%d*sin(%d*X+%.2lf)+%d*sin(%d*X+%.2lf),a1,b1,c1,a2,b2,c2); /*接收合成后的两列波波形,并存入s3中*/setcolor(4); /*设置前景色为红色*/outtextxy(40,20,s1); /*把第一列波的字符串打印在屏幕上(红色)*/setcolor(1); /*设置前景色为蓝色*/outtextxy(40,40,s2); /*把第一列波的字符串打印在屏幕上(蓝色)*/setcolor(14); /*设置前景色为黄色*/outtextxy(40,420,s3); /*把合成后的两列波的字符串打印在屏幕上(黄色)*/setcolor(1); /*设置前景色为蓝色*/for(i=40;i600;i+=45) line(i,238,i,242); /*画X轴的刻度*/for(i=120;i380;i+=30)line(38,i,42,i); /*画Y轴的刻度*/settextstyle(0,0,2); /*设定2号字型*/s=x; outtextxy(570,245,s); /*写字母X*/s=y;outtextxy(22,75,s); /*写字母Y*/settextstyle(0,0,1); /*设定1号字型*/for(i=3;i-3;i-) /*用循环标记Y轴上的刻度*/sprintf(s,%d,i);outtextxy(25,240-30*i,s);outtextxy(80,245,a); /*直接通过数组a,标记X轴上的刻度*/for(i=0;i480;i+) /*从0480度,计算输入的两列波*/dangle=i*PI/180; /*将角度转换为弧度*/x1=40+i; /*计算X的坐标*/y1=240-a1*sin(b1*dangle+c1)*30; /*计算第一列波的坐标*/putpixel(x1,y1,RED); /*画出第一列波曲线上的一点(像素)*/y1=240-a2*sin(b2*dangle+c2)*30; /*计算第二列波的坐标*/putpixel(x1,y1,BLUE); /*画出第二列波曲线上的一点(像素)*/delay(4500); /*用延时使波形慢慢画出*/getch(); /*按任一键继续,防止图形一闪而过*/for(i=0;i480;i+) /*清空坐标轴上的内容,为画合成后的 波形做准备*/dangle=i*PI/180;x2=40+i;y2=240-a1*sin(b1*dangle+c1)*30;putpixel(x2,y2,GREEN);y2=240-a2*sin(b2*dangle+c2)*30;putpixel(x2,y2,GREEN);getch();for(i=0;i480;i+) /*画出两列波合成后的新波形,颜色为 黄色*/dangle=i*PI/180;x2=40+i;y2=240-(a1*sin(b1*dangle+c1)*30+a2*sin(b2+dangle+c2)*30);putpixel(x2,y2,YELLOW);delay(4500);getch();closegraph(); /*关闭图形系统,返回文本方式*/注1:蓝色部分并非乱码,而是设计好的一个界面,用字符“0”拼成一个英文单词“WELCOME”,在输入过程中加入延时,使界面自下而上的移动到

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论