LCD_FSMC
/**************************************************************************
* 文件名: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的更多相关文章
随机推荐
- CDH5.15.1 hive 连接mongodb配置及增删改查
1. 下载 wget http://repo1.maven.org/maven2/org/mongodb/mongo-hadoop/mongo-hadoop-hive/2.0.2/mongo-hado ...
- linux下压力测试工具ab的使用
一.安装 [root@node2 logs]# yum install httpd-tools 已加载插件:fastestmirror Loading mirror speeds from cache ...
- 学习TestNG,乍暖还寒冷时
时间:2019年2月23日,农历正月十九,星期六,天气晴,略有阳光,但下午三点多就不见阳光了. 地点:上海 昨夜雨疏风骤,浓睡不消残酒.试问卷帘人,却道海棠依旧.知否?知否?应是绿肥红瘦 是的,魔都上 ...
- 在同时满足if 和 else 条件的情况下,输出所需的内容。
请问划线处填什么内容,可以输出 "Hello World!"?if(__________){ printf("Hello ");}else{ pri ...
- Docker registry垃圾回收
Docker registry垃圾回收 通过: docker run -p 5000:5000 -v /netdata/xxxx/registry:/var/lib/registry registry ...
- mysql mycat 中间件安装与使用
一,什么是mycat 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务.ACID.可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群 一 ...
- H5(ionic2+VScode) 环境安装
一:node.js.npm.cnpm.cordova环境安装 介绍下概念 node.js 非阻塞异步的Ajax 操作基础框架. npm 国外的node.js 包管理器 cnpm 国内淘宝的node.j ...
- XACT_ABORT选项
XACT_ABORT选项用于指定当SQL语句出现运行时错误时,SQL Server是否自动回滚到当前事务.其语法格式如下所示: SET XACT_ABORT{ON|OFF} 当SET XACT_ABO ...
- css动画特效
<html> <head> <meta charset="utf-8" /> <title>6种css3鼠标滑过动画效果</t ...
- 小程序canvas绘制渐变色(简单入门)
呀,曾经的我是那么的单纯,天真,粗略的翻了一遍小程序画布API,没有看见渐变色,就以为不支持渐变色 于是在项目中直接把原本的渐变色换成了单一颜色展示,发现很low啊 但是,自从上次小程序API文档更新 ...