STC89C52驱动XPT2046AD转换

目录

    • 简介
    • 封装
    • 接线(单端)
    • 时序以及命令字
      • SPI时序
      • 命令字
    • 程序
      • XPT2046.C
      • XPT2046.h
      • main.c
      • 测试

简介

XPT2046是一款4线电阻式触摸屏控制器,采用12位125 kHz采样SAR类型A / D转换器。XPT2046工作电压低至2.2V,支持1.5V至VCC的数字I/O接口电压以便连接低电压uP。XPT2046可以通过进行两次A/D转换来检测按下的屏幕位置。XPT2046还可以量触摸屏压力。片上VREF可用于模拟辅助输入;温度测量和电池监测,能够测量从0V到5V的电压。XPT2046也有一个片上温度传感器,XPT2046采用16引脚QFN薄封装(0.75mm高),具有工作温度范围-40°C至+85°C

XPT2046多用于触摸屏,这里只作为AD模块采集模拟电压

在这里插入图片描述

封装

在这里插入图片描述

接线(单端)

XPT2046STC
VCCVCC
XNGND
YNGND
GNDGND
VREFVCC
IOVDDVCC
DCLKP20
CSP21
DINP22
DOUTP23

在这里插入图片描述

时序以及命令字

SPI时序

在这里插入图片描述

命令字

在这里插入图片描述
在这里插入图片描述

程序

XPT2046.C

#include <STC89C5xRC.H>sbit XPT2046_DCLK = P2^0;
sbit XPT2046_CS = P2^1;
sbit XPT2046_DIN = P2^2;
sbit XPT2046_DOUT = P2^3;unsigned int XPT2046_ReadAD(unsigned char command)//command 命令字
{unsigned char i=0;unsigned int AD=0x00;//返回的数据 8位是0-255  12位是0-4096XPT2046_DCLK = 0;XPT2046_CS = 0;for(;i<8;i++){XPT2046_DIN = command&(0x80>>i);XPT2046_DCLK = 1;XPT2046_DCLK = 0;}for(i=0;i<16;i++){XPT2046_DCLK = 1;XPT2046_DCLK = 0;if(XPT2046_DOUT){AD |= (0x8000>>i);}}XPT2046_CS = 1;if(command&0x08){return AD>>8;//8位}else{return AD>>4;//12位}
}

XPT2046.h

#ifndef __XPT2046_H__
#define __XPT2046_H__
//8位命令字
#define XPT2046_XP 0x9C
#define XPT2046_YP 0xDC
#define XPT2046_VBAT 0xAC
#define XPT2046_AUX 0xEC
//12位命令字 = 8位命令字-8
unsigned int XPT2046_ReadAD(unsigned char command);
#endif

main.c

#include <STC89C5xRC.H>
#include <delay.h>
#include <uart.h>
#include <XPT2046.H>//int数据转字符数组
void IntToString_X(unsigned char Bit,unsigned char *str,unsigned int dat)//Bit:几位ad     str:字符数组地址    dat:int数据
{unsigned char i = 0;unsigned int buf[8];//简略取最小分辨单位  因此有一定误差 if(Bit == 8){dat *= 196;}//0-5V 8位 else if(Bit == 12){dat *= 12;}//0-5V 12位do { //先转换成 低位在前的十进制数组 将低位高位互换buf[i++] = dat % 10;dat /= 10;} while (dat > 0);while (i-- > 0) //将数组值转换为 ASCII 码反向拷贝到接收指针上{*str++ = buf[i] + '0';}*str = '\0';
}	void main()
{unsigned char arr[8];char * P = arr;uart_init();while(1){IntToString_X(8,P,XPT2046_ReadAD(XPT2046_XP));UART_Send(P);Delay_x_ms(1000);}
}

测试

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/675501.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

automa警惕通过点击元素打开新的标签页,因为你可能会被他蒙蔽!

大家好&#xff0c;我是大胡子&#xff0c;专注于研究RPA实战与解决方案。 我们经常用到automa里面的【点击元素】组件&#xff0c;但要警惕通过点击元素打开新的标签页&#xff0c;例如下面这个场景&#xff0c;点击公众号的图文消息&#xff0c;之后&#xff0c;要自动输入标…

SAP PP模块学习提炼第一部分

