江科协51单片机16-1 AD/DA ADC 三通道综合显示(LCD1602 版)改造说明

改造说明:ADC 三通道综合显示(LCD1602 版)

由 23.1 电位器电压采集、23.2 光敏电阻 AD 采集、23.3 热敏电阻 AD 采集三个实验合成 ,

对应 B 站教程 16-1 AD/DA(P35)中的三路同时采集演示。

目录

💡 提示:在 Obsidian 中阅读时,也可直接用 [[TOC]] 自动生成目录(随标题自动更新)。

一、实验现象

LCD1602 双行实时显示三路参数,互不干扰、同步刷新:

复制代码
第1行:Pot:2.50V        ← 电位器电压(0.00V ~ 5.00V,两位小数)
第2行:Lig:2048 Th:1024 ← 光敏电阻 AD 值 | 热敏电阻 AD 值(0~4095)

Pot 是 Potentiometer(电位器)的缩写------全名太长,工程师日常就直接喊"pot",就像把 resistor 喊成 "res" 一样。

  • 旋动电位器 → 电压值连续变化
  • 手遮/强光照射光敏电阻 → 光敏 AD 值反向变化
  • 手捏升温/放开降温热敏电阻 → 热敏 AD 值变化

二、接线说明(无需新增接线)

模块 接口 占用引脚
XPT2046 AD 模块 开发板 AD 模块接口 CS=P3.5, CLK=P3.6, DIN=P3.4, DOUT=P3.7
LCD1602 开发板 LCD 接口 RS=P2.6, RW=P2.5, E=P2.7, D0~D7=P0

电位器、光敏电阻、热敏电阻都在同一块 XPT2046 AD 模块上,

把 AD 模块和 LCD1602 同时插上开发板即可,无需飞线。

三、通道映射(关键知识点)

XPT2046 是 12 位串行 ADC,命令字节高四位选通道:

命令字 通道 信号源 说明
0x94 AD0 电位器 分压电压 0~5V,可换算为实际电压
0xA4 AD1 光敏电阻 光线越强,AD 值越小
0xD4 AD2 热敏电阻 温度越高,AD 值越小(NTC)

四、代码要点

  1. 三通道轮流读取 :xpt2046_read_adc_value(0x94/0xA4/0xD4),一次循环读三路。
  2. 电压换算 :电压 = 5.0 × AD / 4096。
    为避免浮点,代码放大 100 倍用整数算:pot_mv = (u16)((u32)pot_ad * 500 / 4096)。
  3. AD 值格式化 :format_ad_value() 把 0~4095 补成 4 位字符串(右对齐),
    保证 LCD 上数字位置固定、不跳动。
  4. 刷新间隔 :delay_ms(100),变化肉眼可辨。

五、编译与烧录

  1. Keil5 C51 打开 template.uvproj,Rebuild(已验证 0 Error)。
  2. STC-ISP 下载 Obj/template.hex,单片机型号 STC89C52RC。

六、工程结构

复制代码
23.5-ADC三通道综合显示(LCD)/
├── User/main.c          ← 综合主程序(本次新写)
├── App/lcd1602/         ← LCD1602 驱动(复用 25 实验)
├── App/xpt2046/         ← XPT2046 驱动(复用 23.1)
├── Public/              ← 公共延时与类型定义
├── template.uvproj      ← Keil 工程(含 lcd1602 + xpt2046 两组)
└── Obj/template.hex     ← 编译产物
相关推荐
mk01523 分钟前
单片机同步降压稳压器输出最低1V,关断时损耗3uA
单片机·嵌入式硬件·硬件工程·智能硬件·pcb工艺
动词ing1 小时前
【学习笔记】51单片机 模块化编程
笔记·学习·51单片机
然后,是第八天1 小时前
platformio使用使用pioarduino流程
单片机
糖糖单片机设计1 小时前
基于 STM32 + LU-ASR01 的智能台灯
stm32·单片机·嵌入式硬件·51单片机·语音识别
en.en..2 小时前
Keil 文件管理避坑(基于 STM32F4 HAL 通用模板讲解)
单片机·嵌入式硬件
女神下凡4 小时前
芯参谋(87):Linux 系统(SPI NOR)驱动开发指南
linux·运维·arm开发·驱动开发·嵌入式硬件·设计规范
起个网名真难~14 小时前
STM32F103_Bootloader_从零到UART升级成功_博客原稿
stm32·单片机·嵌入式硬件
二本咕咕-机械转码15 小时前
FreeRTOS深入解析(一)_链表与并发保护——哨兵循环链表、排序键游标、临界区与关调度
单片机·算法·链表
Zwawa16 小时前
串口命令如何从字符串长成协议:帧头、长度、校验和与状态机
c语言·单片机·嵌入式
小李不想当小白16 小时前
BKP备份寄存器与RTC实时时钟(STM32标准库学习笔记)
笔记·stm32·单片机·嵌入式硬件·学习·嵌入式