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

相关推荐
砂川同学42 分钟前
STM32+ESP8266+ONENET+微信小程序上传数据下发指令避坑指南
stm32·嵌入式硬件·微信小程序
hfdz_00424 小时前
PID项目---硬件设计
stm32·单片机·嵌入式硬件
gantengsheng5 小时前
基于51单片机和8X8点阵屏、矩阵按键的匹对消除类小游戏
51单片机·小游戏·矩阵按键·普中开发板·stc89c52rc·8x8点阵屏·匹配消除类
逼子格6 小时前
硬件工程师笔记——三极管Multisim电路仿真实验汇总
笔记·嵌入式硬件·硬件工程·硬件工程师·三极管·硬件工程师真题·multisim电路仿真
breaksoftware6 小时前
51单片机编程学习笔记——无源蜂鸣器演奏《祝你生日快乐》
笔记·学习·51单片机
LaoZhangGong1237 小时前
测试W5500的第2步_使用ioLibrary库创建TCP客户端
网络·经验分享·stm32·单片机·网络协议·tcp/ip
雷打不动的晴天15 小时前
Libero离线IP安装
嵌入式硬件·fpga开发
Dev_XH17 小时前
【成品设计】STM32和UCOS-II的项目
stm32·单片机·嵌入式硬件
Dev_XH17 小时前
【成品设计】基于 STM32 的智能鞋柜系统
stm32·单片机·嵌入式硬件
whaosoft-14319 小时前
51c嵌入式※~合集7~Linux
嵌入式硬件