C语言课程设计-振动波的合成原理_第1页
C语言课程设计-振动波的合成原理_第2页
C语言课程设计-振动波的合成原理_第3页
C语言课程设计-振动波的合成原理_第4页
C语言课程设计-振动波的合成原理_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

1、精选优质文档-倾情为你奉上振动波的合成原理课程设计报告题 目振动合成原理的模拟学 号姓 名同组人员年级专业2009级电子信息工程指导教师完成日期2010年6月27日物理与电子信息学院课程设计评定意见指导教师评语主要内容包括:设计报告内容的完整性和完成情况、报告格式的规范性、通过课程设计取得的收获等。成绩: 签名: 年 月 日设计过程:1)选题 2)分析设计 3)编程调试 4)撰写实验报告程序设计模板与流程:模板: 流程:#include“stdio.h” #include“stdlib.h” 主函数调用welcomegui()#include “graphics.h” #include “co

2、nio.h” 图形初始化initial()#include “stdlib.h” #include “math.h” 输入两图形的参数userinput()#include “time.h” void initian(); 合成处理图形synthesize() void userinput();void synthesize();void welcomegui();int main ()一问题描述:在程序中,要输入振动参数,实现动态效果及合成图像的显示。二基本要求:此程序用来实现简谐振动的合成,在程序中,要输入两个分简谐振动的振幅,频率和初位相,还要实现动态效果。其中,动态效果的实现是此程序的

3、重点。在程序中,必须用到一些绘图函数。三系统分析和数据:此程序主要是实现简谐振动的合成,其中,开始利用主函数调用一个函数,对操作进行选择;然后绘出三坐标轴,使图形出现的方位确定;接着,输入两分振动的参数;最后合成三图形。四程序的说明:此程序是为了实现简谐振动的合成。在程序中,开始利用主函数调用welcomegui();函数,对要进行的操作进行选择。然后对图形坐标及图形显示在屏幕上的位置进行定位,其中运用了sprintf();和outtextxy();函数,接着输入Y1和Y2的参数,并再次调用函数,对操作进行选择,最后,合成处理函数,同步显示来年各个分振动和一个合振动。五主要函数的说明:spri

4、ntf(); :格式化输出函数或图形,sprintf()给出的第一个参数string,然后再调用outtextxy()将串里的字符显示在屏幕上通常在绘图方式下输出数字,可调用sprintf()将所输出的格式送到第一个参数,然后显示输出。outtextxy();:在指定位置显示一字符串。 void outtextxy (int x, int y, char *textstring)setlinestyle();:设置当前画线宽度和类型。setfillstyle();:设置填充模式和颜色。bar(); :画一个两维条形图。void bar(int left, int top, int right,

5、int bottom)delay();:将程序的执行暂停一段时间(毫秒)。lineto ();:直线的绘制。cleardevice(); :清屏。moveto(); :将CP移到(x,y)。 源程序代码与调试用前在TC目录下输入以下两个命令BGIOBJ EGAVGA和TLIB LIBGRAPHICS.LIB+EGAVGA代码如下:#include "stdio.h"#include "stdlib.h"#include "graphics.h"#include "conio.h"#include "std

6、lib.h"#include "math.h"#include "time.h"#define GAIN 10   /*增益*/void initial(void);        /*图形初始化*/void userinput(void);      /*输入处理函数*/void synthesize(void);     /*合成处理过程*/void welcom

7、egui(void);     /*开始页面*/float a1 = 1,w1 = 1,f1 = 0;  /*两振动的参数*/float a2 = 1,w2 = 1,f2 = 0;int main(void) welcomegui();       return 0;void initial(void)       char s50;       setbkcolor

8、(BLACK);        /*设置背景色为黑色*/       setlinestyle(SOLID_LINE,0,THICK_WIDTH); /*设置直线的风格,粗线*/       cleardevice();            /*清屏*/   

9、0;   /*画最外围的边框*/       line(10,10,629,10);       line(629,10,629,469);       line(629,469,10,469);       line(10,469,10,10);       /*图形区动画区初

10、始化*/       line(40,30,450,30);       line(450,30,450,400);       line(450,400,40,400);       line(40,400,40,30);sprintf(s,"SYNTHESIZED BELOW:");  /*三个坐标轴的说明*/ &

