📄 topway-graphiclcm-s6b0741-demopro-v0.1.c
字号:
SCLK = 1; // 初始化SCLK
A0 = 1; // 选择数据通道
_CS = 0; // 选通模块
for(j=0;j<8;j++)
{
SID=transbit; // 位寄存器D7位送数据口
SCLK=0; // 产生移位脉冲
SCLK=1; // 上升沿有效
transdata=transdata<<1; // 位寄存器数据左移一位
}
_CS=1; // 封锁模块
}
//----------------------------------------
// 功能子程序
//----------------------------------------
//-----灰度设置程序---------------
//
//-----前景灰度设置子程序---------
void SetFgray(uchar gray)
{
gray=gray&0x03;
gray=gray<<4;
GrayLevel4=GrayLevel4&0x0f|gray;
}
//-----背景灰度设置子程序---------
void SetGgray(uchar gray)
{
GrayLevel4=gray&0x03|GrayLevel4&0xf0;
}
//-----灰度数据生成子程序---------
void SdGraydata(uchar MonoData)
{
uchar i;
graydata0=0;
graydata1=0;
for (i=0;i<8;i++)
{
graydata0=graydata0>>1;
graydata1=graydata1>>1;
switch (MonoData&0x01)
{
case 1 : grayd1bit7=Fgraybit1;grayd0bit7=Fgraybit0;break;
case 0 : grayd1bit7=Ggraybit1;grayd0bit7=Ggraybit0;break;
}
MonoData=MonoData>>1;
}
SdData(graydata1);
SdData(graydata0);
}
//------ASCII字符写入子程序---------------
void PrintASCII(uint x,y,uchar *pstr)
// 坐标(x,y),x为水平方向像素列;y为垂直方向字符行(8点像素/行)
{
uchar j;
uint addr;
SdCmd(y|0xb0); // 设置页地址
SdCmd((x>>4)|0x10); // 设置列地址高4位
SdCmd(x&0x0f); // 设置列地址低4位
while(*pstr>0)
{
addr=*pstr++; // 取字符代码
addr=(addr-0x20)*8; // 计算字符字模起始地址
for (j=0;j<6;j++) // 设置循环量,显示6*8点阵字符
{
SdGraydata(ASCIITAB[addr+j]); // 写字模数据
}
}
}
//------汉字字符写入子程序-----------------
void PrintGB(uchar x,y,uchar *pstr)
// 坐标(x,y),x为水平方向像素列;y为垂直方向字符行(8点像素/行)
{
uint addr;
uchar j,n;
while(*pstr>0)
{
addr=*pstr++; // 取汉字代码
addr=(addr-1)*32; // 计算汉字字模起始地址
for (n=0;n<2;n++)
{
SdCmd(y|0xb0); // 设置页地址
SdCmd((x>>4)|0x10); // 设置列地址高4位
SdCmd(x&0x0f); // 设置列地址低4位
for (j=0;j<16;j++) // 写16字节字模数据
{
SdGraydata(CCTAB[addr+j+16*n]); // 写字模数据
}
y=y+1;
} // 页地址加1
y=y-2; // 页地址修正原值
x=x+16; // 列地址修正下一个汉字位置
}
}
//-----------------------------------
// 对比度调节程序 Contrast control
//-----------------------------------
//-----对比度增强子程序-------------
void LCD_Darker(void)
// 对比度参数ConTrastLevel初始值在初始化程序中设置
{
if (ContrastLevel<0x3F) // 限制上限值
{
ContrastLevel++; // 对比度参数加1
}
SdCmd(0x81); // 对比度设置指令代码
SdCmd(ContrastLevel); // 写入对比度值
}
//-----对比度减弱子程序---------------
void LCD_Lighter(void)
// 对比度参数ConTrastLevel初始值在初始化程序中设置
{
if (ContrastLevel>0x00) // 限制下限值
{
ContrastLevel--; // 对比度参数减1
}
SdCmd(0x81); // 对比度设置指令代码
SdCmd(ContrastLevel); // 写入对比度值
}
//-----------------------------------
// 初始化子程序Init LCD module
//-----------------------------------
void initLCDM(void)
{
//------对比度参数初始值设置-----------------------------------
ContrastLevel=0x20; // 对比度参数初始化设置
//------显示设置----------------------------------------------
SdCmd(0xa1); // ADC=1,RAM列地址与列驱动逆顺序
SdCmd(0xc8); // SHL=1,行驱动方向为反向
SdCmd(0x44); SdCmd(0x10); // COM0寄存器=10H
SdCmd(0x48); SdCmd(0x60); // 占空比设置1/96
SdCmd(0x40); SdCmd(0x00); // 显示起始行=0
SdCmd(0xab); // 启用内部振荡器
SdCmd(0x4c); SdCmd(0x00); // 设置M信号周期
//-------LCD电源设置-------------------------------------------
SdCmd(0x66); // 5X倍压
SdCmd(0x27); // 调节器电阻比设置
SdCmd(0x81);SdCmd(ContrastLevel);// 对比度设置
SdCmd(0x54); // 偏压1/9
SdCmd(0x2f); // 启用内部LCD驱动电源
//-------灰度设置---------------------------------------------
SdCmd(0x93); // 设置灰度驱动方式为4FRC+15PWM
SdCmd(0x88); SdCmd(0x00); // 设置W_FR2,1灰度寄存器值
SdCmd(0x89); SdCmd(0x00); // 设置W_FR4,3灰度寄存器值
SdCmd(0x8a); SdCmd(0x88); // 设置L_FR2,1灰度寄存器值
SdCmd(0x8b); SdCmd(0x88); // 设置L_FR4,3灰度寄存器值
SdCmd(0x8c); SdCmd(0xaa); // 设置D_FR2,1灰度寄存器值
SdCmd(0x8d); SdCmd(0xaa); // 设置D_FR4,3灰度寄存器值
SdCmd(0x8e); SdCmd(0xff); // 设置B_FR2,1灰度寄存器值
SdCmd(0x8f); SdCmd(0xff); // 设置B_FR4,3灰度寄存器值
//-------开显示------------------------------------------------
SdCmd(0xa6); // 正向显示
SdCmd(0xaf); // 开显示
}
//----清屏子程序-----------------
void ClearRAM()
{
uint i,j;
for (i=0;i<12;i++) // 循环写8页
{
SdCmd(i|0xb0); // 页地址设置
SdCmd(0x10); // 列地址高4位
SdCmd(0x00); // 列地址低4位
for(j=0;j<128;j++) // 循环写128单元
{
SdData(0x00); // 数据设置为0
SdData(0x00);
}
}
}
//-----图画写入子程序
void ShowBMP(uint x,y,width,high,uchar bmp[])
// 坐标(x,y),x为水平方向像素列;y为垂直方向页(8点像素/页)
//width:图形水平像素点数;high:图形垂直页数;bmp[]:图形数组名
{
uint i,j;
uint k=0;
for(i=0;i<high;i++)
{
SdCmd(y|0xb0); // 设置页地址
SdCmd((x>>4)|0x10); // 设置列地址高4位
SdCmd(x&0x0f); // 设置列地址低4位
for(j=0;j<width;j++)
{
SdData(bmp[k]); // 写图形数据
k=k+1;
}
y=y+1; // 页地址修正
}
}
//-----------------------------------
// Main Program
//-----------------------------------
void main()
{
uchar code dis6[]={0x01,0x02,0x03,0x04,0x05,0x0a,0x0b,0x00};
SP=0x60;
EA = 0; // disable interrupts
_RST=1; // hardware reset LCD module
_RST=0;
delayms(10);
_RST=1;
delayms(500);
_CS =1;
A0 =1;
SCLK =1;
SID =1;
initLCDM();
while(1)
{
ClearRAM();
SetFgray(3);SetGgray(0);
PrintGB(9,1,dis6);
SetFgray(2);SetGgray(0);
PrintASCII(4,4,"SHENZHEN TOPWAY LTD.");
SetFgray(1);SetGgray(0);
PrintASCII(6,6,"{^_^}LM9033(A){^.^}");
SetFgray(0);SetGgray(2);
PrintASCII(13,8,"TEL:0755-26613055");
SetFgray(2);SetGgray(1);
PrintASCII(0,11,"*********************");
delayms(3000);
ClearRAM();
ShowBMP(0,0,256,12,pic1);
delayms(3000);
}
}
//end of program
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -