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

📄 function._h

📁 OCMJ815触摸屏使用范例
💻 _H
字号:
/*^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ */
//功能: 函数定义及其构架
//输入: 无
//输出: 函数名
//By:   李 平 2007.7.11
//备注:
#include <iom16v.h>
#include <macros.h>
//#include "Portini.h"
//#include "Data.h"


 //定义全局变量  tabx[4] 和 taby[4]
uchar tabx[4];
uchar taby[4];

void bang(void);
void send(uchar dat); //送出一行指令或数据
//F0 XX YY QQ WW:    汉字显示命令        以汉字为单位的X,Y坐标值,QQ,WW为汉字区码,位码
//F1 XX YY AS   :    8*8ASCII字符显示    以ASCII为单位的X,以1*1为单位的Y坐标值,AS为ASCII字符
//F2 XX YY      :   显示位点阵          以1*1点阵为单位的X,Y坐标值,
//F3 XX YY BT   :   显示字节点阵        以1*8为行单位,以1*1为列单位的坐标值,BT=0白色,=1黑色
//F4:               清屏
//F5:               上移一个点阵
//F6:               下移一个点阵
//F7:               左移一个点阵
//F8:               右移一个点阵
//F9 XX YY AS   :    8*16 ASCII字符显示  以ASCII为单位的X,以1*1为单位的Y坐标值  AS:ASCII字符
//FA :               此后的图形或文字反白显示
//FB 00/07/0F  :     光标显示             00关光标  07 光标为8点 0F光标为16点
//FC 00/01/07/0F:    移动速度             00按一个点移动  01按2个点移动
//                                         07按8个点移动   0F按16个点移动
void write(uchar comm,uchar addr_x,uchar addr_y);
//对应于F0 XX YY 即送命名+X坐标值+Y坐标值,分别一Send()格式送出
void disp1line (uchar  *chn);     //显示一行汉字
void disp2lines (uchar  *chn);    //显示2行汉字
void disp_img (uchar  *img);     //显示一幅图片
void disptouch(void);                //显示X,Y坐标值
void start(void);                    //SPI使能
void WriteCharTo7843(uchar num);  //SPI写数据
unsigned int ReadFromCharFrom7843(void);              //SPI 读数据
void disp_ciclr(uint X,uint Y);                       //画曲线

/*^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ */
/*&&&&&&&&&&&&&&&&&&&&&&& START &&&&&&&&&&&&&&&&&&&&&&&&&&*/
//函数名:     send( data )
//功能:      写命令或数据
//输入:      待送入的data值
//输出:      无 因为送进液晶后便可以显示了,不必返回
//By:        李 平 2007.7.11
//备注:
void send (uchar dat)
{
  while(busy==1)
    ;
  dataout=dat;
  req_set;
  while(busy==0)
    ;
  req_clr;
}
/*^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ */
/*&&&&&&&&&&&&&&&&&&&&&&& START &&&&&&&&&&&&&&&&&&&&&&&&&&*/
//函数名:    write()
//功能:     写命令或数据到LCD-
//输入:     comm命令, addr_x坐标X ,addr_y坐标Y
//输出:     无
//By:       李 平 2007.7.11
//备注:
void write(uchar comm,uchar addr_x,uchar addr_y)
{
  send(comm);
  send(addr_x);
  send(addr_y);
}
/*^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ */
/*&&&&&&&&&&&&&&&&&&&&&&& START &&&&&&&&&&&&&&&&&&&&&&&&&&*/
//函数名:   disp1line()
//功能:    显示一行汉字
//输入:    待显示的chn数组名
//输出:    无
//By:      李 平 2007.7.11
//备注:
void disp1line(uchar  *chn)
{
   uchar i;
    for(i=2;i<14;i++)
    {
      write(0xf0,i-2,0);
      send(chn[(i-2)*2]-0xa0);
      send(chn[(i-2)*2+1]-0xa0);
    }
}
 /*^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ */
