---恢复内容开始---

这里有个比较坑人的地方就是在使用过程中LCD的供电最好用3.3v的不要用5v有时候会初始化不成功,会闪屏时断时续就像接触不良一样,可能是使用5V之后时序电平高低不准确。

void Delay(unsigned short tick)
{
  uint8_t j, k;
  for (j = 0; j < tick; j++)
    for (k = 0; k < 110; k++)
      ;
}
void delay_us(int i)
{
  int j, k;
  for (j = 0; j < i; j++)
    for (k = 0; k < 1; k++)
      ;
}
void transfer_command(int data1)
{
  char i;
  RS_L; //RS:低,写入命令
  for (i = 0; i < 8; i++)
  {
    SCLK_L;    //时钟线
    delay_us(2);
    if (data1 & 0x80)
    {
      SDA_H;//数据线
    }
    else
    {
      SDA_L;
    }
    SCLK_H;
    delay_us(2);
    data1 <<= 1;
  }
}
void transfer_data(int data1)
{
  char i;
   RS_H; //RS:高,发送数据
  for (i = 0; i < 8; i++)
  {
    SCLK_L;
    delay_us(1);
    if (data1 & 0x80)
    {
      SDA_H;
    }
    else
    {
      SDA_L;
    }
    SCLK_H;
    delay_us(1);
    data1 <<= 1;
  }
}
void init_lcd(void) //LCD初始化
{
  RST_L; //硬件复位
  Delay(100);
  RST_H;
  Delay(100);
  transfer_command(0xe2); //软件复位
  Delay(5);
  transfer_command(0x2c); /*升压步聚1*/
  Delay(5);
  transfer_command(0x2e); /*升压步聚2*/
  Delay(5);
  transfer_command(0x2f); /*升压步聚3*/
  Delay(5);
  transfer_command(0x24); /*粗调对比度,可设置范围20~27*/
  transfer_command(0x80); /*微调对比度*/
  transfer_command(0x1a); /*微调对比度的值,可设置范围0~63  1f*/
  transfer_command(0xa2); /*1/9偏压比(bias)*/
  transfer_command(0xc8); /*行扫描顺序:从上到下*/
  transfer_command(0xa0); /*列扫描顺序:从左到右*/
  transfer_command(0x40); /*起始行:从第一行开始*/
  transfer_command(0xaf); /*开显示*/
}
void lcd_address(unsigned char page, unsigned char column)
{
  column = column - 1;                             //第1列在LCD驱动IC里是第0列,所以减1.
  page = page - 1;                                 //第1页,在LCD驱动IC里是第0页,所以减1
  transfer_command(0xb0 + page);                   //设置页地址。每页是 8 行。一个画面的 64 行被分成 8 个页。
  transfer_command(((column >> 4) & 0x0f) + 0x10); //设置列地址的高 4 位
  transfer_command(column & 0x0f);                 //设置列地址的低 4 位
}
void clear_screen()
{
  unsigned char i, j;
  for (i = 0; i < 9; i++)
  {
    //lcd_address(1 + i, 1);
    transfer_command(0xb0 + i);
    transfer_command(0x10);
    transfer_command(0x00);
    for (j = 0; j < 132; j++)
    {
      transfer_data(0x00);
    }
  }
}

---恢复内容结束---

void Delay(unsigned short tick)
{
  uint8_t j, k;
  for (j = 0; j < tick; j++)
    for (k = 0; k < 110; k++)
      ;
}
void delay_us(int i)
{
  int j, k;
  for (j = 0; j < i; j++)
    for (k = 0; k < 1; k++)
      ;
}
void transfer_command(int data1)
{
  char i;
  RS_L; //RS:低,写入命令
  for (i = 0; i < 8; i++)
  {
    SCLK_L;
    delay_us(2);
    if (data1 & 0x80)
    {
      SDA_H;
    }
    else
    {
      SDA_L;
    }
    SCLK_H;
    delay_us(2);
    data1 <<= 1;
  }
}
void transfer_data(int data1)
{
  char i;
   RS_H; //RS:高,发送数据
  for (i = 0; i < 8; i++)
  {
    SCLK_L;
    delay_us(1);
    if (data1 & 0x80)
    {
      SDA_H;
    }
    else
    {
      SDA_L;
    }
    SCLK_H;
    delay_us(1);
    data1 <<= 1;
  }
}
void init_lcd(void) //LCD初始化
{
  RST_L; //硬件复位
  Delay(100);
  RST_H;
  Delay(100);
  transfer_command(0xe2); //软件复位
  Delay(5);
  transfer_command(0x2c); /*升压步聚1*/
  Delay(5);
  transfer_command(0x2e); /*升压步聚2*/
  Delay(5);
  transfer_command(0x2f); /*升压步聚3*/
  Delay(5);
  transfer_command(0x24); /*粗调对比度,可设置范围20~27*/
  transfer_command(0x80); /*微调对比度*/
  transfer_command(0x1a); /*微调对比度的值,可设置范围0~63  1f*/
  transfer_command(0xa2); /*1/9偏压比(bias)*/
  transfer_command(0xc8); /*行扫描顺序:从上到下*/
  transfer_command(0xa0); /*列扫描顺序:从左到右*/
  transfer_command(0x40); /*起始行:从第一行开始*/
  transfer_command(0xaf); /*开显示*/
}
void lcd_address(unsigned char page, unsigned char column)
{
  column = column - 1;                             //第1列在LCD驱动IC里是第0列,所以减1.
  page = page - 1;                                 //第1页,在LCD驱动IC里是第0页,所以减1
  transfer_command(0xb0 + page);                   //设置页地址。每页是 8 行。一个画面的 64 行被分成 8 个页。
  transfer_command(((column >> 4) & 0x0f) + 0x10); //设置列地址的高 4 位
  transfer_command(column & 0x0f);                 //设置列地址的低 4 位
}
void clear_screen()
{
  unsigned char i, j;
  for (i = 0; i < 9; i++)
  {
    //lcd_address(1 + i, 1);
    transfer_command(0xb0 + i);
    transfer_command(0x10);
    transfer_command(0x00);
    for (j = 0; j < 132; j++)
    {
      transfer_data(0x00);
    }
  }
}

