/**************************************************************************
* 文件名:LCD_FSMC.h *
* 编写人:离逝的风 *
* 更新时间:2018.12.15 *
* 说明:此文件属于开源,所有权对任何人开放 *
* 如有问题请联系邮箱:1477153217@qq.com *
* 使用步骤: *
* 1.在主函数中调用LcdInit()函数对LCD初始化即可使用其他函数 *
* 说明:程序中采用的是ILI9325液晶控制器,若不是该控制器,则需要在初始化中 *
* 修改替换成相对应得控制器初始化程序 *
***************************************************************************/ #ifndef __LCD_FSMC_H_
#define __LCD_FSMC_H_ #include "stm32f10x.h"
/*################################FSMC引脚说明###############################################
FSMC_NOE-----PD4 FSMC_NE1/FSMC_NCE2-----PD7 FSMC_NE2/FSMC_NCE3----PG9
FSMC_NWE-----PD5 FSMC_NCE4_1/FSMC_NE3---PG10 FSMC_NCE4_2------PG11
FSMC_NE4-----PG12 FSMC_A0----PF0 FSMC_A1----PF1 FSMC_A2----PF2 FSMC_A3----PF3
FSMC_A4----PF4 FSMC_A5----PF5 FSMC_A6----PF12 FSMC_A7----PF13
FSMC_A8----PF14 FSMC_A9----PF15 FSMC_A10---PG0 FSMC_A11---PG1
FSMC_A12---PG2 FSMC_A13---PG3 FSMC_A14---PG4 FSMC_A15---PG5
FSMC_A16---PD11 FSMC_A17---PD12 FSMC_A18---PD13 FSMC_A19---PE3
FSMC_A20---PE4 FSMC_A21---PE5 FSMC_A22---PE6 FSMC_A23---PE2
FSMC_A24---PG13 FSMC_A25---PG14 FSMC_D0----PD14 FSMC_D1----PD15 FSMC_D2----PD0 FSMC_D3----PD1
FSMC_D4----PE7 FSMC_D5----PE8 FSMC_D6----PE9 FSMC_D7----PE10
FSMC_D8----PE11 FSMC_D9----PE12 FSMC_D10---PE13 FSMC_D11---PE14
FSMC_D12---PE15 FSMC_D13---PD8 FSMC_D14---PD9 FSMC_D15---PD10 FSMC_INT2--PG6 FSMC_INT3--PG77 FSMC_NIORD-PF6 FSMC_NREG--PF7
FSMC_NIOWR-PF8 FSMC_CD----PF9 FSMC_INTR--PF10 FSMC_NIOS16-PF11
FSMC_CLK---PD3 FSMC_NWAIT-PD6 FSMC_NBL0--PE0 FSMC_NBL1---PE1
*********************************************************************************************/ /*################################寄存器说明##################################################
BTCR[0]---FSMC_BCR1 BTCR[1]---FSMC_BTR1
BTCR[2]---FSMC_BCR2 BTCR[3]---FSMC_BTR2
BTCR[4]---FSMC_BCR3 BTCR[5]---FSMC_BTR3
BTCR[6]---FSMC_BCR4 BTCR[7]---FSMC_BTR4 BWTR[0]---FSMC_BWTR1 BWTR[2]---FSMC_BWTR2
BWTR[4]---FSMC_BWTR3 BWTR[6]---FSMC_BWTR4 BWTR[1] BWTR[3] BWTR[5]保留
*********************************************************************************************/
/*###################################下面是LCD的引脚连线#####################################*/
//片选线 1:连接在块1 2:连接在块2 3:连接在块3 4:连接在块4
#define LCD_CS 4
//数据和命令选择线 0-25:分别连接在A0-A25上
#define LCD_RS 10
//背光线
#define LCD_BLK RCC->APB2ENR|=(1<<3);GPIOB->CRL&=0xffffffF0;GPIOB->CRL|=0X00000003;
//背光控制
#define LCD_BLK_ON GPIOB->BRR|=(1<<0);
#define LCD_BLK_OFF GPIOB->BSRR|=(1<<0); /*###################################下面函数供用户调用#####################################*/
//液晶初始化函数
void LcdInit(void);
//液晶填充函数
void LcdFill(unsigned long color); #endif //FILE END
/**************************************************************************
* 文件名:LCD_FSMC.c *
* 编写人:离逝的风 *
* 更新时间:2018.12.15 *
* 说明:此文件属于开源,所有权对任何人开放 *
* 如有问题请联系邮箱:1477153217@qq.com *
* 使用步骤: *
* 1.在主函数中调用LcdInit()函数对LCD初始化即可使用其他函数 *
* 说明:程序中采用的是ILI9325液晶控制器,若不是该控制器,则需要在初始化中 *
* 修改替换成相对应得控制器初始化程序 *
***************************************************************************/ #include "LCD_FSMC.h" /************************************************************************************
函数:LcdDelay
参数:time时间长短
返回值:无
说明:初始化使用的延时函数
*************************************************************************************/
void LcdDelay(unsigned int time)
{
unsigned int x,y;
for(x=;x<time;x++)
for(y=;y<;y++);
} /************************************************************************************
函数:LcdWriteData
参数:Data:写入的数据
返回值:无
说明:液晶屏写数据函数
*************************************************************************************/
void LcdWriteData(unsigned int Data)
{
*(volatile unsigned long *)(0x6c000000+0X000007FE+(<<(LCD_RS+)))=Data;
}
/************************************************************************************
函数:LcdWriteCom
参数:Com:写入的指令
返回值:无
说明:液晶屏写指令函数
*************************************************************************************/
void LcdWriteCom(unsigned int Com)
{
*(volatile unsigned long *)(0x6c000000+0X000007FE)=Com;
} /************************************************************************************
函数:LcdWriteDatCom
参数:Com:写入的指令 Data:写入的数据
返回值:无
说明:液晶屏写指令和数据函数
*************************************************************************************/
void LcdWriteDatCom(unsigned int Com,unsigned int Data)
{
LcdWriteCom(Com);
LcdWriteData(Data);
} /************************************************************************************
函数:LcdInit
参数:无
返回值:无
说明:初始化液晶屏
*************************************************************************************/
void LcdInit(void)
{
RCC->AHBENR |= << ; //开启FSMC是时钟
RCC->APB2ENR |= << | << | << | << ; // 开启GPIO B,D,E,G引脚时钟
RCC->APB2ENR |= << ; //开启引脚复用时钟
//GPIOB配置为复用推完输出
GPIOB->CRL &= 0xfffffff0;
GPIOB->CRL |= 0x00000003;
//GPIOD配置为复用推完输出
GPIOD->CRL &= 0xff00ff00;
GPIOD->CRL |= 0x00bb00bb;
GPIOD->CRH &= 0x00fff000;
GPIOD->CRH |= 0xbb000bbb;
//GPIOE配置为复用推完输出
GPIOE->CRL &= 0x0fffffff;
GPIOE->CRL |= 0xb0000000;
GPIOE->CRH &= 0x00000000;
GPIOE->CRH |= 0xbbbbbbbb;
//GPIOG配置为复用推完输出
GPIOG->CRL &= 0xfffffff0;
GPIOG->CRL |= 0x0000000b;
GPIOG->CRH &= 0xfff0ffff;
GPIOG->CRH |= 0x000b0000; FSMC_Bank1->BTCR[(LCD_CS-)*] &= 0x00000000;
FSMC_Bank1->BTCR[(LCD_CS-)*] |= << | << | 0x01 << | 0x00 << | << ; FSMC_Bank1->BTCR[(LCD_CS-)*+] &= 0x00000000;
FSMC_Bank1->BTCR[(LCD_CS-)*+] |= 0x00 << | 0x0000 << | 0x0f << | 0x01; FSMC_Bank1E->BWTR[(LCD_CS-)*] &= 0x00000000;
FSMC_Bank1E->BWTR[(LCD_CS-)*] |= 0x00 << | 0x0000 << | 0x03 << | 0x00; /*******下面为LCD初始化**************/
LcdWriteDatCom(0xE5, 0x78f0); // set SRAM internal timing
LcdWriteDatCom(0x01, 0x0100); // set Driver Output Control
LcdWriteDatCom(0x02, 0x0700); // set 1 line inversion
LcdWriteDatCom(0x03, 0xe030); // set GRAM write direction and BGR=1.
LcdWriteDatCom(0x04, 0x0000); // Resize register
LcdWriteDatCom(0x08, 0x0207); // set the back porch and front porch
LcdWriteDatCom(0x09, 0x0000); // set non-display area refresh cycle ISC[3:0]
LcdWriteDatCom(0x0A, 0x0000); // FMARK function
LcdWriteDatCom(0x0C, 0x0001); // RGB interface setting
LcdWriteDatCom(0x0D, 0x0000); // Frame marker Position
LcdWriteDatCom(0x0F, 0x0000); // RGB interface polarity
//*************Power On sequence ****************//
LcdWriteDatCom(0x10, 0x0000); // SAP, BT[3:0], AP, DSTB, SLP, STB
LcdWriteDatCom(0x11, 0x0007); // DC1[2:0], DC0[2:0], VC[2:0]
LcdWriteDatCom(0x12, 0x0000); // VREG1OUT voltage
LcdWriteDatCom(0x13, 0x0000); // VDV[4:0] for VCOM amplitude
LcdWriteDatCom(0x07, 0x0001);
LcdDelay(); // Dis-charge capacitor power voltage
LcdWriteDatCom(0x10, 0x1090); // SAP, BT[3:0], AP, DSTB, SLP, STB
LcdWriteDatCom(0x11, 0x0227); // Set DC1[2:0], DC0[2:0], VC[2:0]
LcdDelay(); // Delay 50ms
LcdWriteDatCom(0x12, 0x001F); // 0012
LcdDelay(); // Delay 50ms
LcdWriteDatCom(0x13, 0x1500); // VDV[4:0] for VCOM amplitude
LcdWriteDatCom(0x29, 0x0027); // 04 VCM[5:0] for VCOMH
LcdWriteDatCom(0x2B, 0x000D); // Set Frame Rate
LcdDelay(); // Delay 50ms
LcdWriteDatCom(0x20, 0x0000); // GRAM horizontal Address
LcdWriteDatCom(0x21, 0x0000); // GRAM Vertical Address
// ----------- Adjust the Gamma Curve ----------//
LcdWriteDatCom(0x30, 0x0000);
LcdWriteDatCom(0x31, 0x0707);
LcdWriteDatCom(0x32, 0x0307);
LcdWriteDatCom(0x35, 0x0200);
LcdWriteDatCom(0x36, 0x0008);
LcdWriteDatCom(0x37, 0x0004);
LcdWriteDatCom(0x38, 0x0000);
LcdWriteDatCom(0x39, 0x0707);
LcdWriteDatCom(0x3C, 0x0002);
LcdWriteDatCom(0x3D, 0x1D04);
//------------------ Set GRAM area ---------------//
LcdWriteDatCom(0x50, 0x0000); // Horizontal GRAM Start Address
LcdWriteDatCom(0x51, 0x00EF); // Horizontal GRAM End Address
LcdWriteDatCom(0x52, 0x0000); // Vertical GRAM Start Address
LcdWriteDatCom(0x53, 0x013F); // Vertical GRAM Start Address
LcdWriteDatCom(0x60, 0xA700); // Gate Scan Line
LcdWriteDatCom(0x61, 0x0001); // NDL,VLE, REV
LcdWriteDatCom(0x6A, 0x0000); // set scrolling line
//-------------- Partial Display Control ---------//
LcdWriteDatCom(0x80, 0x0000);
LcdWriteDatCom(0x81, 0x0000);
LcdWriteDatCom(0x82, 0x0000);
LcdWriteDatCom(0x83, 0x0000);
LcdWriteDatCom(0x84, 0x0000);
LcdWriteDatCom(0x85, 0x0000);
//-------------- Panel Control -------------------//
LcdWriteDatCom(0x90, 0x0010);
LcdWriteDatCom(0x92, 0x0600);
LcdWriteDatCom(0x07, 0x0133); // 262K color and display ON
LcdWriteDatCom(0x00,0x0022);//
LcdDelay(); } /************************************************************************************
函数:LcdFill
参数:color:颜色值,16bit
返回值:无
说明:整屏填充颜色
*************************************************************************************/
void LcdFill(unsigned long color)
{
unsigned int x,y;
LcdWriteDatCom(0x50, ); // Horizontal GRAM Start Address
LcdWriteDatCom(0x51, ); // Horizontal GRAM End Address
LcdWriteDatCom(0x52, ); // Vertical GRAM Start Address
LcdWriteDatCom(0x53, ); // Vertical GRAM Start Address
for(x=;x<;x++)
for(y=;y<;y++)
{
LcdWriteDatCom(0x22,color);
} } //FILE END

