基于VC的虚拟信号发生器的设计.docx
- 文档编号:4519316
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:14
- 大小:130.33KB
基于VC的虚拟信号发生器的设计.docx
《基于VC的虚拟信号发生器的设计.docx》由会员分享,可在线阅读,更多相关《基于VC的虚拟信号发生器的设计.docx(14页珍藏版)》请在冰豆网上搜索。
基于VC的虚拟信号发生器的设计
目录
1.课程设计目标………………………………………………………………………………3
1.1设计目的………………………………………………………………………………3
1.2设计内容………………………………………………………………………………3
1.3问题描述………………………………………………………………………………3
1.4问题分析………………………………………………………………………………3
2.VS编程软件简介……………………………………………………………………………3
2.1公司简介………………………………………………………………………………3
2.2主要功能………………………………………………………………………………4
3.课程设计过程………………………………………………………………………………4
3.1编程环境及工具………………………………………………………………………4
3.2程序设计过程概述……………………………………………………………………4
3.3程序流程图……………………………………………………………………………5
3.4功能实现………………………………………………………………………………7
3.4.1程序初始化的实现………………………………………………………………7
3.4.2变量范围的确定…………………………………………………………………8
3.4.3程序显示的初值…………………………………………………………………8
3.4.4图像输出的过程:
描点连线……………………………………………………9
3.4.5改变三个属性并重新显示………………………………………………………12
4.程序测试与运行结果………………………………………………………………………13
5.课程设计总结………………………………………………………………………………15
5.1课程设计计划执行情况………………………………………………………………15
5.2我理解的虚拟信号发生器……………………………………………………………15
附录参考文献…………………………………………………………………………………16
1课程设计概述
1.1设计目的
(1)熟练使用编程语言开发平台
(2)掌握基本库函数的应用
1.2设计内容
本程序应会实现以下功能:
(1)能够选择测试通道,对每个通道能够独立操作
(2)测试数据实时显示、动态刷新
(3)提供多种数据处理函数
(4)数据能够存储、且存储数据格式可选
1.3问题描述
(1)能选择产生多种信号
(2)动态改变信号的频率、幅值和周期数
(3)能够随时进行数据保存
(4)实现数据的回显
1.4问题分析
(1)FZ,ZQS,PL是定义的全局变量
(2)定义波形为数组元素,如正弦波,三角波等
(3)利用循环实现不同频率,幅值的波形的输出
(4)调用函数实现波形的输出
2VS编程软件简介
2.1公司简介
VisualStudio是一套完整的开发工具集,用于生成ASP.NETWeb应用程序、XMLWebServices、桌面应用程序和移动应用程序。
VisualBasic、VisualC++、VisualC#和VisualJ#全都使用相同的集成开发环境(IDE),利用此IDE可以共享工具且有助于创建混合语言解决方案。
另外,这些语言利用了.NETFramework的功能,通过此框架可使用简化ASPWeb应用程序和XMLWebServices开发的关键技术。
2.2主要功能
创建满足关键性要求的多层次的智能客户端、Web、移动或基于MicrosoftOffice的应用程序。
使用VisualStudio2010,专业开发人员能够:
使用改进后的可视化设计工具、编程语言和代码编辑器,享受高效率的开发环境 在统一的开发环境中,开发并调试多层次的服务器应用程序 使用集成的可视化数据库设计和报告工具,创建SQLServer2005解决方案 使用VisualStudioSDK创建可以扩展VisualStudioIDE的工具 Microsoft为单独工作或在小型团队中的专业开发人员提供了两种选择,VisualStudio2005ProfessionalEdition和用于MicrosoftOffice系统的VisualStudio2005工具。
每种版本都在标准版的特性上进行了扩展,包括用于远程服务程序开发和调试、SQLServer2005开发的工具,以及完整的、没有限制的开发环境。
每种产品都可以单独购买或打包定购。
专业开发人员喜欢自由的使用.NETFramework2.0,它是一种稳健的、功能齐备的开发环境,支持创建扩展VisualStudio集成开发环境的工具。
3课程设计过程结果
3.1编程环境及工具
编程环境为VC++6.0,基于Windows系统平台、可视化的集成开发环境。
应用工具主要为MFC,它的源程序按C++语言的要求编写,并加入了微软提供的功能强大的MFC(MicrosoftFoundationClass)类库。
MFC中封装了大部分WindowsAPI函数和Windows控件,它包含的功能涉及到整个Windows操作系统。
MFC不仅给用户提供了Windows图形环境下应用程序的框架,而且还提供了创建应用程序的组件,这样,开发人员不必从头设计创建和管理一个标准Windows应用程序所需的程序,而是从一个比较高的起点编程,故节省了大量的时间。
另外,它提供了大量的代码,指导用户编程时实现某些技术和功能。
3.2程序设计过程概述
利用VC++做一个虚拟信号发生器,应用C++编程及VC++的可视化功能制作窗口、完成信号的输出。
其中利用VC++自带的正弦波、方波、三角波和电平信号图像的函数,用C++编程调用这些函数,进行图像输出。
具体来说,就是通过VC++软件建立一个单文档MFC应用程序(如图2-2-1)及对话框(如图2-2-2),经过添加控件(如图2-2-3)及对控件进行初始值、数值范围等功能的定义,添加代码是其输出所需波形的图像,这样一个虚拟信号发生器就基本完成了
图2-2-1
图2-2-2
图2-2-3
3.3程序流程图
3.4功能实现
3.4.1程序初始化的实现
//CA11Dlgdialog
CA11Dlg:
:
CA11Dlg(CWnd*pParent/*=NULL*/)
:
CDialog(CA11Dlg:
:
IDD,pParent)
{
//{{AFX_DATA_INIT(CA11Dlg)
m_PL=0.0;
m_ZQS=0;
m_FZ=0.0;
//}}AFX_DATA_INIT
//NotethatLoadIcondoesnotrequireasubsequentDestroyIconinWin32
m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
3.4.2变量范围的确定
voidCA11Dlg:
:
DoDataExchange(CDataExchange*pDX)
{
CDialog:
:
DoDataExchange(pDX);
//{{AFX_DATA_MAP(CA11Dlg)
DDX_Control(pDX,IDC_BX,m_bx);
DDX_Text(pDX,IDC_PL,m_PL);
DDV_MinMaxDouble(pDX,m_PL,0.1,100.);
DDX_Text(pDX,IDC_ZQS,m_ZQS);
DDV_MinMaxInt(pDX,m_ZQS,1,10);
DDX_Text(pDX,IDC_FZ,m_FZ);
DDV_MinMaxDouble(pDX,m_FZ,1.,10.);
//}}AFX_DATA_MAP
}
3.4.3程序显示的初值
CStringstr[6]={"正弦波","三角波","方波","电平信号"};
inti,nIndex;
for(i=0;i<5;i++)
{
nIndex=m_bx.AddString(str[i]);
m_bx.SetItemData(nIndex,i);
}
m_bx.SetCurSel(0);
m_FZ=5;
m_PL=10;
m_ZQS=2;
UpdateData(FALSE);
returnTRUE;//returnTRUEunlessyousetthefocustoacontrol
3.4.4图像输出的过程:
描点连线
voidCA11Dlg:
:
OnOK()
{
//TODO:
Addextravalidationhere
/*
CPaintDCdc(this);
CRectrect;
GetClientRect(&rect);
CPointaPoint[500];
dc.Polyline(aPoint,MaxNum);*/
//CDialog:
:
OnOK();
intm_BXNum,i,j;
doublePI=3.1415926;
double*Data1,kk;
intnIndex=m_bx.GetCurSel();
if(nIndex!
=CB_ERR)
m_BXNum=m_bx.GetItemData(nIndex);
else
m_BXNum=0;
intperNum,PerMax;
perNum=(int)(1000/m_PL/5);
PerMax=perNum*m_ZQS;
Data1=(double*)malloc(PerMax*sizeof(double));
if(m_BXNum==0)
{
for(i=0;i { kk=-m_FZ*sin(PI/perNum*2*i); for(intj=0;j { Data1[j*perNum+i]=kk; } } } elseif(m_BXNum==1) { doublenum1=perNum*0.25; for(i=0;i { if(i<=num1) kk=i*(m_FZ/num1); elseif(i<=num1*3) kk=i*(-m_FZ/num1)+2.0*m_FZ; else kk=i*(m_FZ/num1)-4.0*m_FZ; for(j=0;j { Data1[j*perNum+i]=kk; } } } else { for(inti=0;i { if(i kk=-m_FZ; else kk=m_FZ; for(intj=0;j { Data1[j*perNum+i]=kk; } } } CPointaPoint; CDC*dc=GetDC(); CRectrect; GetClientRect(&rect); intnWidth=rect.Width()-10; intnHeight=(rect.Height()-76)/2; dc->Rectangle(10,10,nWidth,nHeight*2); dc->MoveTo(10,nHeight); dc->LineTo(nWidth,nHeight); dc->MoveTo(10,nHeight); for(i=0;i { aPoint.x=10+(i*(nWidth-10))/PerMax; aPoint.y=(int)(nHeight+Data1[i]*nHeight/10); dc->LineTo(aPoint); } } 3.4.5改变三个属性并重新显示 voidCA11Dlg: : OnChangePl() { //TODO: IfthisisaRICHEDITcontrol,thecontrolwillnot //sendthisnotificationunlessyouoverridetheCDialog: : OnInitDialog() //functionandcallCRichEditCtrl().SetEventMask() //withtheENM_CHANGEflagORedintothemask. //TODO: Addyourcontrolnotificationhandlercodehere UpdateData(TRUE); } voidCA11Dlg: : OnChangeFz() { //TODO: IfthisisaRICHEDITcontrol,thecontrolwillnot //sendthisnotificationunlessyouoverridetheCDialog: : OnInitDialog() //functionandcallCRichEditCtrl().SetEventMask() //withtheENM_CHANGEflagORedintothemask. //TODO: Addyourcontrolnotificationhandlercodehere UpdateData(TRUE); } voidCA11Dlg: : OnChangeZqs() { //TODO: IfthisisaRICHEDITcontrol,thecontrolwillnot //sendthisnotificationunlessyouoverridetheCDialog: : OnInitDialog() //functionandcallCRichEditCtrl().SetEventMask() //withtheENM_CHANGEflagORedintothemask. //TODO: Addyourcontrolnotificationhandlercodehere UpdateData(TRUE); } 4程序测试及运行结果 在软件得到实现之后,对所有项目进行保存,并且编译运行。 在编译运行中,很有可能会出现编译错误等,这种情况下就要返回到源代码中,对照控件功能的添加和调用的函数来检查源代码的正确性。 图1应用程序初始状态 图2方波正确运行结果 图3电平信号正确运行结果 图4三角波正确运行结果 图5正弦波正确运行结果 5课程设计总结 5.1课程设计计划执行情况 2010年12月28日~2010年12月30日: 查阅相关资料 2010年12月31日~2011年1月3日: 设计方案,编写程序并调试 2011年1月4日~2011年1月6日: 完成课程设计说明书 5.2我理解的虚拟信号发生器 通过这次虚拟信号发生器的设计,使我了解到信号发生的基本过程,也使我学会如何运用VC++来做基本的编程和制作对话框。 附录参考文献 1谭浩强.C程序设计.北京: 清华大学出版社,2005. 2郑阿奇.VisualC++6.0编程.北京: 清华大学出版社,2005. 3郑阿奇.VisualC++实用教程.北京: 电子工业出版社,2000. 4杨乐平,李海涛.虚拟仪器技术概论.北京: 电子工业出版社,2003. 5张易知.虚拟仪器的设计与实现.西安: 西安电子科技大学出版社,2002.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 VC 虚拟 信号发生器 设计