⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd.c

📁 128*64(st7920驱动) 汉字显示驱动程序
💻 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 + -