转载于:https://www.cnblogs.com/lmj1997/p/10287488.html

jlxLCD12864液晶屏驱动STM32F411相关推荐

  1. TFT_LCD液晶屏驱动设计与验证

    TFT_LCD液晶屏驱动设计与验证 注:在本实验工程中,输出信号中包含 HV 同步模式下需要的行.场同步信号(hsync. vsync)和 DE 同步模式下的 tft_de 信号,各信号正确输出.读者 ...

  2. 怎么点亮段码屏_段码LCD液晶屏驱动方法

    TFT 液晶屏: http://www.hzjingxian.com 段码 LCD 液晶屏驱动方法 段码 LCD 液晶屏驱动方法 首先,不要以为用单片机来驱动就以为段码屏是直流驱动的,其实,段码屏是交 ...

  3. i.mx6 lvds接口的DE模式液晶屏驱动调试

    我这篇文章主要讲述i.mx6 平台下 采用DE模式的lvds液晶屏的驱动调试, 阅读该文章之前请先阅读如下两篇我转载的文章,这两篇文章是理解我这篇文章的基础知识. 1.        lcd fb参数 ...

  4. LCD 液晶屏驱动详解

    LCD液晶屏驱动详解 开发环境 开发板:JZ2440V3 CPU:samsunS3C2440 内核:Linux3.4.2 编译工具:arm-linux-gcc 4.3.2 LCD:4.3存液晶屏AT0 ...

  5. 液晶屏驱动 Realtek2660H方案demo有电路板,电路图源码#Realtek2660H方案

    #Realtek2660H方案demo有电路板,电路图源码#Realtek2660H方案 有电路板,电路图,源码! 有兴趣从事液晶屏驱动的人可入手!走不错的学习资料及平台!无电子开发经验的人慎入!有r ...

  6. 段码液晶屏驱动IC你知道怎么选吗?

    段码液晶屏因其简易便捷的动态显示,灵便的反应速率,不用人为因素的长期的实际操作而遭受众多客户的应用.那麼,段码液晶屏的驱动IC该如何选择就由液晶屏生产厂家来给你详细介绍. ​​​​​ 段码液晶屏的驱动 ...

  7. ESP32驱动LCD液晶屏选型、262K什么意思?SPI写LCD的GRAM时序、MCU液晶屏驱动IC的寄存器功能

    最近转战ESP32,ESP32-D0WDQ6 型号的GPIO只有那么20个左右,且还有几个GPIO只能做输入,非常捉襟见肘.所以如果要驱动LCD液晶屏,绝大多数都会选择SPI接口的MCU屏. 为了编写 ...

  8. LCD液晶屏驱动详解

    开发环境: 开发板:JZ2440V3 CPU:samsunS3C2440 内核:Linux3.4.2 编译工具:arm-linux-gcc 4.3.2 LCD:4.3存液晶屏AT043TN24 参考文 ...

  9. 十分钟搞定SSD1963液晶屏驱动

    SSD1963简介 • Display feature − Built-in 1215K bytes frame buffer. Support up to 864 x 480 at 24bpp di ...

最新文章

  1. R语言ggplot2可视化发散型条形图、发散条形图(Diverging Bars)是一种可以同时处理负值和正值的条形图、并按照大小排序区分数据(Diverging Bars)
  2. 图神经网络新课上架:​宾大2020秋季在线课程开课,视频上线B站
  3. shell编程中的select用法
  4. Windows中安装MongoDB以及studio3t
  5. 用资源管理器右键编译 Visual Studio 解决方案文件
  6. [LeetCode]两两交换链表中的节点(Swap Nodes in Pairs)
  7. ADSL宽带路由密码恢复经验详谈
  8. PHP 编写接口并在header中进行简单的校验
  9. 【转】opencv中widthStep不一定等于width*nChannels的原因
  10. 在word中公式太长,用公式编辑器怎样设置才能自动换行?
  11. luogu P3934 [Ynoi2016] 炸脖龙 I
  12. 为什么说社群团购时代来临了?
  13. 用C/C++写一个简单的音乐播放器(基于windows控制台编程)
  14. pdfsam Enhanced 6中文版
  15. Win7系统下文件或程序无法选择默认打开方式如何解决
  16. 史上最污技术解读,老司机瞬间开车!
  17. 推荐系统:常用评价指标总结【准确率、精确率、召回率、命中率、(归一化折损累计增益)NDCG、平均倒数排名(MRR)、ROC曲线、AUC(ROC曲线下的面积)、P-R曲线、A/B测试】
  18. 深入理解和把握数字经济的基本特征
  19. 重磅发布!RK3568开发板C应用编程手册
  20. 柯尼卡美能达C360怎么开机

热门文章

  1. 240个Python练习案例附源码(百看不如一练)
  2. 企业付款到零钱操作步骤
  3. vscode 中如何删除空行
  4. ps4移植android游戏,捡垃圾之路 篇八:这一次PSV用实力吊打Switch!2021你需要知道的安卓移植大作(含游戏下载)...
  5. 各个省市对应车牌号字母
  6. 「JVM 故障诊断」命令行工具
  7. 点餐订餐系统应用android源码
  8. Android GUI系统框架介绍
  9. Android DanmakuFlameMaster的踩坑方式
  10. SHT11的C语言,用SHT11 构成的温湿度监测系统