lcd1602.c

来自「一个arm7实例」· C语言 代码 · 共 72 行

C
72
字号
#include  "config.h"
#include"lcd1602.h"


/****************************************************************************
* 名称:ChkBusy()
* 功能:检查总线是否忙
****************************************************************************/
void ChkBusy()
{
	//PINSEL0|=0xffc00000;
	IODIR0=0x00f0;
	while(1)
	{
		IOCLR0=rs;
		IOSET0=rw;
		IOSET0=en;
		if(!(IOPIN0 & busy))break;
		IOCLR0=en;
	}
	IODIR0=0xfff0;
}
/****************************************************************************
* 名称:WrOp()
* 功能:写函数
****************************************************************************/
void WrOp(uint8 dat)
{
    uint32 date;
	date=(dat<<8);
	ChkBusy();
	IOCLR0=rs;		//全部清零
	IOCLR0=rw;
	IOCLR0=0xff00;		//先清零
	IOSET0=date;		//再送数
	IOSET0=en;
	IOCLR0=en;
}
/****************************************************************************
* 名称:WrDat()
* 功能:写数据函数
****************************************************************************/
void WrDat(uint8 dat)	//读数据
{
    uint32 date;
   date=(dat<<8);
	ChkBusy();
	IOSET0=rs;
	IOCLR0=rw;
	IOCLR0=0xff00;		//先清零
	IOSET0=date;		//再送数
	IOSET0=en;
	IOCLR0=en;
}

void lcdinit()
{
    WrOp(0x38);			
	WrOp(0x06);			//光标加1
	WrOp(0x0c);			//开显示
}

/****************************************************************************
* 名称:DisText()
* 功能:显示文本函数
****************************************************************************/

void DisplayText(uint8 addr,uint8 *p)
{
	WrOp(addr);
	while(*p !='\0')WrDat(*(p++));
}

⌨️ 快捷键说明

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