LCD_FSMC的更多相关文章

随机推荐

  1. 区块链入门(4)Truffle创建项目,编译,及项目部署

    上一章的结尾说这一次要讲编写一个智能合约部署到测试网络集群中,并进行交易,但我自己越看越觉得内容挺多的.先讲下truffle的项目创建,编译和部署的问题,然后再做上面说的事情吧. truffle是一套 ...

  2. 配置ESP8266 NONOS SDK时由于工具链版本差异引发的故障

    前几天部署ESP8266_NONOS_SDK时遇到了一个看似奇怪的问题,描述如下: examples例程可以通过编译,但烧写到ESP8266模块后,程序无法正常运行,编译和烧写的相关配置均无误.在bo ...

  3. jquery-confirm使用方法

    简要教程 jquery-confirm是一款功能强大的jQuery对话框和确认框插件.它提供多种内置的主题效果,可以实现ajax远程加载内容,提供动画效果和丰富的配置参数等.它的特点还有: 可以使用键 ...

  4. LoadRunner 11.00安装篇(Win 10)

    参考博文: https://blog.csdn.net/xianjie0318/article/details/78625980 https://www.cnblogs.com/VseYoung/p/ ...

  5. ping不通公网ip时路由器设置

    可能是路由器里设置了wan口禁ping了 另外,NAT地址转换不要动,默认是开启的 主服务器上防火墙关掉或者设置好访问规则 默认的80端口是不能用的,需要设置一个其它的端口

  6. centos7下编译安装nginx-1.16.0

    一.下载nginx源码 http://nginx.org/en/download.html 如:nginx-1.16.0.tar.gz 二.创建用户和组,并解压 groupadd www userad ...

  7. Quartz.Net进阶之五:TriggerListener 、JobListener 和 SchedulerListener

    一.介绍 今天开始学习监听器,就是 Listener,在Quartz.Net 中,主要包含3类的监听器,主要内容包括:TriggerListener .JobListener 和 SchedulerL ...

  8. leetcode1:两数之和

    给定一个整数数组和一个目标值,找出数组中和为目标值的两个数. 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用. 实例: 给定 nums = [2, 7, 11, 15],target = ...

  9. 探究osg中的程序设计模式【目录】

    前序 探究osg中的程序设计模式---开篇 探究osg中的程序设计模式---创造性模式 探究osg中的程序设计模式---创造型模式---Factory(工厂)模式 探究osg中的程序设计模式---创造 ...

  10. JavaScript初见

    警告alert() 确认confirm() 提问prompt() 空格 JavaScript-打开新窗口(window.open) open() 方法可以查找一个已经存在或者新建的浏览器窗口. 语法: ...