logo资料库

单片机课程设计 波形发生器.doc

第1页 / 共22页
第2页 / 共22页
第3页 / 共22页
第4页 / 共22页
第5页 / 共22页
第6页 / 共22页
第7页 / 共22页
第8页 / 共22页
资料共22页,剩余部分请下载后查看
一、题目的意义
二、本人所做的工作
三、课设要求
四、课设所需设备及芯片功能介绍
4.1、所需设备
4.2、芯片功能介绍
五、总体功能图及主要设计思路
5.1、总体功能图
5.2、主要设计思想
六、硬件电路设计及描述
6.1、硬件原理图
6.2、线路连接步骤
七、软件设计流程及描述
7.1、锯齿波的实现过程
7.2、三角波的实现过程
7.3、梯形波的实现过程
7.4、方波的实现过程
7.5、正弦波的实验过程
7.6、通过开关实现波形切换和调频、调幅
八、程序调试步骤与运行结果
8.1、调试步骤
8.2、运行结果
九、课程设计体会
十、参考文献
十一、源代码及注释
单片机课程设计报告 0 目 录 一、题目的意义 ......................................... 1 二、本人所做的工作 ..................................... 1 三、课设要求 ........................................... 2 四、课设所需设备及芯片功能介绍 ......................... 2 4.1、所需设备 ..................................... 2 4.2、芯片功能介绍 ................................. 2 五、总体功能图及主要设计思路 ........................... 5 5.1、总体功能图 ................................... 5 5.2、主要设计思想 ................................. 5 六、硬件电路设计及描述 ................................. 7 6.1、硬件原理图 ................................... 7 6.2、线路连接步骤 ................................. 7 七、软件设计流程及描述 ................................. 7 7.1、锯齿波的实现过程 ............................. 7 7.2、三角波的实现过程 ............................. 8 7.3、梯形波的实现过程 ............................. 9 7.4、方波的实现过程 .............................. 11 7.5、正弦波的实验过程 ............................ 11 7.6、通过开关实现波形切换和调频、调幅 ............ 12 八、程序调试步骤与运行结果 ............................ 15 8.1、调试步骤 .................................... 15 8.2、运行结果 .................................... 15 九、课程设计体会 ...................................... 17 十、参考文献 .......................................... 18 十一、源代码及注释 .................................... 18 0
单片机课程设计报告 1 一、题目的意义 (1)、利用所学单片机的理论知识进行软硬件整体设计,锻炼 学生理论联系实际、提高我们的综合应用能力。 (2)、我们这次的课程设计是以单片机为基础,设计并开发能 输出多种波形(正弦波、三角波、锯齿波、方波、梯形波等)且 频率、幅度可变的函数发生器。 (3)、掌握各个接口芯片(如 0832 等)的功能特性及接口方法, 并能运用其实现一个简单的微机应用系统功能器件。 (4)、在平时的学习中,我们所学的知识大都是课本上的,在 机房的练习大家也都是分散的对各个章节的内容进行练习。因此, 缺乏一种系统的设计锻炼。在课程所学结束以后,这样的课程设 计十分有助于学生的知识系统的总结到一起。 (5)、通过这几个波形进行组合形成了一个函数发生器,使得 我对系统的整个框架的设计有了一个很好的锻炼。这不仅有助于 大家找到自己感兴趣的题目,更可以锻炼大家单片机知识的应用。 二、本人所做的工作 本次课设组员:刘正、邓强、刘志 组长:刘正 经过了这一个星期的时间,我们已经基本完成了老师所提出 的课程设计要求。其中,我本人是组长整个系统的设计框架和编 写代码由我亲自完成。由于我们上课没有接触过正弦波因此通过 在图书馆和网络上找资料已经顺利完成。然后通过上机连接线路 把电路板和 PC 机相连接之后对每一个波形单个调试完成后,再组 合起来通过开关控制波形的输出,最后实现老师所要求的功能。 1
单片机课程设计报告 2 三、课设要求 1、设计接口电路,将这些外设构成一个简单的单片机应用系 统,画出接口的连接图。 2、编写下列控制程序 (1) 能输出正弦波、三角波、锯齿波、方波、梯形波。 (2) 由 K0-K4 键分别控制以上所述波形的产生。 (3) 根据开关对输出波形的频率、幅度进行控制调节。 四、课设所需设备及芯片功能介绍 4.1、所需设备 单片机最小开发系统,DAC0832 一片,PC 机一台,运算放大 器,其他器件任选。 4.2、芯片功能介绍 (1)、DAC0832 芯片介绍: DAC0832 为一个 8 位 D/A 转换器,单电源供电,在+5~+15V 范围 内均可正常工作。基准电压的范围为±10V,电流建立时间为 1μ s,CMOS 工艺,低功耗 20mW。DAC0832 的内部结构框图如下图所示。 < 图 4 ―― 1 > DAC0832 的外部引脚及功能介绍图如下: 2
单片机课程设计报告 3 (2)、DAC0832 的应用: < 图 4 ―― 2 > DAC0832 一是用作单极性电压输出,二是用作双极性电压输 出,最后是用作程控放大器。 (3)、DAC0832 与 8031 的连接方式: DAC0832 的与单片机的连接方式有三种方式:一、单缓冲 二、双缓冲、三是直通方式。本程序采用的是方式一即单缓冲方 式,ILE 为高电平,CS、WR1、WR2、XFER 为低电平。 < 图 4 ―― 3 > 电源及时钟引脚: Vcc、Vss;XTAL1、XTAL2 3
单片机课程设计报告 4 控制引脚 PSEN、ALE、EA、RESET(即 RST). I/O 口引脚: P0、P1、P2、P3 为 4 个 8 位 I/O 口的外部引脚. RST/VPD(9 脚)RST: 单片刚接上电源时,其内部各寄存器处于随机状态,在此脚 输入 24 个时钟周期宽度以上的高电平将使单片机复位。单片机正 常工作时,此脚应为≤0.5V 低电平。VPD:备用电源输入端。当 Vcc 下降到低于规定的值,而 VPD 在其规定的电压范围内(5±0.5V) 时,VPD 就向内部 RAM 提供备用电源以保持内部 RAM 的数据。 ALE/PROG(30 引脚)ALE 引脚输出为地址锁存允许信号,当 单片机上电工作 后,ALE 引脚不断输出正脉冲信号. 当访问片外 存储器时,ALE(地址锁存允许信号)输出脉冲的负跳沿用于 16 位 地址的低 8 位锁存信号。不访问片外存储器,ALE 端以时钟振荡 器频率的 1/6 固定输出正脉冲。在访问外部数据存储器时(执行 MOVX 指令),ALE 会丢失一个 ALE 脉冲。 MCS-51 单片机的片外总线结构 < 图 4 ―― 4 > MCS-51 系列单片机片外引脚可以构成如上图所示的三总线结构: 地址总线(AB) 数据总线(DB) 控制总线(CB)8031 各 个口的功能定义 P0 口:双向 8 位三态 I/O 口,此口为地址总线(低 8 位)及数据 总线分时复用口,可带 8 个 LSTTL 负载。 P1 口:8 位准双向 I/O 口,可带 4 个 LSTTTL 负载。 P2 口:8 位准双向 I/O 口,与地址总线(高 8 位)复用。 P3 口:8 位准双向 I/O 口,双功能复用口。 4
单片机课程设计报告 5 五、总体功能图及主要设计思路 5.1、总体功能图 函数发生器的设计 K0 键 锯 齿 波 K1 键 三 角 波 K2 键 梯 形 波 K3 键 方 波 K4 键 正 弦 波 K5 调 频 调 幅 < 图 5 ―― 1 > 5.2、主要设计思想 从此题的要求我的设计思路分以下几步: (一)、课设需要各个波形的基本输出。如输出锯齿波、三角 波、梯形波、方波、正弦波。这些波形的实现的具体步骤:锯齿 波实现很简单,只需要一开始定义一个初值,然后不断的加 1, 当溢出后又重初值开始加起,就这样循环下去。三角波的实验过 程是先加后减,我的一开始的实现方法是先是从 00H 开始加 1 直 到溢出后就执行减 1 操作,就这样不断调用这个循环。梯形波的 实现过程是前后加和减的速度不同而已,如你可以在上升加的步 数大一些,减时少一些。方波的实现方法是连续输出一个数,到 某个时候就改变一下值,可以把值定义为正极性的,也可以是负 极性。正弦波的实现是非常麻烦的。它的实现过程是通过定义一 5
单片机课程设计报告 6 些数据,然后执行时直接输出定义的数据就可以了。在设计之初, 我一直都在尝试使用数学的泰勒级数展开来计算输出波形,使用 这种方法,实现起来相对来说要比较困难一点,而且会使得频率 会下降。要使得它达到更高的频率,就得另辟蹊径了。分析一下 为什么频率上不去,主要原因在于,使用单片机进行正弦函数的 运算时占去了不少时间,如果去掉这一计算过程波形的频率应该 大有提高,另外就是 CPU 时钟频率没有调至最高,以及 DAC 转换 过程需要时间。为了达到更高的频率,首先就要免去单片机的计 算负担,我使用的解决方法是人为计算出要输出的点,然后建一 个表通过查表来进行输出,这样主要工作任务就落到了建表的过 程中。这样做的好处在于,查表所耗费的时钟周期相同,这样输 出的点与点之间的距离就相等了,输出的波形行将更趋于完美, 当然更让我们感到的高兴的是它输出波形的频率将近达到了 100K 赫兹,能够满足我们设计的扩展要求了。为了实现频率的调 整,我在一个正弦波周期里建了两百个点,如果我们隔一个取点 的话,且在 CPU 时钟频率不改变的情形下,正弦波频率将相对于 前面的频率提高将近一倍。这样我们就得到了解决频率调整的方 法,首先进行 CPU 时钟频率选择,再调整一个正弦函数一个周期 输出的点数,幅度的调节是通过初始幅度设置再通过外部放大电 路来调节,设计程序流程图如图所示。 (二)、通过 P3 口和开关 K0-K5 相连接来控制各个波形的输 出。能根据 k0-k5 键状态进行波形切换,开关键向上接“1”,产 生波形,向下拔接“0”,无波形输出。如 K0 键向上拔,K1-K4 键 向下拔,产生锯齿波; K1 键向上拔,K0、K2-K4 键向下拔,产生 三角波;……以此类推。通过 K5 键来控制调频/调幅。 6
单片机课程设计报告 7 六、硬件电路设计及描述 6.1、硬件原理图 < 图 6 ―― 1 > 6.2、线路连接步骤 (1)D/A 区 0832 片选信号 CS 插孔和译码输出 Y2 插孔相连。 (2)用排线将 D/A 区 D0~D7 连到 BUS2 区 XD0~XD7。 (3)将 0832 的 WR 信号线连到 BUS3 区的 XWR 上。 (4)D/A 区的±12V 插孔分别与外置电源的±12V 端相连。 (5)W2 区的 VIN 接+12V,如果电源内置,VIN 插孔和 D/A 区的+12V 插孔相连。 (6)D/A 区的 Vref 接 W2 区 Vref,并调节 W2 使 Vref=+5V。 (7)K0-K5 开关分别接到 P3 口的 P3.0-P3.5 七、软件设计流程及描述 7.1、锯齿波的实现过程 锯齿波的实现过程是首先定义一个初值然后进行加法操作, 加的步数的多少则根据要求的频率来进行。然后加到某个数之后 7
分享到:
收藏