• STM32学习之路-LCD(2)


    版权声明:本文为博主原创文章。未经博主同意不得转载。

    https://blog.csdn.net/u011791262/article/details/27711881

    这些天一直在研究LCD的初始化函数,由于只是是用IO口模拟时序还是用FSMC来驱动LCD,都必需要弄好LCD的初始化

    事实上LCD的初始化就是跟着LCD IC的datasheet来写寄存器,大部分都使用上面的默认值,网上有非常多改动的样例,这里就不

    放出来了.可是我想写下一些比較重要的东西。

    这是从网上下载来的一个文件的前半部分:


    当然,别的型号的IC也是有这些东西的。只是可能有些地址不同而已.

    R0。这个命令有两个功能,假设对它写,则最低位为OSC,用于开启和关闭振荡器。

    而假设对它读操作,

    则返回的是控制器的型号。

    这个命令最大的功能是通过读它能够得到控制器的型号。而我们的代码知道了控制器的型号之后,

    能够针对不同型号的控制器,进行不同的初始化。由于93xx系列的初始化,事实上都比較相似。我们全然能够用一个代码兼容好几个控制器。

    R3。入口模式命令。我们重点关注的是I/D0、I/D1、AM这三个位,由于这三个位控制了屏幕的显示方向。

    AM:控制GRAM更新方向。当AM=0的时候。地址以行方向更新。当AM=1的时候,地址以列方向更新。

    I/D[1:0]:当更新一个数据之后。依据这两个位的设置来控制地址计数器自己主动添加/降低1。其关系例如以下:



    通过这几个位置的设置,我们就能够控制屏幕的显示方向了。

    另一点就是关于是否要硬件复位这里, 这里要看芯片的datasheet。看Bus Interface这里是否要求硬件复位

    R61509就明白要求了这一点:


    所以在初始化函数开头是要加上复位的代码的

    GPIO_ResetBits(GPIOE, GPIO_Pin_1);  //硬件复位
     Delay(0x1AFFf);   
     GPIO_SetBits(GPIOE, GPIO_Pin_1 );

    Delay(0x1AFFf);

    另一点就是关于伽马校准寄存器的配置,实在是看不懂为要这样设置这些參数

    	LCD_WR_CMD(0x0300, 0x00C00);//gamma
    	LCD_WR_CMD(0x0301, 0x05A0B);
    	LCD_WR_CMD(0x0302, 0x00906);
    	LCD_WR_CMD(0x0303, 0x01017);
    	LCD_WR_CMD(0x0304, 0x02300);
    	LCD_WR_CMD(0x0305, 0x01700);
    	LCD_WR_CMD(0x0306, 0x06309);
    	LCD_WR_CMD(0x0307, 0x00C09);
    	LCD_WR_CMD(0x0308, 0x0100C);
    	LCD_WR_CMD(0x0309, 0x02232);
    并且不同的IC芯片的伽马校正设置參数也不一样.. 也许看到这篇文章的大虾又刚好知道这里是怎么回事的话,那就请拉小弟一把,解释下什么原因

    剩下的还有就是其它一下显示图片,字符的函数什么的了, 下次再写下来,由于还没研究多少呢.

  • 相关阅读:
    Linux--shell的awk--10
    Spring Boot 整合 tk.mybatis
    pring Boot 整合 Druid
    Thymeleaf 模板布局
    Thymeleaf 内置对象
    Thymeleaf 表达式语法
    Thymeleaf 参考手册
    Thymeleaf常用语法
    Thymeleaf简介及第一个thymeleaf模板
    Docker 安装nginx
  • 原文地址:https://www.cnblogs.com/mqxnongmin/p/10714913.html
Copyright © 2020-2023  润新知