淘宝店
Google
      
发新话题
打印

3310驱动程序(转)

3310驱动程序(转)

//********3310驱动程序*******
#define uchar unsigned char
#define uint unsigned int
//可以改动端口
sbit sclk=P2^0;//时钟
sbit sdin=P2^1; //数据
sbit dc=P2^2;//1写数据,0写指令
sbit sce=P2^3;//片选
sbit res=P2^4;//复位,0复位
void write_byte(uchar datatemp,bit mod)//写一字节 mod=0,命令模式 通用
{
  uchar i=8;
  sce=0;
  dc=mod;
  while (i--)
   {
    if (datatemp&0x80){sdin=1;}
    else {sdin=0;}
    sclk=0;
    sclk=1;
    datatemp<<=1;
   }
  dc=1;
  sce=1;
  sdin=1;
}
void init(void) //初始化  通用
{
  res=0;
  Adelay(10);
  res=1;
  sce=1;
  sdin=1;
  sclk=1;
  write_byte(0x21,0);//初始化Lcd,功能设定使用扩充指令
  write_byte(0xd5,0);//设定液晶偏置电压(高--低)
  write_byte(0x20,0);//使用基本指令
  write_byte(0x0C,0);//设定显示模式,正常显示
}
void setadd(uchar a,uchar d)//设定地址
{
  write_byte((a|0x80),0);//设定x坐标
  write_byte((d|0x40),0);//设定y坐标
}
void clr()//清屏
{
  uchar t,k;
  uint d;
  d=0;
  // setdd(0,0);
  for(t=0;t<6;t++)
   {   
     for(k=0;k<84;k++)
      {        
        setadd(k,t);
        write_byte(0,1);
        d=d+1;
        if(d>504)d=d-504;
      }
   }
}
//写汉字
void WriteCh(uchar *p,char x0,char x1,char y0,char y1,char z0)
  //*p是数组字模,x0是横向初始坐标,x1横向结束坐标,x(0~84)
  //y0是纵向初始坐标,y1纵向结束坐标,y(0~5) z0数组长度
{
  unsigned char z,x,y;
    for(x=x0;x<x1;x++)
     {
      for(y=y0;y<y1;y++)
       {
        setadd(x,y);  ///定位
        write_byte(*p,1);
        Adelay(4);
        p++;  //写下一位
        z++;  //数组长度
        if(z==z0)
         {
          y0+=2;
          //n+=2;
          z=0;
         }
       }
    }
}
//写数字
void WriteDa(uchar num,char x0,char x1,char y0,char y1,char z0)
{
  unsigned char z=0,x,y;
    for(x=x0;x<x1;x++)
     {
      for(y=y0;y<y1;y++)
       {
        setadd(x,y);  ///定位
        write_byte(dal3[num][z],1);
        Adelay(4);
        z++;
        if(z==z0)
         {
          y0+=2;
          z=0;
         }
       }
    }
}

TOP

谢谢楼主共享!

TOP

发新话题