小白跟做江科大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效果展示

相关推荐
2401_8633186329 分钟前
基于单片机的恒温箱设计
单片机·嵌入式硬件
ベadvance courageouslyミ1 小时前
嵌入式硬件基础
嵌入式硬件·51单片机·嵌入式·数码管·二极管
范纹杉想快点毕业1 小时前
欧几里得算法与扩展欧几里得算法,C语言编程实现(零基础全解析)
运维·c语言·单片机·嵌入式硬件·算法
2301_773730311 小时前
嵌入式—51单片机day1
单片机·嵌入式硬件·51单片机
代码游侠2 小时前
学习笔记——嵌入式与51单片机学习
单片机·嵌入式硬件·学习·51单片机
zy135380675732 小时前
12V输入5V/2A输出升降压芯片AH4002
科技·单片机·物联网·fpga开发·硬件工程·智能电视
代码游侠2 小时前
学习笔记——嵌入式系统与51单片机核心
笔记·单片机·嵌入式硬件·学习·51单片机
一枝小雨2 小时前
【OTA专题】15 实现App后台无感下载固件
stm32·单片机·嵌入式·ota·bootloader
小郭团队2 小时前
教育公平的探索
大数据·人工智能·嵌入式硬件·算法·硬件架构
lemoncat82 小时前
PCB线圈电感设计器推荐
嵌入式硬件·pcb