11、#160;     outtextxy(70,40,s);       sprintf(s,"THE X1:");       outtextxy(70,160,s);       sprintf(s,"THE X2:");       outtextxy(70,280,s);&

12、#160;           /*函数X1信息区初始化*/       line(470,30,609,30);       line(609,30,609,130);       line(609,130,470,130);       line(470,

13、130,470,30);       settextstyle(DEFAULT_FONT,HORIZ_DIR,1);       sprintf(s,"Dynamic");       outtextxy(480,40,s);       sprintf(s,"Information");  

14、60;    outtextxy(480,50,s);       sprintf(s,"of x1:");       outtextxy(480,60,s);       sprintf(s,"A1=%.2f,W1=%.2f",a1,w1);       outtextxy(480,7

15、0,s);       sprintf(s,"f1=%.2f",f1);       outtextxy(480,80,s);       /*函数X2信息区域初始化*/  line(470,180,609,180);       line(609,180,609,280);    

16、60;  line(609,280,470,280);       line(470,280,470,180);       sprintf(s,"Dynamic");       outtextxy(480,190,s);       sprintf(s,"Information");  

17、;     outtextxy(480,200,s);       sprintf(s,"of X2:");       outtextxy(480,210,s);       sprintf(s,"A2=%.2f,W2=%.2f",a2,w2);       outtextxy

18、(480,220,s);       sprintf(s,"f2=%.2f",f2);       outtextxy(480,230,s);       /*合成图形信息区初始化*/       line(470,300,609,300);       line(609,300

19、,609,400);       line(609,400,470,400);       line(470,400,470,300);       sprintf(s,"Dynamic");       outtextxy(480,310,s);       sprintf(s

20、,"Information");       outtextxy(480,320,s);      sprintf(s,"of SX:");       outtextxy(480,330,s);       setlinestyle(SOLID_LINE,0,NORM_WIDTH);  /*设置直接风格为细线*/&#

21、160;      /*合成函数的坐标轴*/       line(60,90,430,90);       line(60,40,60,140);       line(425,85,430,90);  /*画坐标箭头*/       line(430,90,425,95);  

22、;     line(55,45,60,40);       line(60,40,65,45);       sprintf(s,"SX");      /*坐标名称*/       outtextxy(43,55,s);       sprint

23、f(s,"t");       outtextxy(425,105,s);       sprintf(s,"0");       /*坐标原点*/       outtextxy(50,90,s);       /*X1的坐标轴*/  &

24、#160;    line(60,210,430,210);       line(60,160,60,260);       line(425,205,430,210);  /*画坐标箭头*/       line(430,210,425,215);  line(55,165,60,160);      

25、line(60,160,65,165);       sprintf(s,"X1");        /*坐标名称*/       outtextxy(43,175,s);       sprintf(s,"t");       outtextxy(

26、425,225,s);       sprintf(s,"0");       /*坐标原点*/       outtextxy(50,210,s);       /*X2的坐标轴*/       line(60,330,430,330);   &#

27、160;   line(60,280,60,380);       line(425,325,430,330);  /*画坐标箭头*/       line(430,330,425,335);       line(55,285,60,280);       line(60,280,65,285);  

28、60;    sprintf(s,"X2");        /*坐标名称*/       outtextxy(43,295,s);       sprintf(s,"t");       outtextxy(425,345,s);    

29、   sprintf(s,"0");       /*坐标原点*/       outtextxy(50,330,s); void userinput(void)       /*输入X1的参数*/       printf(" X1 = A1 * COS(W1 * t + f1)");&

30、#160;      printf(" Please input the parameters for X1");       printf(" A1 = ");       scanf("%f",&a1);       printf(" W1 = ");  &

31、#160;    scanf("%f",&w1);       printf(" f1 = ");       scanf("%f",&f1);       /*输入X2的参数*/       printf(" X2 = A2 * COS(W2

