/*********************************************************************
* INCLUDES
*/
#include "ILI9320_LCD.H"
/*********************************************************************
* LOCAL FUNCTIONS
*/
static void Wait( unsigned long t );
static void ILI9320LCD_WriteWord( unsigned short word );
/*********************************************************************
* PUBLIC FUNCTIONS
*/
void ILI9320LCD_WriteRGB( lcdColor_t rgb )
{
ILI9320LCD_WriteData( rgb );
}
void ILI9320LCD_WriteCmd( unsigned short word )
{
ILI9320LCD_IO_RS_SET_LO();
ILI9320LCD_WriteWord(word);
}
void ILI9320LCD_WriteData( unsigned short word )
{
ILI9320LCD_IO_RS_SET_HI();
ILI9320LCD_WriteWord(word);
}
void ILI9320LCD_WriteCmdData( unsigned short byteCmd, unsigned short byteData )
{
ILI9320LCD_WriteCmd( byteCmd );
ILI9320LCD_WriteData( byteData );
}
void ILI9320LCD_SetCursor( unsigned short x, unsigned short y )
{
ILI9320LCD_WriteCmd(0x0020);
ILI9320LCD_WriteData(y);
ILI9320LCD_WriteCmd(0x0021);
ILI9320LCD_WriteData(x);
}
void ILI9320LCD_SetArea(unsigned short x1, unsigned short y1, unsigned short x2, unsigned short y2)
{
ILI9320LCD_IO_CS_SET_LO();
ILI9320LCD_SetCursor( x1, y1 );
//开始X
ILI9320LCD_WriteCmd(0x0050);
ILI9320LCD_WriteData(y1);
//开始Y
ILI9320LCD_WriteCmd(0x0052);
ILI9320LCD_WriteData(x1);
//结束X
ILI9320LCD_WriteCmd(0x0051);
ILI9320LCD_WriteData(y2);
//结束Y
ILI9320LCD_WriteCmd(0x0053);
ILI9320LCD_WriteData(x2);
ILI9320LCD_WriteCmd(0x0022);
}
void ILI9320LCD_Init( void )
{
ILI9320LCD_IO_MCU_INIT();
ILI9320LCD_IO_RST_SET_HI();
Wait(5);
ILI9320LCD_IO_RST_SET_LO();
Wait(5);
ILI9320LCD_IO_RST_SET_HI();
ILI9320LCD_IO_CS_SET_HI();
ILI9320LCD_IO_RD_SET_HI();
ILI9320LCD_IO_WR_SET_HI();
Wait(5);
//打开片选使能
ILI9320LCD_IO_CS_SET_LO();
ILI9320LCD_WriteCmdData(0x0007,0x0000);
Wait(50);
ILI9320LCD_WriteCmdData(0x0012,0x011C);
ILI9320LCD_WriteCmdData(0x00A4,0x0001);
ILI9320LCD_WriteCmdData(0x0008,0x000F);
ILI9320LCD_WriteCmdData(0x000A,0x0008);
ILI9320LCD_WriteCmdData(0x000D,0x0008);
//伽马校正
ILI9320LCD_WriteCmdData(0x0030,0x0707);
ILI9320LCD_WriteCmdData(0x0031,0x0007); //0x0707
ILI9320LCD_WriteCmdData(0x0032,0x0603);
ILI9320LCD_WriteCmdData(0x0033,0x0700);
ILI9320LCD_WriteCmdData(0x0034,0x0202);
ILI9320LCD_WriteCmdData(0x0035,0x0002); //?0x0606
ILI9320LCD_WriteCmdData(0x0036,0x1F0F);
ILI9320LCD_WriteCmdData(0x0037,0x0707); //0x0f0f 0x0105
ILI9320LCD_WriteCmdData(0x0038,0x0000);
ILI9320LCD_WriteCmdData(0x0039,0x0000);
ILI9320LCD_WriteCmdData(0x003A,0x0707);
ILI9320LCD_WriteCmdData(0x003B,0x0000); //0x0303
ILI9320LCD_WriteCmdData(0x003C,0x0007); //?0x0707
ILI9320LCD_WriteCmdData(0x003D,0x0000); //0x1313//0x1f08
Wait(50);
ILI9320LCD_WriteCmdData(0x0007,0x0001);
ILI9320LCD_WriteCmdData(0x0017,0x0001);//开启电源
Wait(50);
//电源配置
ILI9320LCD_WriteCmdData(0x0010,0x17A0);
//reference voltage VC[2:0] Vciout = 1.00*Vcivl
ILI9320LCD_WriteCmdData(0x0011,0x0217);
//0x011c //Vreg1out = Vcilvl*1.80 is it the same as Vgama1out ?
ILI9320LCD_WriteCmdData(0x0012,0x011E);
//VDV[4:0]-->VCOM Amplitude VcomL = VcomH - Vcom Ampl
ILI9320LCD_WriteCmdData(0x0013,0x0F00);
ILI9320LCD_WriteCmdData(0x002A,0x0000);
//0x0001F Vcomh = VCM1[4:0]*Vreg1out gate source voltage??
ILI9320LCD_WriteCmdData(0x0029,0x000A);
// 0x013C power supply on
ILI9320LCD_WriteCmdData(0x0012,0x013E);
//Coordinates Control//
ILI9320LCD_WriteCmdData(0x0050,0x0000);//0x0e00
ILI9320LCD_WriteCmdData(0x0051,0x00EF);
ILI9320LCD_WriteCmdData(0x0052,0x0000);
ILI9320LCD_WriteCmdData(0x0053,0x013F);
//Pannel Image Control//
ILI9320LCD_WriteCmdData(0x0060,0xA700);
ILI9320LCD_WriteCmdData(0x0061,0x0001);
ILI9320LCD_WriteCmdData(0x006A,0x0000);
ILI9320LCD_WriteCmdData(0x0080,0x0000);
//Partial Image Control//
ILI9320LCD_WriteCmdData(0x0081,0x0000);
ILI9320LCD_WriteCmdData(0x0082,0x0000);
ILI9320LCD_WriteCmdData(0x0083,0x0000);
ILI9320LCD_WriteCmdData(0x0084,0x0000);
ILI9320LCD_WriteCmdData(0x0085,0x0000);
//Panel Interface Control//
ILI9320LCD_WriteCmdData(0x0090,0x0013);//0x0010 frenqucy
ILI9320LCD_WriteCmdData(0x0092,0x0300);
ILI9320LCD_WriteCmdData(0x0093,0x0005);
ILI9320LCD_WriteCmdData(0x0095,0x0000);
ILI9320LCD_WriteCmdData(0x0097,0x0000);
ILI9320LCD_WriteCmdData(0x0098,0x0000);
ILI9320LCD_WriteCmdData(0x0001,0x0100);
ILI9320LCD_WriteCmdData(0x0002,0x0700);
ILI9320LCD_WriteCmdData(0x0003,0x1038);
//ILI9320LCD_WriteCmdData(0x0003,0x0030);
ILI9320LCD_WriteCmdData(0x0004,0x0000);
ILI9320LCD_WriteCmdData(0x0008,0x0207);
ILI9320LCD_WriteCmdData(0x0009,0x0000);
ILI9320LCD_WriteCmdData(0x000a,0x0000);
ILI9320LCD_WriteCmdData(0x000C,0x0000);
ILI9320LCD_WriteCmdData(0x000F,0x0000);
ILI9320LCD_WriteCmdData(0x0020,0x0000);
ILI9320LCD_WriteCmdData(0x0021,0x0000);
ILI9320LCD_WriteCmdData(0x0007,0x0021);
Wait(20);
ILI9320LCD_WriteCmdData(0x0007,0x0061);
Wait(20);
ILI9320LCD_WriteCmdData(0x0007,0x0173);
Wait(20);
ILI9320LCD_IO_CS_SET_HI(); //关闭片选使能
}
void ILI9320LCD_Clear( void )
{
int i, j;
//打开片选使能
ILI9320LCD_IO_CS_SET_LO();
ILI9320LCD_SetArea( 0, 0, 320, 240 );
for( i = 0; i < 320; i++ )
{
for ( j = 0; j < 240; j++ )
{
ILI9320LCD_WriteData( 0xFF00 );
}
}
//关闭片选使能
ILI9320LCD_IO_CS_SET_HI();
}
/*********************************************************************
* LOCAL FUNCTIONS
*/
static void Wait( unsigned long t )
{
while ( t-- )
{
asm("NOP");
}
}
static void ILI9320LCD_WriteWord( unsigned short word )
{
#if ( ILI9320LCD_BUS_WIDTH == BUS_8_WIDTH )
ILI9320LCD_PORT_H_PUT(byteH);
ILI9320LCD_IO_WR_SET_LO();
ILI9320LCD_IO_WR_SET_HI();
ILI9320LCD_PORT_H_PUT(byteL);
ILI9320LCD_IO_WR_SET_LO();
ILI9320LCD_IO_WR_SET_HI();
#elif ( ILI9320LCD_BUS_WIDTH == BUS_16_WIDTH )
//ILI9320LCD_PORT_H_PUT(byteH);
//ILI9320LCD_PORT_L_PUT( swapBit(byteL) );
ILI9320LCD_DATA_SET( word );
ILI9320LCD_IO_WR_SET_LO();
ILI9320LCD_IO_WR_SET_HI();
#endif
}
void ILI9320LCD_DrawPoint( unsigned short x, unsigned short y, lcdColor_t rgb )
{
/* ILI9320LCD_WriteCmd(0x00,0x20);
ILI9320LCD_WriteData(y>>8, y);
ILI9320LCD_WriteCmd(0x00,0x21);
ILI9320LCD_WriteData(x>>8, x);
ILI9320LCD_WriteData( rgb >> 8, rgb );
*/
// ILI9320LCD_IO_CS_SET_LO();
// ILI9320LCD_SetArea( x, y, x + 1, y + 1 );
unsigned short x2 = x + 1, y2 = y + 1;
ILI9320LCD_IO_CS_SET_LO();
ILI9320LCD_SetCursor( x, y );
//开始X
ILI9320LCD_WriteCmd(0x0050);
ILI9320LCD_WriteData( y);
//开始Y
ILI9320LCD_WriteCmd(0x0052);
ILI9320LCD_WriteData(x);
//结束X
ILI9320LCD_WriteCmd(0x0051);
ILI9320LCD_WriteData(y2);
//结束Y
ILI9320LCD_WriteCmd(0x0053);
ILI9320LCD_WriteData(x2);
ILI9320LCD_WriteCmd(0x0022);
ILI9320LCD_WriteData( rgb );
}
ILI9320 显示屏STM32驱动程序源码.rar
版权申诉
5星 · 超过95%的资源 170 浏览量
2023-03-22
17:14:13
上传
评论
收藏 3KB RAR 举报
GJZGRB
- 粉丝: 1501
- 资源: 6214
最新资源
- 基于QT+C++的智能云监护仪项目,能够实时显示使用者心电、血氧、血压波形及其它各种参数+源码(毕业设计&课程设计&项目开发)
- 基于java开发的app接收硬件端传输的心音信号,具有显示心音波形,发出心音的功能+源码(毕业设计&课程设计&项目开发)
- Python 程序语言设计模式思路-行为型模式:职责链模式:将请求从一个处理者传递到下一个处理者
- 9241703124789646.16健身系统2.apk
- postgresql-16.3-1-windows-x64.exe
- Python 程序语言设计模式思路-结构型模式:装饰器讲解及利用Python装饰器模式实现高效日志记录和性能测试
- 基于YOLOv5和DeepSORT的多目标跟踪仿真与记录
- Python 程序语言设计模式思路-创建型模式:原型模式:通过复制现有对象来创建新对象,面向对象编程
- 卸载软件geek卸载软件geek
- Python 程序语言设计模式思路-创建型模式:单例模式,确保一个类的唯一实例(装饰器)面向对象编程、继承
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