小白跟做江科大51单片机之AD/DA

1.看原理图找接口

2.看时序图编写读取数据代码

XPT2046.c代码

#include <REGX52.H>

//引脚定义

sbit XPY2046_DIN=P3^4;

sbit XPY2046_CS=P3^5;

sbit XPY2046_DCLK=P3^6;

sbit XPY2046_DOUT=P3^7;

unsigned int XPT2046_ReadAD(unsigned char Command)

{

unsigned char i;

unsigned int Data=0;

XPY2046_DCLK=0; //确保其为低位

XPY2046_CS=0; //拉低

for(i=0;i<8;i++)

{

XPY2046_DIN=Command&(0x80>>i); //给第i位数据

XPY2046_DCLK=1; //上升发送数据

XPY2046_DCLK=0; //下降

}

for(i=0;i<16;i++)

{

XPY2046_DCLK=1;

XPY2046_DCLK=0;

if(XPY2046_DOUT){Data|=(0x8000>>i);}

}

XPY2046_CS=1;

return Data>>8;

}

3.根据XPT2046原理图定义命令

S选为1,A2-A0自己选择,MODE选择分辨率第一个例子选1,SER根号DFR选1(单端模式),PD1-PD0选0

测量X+,根据单端模式输入配置图,A2-A0可以为001,也可以为011,以001为例,故命令码为1001 1100即0x9C,以此类推在XPT2046.h下定义一下命令

#define XPT2046_VBAT 0xAC

#define XPT2046_AUX 0xEC

#define XPT2046_XP 0x9C //0xBC

#define XPT2046_YP 0xDC

4.编写main代码

#include <REGX52.H>

#include "Delay.h"

#include "LCD1602.h"

#include "XPT2046.h"

unsigned int ADValue;

void main(void)

{

LCD_Init();

LCD_ShowString(1,1,"ADJ NTC GR");

while(1)

{

ADValue=XPT2046_ReadAD(XPT2046_XP); //读取AIN0,可调电阻

LCD_ShowNum(2,1,ADValue,3); //显示AIN0

ADValue=XPT2046_ReadAD(XPT2046_YP); //读取AIN1,热敏电阻

LCD_ShowNum(2,6,ADValue,3); //显示AIN1

ADValue=XPT2046_ReadAD(XPT2046_VBAT); //读取AIN2,光敏电阻

LCD_ShowNum(2,11,ADValue,3); //显示AIN2

Delay(100);

}

}

5.实现结果

XPT2046效果展示

相关推荐
泡泡糖的中文规格书2 小时前
【硬件设计】LM358DR2G中文文档深度解读:高质量翻译与芯片特性全解析
嵌入式硬件·规格说明书·电路设计·运放·中文翻译·datasheet
czwxkn3 小时前
2STM32(stdl)GPIO输入
stm32·单片机·嵌入式硬件
码农三叔4 小时前
(9-1)电源管理与能源系统:电池选择与安全
人工智能·嵌入式硬件·安全·机器人·能源·人形机器人
qq_246646196 小时前
openclaw快速安装-windows版
windows·stm32·单片机
染予8 小时前
13.AD软件操作:原理图如何导入PCB及导入常见错误
嵌入式硬件
小莞尔8 小时前
【51单片机】【protues仿真】 基于51单片机波形发生器系统
c语言·单片机·嵌入式硬件·物联网·51单片机
码农三叔8 小时前
(9-2-01)电源管理与能源系统:能耗分析与功率管理(1)步行能耗估计
人工智能·嵌入式硬件·机器人·人机交互·能源·人形机器人
Polanda。9 小时前
ADC-定时器触发
单片机·嵌入式硬件
Polanda。9 小时前
ADC-常规序列的单通道转换
stm32·单片机·嵌入式硬件