您的位置:首页技术文栏单片机C51
内容搜索:
阅读内容
背景:#EDF0F5 #FAFBE6 #FFF2E2 #FDE6E0 #F3FFE1 #DAFAF3 #EAEAEF 默认  

更精简的3310程序

[日期:2008-05-07 ] [来源:网络 作者:佚名] [字体: (投递新闻)
#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;
         }
       }
    }
}

(文章推荐人:丁丁)
阅读:
录入:JETTA

推荐 】 【 打印
本文评论
      全部评论
发表评论


点评: 字数
姓名:
站长推荐