⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chuping.bak

📁 触摸屏幕资料!还有电路图!可以借鉴的!是初学者的好资料
💻 BAK
字号:
/*
  [文件名]  Touch.c
  [功  能]  8051单片机驱动ADS7846/ADS7843芯片
  [简  介]  ADS7846/7843芯片 适合用在4线制触摸屏,它通过标准SPI协议和CPU通信,操作简单,精度高,当
            触摸屏被按下时(即有触摸事件发生)则ADS7846向CPU发中断请求,CPU接到请求后,应延时一下再响应
            其请求,目的是为了消除抖动使得采样更准确。如果一次采样不准确。
  [原作者]  鞠春阳
  [版  本]  v1.1b
  [最后修改时间]  2004年3月31日 9:11
  [版  权]  哈尔滨众邦龙科技开发有限公司  单片机坐标网:www.mcuzb.com
*/


#include "reg51.h"
#include "intrins.h"


sbit DCLK=P1^0;
sbit CS=P2^2;
sbit DIN=P2^3;
sbit DOUT=P1^1;
sbit BUSY=P2^4;

unsigned char Key=0;

delay(unsigned char i)
{
 while(i--);
}


void start()   //SPI开始
{
  DCLK=0;
  CS=1;
  DIN=1;
  DCLK=1;
  CS=0;
}

WriteCharTo7843(unsigned char num)  //SPI写数据
{
 unsigned char count=0;
 DCLK=0;
 for(count=0;count<8;count++)
  {
   num<<=1;
   DIN=CY;
   DCLK=0;       _nop_();_nop_();_nop_();  //上升沿有效
   DCLK=1;       _nop_();_nop_();_nop_();
  }
}


ReadFromCharFrom7843()     //SPI 读数据
{
 unsigned char count=0;
 unsigned int Num=0;
 for(count=0;count<12;count++)
  {
   Num<<=1;
   DCLK=1;        _nop_();_nop_();_nop_(); //下降沿有效
   DCLK=0;        _nop_();_nop_();_nop_();
   if(DOUT) Num++;
  }
 return(Num);
}

void ZhongDuan()  interrupt 0        //外部中断0  用来接受键盘发来的数据
 {
  unsigned int X=0,Y=0;
  delay(10000);  //中断后延时以消除抖动,使得采样数据更准确
  start();        //启动SPI
//  while(BUSY);  //如果BUSY信号不好使可以删除不用
  delay(2);
  WriteCharTo7843(0x90);  //送控制字  10010000  即用差分方式读X坐标  详细请见有关资料
//  while(BUSY);  //如果BUSY信号不好使可以删除不用
  delay(2);
  DCLK=1;  _nop_();_nop_();_nop_();_nop_();
  DCLK=0;  _nop_();_nop_();_nop_();_nop_();
  X=ReadFromCharFrom7843();
  WriteCharTo7843(0xD0);  //送控制字  11010000  即用差分方式读Y坐标  详细请见有关资料
  DCLK=1;  _nop_();_nop_();_nop_();_nop_();
  DCLK=0;  _nop_();_nop_();_nop_();_nop_();
  Y=ReadFromCharFrom7843();
  CS=1;
  
  if(X>1535 && X<2992 && Y>450 && Y<1467) { Key=10; return; } //喷漆
  
  if(X>1571 && X<3024 && Y>1587 && Y<2611) { Key=11;return; } //烤漆

  
}


main()
{
 TMOD=0x11; // 记数器0  计数器1  都以 16 位 记数
 TCON=0x00;
 IE=0x83;   //1000 0001  EA=1中断允许,
 IP=0x01;
 while(1);
 
 
 
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -