找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2071|回复: 0
收起左侧

关于XPT2046 ADC的应用

[复制链接]
ID:665608 发表于 2020-8-3 18:39 | 显示全部楼层 |阅读模式
AD的基本应用要求如下:
采样可变电阻电压与光敏电阻电压     
要求如下:
独立按键S4为通道切换选择,系统上电的时候,采样通道1光敏电阻的数据并显示在数据管上。按下S4松开后,切换到通道3采样可调电阻的数据并显示;再次按下S4松开后,又切换回通道1采样光敏
电阻数据,如此循环往复。前3位数码管显示通道号,后3位显示PCF8591相应通道读取的数据。
AD的基本应用要求如图: 51hei图片_20200803183655.png

单片机源程序如下:
  1. #include"XPT2046.h"

  2. void SPI_Write(uchar dat) //写入数据
  3. {
  4.         uchar i;
  5.         CLK = 0;                         //拉低时钟信号电位
  6.         for(i=0; i<8; i++)  //循环写入八位字节
  7.         {
  8.                 DIN = dat >> 7;          //从最高位到最低为开始传送
  9.                 dat <<= 1;
  10.                 CLK = 0;                //接收时让时钟信号不断变化        
  11.                 CLK = 1;                  
  12.         }
  13. }

  14. uint SPI_Read(void)                         //读取数据
  15. {
  16.         uint i, dat=0;
  17.         CLK = 0;
  18.         for(i=0; i<12; i++)                //读取12位数据
  19.         {
  20.                 dat <<= 1;                         //读取要先移位再赋值,写入就相反

  21.                 CLK = 1;
  22.                 CLK = 0;

  23.                 dat |= DOUT;

  24.         }
  25.         return dat;        
  26. }

  27. uint Read_AD_Data(uchar cmd)  //读取数据
  28. {
  29.         uchar i;
  30.         uint AD_Value;
  31.         CLK = 0;  //拉低时钟信号电位
  32.         CS  = 0;  //拉低片选信号电位
  33.         SPI_Write(cmd);        //发送命令字符
  34.         for(i=6; i>0; i--);         //延时等待转换结果
  35.         CLK = 1;          //发送一个时钟周期,清除BUSY
  36.         _nop_();
  37.         _nop_();
  38.         CLK = 0;
  39.         _nop_();
  40.         _nop_();
  41.         AD_Value=SPI_Read();
  42.         CS = 1;                                  //读取完要关闭片选信号
  43.         return AD_Value;          //信号处理后返回的值
  44. }
复制代码
51hei.png
所有资料51hei提供下载:
关于ADC的基本应用.7z (43.25 KB, 下载次数: 18)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表