1. 实验目的
(1)了解A/D转换与单片机的接口方法,了解单片机如何进行数据采集;
(2)掌握ADC0808转换性能及编程方法;
(3)了解D/A转换的基本原理;
(4)掌握DAC0832的性能和编程方法。
2. 实验设备
计算机、Proteus仿真软件、Keil编程软件。
3. 实验原理
绘制A/D、D/A转换的实验仿真电路,如图1-1所示。模数转换芯片选用ADC0808,模数转换芯片的输入端连接激励源。单片机通过P0口将A/D转换后的数字量读入单片机,并通过P1口发送到数模转换芯片。数模转换芯片选用DAC0832,其转换完的信号,接运算放大器LM358N,最后的输出信号通过电压表和电压探针的仿真图表输出模式显示出来。
(a)单片机最小系统
(b)A/D转换电路
(c)D/A转换电路
图1-1 实验电路
4. 实验操作
(1)在Proteus7.8中绘制实验电路原理图
①按表1-1选择实验所用元件。
表1-1 实验元件列表
元件名称 | 关键字 | 库 | 参数 |
单片机 | AT89C52 | MCS8051 | 无 |
模数转换芯片0808 | ADC0808 | ANALOG | 无 |
数模转换芯片0832 | DAC0832 | NATDAC | 无 |
电阻 | RES | DEVICE | 根据原理图选择 |
电容 | CAP | DEVICE | 根据原理图选择 |
电解电容 | CAP-ELEC | DEVICE | 10uF |
LM358N | LM358N | OPAMP | 无 |
按钮 | BUTTON | ACTIVE | 无 |
晶振 | CRYSTAL | DEVICE | 12MHz |
②按照图1-1所示原理图,绘制实验电路(单片机晶振和复位电路可以不画)。
(2)在Keil 4中编写程序代码
①选择project→New Project,新建一个空工程,保存在与原理图同一目录。芯片选择Atmel/AT89C52。
②新建文件“main.c”,在“Source Group 1”处点击右键,选择“Add Files to Group...”将main.c文件加入该工程,并将附录中的代码复制到main.c中。
③在工程名上点右键,选择“Options for Target...”设置工程属性,在Target选项卡中,设置晶振频率为12MHz;在Output选项卡中勾选“Create HEX File”。编译工程,生成HEX文件。
(3)调试程序
①在Proteus中,双击单片机芯片,在Program File处选择已生成的HEX文件,在Clock Frequency处设定时钟频率为12MHz。
②运行仿真,改变输入信号的电压(范围-5V~5V,任意选择),观察P0口的状态和输出电压值。记录在表1-2中。
表1-2 实验数据记录
输入电压 | 输出电压(测量值) | P0(BIN) | P0(HEX) |
-5V | -5V | 0000 0000 | 0x00 |
5V |
③在左侧快捷工具栏中选择“图表模式”,选择“ANALOGUE”,在画面空白处添加图表。在图表上点击右键,选择“添加曲线”,分别添加输入电压和输出电压的信号。
④改变输入信号的形式(选择激励源模式,输入不同类型的信号),在图表上点右键,选择“运行仿真”,观察并记录输出端输出的波形。
⑤在“模板/设置设计默认值”中设置画面底色为白色,在“模板/设置图形颜色”中设置图表背景为白色、图表标题为深灰色、图表文字为黑色,设置合适的轨迹颜色,框选需要保存的电路图,并粘贴到实验报告中。