1、 单片机课程设计报告题 目 波形发生器 专 业 电气工程及其自动化 班 级 电气 081 学生姓名 张 洁 学 号 3080421018 指导老师 王水鱼 西安理工大学2010年秋季学期起止时间: 2011 年 1月 10日至 2011年 1月 14日1目 录1. 设计目的22. 设计任务23. 设计指标与技术要求24总体设计思路25. 总体设计及各模块功能分析35.1 硬件部分35.2 软件部分66. 仿真结果167. 系统调试及问题分析168. 设计总结179. 参考文献182波形发生器设计一设计目的培养理论联系实际的设计思路,训练综合运用电路设计和有关必修课程的理论,结合生产实际分析和解
2、决工程实际问题的能力,巩固,加深和扩展有关电子类方面的知识和能力。通过本次课程设计,应加强培养学生如下的能力:(1) 加强自身独立的动手能力和思考解决问题的能力(2) 提高学生的创造能力(3) 学会使用 PROTEUS软件二设计任务设计一个波形发生器,能产生三角波,锯齿波,方波,正弦波。三设计指标与技术要求1.使用 MSC-51单片机系统2设计电路使其能产生三角波,锯齿波,方波,正弦波。3采用 D/A转换器4编写程序并进行调试四总体设计思路本次课程设计的要求是设计一个波形发生器,可以产生方波,三角波,锯齿波和正弦波四种不同的波形。根据要求,首先需要一个开关选择电路,进行四种波形的选择,一个开关
3、对应一个3波形,选择好所要产生的波形后,接下来就是要设计能产生该波形的电路,根据要求使用 MSC-51单片机来执行某一波形的发生程序,产生输出波形的数字量,再向 D/A转换器的输入端发送数据,将其转化成模拟量,再经过滤波电路进行滤波,然后将滤波后的波形送入示波器,从而可直观的看到该电路产生的波形,并判断输出结果与预期的结果是否一致。五总体设计及各模块功能分析5.1硬件部分1总体设计电路及原理图单片机MSC-51输出波形D/A 转换器运放转换电路示波器图 1如图 1所示为波形发生器的总体设计电路图,首先有一个开关选择电路,由此可选择波形发生器所产生的波形,不同的开关对应不同的波形;之后再由 MS
4、C-51产生输出波形的数字量,然后再经过一个由 D/A转换器构成的转换电路,将单片机产生的波形的数字量转开关示波器4换成模拟量,再经过滤波电路将其送入示波器进行显示。如图 2所示为总体设计原理图:5图 262各模块功能分析及说明(1)开关选择电路在该部分中,可通过不同的开关,选择不同的波形。首先分别将四个开关与 P1口的低四位相连,之后可通过开关的开或者关状态向 P1口对应端口输入高低电平,开关打开时向 P1口输入低电平信号,开关闭合时向 P1口输入高电平信号。(2)AT89C51 单片机控制系统 在该电路中,P0 口与 D/A转换器相连接;P2.0-P2.6 与数码管相连接,构成数字显示电路
5、(注:此时需加一个三极管驱动电路进行驱动) ,即 1是三角波,2 是锯齿波,3 是方波,4 是正弦波,P2.7与 D/A转换器的片选端 CS相连接进行片选;P1 口的低四位与开关选择电路连接,进行不同波形的选择,同时,P3.6 与 D/A转换器的WR端相连接。(4) 数码管及示波器显示电路&.数码管显示电路:在开关选择电路的基础上,当查询到P1口的某一端口为低电平时,即可调用相应的子程序,并点亮相应的数码管段,正确的显示数字,即 1是三角波,2是锯齿波,3 是方波,4 是正弦波。由于使用的是共阳极数码管,故数码管应用三极管做驱动,此时三极管的基极接相应的 P2并行口,发射极接数码管相应的段选端
6、,集电极均接高电平。数码管显示电路如图 3所示:7图 3&.示波器显示电路:如图 4所示为示波器及运算放大器构成的电路: 图 48当开关选择电路查询到 P1口的低四位的某一端口为低电平时,随即转向相应的产生波形的子程序,显示出相应的波形,即可直观的观察到波形的变化并进行相应的调整。(5) DAC0832转换电路如下图所示为 DAC0832芯片,DAC0832 是采样频率为八位的 D/A转换芯片,集成电路内有两级输入寄存器。DAC0832芯片具备双缓冲,单缓冲和直通三种输入方式,以便适应于各种电路的需要。因为系统只要求一路 D/A转换,故我们采用的是单缓冲方式。DAC0832 输出的是电流,而在
7、该电路中要求输出电压,所以应先将输出电流转换成电压,再将其输出,此时可经过一个外接的运算放大器将电流转换成电压,再将转化后的电压输出。连线时其片选端 CS与 P2.7相连,WR1 与 P3.6相连接,ILE 和 VCC接高电平,GND,WR2和 XFER均接地,输出口 IOUT1和 IOUT2接运算放大电路的输入端。(6)运放转换电路如图 4所示为运放的转换电路,可将输入电流转化为输出电压。在该部分中,运算放大器的反相输入端接 DAC08329的 IOUT1端,正相输入端接 DAC0832的 IOUT2端,并接地,同时其出端口接示波器的 B输入端。5.2. 软件部分1. 主程序流程图如上图所示为主函数流程图2. 程序设计(1) 主程序的设计在 main中,先将 temp定义为无符号数,在使用 while 循环,再调用 keyscan子函数,并将返回值赋给 temp,在使用 switch语