📄 topway-graphiclcm-s1d13700-demopro-v0.2.c
字号:
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 + -