SET_D7;
DELAY();
SET_E;
DELAY();
/* 这里读取AC0-AC3位的值,程序不需记录AC0-AC3的值,所以不存储 */
CLR_E;
DELAY();
if(busyCounter==1000)
{
LCD1602Err=TRUE; //标识LCD1602错误,方便上缴系统报错
return ; //避免由于LCD1602错误而导致程序阻塞
}
busyCounter++;
}
while(busySta);
LCD1602Err=FALSE;
CLR_E;
OUT_BF;
}
/*--------------------------------------------------------------------
函数名称:LCD1602写操作
函数功能:
注意事项:对于高速CPU,应加延时,好像是废话~
提示说明:无
输 入:
返 回:无
--------------------------------------------------------------------*/
void write(bool flag,uint8 dat) //flag=0:command,flag=1:data
{
bdat=dat;
busy();
if(flag)
SET_RS;
else
CLR_RS;
DELAY();
CLR_RW;
DELAY();
if(bdat4)
SET_D4;
else
CLR_D4;
if(bdat5)
SET_D5;
else
CLR_D5;
if(bdat6)
SET_D6;
else
CLR_D6;
if(bdat7)
SET_D7;
else
CLR_D7;
DELAY();
SET_E;
DELAY();
CLR_E;
DELAY();
if(bdat0)
SET_D4;
else
CLR_D4;
if(bdat1)
SET_D5;
else
CLR_D5;
if(bdat2)
SET_D6;
else
CLR_D6;
if(bdat3)
SET_D7;
else
CLR_D7;
DELAY();
SET_E;
DELAY();
CLR_E;
DELAY();
}
/*--------------------------------------------------------------------
函数名称:LCD1602读操作
函数功能:
注意事项:对于高速CPU,应加延时,好像是废话~
提示说明:无
输 入:
返 回:无
--------------------------------------------------------------------*/
//void read(uint8 adr)
//{
//}
/*--------------------------------------------------------------------
函数名称:LCD1602设置CGRAM内容
函数功能:
注意事项:对于高速CPU,应加延时,好像是废话~
提示说明:调用LCD1602_setCG(0,userCh),则写入用户定义的字符"userCh"
输 入:"adr"数据范围:0-8,"buf"为用户需要写入的字符"userCh"
返 回:无
--------------------------------------------------------------------*/
void LCD1602_setCGRAM(uint8 adr,const uint8 buf[8])
{
uint8 i;
write(0,0x40+adr*8);
for(i=0;i<8;i++)
write(1,buf[i]);
/* 不得采样下面写法,因为传入的是数组,最后一个不是’\0’ */
//while(*buf)
//write(1,*buf++);
}
/*--------------------------------------------------------------------
函数名称:LCD1602命令设置
函数功能:
注意事项:对于高速CPU,应加延时,好像是废话~
提示说明:
输 入:"CLR_SCR"/"GO_HOME"/"AC_INC"/"AC_DEC"...
返 回:无
--------------------------------------------------------------------*/
//---- function ------ 1 -------- 0 ----LcdWordPos--
// dispEn | Enable | DISAble | bit2
// cursorEn | Enable | Disable | bit1
// blinkEn | Enable | Disable | bit0
//------------------------------------------------------
// isACinc | INC_AC | DEC_AC | bit1
// shiftEn | Enable | Disable | bit0
//------------------------------------------------------
void LCD1602_setCmd(uint8 *str)
{
static bool dispEn =0;
static bool cursorEn=0;
static bool blinkEn =0;
static bool shiftEn =0;
static bool isACinc =0;
if(!strcmp(str,"CLR_SCR")) //clear screen
write(0,0x01);
上一页 [1] [2] [3] [4] [5] 下一页
本文关键字:程序 显示屏 AVR单片机,单片机-工控设备 - AVR单片机