32、 * t + f2)");       printf(" Please input the parameters for X2");       printf(" A2 = ");       scanf("%f",&a2);       printf(" W2 = &q

33、uot;);       scanf("%f",&w2);       printf(" f2 = ");       scanf("%f",&f2);       printf(" Press any key to return to the Welcome GUI&qu

34、ot;);      getch();        /*等待任意键*/       welcomegui();void synthesize(void)   /*合成处理函数*/    int i = 0;       float y1,y2;     &#

35、160; float sy;       char s40;       /*屏幕初始化*/       int gdriver,gmode;    gdriver = DETECT;    registerbgidriver(EGAVGA_driver);       initgraph(&

36、;gdriver, &gmode,"");          /*注意此处的第三个参数*/       initial();         /*初始化图形*/       setfillstyle(SOLID_FILL,BLACK);    

37、;   sprintf(s,"Press any key to begin!");       outtextxy(50,420,s);       w1 = w1/10;       w2 = w2/10;y1 = a1 * cos(w1*i + f1);       y2 = a2 * cos(w2*i + f2)

38、;       y1 = y1 * GAIN;       y2 = y2 * GAIN;       sy = y1 + y2;       getch();      /*任意键开始*/       /*开始画线*/  

39、60;    while(i<360)                     i+;              /*画X1的线*/         &#

40、160;    moveto(60+i-1,y1+210);              y1 =GAIN * a1 * cos(w1*i + f1);              lineto(60+i,y1+210);       

41、0;      /*X1的动态信息显示*/              bar(480,90,600,110);              sprintf(s,"X1 = -%f",y1/GAIN);      

42、        outtextxy(480,90,s);              sprintf(s,"t1 = %d",i);              outtextxy(480,100,s);    &

43、#160;         /*画X2的线*/  moveto(60+i-1,y2+330);              y2 =GAIN * a2 * cos(w2*i + f2);              lineto(60+i,y2+330)

44、;              /*X2的动态信息显示*/              bar(480,240,600,260);              sprintf(s,"X2 = -%f&quo

45、t;,y2/GAIN);              outtextxy(480,240,s);              sprintf(s,"t2 = %d",i);            

46、0; outtextxy(480,250,s);              /*画合成曲线*/              moveto(60+i-1,sy+90);           sy =y1 + y2;   &#

47、160;          lineto(60 + i, sy+90);              /*合成曲线动态信息显示*/              bar(480,340,600,360);    &#

48、160;         sprintf(s,"SX = -%f",y1/GAIN+y2/GAIN);              outtextxy(480,340,s);              sprintf(s,"t2 =

49、 %d",i);              outtextxy(480,350,s);              delay(2000);   /*为看清过程,中间有延迟*/            &

50、#160; bar(50,410,250,440);/*此句将前的任意键开始的说明擦除*/  sprintf(s,"Press any key to return to the welcome GUI!");       outtextxy(50,420,s);       getch();   /*任意键返回开始的页面*/       closegraph();&#

51、160;      welcomegui();void welcomegui(void)       int sel;       system("cls");   /*调用DOS命令清屏*/       printf(" Welcme to use this programe ");  

52、     printf(" Please select: ");       printf(" 0.Input ");       printf(" 1.Synthesize ");       printf(" 2.Exit ");     

53、60; scanf("%d",&sel);       switch(sel)              case 0 : userinput();  break;       case 1 : synthesize(); break;   case 2 : exit(0);  &

54、#160;    default : printf(" ERROR INPUT! Please input again: ");                    getch();               

55、60;       welcomegui();       # include <graphics.h># include<stdlib.h># include<stdio.h># include<math.h>  main ()        int graphdrv=

56、VGA;      int graphmode=VGAHI;      int a=150,t=0,x=200,u=20,n=1000,y,r=4,i;      float w=0.05,f=0.8;      initgraph(&graphdrv,&graphmode,"tcbgi")&

57、#160;         for(t=0;t<=100;t+)                  for(i=0;i<=100;i+) line(x,u,x,100);          y=a*cos(w*t+f)+250;          cleardvice();          l

温馨提示

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

评论

0/150

提交评论