📄 lcd12864-12.c
字号:
#include "lcd12864-12.h"
//说明:清屏指令的执行时间为1.6ms,其余指令的执行时间为72us;
void LcdDelay(unsigned int num)
{
while(num--);
}
void LcdInit(void)
{
LcdWriteCmd(0x30); //0x30--基本指令操作
LcdWriteCmd(0x0c); //开显示,关光标,不闪烁。
LcdClear(); //清除显示
LcdWriteCmd(0x06); //指定在资料写入或读取时,光标的移动方向,DDRAM的地址计数器(AC)加1。
// LcdDrawClear(); //清空绘图RAM
}
void LcdClear(void)
{
// LcdCheckBusy();
LCD_RS=0;
LCD_RW=0;
LCD_DATA=0x01;
LCD_E=1;
LcdDelay(80);
LCD_E=0;
LcdDelay(2500);//大于1.6ms
}
void LcdWriteCmd(unsigned char dictate)
{
// LcdCheckBusy();
LCD_RS=0;
LCD_RW=0;
LCD_DATA=dictate;
LcdDelay(96);
LCD_E=1;
LcdDelay(80);
LCD_E=0;
LcdDelay(140);
}
//向lcd控制芯片发送数据
void LcdWriteData(unsigned char datas)
{
// LcdCheckBusy();
LCD_RS=1;
LCD_RW=0;
LCD_DATA=datas;
LCD_E=1;
LcdDelay(80);
LCD_E=0;
LcdDelay(140);
}
//显示字符
void LcdShow(unsigned char x,unsigned char y,unsigned char *ASC_GB)
{
// LcdCheckBusy();
LcdSetCursor(x,y);
while(*ASC_GB)
{
LcdWriteData(*ASC_GB);
ASC_GB++;
}
}
void LcdSetCursor(unsigned char x,unsigned char y)
{
unsigned char xdata cursorPos[4][8]={{0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87},
{0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97},
{0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F},
{0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F}};
// LcdCheckBusy();
LcdWriteCmd(cursorPos[x][y]);
}
/*
void LcdSetState(bit bShowCursor,bit bReserverAndFlash)
{
unsigned char bdata cmd=0x0c;
if(bShowCursor)
cmd+=0x02;
if(bReserverAndFlash)
cmd+=0x01;
LcdWriteCmd(cmd);
}
void LcdSetCmdGather(bit isExtern)
{
unsigned char bdata cmd=0x32;
if(isExtern)
cmd+=0x04;
LcdWriteCmd(cmd);
}
void LcdCheckBusy()
{
LcdDelay(200);return;
unsigned char b;
P7=0xff;
LCD_RS=0;
LCD_RW=1;
while(1)
{
delay(100);
LCD_E=1;
delay(100);
b=P7&0x80;
if(b==0x00)
{
LCD_E=0;
break;
}
}
}*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -