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

📄 ocm5x10b触摸屏.c

📁 触摸屏相关资料
💻 C
📖 第 1 页 / 共 2 页
字号:
    {
      for(i=0;i<20;i++)
      {
        wr_zb(0xf3,i,k+j);
        send(data1);
      }
    }
    for(j=2;j<4;j++)
    {
      for(i=0;i<20;i++)
      {
        wr_zb(0xf3,i,k+j);
        send(data2);
      }
    }
  }
}
/*-----------------显示图形-----------------*/
void disp_img (uchar code *img)
{
  uchar i,j;
  for(j=0;j<80;j++)
  {
    for(i=0;i<20;i++)
    {
      wr_zb(0xf3,i,j);
      send(img[j*20+i]);
    }
  }
}
/*--------------显示中文------------------*/
void disp_chn2 (uchar code *chn)
{
  uchar i,j;
  for(j=0;j<5;j++)
  {
    for(i=0;i<10;i++)
    {
      wr_zb(0xf0,i,j);
      send(chn[j*20+i*2]);
      send(chn[j*20+i*2+1]);
    }
  }
}
/*--------------显示字符------------------*/
void disp_eng (uchar code *eng)
{
  uchar i,j;
  for(j=0;j<2;j++)
  {
    for(i=0;i<20;i++)
    {
      wr_zb(0xf9,i,j*16);
      send(eng[j*20+i]);
    }
  }
  for(j=2;j<8;j++)
  {
    for(i=0;i<20;i++)
    {
      wr_zb(0xf1,i,(j+2)*8);
      send(eng[j*20+i]);
    }
  }
}
void disp_chn (uchar code *chn)
{
  uchar i;
 
    for(i=2;i<10;i++)
    {
      wr_zb(0xf0,i,0);
      send(chn[(i-2)*2]-0xa0);
      send(chn[(i-2)*2+1]-0xa0);
    }
  
}
void disp_chn1 (uchar code *chn)
{
 uchar i;
 
    for(i=2;i<10;i++)
    {
      wr_zb(0xf0,i,2);
      send(chn[(i-2)*2]-0xa0);
      send(chn[(i-2)*2+1]-0xa0);
    }
  
	
    for(i=2;i<10;i++)
    {
      wr_zb(0xf0,i,3);
      send(chn[(i+6)*2]-0xa0);
      send(chn[(i+6)*2+1]-0xa0);
    }
  
}

/*---------------延时子程序----------------*/
void delay (uint us)
{
  while(us--);
}
void delay1 (uint ms)
{
  uint i,j;
  for(i=0;i<ms;i++)
  for(j=0;j<1000;j++)
  ;
}
/*------------写命令或数据到LCD--------------*/
void wr_zb (uchar comm,uchar addr_x,uchar addr_y)
{
  send(comm);
  send(addr_x);
  send(addr_y);
}
void send (uchar dat)               //写命令或数据
{
  while(busy==1)
    ;
  data_ora=dat;
  req=1;
  while(busy==0)
    ;
  req=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 start() //SPI开始
{
DCLK=0;
CS=1;
DIN=1;
DCLK=1;
CS=0;
}
void disptouch()
{uint X,Y;
IE=0;
X=(x[0]+x[1]+x[2]+x[3])/4;
Y=(y[0]+y[1]+y[2]+y[3])/4;
tabx[0]=(X/1000);
tabx[1]=(X-tabx[0]*1000)/100;
tabx[2]=(X-tabx[0]*1000-tabx[1]*100)/10;
tabx[3]=(X-tabx[0]*1000-tabx[1]*100-tabx[2]*10);
taby[0]=(Y/1000);
taby[1]=(Y-taby[0]*1000)/100;
taby[2]=(Y-taby[0]*1000-taby[1]*100)/10;
taby[3]=(Y-taby[0]*1000-taby[1]*100-taby[2]*10);


for(r=6;r<10;r++)
{      wr_zb(0xf9,r,16);
      send(tabx[r-6]+48);
}
for(r=13;r<17;r++)
{      wr_zb(0xf9,r,16);
      send(taby[r-13]+48);
}

IE=0x83;
}
void go() interrupt 0//外部中断0 用来接受键盘发来的数据
{
IE=0;
ip=0;

//uchar e,q;

delay(10000); 

//中断后延时以消除抖动,使得采样数据更准确
start(); //启动SPI
//while(BUSY1); //如果BUSY信号不好使可以删除不用
delay(5);
WriteCharTo7843(0xD0); //送控制字 11010000 即用差分方式读Y坐标 详细请见有关资料
DCLK=1; _nop_();_nop_();_nop_();_nop_();
DCLK=0; _nop_();_nop_();_nop_();_nop_();
y[0]=ReadFromCharFrom7843();  //读Y轴坐标
WriteCharTo7843(0x90); //送控制字 10010000 即用差分方式读X坐标 详细请见有关资料
//while(BUSY1); //如果BUSY信号不好使可以删除不用
DCLK=1; _nop_();_nop_();_nop_();_nop_();
DCLK=0; _nop_();_nop_();_nop_();_nop_();
x[0]=ReadFromCharFrom7843();  //读X轴坐标
delay(5);
for(r=0;r<4;r++)
{
WriteCharTo7843(0x90); //送控制字 10010000 即用差分方式读X坐标 详细请见有关资料
DCLK=1; _nop_();_nop_();_nop_();_nop_();
DCLK=0; _nop_();_nop_();_nop_();_nop_();
x[r]=ReadFromCharFrom7843();  //读X轴坐标
WriteCharTo7843(0xD0); //送控制字 11010000 即用差分方式读Y坐标 详细请见有关资料
DCLK=1; _nop_();_nop_();_nop_();_nop_();
DCLK=0; _nop_();_nop_();_nop_();_nop_();
y[r]=ReadFromCharFrom7843();  //读Y轴坐标
}
CS=1;
ip=1;

disptouch();


}

⌨️ 快捷键说明

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