⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcddrv.c

📁 基于LPC213X下的LCD的驱动程序代码。
💻 C
字号:
/***************************************************************
* 文件名:lcd.c
* 功能:640*480液晶驱动(QPYD-04驱动模块),用GPIO实现
* 硬件连接:D0~D7	<-->	P2.16~P2.23
//			/RD		<-->	P0.22
//			/WR		<-->	P0.21
//			/CS		<-->	P0.19
//			RS		<-->	P0.17
***************************************************************/
#include "config.h"

static	uint8	DisBuf[LCD_Y][LCD_X];


void InitLCD(void)	{
	uint8 	i;
	uint16 	j;
	IO0DIR = (LCD_RD | LCD_WR | LCD_CS | LCD_RS);
	IO0SET = LCD_RS;
	IO0SET = LCD_WR;
	IO0SET = LCD_CS;
	IO0SET = LCD_RD;
	IO2DIR = LCD_DATA;
	for(j = 0; j < LCD_Y; j++)	{
		for(i = 0; i < LCD_X; i++)	{
			DisBuf[j][i] = 0xFF;
		}
	}
	Invalidate();
}

void Invalidate()	{
	uint8	i;
	uint16	j;
	/* 写低64K区地址 */
	LCD_I(0x08);
	LCD_D(0x00);
	LCD_I(0x09);
	LCD_D(0x00);
	/* 写低64K数据 */
	LCD_I(0x0A);
	for(j = 0; j < LCD_Y; j++)	{
		for(i = 0; i < LCD_X; i++)	{
			LCD_D(DisBuf[j][i]);
		}
	}
}

void LCD_I(uint8 I)	{
	/* 将数据移到数据口 */
	IO2PIN = I << 16;
	/* 选择指令寄存器 */
	IO0CLR = LCD_RS;
	IO0CLR = LCD_CS;
	IO0CLR = LCD_WR;
	IO0SET = LCD_WR;
	IO0SET = LCD_CS;
}

void LCD_D(uint8 D)	{
	/* 将数据移到数据口 */
	IO2PIN = D << 16;
	/* 选择数据寄存器 */
	IO0SET = LCD_RS;
	IO0CLR = LCD_CS;
	IO0CLR = LCD_WR;
	IO0SET = LCD_WR;
	IO0SET = LCD_CS;
}

uint8 LCD_R(void)	{
	uint8	temp;
	IO0CLR = LCD_RS;
	IO0CLR = LCD_RD;
	IO0CLR = LCD_CS;
	temp = (uint8)((IO2PIN & LCD_DATA) >> 16);
	IO0SET = LCD_CS;
	IO0SET = LCD_WR;
	return temp;
}	

void InvalidateRect(uint16 l,uint16 t,uint16 r,uint16 b)
{
	uint8 i,k,n;
	uint16 j;
	uint32 temp=0;
	
	if(l>r){i=l;l=r;r=i;}
	if(t>b){j=t;t=b;b=j;}
	if(r>=MAX_X || b>=MAX_Y) return;
	/* l*3/8为(l,t)所在字节,k为小于它的3的倍数,
	   这样保证在边缘提取完整像素点,同理n为大于r*3/8的三的倍数 */
	i=l*3/8;i-=i%3;
	k=i;
	n=r*3/8;n+=3-n%3;
	for(j=t;j<=b;j++)
	{
		temp=j*(LCD_X)+i;
				
		if(temp<0x10000)
		//写低64K区
		{
			LCD_I(0x08);	
			LCD_D((uint8)temp);
			LCD_I(0x09);
			LCD_D((uint8)(temp>>8));
			LCD_I(0x0A);	
		}
		else
		//写高

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -