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

📄 touch.c

📁 ARM7嵌入式系统学习源代码.入门级.可以用来练练手
💻 C
字号:
/****************************************************
公司:   三扬科技
作者:   SUNYUNGCO
日期:   2004年8月17日
****************************************************/
#include <string.h>
#include "..\inc\def.h"
#include "..\inc\44b.h"
#include "..\inc\44blib.h"
#include "..\inc\touch.h"



//触摸屏控制驱动
/***************************************
函数名称:AdTouchStart
功能描述:启动ADS7843
输入参数:AD_CH,控制转化字
控制字说明:参阅ADS7843文档
****************************************/
void AdTouchStart(unsigned char  AD_CH)                  
{
     unsigned char  i,j;
     j=AD_CH;
     
     //端口功能配置
     rPCONC=(rPCONC&0xcfffffff)|0x10000000;        //GPC14配置为输出
     rPUPC=rPUPC&0xbfff;                           //GPC14使能上拉     
	 rPCONF=(rPCONF&0x0003ff) | 0x080400;          //SIO功能端口配置,F5-O,F6-I,F7-I,F8,O
	 rPUPF=rPUPF&0x01f;                            //使能上拉 F5-F8
     //端口功能配置
     
     rPDATC=rPDATC&0xbfff;                         //片选有效 GPC14        
     rPDATF=rPDATF&0x0ff;                          //DCLK=0,F8=0      
     
     Delay1uS();    
     for(i=0;i<8;i++)                              //写8位控制字
     {     
          rPDATF=(rPDATF&0x1df)|((j&0x80)>>2);     //DIN  写控制位到端口 F5
          rPDATF=rPDATF|0x100;                     //DCLK=1,上升沿发送锁存
          Delay1uS();          
          rPDATF=rPDATF&0x0ff;                     //DCLK=0
          j<<=1;
     } 
}
/***************************************
函数名称:AdTouchRead12
功能描述:读ADS7843的转化结果12位
输入参数:
返回值:  当前转化的结果
****************************************/
unsigned int AdTouchRead12(void)             
{
     unsigned char  i;
     unsigned int Busy=0;
     unsigned int RecvByte=0;
     unsigned int k=0;
     
     while(!Busy)                      //BUSY,0:转换中  1:转换完成,F6
     {
          Busy=rPDATF&0x040;
     }
     rPDATF=rPDATF&0x1df;              //DIN=0, F5
     rPDATF=rPDATF&0x17f;              //DOUT=0, F7
     
     rPDATF=rPDATF|0x100;              //DCLK=1, F8
     Delay1uS();                      
     //rPDATF=rPDATF&0x0ff;              //DCLK=0
     
     for(i=0;i<12;i++)                 //read 12 bit
     {
          rPDATF=rPDATF|0x100;         //DCLK=1,下降沿读取
          Delay1uS();
          rPDATF=rPDATF&0x0ff;         //DCLK=0
          
          k=rPDATF&0x0080;             //取端口数据
          k=k>>7;                      //移到最低位,为0或1
          RecvByte=RecvByte|k;         
          RecvByte=RecvByte<<1;        //左移1位
     }   
     
     for(i=0;i<4;i++)                  //4 NULL DCLK
     {
          rPDATF=rPDATF|0x100;         //DCLK=1
          Delay1uS();
          rPDATF=rPDATF&0x0ff;         //DCLK=0
          Delay1uS();
     }

     RecvByte=RecvByte>>1;             //左移1位
     RecvByte=RecvByte&0x0fff;         //取低12位有效数据
     rPDATC=rPDATC|0x4000;             //片选无效,GPC14=1
     return(RecvByte);  
   }
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
   
/***************************************
函数名称:AdTouchRead8
功能描述:读ADS7843的转化结果8位
输入参数:
返回值:  当前转化的结果
****************************************/
unsigned int AdTouchRead8(void)                    
{
     unsigned char  i;
     unsigned int Busy=0;
     unsigned int RecvByte=0;
     unsigned int k=0;     
       
     while(!Busy)                      //BUSY,0:转换中  1:转换完成,F6
     {
          Busy=rPDATF&0x040;
     }
     rPDATF=rPDATF&0x1df;              //DIN=0
     rPDATF=rPDATF&0x17f;              //DOUT=0
     
     rPDATF=rPDATF|0x100;              //DCLK=1
     Delay1uS();                      
     //rPDATF=rPDATF&0x0ff;              //DCLK=0
     
     for(i=0;i<8;i++)                  //read 8 bit
     {
          rPDATF=rPDATF|0x100;         //DCLK=1,下降沿读取
          Delay1uS();
          rPDATF=rPDATF&0x0ff;         //DCLK=0
          
          k=rPDATF&0x0080;             //取端口数据
          k=k>>7;                      //移到最低位,为0或1
          RecvByte=RecvByte|k;         
          RecvByte=RecvByte<<1;        //左移1位
     }

     RecvByte=RecvByte>>1;             //左移1位
     RecvByte=RecvByte&0x0ff;          //取低8位有效数据
     rPDATC=rPDATC|0x4000;             //片选无效,GPC14=1
     return(RecvByte);  
}


⌨️ 快捷键说明

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