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

📄 topway-graphiclcm-s6b0741-demopro-v0.1.c

📁 本文介绍S6B0741液晶模块的显示控制并给出例子程序。
💻 C
📖 第 1 页 / 共 3 页
字号:
   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 + -