SAP是ERP的一款软件。 SAP的入门困难&#xff1a; 听不懂&#xff0c;看不懂缺乏知识体系缺乏行业经验 SAP入门引导&#xff1a; 导师引导实战演练 SAP基础介绍 1.什么是SAP? System, Application and Products in Data Processing 即数据处理的系统、应用和产品。 2.…

QT截图程序,可多屏幕截图

截图程序&#xff0c;支持多屏幕时跨屏幕截图。截图使用setMask达到镂空效果&#xff0c;截图后会有预览和保存功能。截图时按下Esc可退出。 mainwindow.ui mainwindow.cpp #include "mainwindow.h" #include "ui_mainwindow.h" #include <QDebug> …

SQL查询语句(一)简单查询和简单条件查询

MySQL的所有语句中&#xff0c;我们日常用的最多的其实就是查询语句。因此这篇文章主要介绍查询语句中的一些基础语法。 目录 简单查询 简单条件查询 简单查询 最简单的查询语句的语法如下所示&#xff1a; SELECT * FROM student; 它的语法解析如下&#xff1a; SELECT关…

python abs函数怎么用

abs()函数是Python的数字函数&#xff0c;用以返回数字的绝对值。 语法 以下是 abs() 方法的语法&#xff1a; abs( x ) 参数 x -- 数值表达式&#xff0c;可以是整数&#xff0c;浮点数&#xff0c;复数。 返回值 函数返回 x&#xff08;数字&#xff09;的绝对值&#x…

ROS机械臂中Movelt!

Movelt!简介 一个易于集成使用的集成化开发平台 由一系列移动操作的功能包组成 1、运动规划 2、操作控制 3、3D感知 4、运动学 5、控制与导航算法 ....... 提供友好的GUI 可应用于工业、商业、研发和其他领域 ROS社区中使用度排名前三的功能包 Movelt!三大核心功能 …

【数据库表的约束】

文章目录 一、NULL vs &#xff08;空字符串&#xff09;二、not null 和default三、列描述字段comment四、zerofill五、primary key 主键总结 一、NULL vs ‘’&#xff08;空字符串&#xff09; NULL和空字符串’’ NULL代表什么都没有。 空字符串’代表有&#xff0c;但串…

通过 Java 操作 redis -- 基本通用命令

目录 使用 String 类型的 get 和 set 方法 使用通用命令 exists &#xff0c;del 使用通用命令 keys 使用通用命令 expire,ttl 使用通用命令 type 要想通过 Java 操作 redis&#xff0c;首先要连接上 redis 服务器&#xff0c;推荐看通过 Java 操作 redis -- 连接 redis 关…

VMware虚拟机提示内存不足

VMware虚拟机&#xff0c;k8s集群搭建内存不足的问题 疑问&#xff1a;我的电脑是8G8G双通道的内存&#xff0c;当我在搭建k8s集群时给master-2G内存&#xff0c;node1-3G内存&#xff0c;node2-3G内存&#xff1b; 当依次打开虚拟机到node2时VM提示“物理内存不足&#xff0c;…

【漏洞复现】CData API Server 路径遍历漏洞(CVE-2024-31849)

0x01 产品简介 CData API Server是CData公司的一个强大的数据连接平台&#xff0c;旨在帮助企业轻松地访问、整合和分析各种数据源。 0x02 漏洞概述 CData API Server 23.4.8846之前版本存在安全漏洞&#xff0c;该漏洞源于存在路径遍历漏洞。攻击者可利用该漏洞获得对应用程…

Unet简单结构概述

总体结构代码 class UNet(nn.Module):def __init__(self, n_channels, n_classes, bilinearFalse):super(UNet, self).__init__()self.n_channels n_channelsself.n_classes n_classesself.bilinear bilinearself.inc (DoubleConv(n_channels, 64))self.down1 (Down(64, …

根据最近拒包项目总结,详细讲解Google最新政策(上)

关于占比最多的移动垃圾软件拒审问题 移动垃圾软件(Mobile Unwanted Software)特征表现1> 具有欺骗性,承诺其无法实现的价值主张。2> 诱骗用户进行安装,或搭载在用户安装的其他程序上。3> 不向用户告知其所有主要功能和重要功能。4> 以非预期方式影响用户的系统…