#include "nxplpc11xx.h"
#include "ili9325.h"
#include "ascii.h"
#include "w25x16.h"
uint16 POINT_COLOR=BLACK;
uint16 BACK_COLOR=WHITE;
/**************************************************/
/* 函数功能;短暂延时,为LCD初始化时序服务 */
/**************************************************/
void delay(uint32 i)
{
i=i*1000;
while(i>0)
{
i--;
}
}
/*—————————————————————————————————————————————————*/
/***************************************************/
/* 函数功能;给ILI9325的寄存器写数据 */
/* 入口参数;val:16位数据 */
/* 说明: 写16位数据,学习板上的LCD采用8位连接,*/
/* 所以,16位数据分两次写进寄存器,先写高*/
/* 位,再写低位。 */
/* 注意:使用时需要先使用LCD_WR_REG(reg)选择要把数 */
/* 据写到哪个寄存器里面。 */
/***************************************************/
void LCD_WR_DATA(uint16 val)
{
GPIO3->DATA |= (1<<0); //RS=1;
GPIO3->DATA &=~(1<<1); //CS=0;
OUT_DATA(val>>8);
GPIO3->DATA &=~(1<<2); //WR=0;
GPIO3->DATA |= (1<<2); //WR=1;
OUT_DATA(val);
GPIO3->DATA &=~(1<<2); //WR=0;
GPIO3->DATA |= (1<<2); //WR=1;
GPIO3->DATA |= (1<<1); //CS=1;
}
/*——————————————————————————————————————————————————*/
/****************************************************/
/* 函数功能:确定往哪个寄存器写数 */
/* 入口参数;reg:选择的寄存器 */
/* 说明: 寄存器号是16位数,8位连接方式需要写两次*/
/****************************************************/
void LCD_WR_REG(uint16 reg)
{
GPIO3->DATA &=~(1<<0); //RS=0;
GPIO3->DATA &=~(1<<1); //CS=0;
OUT_DATA(reg>>8);
GPIO3->DATA &=~(1<<2); //WR=0;
GPIO3->DATA |= (1<<2); //WR=1;
OUT_DATA(reg);
GPIO3->DATA &=~(1<<2); //WR=0;
GPIO3->DATA |= (1<<2); //WR=1;
GPIO3->DATA |= (1<<0); //RS=1;
}
/*————————————————————————————————————————————————————*/
/******************************************************/
/* 函数功能;先选择寄存器号,再写数据到里面 */
/* 入口参数;REG:寄存器号 VALUE:数据值 */
/* 说明: 该函数是前两个函数的合成,也就是上面两个 */
/* 函数一般的用法就是这样组合。 */
/******************************************************/
void LCD_WR_REG_DATA(uint16 REG, uint16 VALUE)
{
LCD_WR_REG(REG);
LCD_WR_DATA(VALUE);
}
/******************************************************/
/* 函数功能;读寄存器16位数据 */
/* 出口参数:value 16位寄存器的值 */
/******************************************************/
uint16 LCD_RD_DATA(void)
{
uint16 value1,value2,value;
GPIO3->DATA |= (1<<0); //RS=1;
GPIO3->DATA &=~(1<<1); //CS=0;
GPIO3->DATA &=~(1<<3); //RD=0;
value1 = GPIO2->DATA;
value1 = ( (value1<<4)&(0xFF00) );
GPIO3->DATA |= (1<<3); //RD=1;
GPIO3->DATA &=~(1<<3); //RD=0;
value2 = GPIO2->DATA;
value2 = ( (value2>>4)&(0x00FF) );
GPIO3->DATA |= (1<<3); //RD=1;
value = value1 + value2;
GPIO3->DATA |= (1<<1); //CS=1;
return value;
}
/******************************************************/
/* 函数功能;先选择寄存器号,再从里面读数据 */
/* 入口参数;REG:寄存器号 VALUE:数据值 */
/******************************************************/
uint16 LCD_RD_REG_DATA(uint16 REG)
{
uint16 value;
LCD_WR_REG(REG);
GPIO2->DIR=0x000;
value=LCD_RD_DATA();
GPIO2->DIR=0xFF0;
return value;
}
/*******************************************************/
/* 函数功能:初始化LCD */
/*******************************************************/
void LCD_Init(void)
{
GPIO2->DIR|=0xFF0; // 设置P2口高8位引脚为输出,用作LCD8位并行数据
GPIO2->DATA |= 0XFF0; // P2口高8位引脚置高
GPIO3->DIR|=0x00F; // P3口P3.0到P3.3为输出,用作LCD控制引脚
GPIO3->DATA |= 0X00F; // P3口P3.0到P3.3置高
delay(60);
//************* Start Initial Sequence **********//
LCD_WR_REG_DATA(0x0001, 0x0100); // set SS and SM bit
LCD_WR_REG_DATA(0x0002, 0x0200); // set 1 line inversion
LCD_WR_REG_DATA(0x0003, 0x1030); // set GRAM write direction and BGR=1.
LCD_WR_REG_DATA(0x0004, 0x0000); // Resize register
LCD_WR_REG_DATA(0x0008, 0x0207); // set the back porch and front porch
LCD_WR_REG_DATA(0x0009, 0x0000); // set non-display area refresh cycle ISC[3:0]
LCD_WR_REG_DATA(0x000A, 0x0000); // FMARK function
LCD_WR_REG_DATA(0x000C, 0x0000); // RGB interface setting
LCD_WR_REG_DATA(0x000D, 0x0000); // Frame marker Position
LCD_WR_REG_DATA(0x000F, 0x0000); // RGB interface polarity
//*************Power On sequence ****************//
LCD_WR_REG_DATA(0x0010, 0x0000); // SAP, BT[3:0], AP, DSTB, SLP, STB
LCD_WR_REG_DATA(0x0011, 0x0007); // DC1[2:0], DC0[2:0], VC[2:0]
LCD_WR_REG_DATA(0x0012, 0x0000); // VREG1OUT voltage
LCD_WR_REG_DATA(0x0013, 0x0000); // VDV[4:0] for VCOM amplitude
LCD_WR_REG_DATA(0x0007, 0x0001);
delay(200); // Dis-charge capacitor power voltage
LCD_WR_REG_DATA(0x0010, 0x1690); // SAP, BT[3:0], AP, DSTB, SLP, STB
LCD_WR_REG_DATA(0x0011, 0x0227); // Set DC1[2:0], DC0[2:0], VC[2:0]
delay(50); // Delay 50ms
LCD_WR_REG_DATA(0x0012, 0x000D); // 0012
delay(50); // Delay 50ms
LCD_WR_REG_DATA(0x0013, 0x1200); // VDV[4:0] for VCOM amplitude
LCD_WR_REG_DATA(0x0029, 0x000A); // 04 VCM[5:0] for VCOMH
LCD_WR_REG_DATA(0x002B, 0x000D); // Set Frame Rate
delay(50); // Delay 50ms
LCD_WR_REG_DATA(0x0020, 0x0000); // GRAM horizontal Address
LCD_WR_REG_DATA(0x0021, 0x0000); // GRAM Vertical Address
// ----------- Adjust the Gamma Curve ----------//
LCD_WR_REG_DATA(0x0030, 0x0000);
LCD_WR_REG_DATA(0x0031, 0x0404);
LCD_WR_REG_DATA(0x0032, 0x0003);
LCD_WR_REG_DATA(0x0035, 0x0405);
LCD_WR_REG_DATA(0x0036, 0x0808);
LCD_WR_REG_DATA(0x0037, 0x0407);
LCD_WR_REG_DATA(0x0038, 0x0303);
LCD_WR_REG_DATA(0x0039, 0x0707);
LCD_WR_REG_DATA(0x003C, 0x0504);
LCD_WR_REG_DATA(0x003D, 0x0808);
//------------------ Set GRAM area ---------------//
LCD_WR_REG_DATA(0x0050, 0x0000); // Horizontal GRAM Start Address
LCD_WR_REG_DATA(0x0051, 0x00EF); // Horizontal GRAM End Address
LCD_WR_REG_DATA(0x0052, 0x0000); // Vertical GRAM Start Address
LCD_WR_REG_DATA(0x0053, 0x013F); // Vertical GRAM Start Address
LCD_WR_REG_DATA(0x0060, 0xA700); // Gate Scan Line
LCD_WR_REG_DATA(0x0061, 0x0001); // NDL,VLE, REV
LCD_WR_REG_DATA(0x006A, 0x0000); // set scrolling line
//-------------- Partial Display Control ---------//
LCD_WR_REG_DATA(0x0080, 0x0000);
LCD_WR_REG_DATA(0x0081, 0x0000);
LCD_WR_REG_DATA(0x0082, 0x0000);
LCD_WR_REG_DATA(0x0083, 0x0000);
LCD_WR_REG_DATA(0x0084, 0x0000);
LCD_WR_REG_DATA(0x0085, 0x0000);
//-------------- Panel Control -------------------//
LCD_WR_REG_DATA(0x0090, 0x0010);
LCD_WR_REG_DATA(0x0092, 0x0000);
LCD_WR_REG_DATA(0x0007, 0x0133); // 262K color and display ON
delay(60);
}
/**********************************************/
/* 函数功能;开启显示 */
/* 说 明:一般用于关闭显示后的开启 */
/**********************************************/
void LCD_DisplayOn(void)
{
LCD_WR_REG_DATA(0x0007, 0x0133); // 开启显示
}
/**********************************************/
/* 函数功能;关闭显示 */
/* 说 明:并不是使TFT黑屏,而是使得TFT上的 */
/* 内容保持不变,一般用于TFT的数据线*/
/* 和其它模块连接,操作其它模块的时 */
/* 候不希望影响TFT的显示。 */
/**********************************************/
void LCD_DisplayOff(void)
{
LCD_WR_REG_DATA(0x0007, 0x0); // 关闭显示
}
/***************************************************/
/* 函数功能;设置显存区域 */
/* 说 明:设置将要显示的显
ADC.rar_LPC1114_adc测温程序_lpc1114ADC程序_www./ADC444.com
版权申诉
112 浏览量
2022-09-24
05:36:36
上传
评论
收藏 183KB RAR 举报
weixin_42651887
- 粉丝: 79
- 资源: 1万+
最新资源
- mc.as
- 618家具社群团购清单.xlsx
- Javascript的鼠标手势
- hdmi in视频采集,输出到hdmi out, 支持HDMI指令控制,支持TFTP远程下载图片
- 批量word文件内容替换工具1.0 (批量实现多个 Word 文档文件文字替换利器).exe
- Cartoon GUI Pack 1.2.zip
- 我分享个魔兽内存修改器
- Python毕业设计基于Django的网易云数据分析可视化大屏系统的设计与实现+使用说明+全部资料(优秀项目).zip
- mp3 idv2,idv1,frame分析工具
- 鹈鹕优化算法POA MATLAB源码, 应用案例为函数极值求解以及优化svm进行分类,代码注释详细,可结合自身需求进行应用
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