A/D 与 D/A 转换应用 · 6 大经典实训
本项目围绕 ADC0809 与 DAC0832 两大经典芯片展开,从单通道电压采集、数码管显示、多路循环采样,到 DAC 固定电压、方波与锯齿波输出,全面训练单片机模拟接口的设计与编程能力。
6 大经典实训一览
由简到难,循序渐进掌握 A/D 与 D/A 转换 · 点击任意卡片开始学习
ADC0809 单通道电位器电压采集
A/D转换 · 单通道采样
ADC0809 单通道电压采集数码管显示
A/D转换 · 数码管动态显示
多路模拟电压循环采集实训
通道切换 · 循环采样
DAC0832 输出电压
D/A转换 · 单缓冲输出
DAC 锯齿方信号输出
方波发生 · 高低电平交替
DAC 锯齿波信号输出
锯齿波发生 · 线性递增
ADC0809 单通道电位器电压采集
基础实训1 项目简介
本项目是 A/D 转换入门实验,使用经典 8 位逐次逼近型模数转换芯片 ADC0809,对连接在 IN0 通道的电位器电压进行采集。ADC0809 以总线方式与单片机相连:P0 口分时复用为数据/低 8 位地址总线,地址经 74LS373 锁存,其 Q0~Q2 送 ADD-A~ADD-C 选择通道;WR、RD 信号经译码产生 START/ALE 与 OE,ALE 再经 74LS74 分频作为 ADC 时钟。转换结束后 EOC 经反相送 INT0,中断服务程序读取结果并送 P1 口 8 只 LED 显示;主程序检测完成标志后再次启动转换,实现循环采样。
掌握本项目后,学生将理解 ADC0809 的转换时序、总线接口与通道选择方法,学会使用 MOVX 指令访问片外 A/D 芯片、利用外部中断读取转换结果,为后续多路数据采集与传感器接口设计奠定基础。
2 电路图
电路说明
- • P0.0~P0.7 为数据/低 8 位地址复用总线,经 74LS373 锁存地址
- • 74LS373 输出 Q0~Q2 接 ADC0809 的 ADD-A、ADD-B、ADD-C,Q0~Q2=000 选中 IN0 通道
- • ADC0809 数据口 D0~D7 接回 P0 总线,由 MOVX 读指令取回转换结果
- • WR、RD 经 74LS02 译码产生 START/ALE 与 OE 控制信号
- • 单片机 ALE 经 74LS74 两级分频后作为 ADC0809 的 CLK(约 500kHz)
- • EOC 经反相后接 P3.2(INT0),转换结束产生下降沿申请中断
- • 电位器输出电压接 IN0,参考电压 VREF=5V
- • P1.0~P1.7 接 8 只 LED(共阴接法,输出高电平点亮)
3 仿真演示
仿真说明
- • 程序循环启动转换,每次转换结束由 EOC 触发 INT0 中断读取结果并送 P1 口
- • 旋转电位器改变 IN0 输入电压,P1 口 LED 亮灭组合实时跟随采样值变化
4 程序内容(汇编语言)
;==================================================
; 项目名称:ADC0809 单通道模拟信号采集
; 芯片型号:STC89C52RC
; 硬件接口:
; P0.0~P0.7 = 数据/低 8 位地址复用总线,地址经 74LS373 锁存
; 74LS373 Q0~Q2 = ADC0809 的 ADD-A/ADD-B/ADD-C,000 选中 IN0
; P1.0~P1.7 = 8 只 LED(共阴接法,输出高电平点亮)
; P3.2 = INT0,接 EOC(反相后),下降沿触发
; CLK = 由单片机 ALE 经 74LS74 两级分频提供(约 500kHz)
; 片选地址 = 7FF8H,A2~A0=000 选中 IN0 通道
; 功能说明:循环启动 A/D 转换,每次转换结束后由 INT0 中断
; 读取结果并送 P1 口 8 只 LED 显示
;==================================================
ORG 0000H ; 复位入口地址
LJMP MAIN ; 转初始化程序
ORG 0003H ; INT0 中断服务子程序入口地址
LJMP PIT0 ; 转中断服务子程序
ORG 0100H ; 主程序起始地址,避开中断向量区
; 转换完成标志:中断服务程序置位,主程序检测并清除
FLAG BIT 20H.0
;--------------------------------------------------
; 主程序:初始化中断并循环启动 A/D 转换
;--------------------------------------------------
MAIN:
MOV DPTR,#7FF8H ; 指向 ADC0809,A2~A0=000 选中通道 0
SETB EX0 ; 允许 INT0 中断
SETB IT0 ; INT0 采用下降沿触发
SETB EA ; 开总中断
CLR FLAG ; 清除转换完成标志
LOOP:
MOVX @DPTR,A ; 写片外地址,产生 START/ALE 脉冲启动转换
WAIT:
JNB FLAG,WAIT ; 等待本次转换结束中断
CLR FLAG ; 清除标志,准备下一次采样
SJMP LOOP ; 循环采样
;--------------------------------------------------
; INT0 中断服务程序:读取转换结果送 P1,并置完成标志
;--------------------------------------------------
PIT0:
MOVX A,@DPTR ; 读片外地址,产生 OE 取回 8 位转换结果
MOV P1,A ; 结果送 P1 口,驱动 8 只 LED(1 亮 0 灭)
SETB FLAG ; 置转换完成标志,通知主程序再次启动
RETI ; 中断返回
END
5 评分标准
| 评分项 | 分值 | 评分标准 |
|---|---|---|
| 电路连接 | 25分 | ADC0809 数据、控制、地址线连接正确规范 |
| 控制时序 | 30分 | 总线读写、通道地址与 INT0 中断读取控制正确 |
| 程序编写 | 25分 | 代码正确、规范,注释清晰完整 |
| 功能实现 | 10分 | 采样值变化时 P1 口 LED 显示随之变化 |
| 实训报告 | 10分 | 报告内容完整、整洁 |
6 注意事项与安全规范
输入电压范围
ADC0809 模拟输入电压必须在 0~5V 之间,禁止超过 Vref+
时钟与地址
ADC0809 的 CLK 由 ALE 经 74LS74 分频提供,通道由 74LS373 锁存的地址低 3 位选择
防止短路
接线前确认电源关闭,避免 ADC 数据口与电源或地短路
代码规范
程序必须有完整注释,便于理解 ADC 控制时序
学习要点
实训目标
通过本项目的学习,学生将掌握 ADC0809 模数转换与 DAC0832 数模转换的接口技术,理解模拟量与数字量之间的转换关系,能够独立完成多路数据采集、数码管显示与简单波形发生器的软硬件设计。