/*&&&&&&&&&&&&&&&&&&&&&&& START &&&&&&&&&&&&&&&&&&&&&&&&&&*/
//函数名:      disp2lines()
//功能:       显示2行汉字
//输入:       待显示的chn数组名
//输出:       无
//By:         李 平 2007.7.11
//备注:
void disp2lines (uchar  *chn)
{
   uchar i;
   for(i=2;i<11;i++)
    {
      write(0xf0,i-2,2);
      send(chn[(i-2)*2]-0xa0);
      send(chn[(i-2)*2+1]-0xa0);
    }
   for(i=2;i<11;i++)
    {
      write(0xf0,i-2,3);
      send(chn[(i+6)*2]-0xa0);
      send(chn[(i+6)*2+1]-0xa0);
    }
}
/*^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ */
/*&&&&&&&&&&&&&&&&&&&&&&& START &&&&&&&&&&&&&&&&&&&&&&&&&&*/
//函数名:         disp_img()
//功能:          显示一幅图片
//输入:          待显示的img数组名
//输出:          无
//By:            李 平 2007.7.11
//备注:
void disp_img (uchar *img)
{
  uchar i,j;
  for(j=31;j<64;j++)
  {
    for(i=4;i<20;i++)
    {
      write(0xf3,i,j);
      send(img[(j-31)*16+i-4]);        //16*33=528
    }
  }
}
/*^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ */
/*&&&&&&&&&&&&&&&&&&&&&&& START &&&&&&&&&&&&&&&&&&&&&&&&&&*/
//函数名:         disptouch()
//功能:           显示触摸屏摁下处的X,Y坐标值
//输入:           tabx[4]   taby[4] 2个4位的坐标值
//输出:           无  因为所有的数据均显示之
//By:            李 平 2007.7.11
//备注:
void disptouch(void)  
{
  uchar r;
  for(r=6;r<10;r++)
     {
         write(0xf9,r+20,0);//248/16=15,15*2=30,30-4=26,26-6=20
         send(tabx[r-6]+48);
     }
  for(r=13;r<17;r++)
     {
         write(0xf9,r+13,16);//248/16=15,15*2=30,30-4=26,26-13=13
         send(taby[r-13]+48);
     }
}
/*^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ */
/*&&&&&&&&&&&&&&&&&&&&&&& START &&&&&&&&&&&&&&&&&&&&&&&&&&*/
//函数名:          spi_start
//功能:            SPI使能
//输入:
//输出:
//By:              李 平 2007.7.11
//备注:
void spi_start(void)
{
    clk_clr;
    cs_set;
    din_set;
    clk_set;
    cs_clr;
}
/*^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ */
/*&&&&&&&&&&&&&&&&&&&&&&& START &&&&&&&&&&&&&&&&&&&&&&&&&&*/
//函数名:     WriteCharTo7843()
//功能:       SPI写数据
//输入:       要写入7843的数据num
//输出:       无
//By:        李 平 2007.7.11
//备注:
void WriteCharTo7843(uchar num)
{
   uchar count=0;
   clk_clr;
   for(count=0;count<8;count++)
     {
       if(num&0x80)
         din_set;
       else din_clr;
       num<<=1;
       clk_clr;    //上升沿有效
			asm("nop");
			asm("nop");
			asm("nop");
       clk_set;
			asm("nop");
			asm("nop");
			asm("nop");
      }
}
/*^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ */
/*&&&&&&&&&&&&&&&&&&&&&&& START &&&&&&&&&&&&&&&&&&&&&&&&&&*/
//函数名:      ReadFromCharFrom7843()
//功能:        SPI 读数据
//输入:        无
//输出:        读出的X或Y坐标值num (0-4069)
//By:          李 平 2007.7.11
//备注:
unsigned int ReadFromCharFrom7843(void)
{
    uchar count=0;
    uint  Num=0;
    for(count=0;count<12;count++)
      {
        Num<<=1;
        clk_set;
		/*
            _nop_();
            _nop_();
            _nop_();*/
			asm("nop");
			asm("nop");
			asm("nop");
        clk_clr;
			asm("nop");
			asm("nop");
			asm("nop");
        if(dout)
          Num++;
      }
return(Num);
}


/*^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ */
/*&&&&&&&&&&&&&&&&&&&&&&& START &&&&&&&&&&&&&&&&&&&&&&&&&&*/
//函数名:     void disp_ciclr(uint X,uint Y)
//功能:        显示画过的曲线
//输入:       X,Y坐标值
//输出:       无
//By:          李 平 2007.7.12
//备注:
void disp_ciclr(uint X,uint Y)
{
  send(0xf2);                //画1*1点阵
  send((uchar)(4096-Y)/17);//定义为相对X显示坐标值
  send((uchar)(4096-X)/32);//定义为相对Y显示坐标值
 //send(240-(Y/100*24/4));
 //send(128-(X/100*13/4));
 // send(0x01);
}

⌨️ 快捷键说明

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