SJ-008 实训项目 · 精品课程

A/D 与 D/A
转换应用实训

基于 STC89C52RC 单片机,系统学习 ADC0809 模数转换与 DAC0832 数模转换接口技术,掌握模拟量采集、多路循环采样与常见波形发生器的实现方法。

6 个递进子项目 汇编语言实战 ADC0809 + DAC0832
首页 实训项目 A/D转换应用
模数/数模转换 · 核心实训

A/D 与 D/A 转换应用 · 6 大经典实训

本项目围绕 ADC0809 与 DAC0832 两大经典芯片展开,从单通道电压采集、数码管显示、多路循环采样,到 DAC 固定电压、方波与锯齿波输出,全面训练单片机模拟接口的设计与编程能力。

6 大递进式子项目
汇编语言
约 6 学时
配套评分标准
PROJECT MATRIX

6 大经典实训一览

由简到难,循序渐进掌握 A/D 与 D/A 转换 · 点击任意卡片开始学习

基基础实训 进进阶实训 综综合实训
01 基础实训

ADC0809 单通道电位器电压采集

A/D转换 · 单通道采样

SJ-008-01 开始学习 →
02 进阶实训

ADC0809 单通道电压采集数码管显示

A/D转换 · 数码管动态显示

SJ-008-02 开始学习 →
03 进阶实训

多路模拟电压循环采集实训

通道切换 · 循环采样

SJ-008-03 开始学习 →
04 基础实训

DAC0832 输出电压

D/A转换 · 单缓冲输出

SJ-008-04 开始学习 →
05 进阶实训

DAC 锯齿方信号输出

方波发生 · 高低电平交替

SJ-008-05 开始学习 →
06 综合实训

DAC 锯齿波信号输出

锯齿波发生 · 线性递增

SJ-008-06 开始学习 →

ADC0809 单通道电位器电压采集

基础实训
实训编号
SJ-008-01
实训类型
A/D转换
实训学时
60分钟
适用年级
高二,高三
指导教师
王老师

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 转换时序与控制信号
数码管动态扫描与段码译码
IN0~IN7 通道选择与多路采样
DAC0832 单缓冲工作方式
CS/WR1/WR2/XFER 控制逻辑
方波与锯齿波发生器编程

实训目标

通过本项目的学习,学生将掌握 ADC0809 模数转换与 DAC0832 数模转换的接口技术,理解模拟量与数字量之间的转换关系,能够独立完成多路数据采集、数码管显示与简单波形发生器的软硬件设计。