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

📄 topway-graphiclcm-s1d13700-demopro-v0.2.c

📁 topwaydisplay 5.7 inches black and while lcd with s1d13700 source code
💻 C
📖 第 1 页 / 共 5 页
字号:
    SdCmd(0x42);          // 写数据指令
    for(j=0;j<width;j++)  // 写入数据个数/行
        {
        SdData(bmp[k]);   // 写入图形数据
        k=k+1;
        }
     addr=addr+0x30;      // 地址修正
     }
}

//--------画点子程序----------------------------------------
void Draw_Dot(uint x, y)
//坐标X为屏幕上水平位置,以像素点为单位;Y为垂直位置,以像素行为单位
{
    uchar dotdata,m;
    uint addr;              // 第二显示区域为图形属性
    addr=y*0x30+x/8+0x1000; // 计算显示RAM地址
    m=x%8;
    dotdata=0x80;
    dotdata=dotdata>>m;     // 计算显示点数据
    SdCmd(0x46);            // 设置点显示地址
    SdData(addr);
    SdData(addr>>8);
    SdCmd(0x43);            // 读取数据指令
    m=RdData()|dotdata;     // 当前显示数据“或”点数据
    SdCmd(0x46);            // 重新设置点显示地址
    SdData(addr);
    SdData(addr>>8);
    SdCmd(0x42);            // 写数据指令
    SdData(m);              // 写入绘点数据
}
//---------画线子程序---------------------------------------
void Draw_Line(uint x1,y1,x2,y2)
// (x1,y1),(x2,y2):直线起始和终止位置坐标,以像素点为单位
{
  uint temp;
  int dalt_x,dalt_y,err=0;
  if (y1>y2)                  //要求Y1<Y2,如果不符合要求,则两坐标置换
    {
    temp=x1;
    x1=x2;
    x2=temp;
    temp=y1;
    y1=y2;
    y2=temp;
    }
  Draw_Dot(x1,y1);             // 画起始点
  dalt_x=x2-x1;                //ΔX=X2-X1
  dalt_y=y2-y1;                //ΔY=Y2-Y1
  if(dalt_x>=0)
     {
      if(dalt_y>dalt_x)        //k=ΔY/ΔX >1时
        {
         while(y1<y2)
         {
          if(err<0)
          {
           x1=x1+1;
           y1=y1+1;
           err=err+dalt_y-dalt_x;
           }
           else
           {
           y1=y1+1;
           err=err-dalt_x;
           }
          Draw_Dot(x1,y1);     // 画点
         }
       }
     else                      //0<k=ΔY/ΔX=<1
      {
       if (dalt_y==0)
          y1=y1-1;
       while(x1<x2)
         {
          if(err<0)
          {
           x1=x1+1;
           err=err+dalt_y;
           }
           else
           {
           y1=y1+1;
           x1=x1+1;
           err=err+dalt_y-dalt_x;
           }
          Draw_Dot(x1,y1);     //画点
         }
     }
     
    }
  else
   {
   dalt_x=x1-x2;  
   if(dalt_y>dalt_x)          //k=ΔY/ΔX<-1
     {
      while(y1<y2)
       {
        if(err<0)
         {
          x1=x1-1;
          y1=y1+1;
          err=err+dalt_y-dalt_x;
         }
        else
         {
          y1=y1+1;
          err=err-dalt_x;
         }
        Draw_Dot(x1,y1);      //画点
      }
    }
   else                       //0>k=ΔY/ΔX>=-1
    {
      if (dalt_y==0)
          y1=y1-1; 
    while(x1>x2)
      {
       if(err<0)
        {
         x1=x1-1;
         err=err+dalt_y;
        }
       else
        {
         x1=x1-1;
         y1=y1+1;
         err=err+dalt_y-dalt_x;
        }
       Draw_Dot(x1,y1);
      }
    } 
  }
     
}
//-----------------------------------
// Main Program
//-----------------------------------
void main()
{
uchar dat1[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,00};
uchar code dat2[]={88,89,85,87,89,90,89,89,
                88,86,87,86,88,89,90,94,
                95,96,96,97,99,99,101,103,
                101,101,100,103,105,113,113,
                117,117,116,114,107,110,114,
                113,112,115,112,113,119,115,
                109,113,106,98,96,90};  
    uint a1,a2,b1,b2,i;
    SP=0x60;
    EA = 0;                 // disable interrupts

    _RES    = 1;            // init all signal
    _CS     = 1;
    _RD     = 1;
    _WR     = 1;
    A0      = 1;
    LCDBUS  = 0xff;         // pull up data bus
    _RES    = 1;    // reset pin
    _RES    = 0;
    delayms(50);
    _RES    = 1;
    delayms(1800);

    initLCDM();

   while(1)
    {
    ClearRAM();
//------演示西文显示、图形写入、中文显示----------
    PrintASCII(3,2,"ShenZhen TOPWAY Technology Co,.LTD.");
    ShowBMP(0,0,40,240,bmp);
    PrintGB(6,0,dat1);
    delayms(2000);
//-----启用节电模式----------------
    SdCmd(0x53);
    delayms(1000);
//-----退出节电模式----------------
    SdCmd(0x40);
    SdData(0x30);
    SdCmd(0x59);
//--也可以调用初始化子程序完成-----
    delayms(3000);   
    ClearRAM();
//-----演示西文显示、中文显示、画点、画线---------
    PrintASCII(3,8,"ShenZhen TOPWAY Technology Co,.LTD.");
    PrintGB(6,46,dat1);
    Draw_Line(22,73,300,73);
    Draw_Line(22,74,300,74);
    a1=3;
    for (i=0;i<51;i++)
      {
       b1=dat2[i];
       Draw_Dot(a1,b1);
       Draw_Dot(a1,b1*2);
       a1=a1+6;
       }
       a1=3;
  for (i=0;i<50;i++)
      {
       b1=dat2[i]+50;
       b2=dat2[i+1]+50;
       a2=a1+6;
       Draw_Line(a1,b1,a2,b2);
       a1=a1+6;
       }
   delayms(3000);
   }
}
// ----end of program ------------------------

⌨️ 快捷键说明

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