📄 lcd.c
字号:
#include <REG51.H>
#define INT8 unsigned char
#define INT16 unsigned int
#define INT32 unsigned long
//LCD INTERFACE
sbit E=P1^4;
sbit RW=P1^3;
sbit RST=P1^5;
#define DI 0X20
#define DI1 0X40
//LCD FUNCTION
//void Delay(INT32 t) ; /*延时函数*/
void BusyLoop(); //*判忙函数*//
void WriteCommand(INT8 CMD,INT8 bb); //*发控制字函数*//
void WriteData(INT8 CMD); //*发数据函数*//
void LcdInit(); //*初始化函数*//
void LcdClear(); //*清屏*//
void DispStr(INT8 *ptr,INT8 ddram); //**显字符串函数**//
code char STR1[]="数字语音 ";
code char STR2[]=" 回放系统";
code char STR4[]="录音 回放 压缩";
//DELAY FUNCTION
void index(void){
DispStr(STR1,0x80);
DispStr(STR2,0x90);
DispStr(STR4,0x98);
}
void Delay1(INT16 t)
{
INT16 i,j;
for (i=0;i<t;i++)
for (j=0;j<t;j++)
;
}
//*********************判忙函数************************//
void BusyLoop()
{
INT8 busy;
P0=0x0FF;
P2=DI;
RW=1;
do
{
E=1;
busy=P0;
E=0;
}
while(busy>0x7F);
}
//*********************写控制字函数****************************//
void WriteCommand(INT8 CMD,INT8 bb)
{
if(bb)
{
BusyLoop();
}
P2=DI;
RW=0;
E=1;
P0=CMD;
Delay1(1);
E=0;
}
//*********************写数据函数****************************//
void WriteData(INT8 CMD)
{
BusyLoop();
P2=DI1;
RW=0;
E=1;
P0=CMD;
Delay1(1);
E=0;
}
//*************************液晶初始化********************************//
void LcdInit()
{
RST=0;
Delay1(38);
RST=1;
WriteCommand(0x30,0);
Delay1(1);
WriteCommand(0x30,0);
Delay1(1);
WriteCommand(0x0C,1);
Delay1(1);
WriteCommand(0x01,1);
Delay1(20);
WriteCommand(0x06,1); //??????
}
/***************************清 屏*************************************/
void LcdClear()
{
P2=DI;
RW=0;
E=1;
P0=0x01;
Delay1(1);
E=0;
}
/*=======================================================
显示字符串
=======================================================*/
void DispStr(INT8 *ptr,INT8 ddram)
{
WriteCommand(ddram,1);
while(*ptr!='\0')
{
WriteData(*ptr++);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -