单片机原理及应用_stc52rc引脚图

(77) 2024-06-25 20:01:01

普中科技ES2.0开发板学习日记

单片机原理及应用_stc52rc引脚图 (https://mushiming.com/)  第1张

文章目录

  • 普中科技ES2.0开发板学习日记
  • 前言
  • 一、AD数模转换的原理
    • 数/模定义
    • AD转换的主要技术指标
    • XPT2046 的介绍
      • 1.功能介绍
      • 2.主要特性
      • 3.工作原理和图表(数据手册)
  • 二、XPT2046AD转换代码
    • 1.写入部分
    • 2.读取数据
    • 3.读取通道转换的数据
  • 三.用数码管显示转换值
    • 1.main.c
    • 2.XPT2046.h头文件
    • 2.XPT2046.c
  • 总结问题

前言

使用单片机开发板进行AD电压数模转换。STC89C52和XPT2046 芯片。


一、AD数模转换的原理

数/模定义

模拟量:自然界连续变化的物理量。所谓连续,包含两个方面的含义;一方面从时间上来说,它是随时间连续变化的;另一方面从数值上来说,它的数值也是连续变化的。这种连续变化的物理量通常称为模拟量。

数字量:计算机中处理的是不连续变化的量,离散性的数字量。

AD转换的主要技术指标

1、分辨率
ADC的分辨率是指使输出数字量变化一个相邻数码所需输入模拟电压的变化量。用二进制表示,数值为1/2^n,**即八位分辨率为1/255,12位分辨率为1/4095。**举个例子,如果你的电压最大为5V,分辨率为8位,分辨率为255,那么你ad采样的数值显示为255,此时就是5V的满电压。如果是200,那么实际电压就是5/255*200V。
2、量化误差
ADC把模拟量变为数字量,用数字量近似表示模拟量,这个过程称为量化。量化误差是ADC的有限位数对模拟量进行量化而引起的误差。
3、偏移误差
偏移误差是指输入信号为零时,输出信号不为零的值,所以有时又称为零值误差。
4、满刻度误差
满刻度误差又称为增益误差。ADC的满刻度误差是指满刻度输出数码所对应的实际输入电压与理想输入电压之差。
5、线性度
线性度有时又称为非线性度,它是指转换器实际的转换特性与理想直线的最大偏差。
6、绝对精度
在一个转换器中,任何数码所对应的实际模拟量输入与理论模拟输入之差的最大值,称为绝对精度。
7、转换速率
ADC的转换速率是能够重复进行数据转换的速度,即每秒转换的次数。而完成一次A/D转换所需的时间(包括稳定时间),则是转换速率的倒数。

XPT2046 的介绍

1.功能介绍

XPT2046 是一个内含 12 位分辨率 125KHz 转换速率逐步逼近型 A/D 转换器。XPT2046 支持从 1.5V 到 5.25V 的低电压 I/O 接口。

2.主要特性

工作电压范围为 1.5V~5.25V
支持 1.5V~5.25V 的数字 I/O 口
内建 2.5V 参考电压源
电源电压测量(0V~6V)
内建结温测量功能
触摸压力测量
采用 3 线制 SPI 通信接口
具有自动省电功能

3.工作原理和图表(数据手册)

单片机原理及应用_stc52rc引脚图 (https://mushiming.com/)  第2张

数据手册中有说明,在使用ADC功能的时候配置为单端模式或差分模式;模式配置说明图如下:

单片机原理及应用_stc52rc引脚图 (https://mushiming.com/)  第3张
单片机原理及应用_stc52rc引脚图 (https://mushiming.com/)  第4张

通过观察开发板上面的ad模块我们可以知道,我们如果测量通道AIN2和3需要用到AUX引脚所以配置选择单端模式。

单片机原理及应用_stc52rc引脚图 (https://mushiming.com/)  第5张
                                             控制字节的描述

通过上图和开发板AD模块原理图可以得到,我们如果使用12位分辨率单端模式测量AIN1(可调电阻),那么我们输入DIN端就要控制字命令寄存器值为0x94(1001 1000)或0xB4(1011 1000)。同理如果要检测转换热敏电阻模拟信号,控制字命令寄存器值为0XD4;要检测转换光敏电阻模拟信号,控制字命令寄存器值为0XA4;测转换AIN3通道上模拟信号,控制字命令寄存器值为0XE4.

单片机原理及应用_stc52rc引脚图 (https://mushiming.com/)  第6张
                                             XPT2046时序图

二、XPT2046AD转换代码

1.写入部分

单片机原理及应用_stc52rc引脚图 (https://mushiming.com/)  第7张

void SPI_Write(uchar dat) { 
    uchar i; CLK = 0; for(i=0; i<8; i++) { 
    DIN = dat >> 7; //放置最高位 dat <<= 1; CLK = 0; //上升沿放置数据 CLK = 1; } } 

2.读取数据

uint SPI_Read(void) { 
    uint i, dat=0; CLK = 0; for(i=0; i<12; i++) //接收12位数据 { 
    dat <<= 1; CLK = 1
THE END

发表回复