内容正文:
任务一 制作锯齿波信号发生器(2)
单片机技术及应用
同步精品课堂
高等教育出版社第 4 版
1
掌握绘制锯齿波信号发生器模块电路原理图的方法
能够搭接锯齿波信号发生器电路
掌握使用 C51 编程控制 DAC0832 产生锯齿波信号
学会使用 Proteus 进行仿真调试程序
理解锯齿波信号发生器的电路原理和编程实现
了解程序流程图的绘制思路
学会焊接锯齿波信号发生器模块电路板
掌握使用 Protel DXP 2004 绘制原理图、Proteus 进行仿真调试的操作
在电子电路设计中,锯齿波信号发生器是常见的信号源。
今天我们将详细学习如何制作一个锯齿波信号发生器,从电路原理图绘制到最终的波形测量。
任务一 制作锯齿波信号发生器- 任务实施
采用D/A转换芯片DAC0832制作一个信号发生器,要求其能够输出锯齿波信号。
任务描述
其作用是将数字信号转换成模拟信号
1.什么是D/A转换?
任务一 制作锯齿波信号发生器- 任务实施
① 启动 Protel DXP 2004,新建一个电路原理图文件,其文件名为 “锯齿波信号发生器模块电路原理图”。
绘制锯齿波信号发生器模块电路原理图 - 启动软件与新建文件
任务一 制作锯齿波信号发生器- 任务实施
② 在元件库 “Miscellaneous Connectors.IntLib” 中查找 “Header 5”(1 个电源插座)、“Header 8”(1 个 I/O 口插座)和 “Header2”(1 个波形输出插座),拖入工作窗口。
③ 在元件库 “NSC Converter Digital to Analog.IntLib” 中查找 DAC0832,拖入工作窗口。
④ 在元件库 “ST Operational Amplifier.IntLib” 中查找运算放大器 μA741,拖入工作窗口。
绘制锯齿波信号发生器模块电路原理图 - 查找并拖入元件
任务一 制作锯齿波信号发生器- 任务实施
⑤ 绘制如图所示的电路。
⑥ 保存该文件。
绘制锯齿波信号发生器模块电路原理图 - 查找并拖入元件
任务一 制作锯齿波信号发生器- 任务实施
① 根据锯齿波信号发生器模块电路元件清单(表中所示)选取元件,用万用表检测元件的好坏。
焊接锯齿波信号发生器模块电路板 - 元件选取与检测
名称 标号 规格 数量
电位器 RP1 10kΩ 1
波形输出端口插座 P3 2 针 1
电源插座 P1 5 针 1
D/A 转换器 U1 20 脚 1
运算放大器 U2 8 脚 1
DIP 插座 20 脚 1
DIP 插座 8 脚 1
数据输出端口插座 P2 8 脚 1
任务一 制作锯齿波信号发生器- 任务实施
② 绘制元件布局图,在万能电路板上依次进行元件的排列、插装。
③ 按工艺要求焊接元件,背面用直径为 0.5 ~ 1mm 的导线连接,直到所有的元件连接并焊完为止。
焊接锯齿波信号发生器模块电路板 - 元件布局与插装
搭接电路
使用最小系统电路板、锯齿波信号发生器模块电路板搭接电路。
任务一 制作锯齿波信号发生器- 任务实施
新建相应的工程文件和 C51 源程序文件,输入以下代码:
编程 - 新建文件与代码引入
//用DAC0832产生锯齿波电压
#include<reg51.h> //包含单片机寄存器的头文件
#include<absacc.h> //包含对片外存储器地址进行操作的头文件
//CS为P2.7引脚,WR为P3.6引脚
void main(void){
unsigned char i;
while(1)
{
for(i = 0; i < 255; i++)
{
XBYTE[0x7fff] = i;
//将数据i送入片外地址07FFFH, 实际上就是通过P0口将数据送入DAC0832
}
}}
任务一 制作锯齿波信号发生器- 任务实施
DAC0832 采用绝对地址访问方式,C51 采用绝对地址访问时需要包含头文件 “absacc.h”。
根据电路连接方式,计算片外存储器地址。本任务中,单片机 P2.7 引脚与 DAC0832 的片选信号 CS 端相连,低电平有效,其二进制数表示的地址见下表,转换成十六进制地址为 0x7fff。
编程 - 绝对地址访问方式
P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 P0.7 ~ P0.0
0 1 1 1 1 1 1 1 11111111
任务一 制作锯齿波信号发生器- 任务实施
XBYTE [0x7fff] = i;
编程 - 数据传送过程
向 DAC0832 写入数据的方法如下:
该语句表示将数据 i 送入片外地址 0x7fff 对应的外部存储器的存储单元中,实际是通过 P0 口将单片机寄存器中的数据送入 DAC0832 内部的寄存器中,该传送过程分为两步,第一步是传送 16 位地址,高 8 位地址由 P2 口传送,低 8 位地址由 P0 口传送,地址传到 DAC0832 后被锁存;第二步是传送 8 位数据,由 P0 口传送。由此,可以看出,P0 口先传地址,再传数据,分时复用。
任务一 制作锯齿波信号发生器- 任务实施
仿真调试程序 - 启动软件与选择元件
① 启动 Proteus7.4 仿真软件,新建一个仿真文件(锯齿波信号发生器.DSN)。
② 在主面板中选择元件选择模式 (Component Mode),单击元件选择按钮 “P”,从元件库中选择需要的元件:单片机芯片(AT89S51)1 个、D/A 转换芯片(DAC0832)1 个、运算放大器芯片(μA741,即 UA741)1 个、电位器 1 个、电容 1 个。
③ 连接仿真电路,添加电源端和接地端,修改元件标号和标称值。
任务一 制作锯齿波信号发生器- 任务实施
仿真调试程序 - 连接电路与观察波形
④ 双击芯片 AT89S51,在弹出的对话框中加载 HEX 文件(锯齿波信号发生器.HEX),修改时钟频率为 12 MHz。
⑤ 在主面板中选择虚拟仪器模式(Virtual Instruments Mode),在信号输出端加一台虚拟示波器。
⑥ 单击仿真按钮,用虚拟示波器观察仿真输出的波形。
任务一 制作锯齿波信号发生器- 任务实施
仿真调试程序 - 连接电路与观察波形
锯齿波信号发生器仿真电路图
任务一 制作锯齿波信号发生器- 任务实施
下载程序,验证功能
将单片机芯片插入编程器的ZIF插座中并锁紧,将编程器与计算机用USB数据线连接。
② 启动 EasyPRO Programmer,选取单片机型号为AT89C51。
③ 加载 HEX 文件。
④ 单击“操作一键通”,完成单片机程序的下载。
⑤ 将单片机芯片插到最小系统板的ZIF 插座处,然后打开电源开关观察 LED 的亮灭。
随堂检测1
在绘制锯齿波信号发生器模块电路原理图时,从哪个元件库中查找 DAC0832?
答案:在元件库 “NSC Converter Digital to Analog.IntLib” 中查找 DAC0832。
在编程中,向 DAC0832 写入数据时,P0 口的作用是什么?
答案:P0 口先传送 16 位地址中的低 8 位地址,地址传到 DAC0832 后被锁存;然后传送 8 位数据。即 P0 口先传地址,再传数据,分时复用。
随堂检测2
焊接锯齿波信号发生器模块电路板时,元件排列插装前需要做什么?
答案:根据锯齿波信号发生器模块电路元件清单选取元件,用万用表检测元件的好坏,并绘制元件布局图。
在仿真调试程序时,如何观察仿真输出的波形?
答案:在主面板中选择虚拟仪器模式,在信号输出端加一台虚拟示波器,单击仿真按钮,用虚拟示波器观察仿真输出的波形。
随堂检测3
说明 “XBYTE [0x7fff]=i” 语句的传送过程。
答案:“XBYTE [0x7fff]=i” 语句的传送过程分为两步。第一步是传送 16 位地址,高 8 位地址由 P2 口传送,低 8 位地址由 P0 口传送,地址传到 DAC0832 后被锁存;第二步是传送 8 位数据,由 P0 口传送。由此可知,P0 口先传地址,再传数据,是分时复用的。
编程时,“XBYTE [0x7fff]=i”语句中,P0 口只传送数据,不传送地址。( )
答案:×
解析:“XBYTE [0x7fff]=i” 语句传送过程中,P0 口先传地址(低 8 位地址),再传数据,是分时复用的,所以该说法错误。
随堂检测4
简述制作锯齿波信号发生器的步骤。
答案:① 绘制锯齿波信号发生器模块电路原理图:启动 Protel DXP 2004,新建文件,在相应元件库中查找并拖入所需元件,绘制电路,最后保存文件。
② 焊接锯齿波信号发生器模块电路板:根据元件清单选取元件并检测好坏,绘制元件布局图,进行元件排列. 插装,按工艺要求焊接元件。
③ 搭接电路:使用最小系统电路板. 锯齿波信号发生器模块电路板搭接电路。
④ 绘制程序流程图:自行绘制。
⑤ 编程:新建工程文件和 C51 源程序文件,输入相应代码。
⑥ 仿真调试程序:启动 Proteus7.4 仿真软件,新建仿真文件,选择元件,连接仿真电路,加载 HEX 文件,添加虚拟示波器,观察波形。
⑦ 下载程序,用示波器测量其输出波形。
1
讨论在编程中,如何调整锯齿波的频率和幅度。分析在仿真调试过程中,可能出现的问题及解决方法。
1. 绘制锯齿波信号发生器模块电路原理图
任务一 制作锯齿波信号发生器(2)
2. 焊接锯齿波信号发生器模块电路板
元件选取与检测
元件布局与插装
焊接元件
启动与新建文件
查找与拖入元件
绘制电路
保存文件
新建文件与代码引入
绝对地址访问方式
数据传送过程
3. 搭接电路
4. 绘制程序流程图
5. 编程
6. 仿真调试程序
感谢观看
24
$$