📄 topway-graphiclcm-s1d13700-demopro-v0.2.c
字号:
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1A,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x02,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
//-----------------------------------
// Delay Routine
//-----------------------------------
void delayms(uint m) // 12MHz Xtal, close to ms value
{
uint j;
uint i;
for(i=0; i<m; i++)
for(j=0; j<109; j++)
_nop_();
}
//-----------------------------------
// 间接控制方式(INTEL8080时序?
//-----------------------------------?
//-----指令码传送子程序--------------------
void SdCmd(uchar Command)
{
A0 = 1; // 选择指令写通道
LCDBUS = Command; // 指令码送数据口
_CS = 0; // 选择模块
_WR = 0; // 写信号有效
_WR = 1; // 写信号无效
_CS = 1; // 封锁模块
delayms(1); // 延迟,LM2068E、LM1095E使用
}
//-----数据传送子程序-------------------
void SdData(uchar DData)
{
A0 = 0; // 选择数据写通道
LCDBUS = DData; // 数据送数据口
_CS = 0; // 选择模块
_WR = 0; // 写信号有效
_WR = 1; // 写信号无效
_CS = 1; // 封锁模块
}
//------数据读取子程序------------------
uchar RdData()
{
uchar DData;
A0= 1; // 选择数据读通道
LCDBUS=0xff;
_CS = 0; // 选通模块
_RD = 0; // 读信号有效
DData=LCDBUS; // 取数据
_RD = 1; // 读信号无效
_CS = 1; // 封锁模块
return(DData); // 返回读取的数据
}
//-----------------------------------
// 初始化子程序
//-----------------------------------
void initLCDM(void)
{
//-------系统设置指令-----------------------
SdCmd(0x40); //System Set (带8个参数)
SdData(0x30); // IV=1,W/S=0,M2=0,M0=0
SdData(0x87); // WF=1 FX=8
SdData(0x07); // FY=8
SdData(0x28); // C/R=40个字符/行 LM2068
// SdData(0x18); // C/R=24个字符/行 LM1095
SdData(0x47); // TC/R LM2068/LM1095通用
SdData(0xef); // L/F=240 LM2068
// SdData(0x7f); // L/F=128 LM1095
SdData(0x30); // AP=0030H
SdData(0x00); //
//------显示区域设置指令---------------------
SdCmd(0x44); //Scroll (带10个参数)
SdData(0x00); // SAD1= 0000H
SdData(0x00); //
SdData(0xef); // SL1=240行 LM2068
// SdData(0x7f); // SL1=128行 LM1095
SdData(0x00); // SAD2= 1000H
SdData(0x10); //
SdData(0xef); // SL2=240行 LM2068
// SdData(0x7f); // SL2=128行 LM1095
SdData(0x00); // SAD3= 6000H
SdData(0x60); //
SdData(0x00); // SAD4= 0000H
SdData(0x00); //
//------显示功能设置----------------------------
SdCmd(0x5a); // HDOT SCR (带1个参数)
SdData(0x00); //
SdCmd(0x5b); // OVLAY (带1个参数)
SdData(0x01); // OV=0,DM1=0,DM0=0,MX=01(XOR)
SdCmd(0x5d); //CSRFORM (带2个参数)
SdData(0x07); // CX=8
SdData(0x17); // CM=1, CY=8
//------显示开关指令-----------------------------
SdCmd(0x59); // Display ON/OFF(带1个参数)
SdData(0x14); // 第1、2显示区显示开
}
//-----清屏子程序--------------------------------
void ClearRAM()
{
uint i;
SdCmd(0x46); // 设置光标地址
SdData(0x00);
SdData(0x00);
SdCmd(0x4c); // 设置光标移动方向
SdCmd(0x42); // 写数据指令
for (i=0;i<0x7fff;i++) // 循环写32K单元?
{
SdData(0x00); // 写数据0
}
}
//-------字符写入子程序----------------------
void PrintASCII(uint x,y,uchar *pstr)
// 坐标(x,y),x为水平方向字符位;y为垂直方向字符行;*pstr ASCII字符代码数组名
{
uint addr; // 第一显示区域为文本属性
addr=y*0x30+x; // 计算显示RAM地址
SdCmd(0x46); // 设置字符显示首地址
SdData(addr);
SdData(addr>>8);
SdCmd(0x4c); // 地址水平加1设置
SdCmd(0x42); // 写数据指令
while(*pstr>0)
{
SdData(*pstr++); // 写入字符代码
}
}
void PrintGB(uchar x,y,uchar *pstr)
// 坐标(x,y),x为水平方向字符位;y为垂直方向像素行;*pstr 中文字符代码数组名
{
uint addr,pter;
uchar i,j; // 第二显示区域为图形属性
addr=y*0x30+x+0x1000; // 计算显示RAM地址
while(*pstr>0)
{
pter = *pstr++;
pter= (pter-1)*32; // 计算中文字库字符首地址
for (i=0;i<2;i++)
{
SdCmd(0x46); // 设置中文字符显示首地址
SdData(addr);
SdData(addr>>8);
SdCmd(0x4f); // 设置地址垂直加1行
SdCmd(0x42); // 写数据指令
for (j=0;j<16;j++)
{
SdData(CCTAB[pter+j+16*i]); // 写入字模数据
}
addr=addr+1; // 下一个地址修正?
}
}
}
//-----图画写入子程序-----------------------------------
void ShowBMP(uint x,y,width,high,uchar bmp[])
// 坐标(x,y),x为水平方向像素列;y为垂直方向像素行
//width:图形水平像素点数;high:图形垂直像素点数;bmp[]:图形数组名
{
uchar i,j;
uint addr,k=0; // 第二显示区域为图形属性
addr=y*0x30+x+0x1000; // 计算显示RAM地址
for(i=0;i<high;i++) // 写入行循环量
{
SdCmd(0x46); // 设置图形显示首地址
SdData(addr);
SdData(addr>>8);
SdCmd(0x4c); // 设置地址水平加1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -