📄 lcd12864.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 + -