《常用函数波形发生器的设计》由会员分享,可在线阅读,更多相关《常用函数波形发生器的设计(18页珍藏版)》请在金锄头文库上搜索。
1、真诚为您提供优质参考资料,若有不当之处,请指正。微机系统与应用课程设计实 验 报 告成绩:评语: 教师: 年 月 日 班级: 学号:姓名: 地点: 时间: 常用函数波形发生器的设计一、 课程设计目的1. 掌握微机系统总线与各芯片管脚连接方法,提高接口扩展硬件电路的连接能力。2. 加深对和D/A 芯片的工作方式的理解,学会编写程序,使D/A 转换输出函数的方法。3. 掌握通过A/D 转换进行实时数据采集与处理的设计思路和实现方法。二、 课程设计的内容微机通过DAC0832 接口(OUT2)输出常用函数波形(方波,锯齿波,正弦波等),该波形作为ADC0809 模拟信号输入连到IN0,ADC0809
2、 的输出通过8255 接口送到数据总线,设计连接硬件线路,然后编写波形发生和数据采集程序,将采集的数据(波形)显示在计算机屏幕上。三、系统功能与设计要求1基本功能要求具有友好的人机交互界面,通过鼠标选择相关按钮或菜单对系统进行控制,采集的数据(波形)要以图形的方式实时显示在计算机屏幕上。屏幕显示参考下图:屏幕显示参考以上图形,也可以自行设计界面风格,通过按钮(或下拉菜单)选择要产生的波形,点击“开始”后开始产生波形,并进行数据采集,采集到的数据按照图形坐标显示在计算机屏幕上,点击“停止”后立刻停止输出,重新选择波形后,再次点击“开始”即显示新的波形。2发挥部分(1) 增加频率调节功能。使输出到
3、屏幕上的波形随频率值变化。(2) 增加PWM 信号,占空比可调。缺省为50%。(3) 增加一路信号采集,旋钮电位器的输出端接到ADC0809 的IN1,地址信号ADDA、ADDB、ADDC 分别接K0,K1,K2 开关,波动开关状态为000 或001,分别选择0 通道或1 信号输出到计算机屏幕上显示。四、设计思路微机利用软件编程,通过DAC0832 数模转换输出端口OUT2 输出05V 的连续模拟电压(波形),然后将此模拟电压作为ADC0809 模数转换的一路输入信号接到IN0 端口,地址信号ADDA、ADDB、ADDC 分别接K0,K1,K2 开关,选择0 通道(000),输出的八位数字信号
4、可以连接到8255 的PA 口,控制信号接PB 口和PC 口,通过采集程序实时读取采集到得数据,并输入到微机,最后在计算机屏幕上以图形方式显示出来。注意事项:D/AC0832 和A/DC0809 的采样频率应小于640KHz。五、操作步骤1提交设计方案包括:控制功能实现方案,编程语言,硬件设计方案及硬件连线图,硬件支持环境和软件支持的环境要求。2方案审核系统设计方案经过指导老师审核后,方可以实施操作。3硬件系统实现按照硬件设计方案及硬件连线图连线,经过指导老师认可后,加、电并观察是否正确。如果发现异常,立刻关掉电源,查明原因,解决问题后,再加电观察。4按照功能要求编程,运行,调试六、 撰写课程
5、设计报告及其内容1. 应用系统设计方案2. 系统测试结果3. 课课程设计中遇到的问题及解决办法4. 写出体会与建议七、课程设计实验环境:1. 硬件配置:微机一台 (Pentium 4)微机接口技术实验箱 一个ISA PCI 转接卡 一块连接电缆 一条万用表 一块微机接口技术实验讲义 一本导线、剥线钳等2. 软件环境:Windows XP 平台Visual C+ 6.0 编译器八、应用系统设计方案1. 主程序#include stdafx.h#include Funciton Producer.h#include Funciton ProducerDlg.h#include PCI9052Dll
6、.h#include #ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif#define PI 3.141592654int style=-1;/选择的波形类型int x=70,y=480,a=0;int range=1;int stb=0;double rate=0.5;double frequence=1;int re=1;int timeq=20;/ CAboutDlg dialog used for App Aboutclass CAboutDlg : public
7、 CDialogpublic:CAboutDlg();/ Dialog Data/AFX_DATA(CAboutDlg)enum IDD = IDD_ABOUTBOX ;/AFX_DATA/ ClassWizard generated virtual function overrides/AFX_VIRTUAL(CAboutDlg)protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV support/AFX_VIRTUAL/ Implementationprotected:/AFX_MSG(CAboutDlg)
8、/AFX_MSGDECLARE_MESSAGE_MAP();CAboutDlg:CAboutDlg() : CDialog(CAboutDlg:IDD)/AFX_DATA_INIT(CAboutDlg)/AFX_DATA_INITvoid CAboutDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CAboutDlg)/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CAboutDlg, CDialog)/AFX_MSG_MAP(CAboutDlg)/ No messag
9、e handlers/AFX_MSG_MAPEND_MESSAGE_MAP()/ CFuncitonProducerDlg dialogCFuncitonProducerDlg:CFuncitonProducerDlg(CWnd* pParent /*=NULL*/): CDialog(CFuncitonProducerDlg:IDD, pParent)/AFX_DATA_INIT(CFuncitonProducerDlg)/AFX_DATA_INIT/ Note that LoadIcon does not require a subsequent DestroyIcon in Win32m
10、_hIcon = AfxGetApp()-LoadIcon(IDR_MAINFRAME);void CFuncitonProducerDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CFuncitonProducerDlg)DDX_Control(pDX, IDC_COMBO1, m_style);DDX_Control(pDX, IDC_EDIT_RATE, m_rate);DDX_Control(pDX, IDC_EDIT_RANGE, m_range);DDX_Control(
11、pDX, IDC_EDIT_FREQUENCE, m_frequence);/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CFuncitonProducerDlg, CDialog)/AFX_MSG_MAP(CFuncitonProducerDlg)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_BUTTON_START, OnStart)ON_BN_CLICKED(IDC_BUTTON_STOP, OnStop)ON_WM_TIMER()/AFX_MSG_MAPEND_MESSAGE_
12、MAP()/ CFuncitonProducerDlg message handlersBOOL CFuncitonProducerDlg:OnInitDialog()CDialog:OnInitDialog();/ Add About. menu item to system menu./ IDM_ABOUTBOX must be in the system command range.ASSERT(IDM_ABOUTBOX & 0xFFF0) = IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX AppendMenu(MF_SEPARATOR);pSysMenu-AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);/ Set the icon for this dialog. The framework does this automatically/ when the applications main window is not a dialogSetIcon(m_hIcon, TRUE);/ Set big iconSetIcon(m_hIcon, FALSE);/ Set small icon/ TODO: