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

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

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

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

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

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

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

5 大经典实训一览

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

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

ADC0809 单通道电位器电压采集

A/D转换 · 单通道采样

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

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

通道切换 · 循环采样

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

DAC0832 输出电压

D/A转换 · 单缓冲输出

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

DAC 锯齿方信号输出

方波发生 · 高低电平交替

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

DAC 锯齿波信号输出

锯齿波发生 · 线性递增

SJ-008-05 开始学习 →

ADC0809 单通道电位器电压采集

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

1 项目简介

本项目是 A/D 转换入门实验,使用经典 8 位逐次逼近型模数转换芯片 ADC0809,对连接在 IN0 通道的电位器电压进行采集。通过控制 ADC0809 的 START/ALE、EOC、OE 与 CLK 信号,完成一次完整的 A/D 转换,并将 8 位数字量送 P2 口 LED 显示。

掌握本项目后,学生将理解 ADC0809 的转换时序、通道选择方法,学会通过单片机 IO 口产生控制信号驱动外部 A/D 芯片,为后续多路数据采集与传感器接口设计奠定基础。

2 电路图

电路图

电路说明

  • • P1 口接 ADC0809 数据口 D0~D7
  • • P3.0=START/ALE、P3.1=EOC、P3.2=OE、P3.3=CLK
  • • P3.4=ADD-A、P3.5=ADD-B、P3.6=ADD-C,选中 IN0 通道
  • • 电位器输出电压接入 IN0,转换结果送 P2 口 LED 显示

3 程序内容(汇编语言)

;==================================================
; 项目名称:ADC0809 单通道电位器电压采集
; 芯片型号:STC89C52RC
; 时钟频率:12MHz
; 接口说明:
;   P1    = ADC0809 数据口 D0~D7
;   P3.0  = START/ALE 启动与通道锁存(上升沿锁存通道,下降沿启动转换)
;   P3.1  = EOC 转换结束信号(输入,高电平有效)
;   P3.2  = OE 输出使能(高电平有效)
;   P3.3  = CLK 时钟输入(软件产生约 500kHz 方波)
;   P3.4  = ADD-A 通道地址最低位
;   P3.5  = ADD-B
;   P3.6  = ADD-C
; 功能说明:选择 IN0 通道采集电位器电压,转换结果送 P2 口 LED 显示
;==================================================
        ORG     0000H          ; 程序从复位向量 0000H 开始
        LJMP    MAIN           ; 跳转到主程序入口

; 主程序入口
MAIN:   SETB    P3.0           ; START/ALE 初始高电平
        CLR     P3.2           ; OE 关闭,禁止数据输出
        SETB    P3.1           ; EOC 配置为输入口

; 主循环:反复启动 A/D 转换并读取结果
LOOP:   CLR     P3.6           ; ADD-C=0
        CLR     P3.5           ; ADD-B=0
        CLR     P3.4           ; ADD-A=0,选中 IN0 通道
        SETB    P3.0           ; ALE 上升沿锁存 IN0 通道地址
        CLR     P3.0           ; ALE/START 下降沿启动 A/D 转换
        SETB    P3.0           ; START 恢复高电平,等待下次启动

; 等待 EOC 变高,期间持续提供 ADC 时钟
WAIT_EOC:
        LCALL   ADC_CLK        ; 给 ADC0809 提供一个 CLK 周期
        JB      P3.1, READ_ADC ; EOC=1 转换结束,跳转读取
        SJMP    WAIT_EOC       ; 未结束继续等待

; 读取转换结果
READ_ADC:
        SETB    P3.2           ; OE=1,打开输出三态门
        MOV     A, P1          ; 读取 8 位转换结果到 ACC
        MOV     P2, A          ; 结果送 P2 口 LED 显示
        CLR     P3.2           ; OE=0,关闭输出
        LCALL   DELAY          ; 延时约 200ms 便于观察
        SJMP    LOOP           ; 循环采集

; ADC0809 时钟产生子程序(产生一个 CLK 周期,约 500kHz)
ADC_CLK:
        SETB    P3.3           ; CLK 高电平
        NOP
        NOP
        CLR     P3.3           ; CLK 低电平
        NOP
        RET

; 软件延时子程序(约 200ms @12MHz)
DELAY:  MOV     R7, #200
DLY1:   MOV     R6, #250
DLY2:   DJNZ    R6, DLY2
        DJNZ    R7, DLY1
        RET

        END

4 评分标准

评分项 分值 评分标准
电路连接 25分 ADC0809 数据、控制、地址线连接正确规范
控制时序 30分 START/ALE、EOC、OE、CLK 控制正确
程序编写 25分 代码正确、规范,注释清晰完整
功能实现 10分 电位器电压变化时 LED 显示随之变化
实训报告 10分 报告内容完整、整洁

5 注意事项与安全规范

输入电压范围

ADC0809 模拟输入电压必须在 0~5V 之间,禁止超过 Vref+

时钟频率

ADC0809 CLK 推荐 10kHz~1.28MHz,本程序采用软件约 500kHz

防止短路

接线前确认电源关闭,避免 ADC 数据口与电源或地短路

代码规范

程序必须有完整注释,便于理解 ADC 控制时序

学习要点

ADC0809 转换时序与控制信号
IN0~IN7 通道选择与多路采样
DAC0832 单缓冲工作方式
CS/WR1/WR2/XFER 控制逻辑
方波与锯齿波发生器编程

实训目标

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