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

📄 lcd12864.c

📁 一个arm7实例
💻 C
字号:
#include  "config.h"
#include"lcd12864.h"


/****************************************************************************
* 名称:ChkBusy()
* 功能:检查总线是否忙
****************************************************************************/
void LCDChkBusy()
{
	IODIR=0x00f0;
	while(1)
	{
		IOCLR=rs;
		IOSET=rw;
		IOCLR=en;
	    IOSET=en;
		if(!(IOPIN & busy))break;
		
	}
	IODIR|=0xfff0;
	//LCDDly();

}
/****************************************************************************
* 名称:WrOp()
* 功能:写函数
****************************************************************************/
void LCDWrOp(uint8 dat)
{

    uint32 date;
  //  IODIR|=0xfff0;
	date=(dat<<8);
	LCDChkBusy();
	IOCLR=rs;		//全部清零
	IOCLR=rw;
	IOCLR=0xff00;		//先清零
	IOSET=en;
	IOSET=date;		//再送数
	IOCLR=en;
}
/****************************************************************************
* 名称:WrDat()
* 功能:写数据函数
****************************************************************************/
void LCDWrDat(uint8 dat)	//读数据
{

    uint32 date;
    date=(dat<<8);
 //  IODIR|=0xfff0;
	LCDChkBusy();
	IOSET=rs;
	IOCLR=rw;
	IOCLR=0xff00;		//先清零
	IOSET=en;
	IOSET=date;		//再送数
	IOCLR=en;
}

void LCDInit(void)
{
    PINSEL0&=0x0000000f;
  //  IODIR=LCD1;
  //  IOCLR=LCD1;
    LCDWrOp(0x3F);		
	LCDWrOp(0xC0);		
	LCDWrOp(0xB8);	
	LCDWrOp(0x40);				
}

/****************************************************************************
* 名称:DisText()
* 功能指定位显示8*n
****************************************************************************/

void LCDDisplay8(uint8 addrx,uint8 addry,uint8 *p,uint8 n)
{
    uint8 i;
	LCDWrOp(addrx+0x40);
	LCDWrOp(addry+0xb8);
	for(i=0;i<n;i++)
	{
	LCDWrDat(*p);
	p=p+1;
	}
}
/****************************************************************************
* 名称:DisText()
* 功能:定位显示16*n
****************************************************************************/

void LCDDisplay16(uint8 addrx,uint8 addry,uint8  *p,uint8 n)
{
    uint8 i;
	LCDWrOp(addrx+0x40);
	LCDWrOp(addry+0xb8);
	for(i=0;i<n;i++)
	{
	LCDWrDat(*p);
	p=p+1;
	}
	LCDWrOp(addrx+0x40);
	LCDWrOp(addry+0xb9);
	for(i=0;i<n;i++)
	{
	LCDWrDat(*p);
	p=p+1;
	}
}

/****************************************************************************
* 名称:LCDClr()
* 功能:清左半屏
****************************************************************************/

void    LCDClr(void)
{
    uint8 i,j;
    for(j=0;j<8;j++)
	{
    	LCDWrOp(0x40);
    	LCDWrOp(0xb8+j);
    	for(i=0;i<64;i++)
    	{
    	LCDWrDat(0);
    	}
   }
}

⌨️ 快捷键说明

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