C语言程序设计报告(刘祥)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C语言模拟示波器

《C 语言程序设计》课程设计

学院名称:贵州航天职业技术学院

学生姓名:刘祥

专业班级:08级计算机网络技术

指导老师:陈美成

完成日期:2010年1月10日

一、摘要:

本程序功能相对简单,外观框架也相对简单,用户利用圆形的按钮实现各种功能的简单操作,通过调用小组成员所各自完成的功能函数的调用实现整体程序效果。针对人类的视觉特点利用重画算法实现各种信号波模拟。本程序组长刘祥,小组成员王晓水,粟泽清,程远航共同完成。

二、关键字

1,示波器2,振幅3,周期4,调幅

三、正文部分

1、引言:

对于本次课程设计虽然做得不理想,但它的确是我们的第一次所编写的程序,为了这个程序,小组成员付出了很大的努力。虽然曾经有过要放弃的想法,但是最终还是坚持了下来并完成了该程序。

在本程序中实现了用户使用按钮对各种功能的操作。同过网络的手段有网络上获得程序所需的字库文件“HZK16”,并在程序中编写简单的函数对字库文件进行操作,因而实现了汉字的正常显示。

通过本次课程设计,使我们更加了解了C语言的重要性,又由其中明白了我们曾经的学习的不足,导致现在做程序出现非常多的漏洞而不能解决。因此我们要在以后的学习生活中要更加努力,争取能写出更好的程序。

2、算法分析:

(1)运用for循环和if语句的嵌套实现按钮中半径实线按照一定的角度旋转(Q=i/180.0*Pi),然后通过旋转的度数作为控制参数控制各种波的变化情况。

(2)鼠标的支持这一功能主要使用了中断处理来完成。

(3)汉字显示本身图形模式只能支持点阵汉字,于是我们写了一个函数来获取汉字所对应的汉字字库的点阵(1,0)然后,通过putpixel()将为1点打印使之显示出来。从而完成汉字的显示问题。

(4)测量功能的实现这一部分功能主要靠点击两个按钮来先选取坐标,而这两个按钮是以文字的形式存在的,并结合坐标变换来实现。

(5)主框架主要实现方法就是:先分析该界面主要有哪些模块组成,并找出这些模块的共性。然后,抽象为一个,再通过函数重用,函数递归调用完成整个主界面的打造。由此页可看出该程序通过各种法对程序源码进行了许多优化。

3 技术难点及解决的方案:

难点1:

在对函数进行重调用和各个图形模块的重条用时间很难协调,造成程序的漏洞突出。

解决方法:

在一个循环内部先将画点或画线的颜色设为与背景是相同,接着将上次具有其它颜色的图像用背景颜色所覆盖,马上在后一位置上又画一个与它一样的图形,然后调用系统的一个delay()来延时。

难点2:

主界面各种函数的编写和如何配合其它功能函数的显示与调用。

解决方法:

编写一个能够利用递归的约束条件,通过对各种可能或者限定的条件进行判断,当满足某个条件或者不符合某个条件时执行相应的函数调用或者跳出某个函数。

难点3:

各种波形产生产生函数的编写与调用。

解决方法:充分利用互联网的优势,多多查阅相关资料,对相应的程序代码进行分析与仿最终做到能够产生简单的波形。通过就是应用周期性去完成。首先,绘出前一个周期的行状,之后所有图像全由周期性完成。

4、功能框图和程序流程图:

(1),shiboqi.c

(2)、Function.c

开始

Ini();Main2();Graphics();

inta=0,b=0,c=0,a_old=0,b_old =0;

c==0

GetMouse(&a,&b,&c);

a<0

b<0

a>getmaxx()-R

b>getmaxy()-R

a!=a_old||b!=b

_old

putimage(a_old,b_old,ball,0); a_old=a;b_old=b;

*x=a;*y=b;*z=c;

FILE*fp;

(fp=fopen("hzk

16","rb"))==N

printf("Cant open hzk16!");

*s

qh=*s-0xa0;

i=0

i<16

k=0

k<8

putpixel(x+8*j+k,y+i,colour); k++

i++

s+=2;

fclose(fp);

unionREGSinregs,outregs; inti,dr=r/5; i=0 i<=360 i+=18 r>10 Q=i/180.0*Pi; i%90==0 line(x+r*cos(Q),y+r*sin(Q),x +(r-dr)*cos(Q),y+(r-dr)*sin(Q setcolor(3); setcolor(7); r==30 sprintf(buf,"%d",i);

inti,j,x,y;

j=up

j<=down

x=(int)(i-left)/scale;

j++

inti;

i=151

i<=400

i+=8

i=117

i<=370

i+=8

inti,dr=r/8;

i=0

i<=360

i%90==0

setcolor(3);

Q=i/180.0*Pi;

i+=18

setcolor(2);

inti;

i=130

i<=410

i+=30

hanzi16(200,55,"波型选择

",2);

相关文档
最新文档