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

📄 lcm240128zktest.c

📁 北京青云液晶LCM240128的C51驱动程序
💻 C
📖 第 1 页 / 共 3 页
字号:
        }
        j++;
    }
}

/**************************************************************************************************

    整屏写入从B1H,A0H开始的字库中的汉字

**************************************************************************************************/
void TEST_Ziku(void) small
{
    int i=0,j=0;
    unsigned char Data0,Data1;
    LCD_CmdWrite(0x00);
    LCD_CmdWrite(0xcd);
    LCD_CmdWrite(0xF0);
    LCD_CmdWrite(0xA0);
    LCD_CursorX(0x00);
    LCD_CursorY(0x00);
    Data0=0xb1;
    Data1=0xa0;
    for(i = 0; i <  120; i++)
    {
        LCD_DataWrite(Data0);
        LCD_DataWrite(Data1);
        Data1++;
    }
}
/******************************************************************************
    LCD Reset Subroutine
*******************************************************************************/
void LCD_Reset(void) small
{
    rst = 0;
    DelayXms(2);
    rst = 1;
    DelayXms(2);
}

/*******************************************************************************
    LCD Function Initail Subroutine
*******************************************************************************/
void LCD_Initial(void) small
{
    LCD_CmdWrite(0x00);      /* LCD Controller Register.BIT76=11:电源正常模式,BIT3=1:文字模式,BIT0=1:正常显示 */
    LCD_CmdWrite(0xC5);      //cd
    LCD_CmdWrite(0x08);
    LCD_CmdWrite(0x73);
    LCD_CmdWrite(0x10);
    LCD_CmdWrite(0x3f);
    LCD_CmdWrite(0x18);
    LCD_CmdWrite(0x20);
    LCD_CmdWrite(0x20);
    LCD_CmdWrite(0x1D);
    LCD_CmdWrite(0x30);
    LCD_CmdWrite(0x7F);
    LCD_CmdWrite(0x40);
    LCD_CmdWrite(0x00);
    LCD_CmdWrite(0x50);
    LCD_CmdWrite(0x00);
    LCD_CmdWrite(0x28);
    LCD_CmdWrite(0x1D);
    LCD_CmdWrite(0x38);
    LCD_CmdWrite(0x7F);
    LCD_CmdWrite(0x48);
    LCD_CmdWrite(0x00);
    LCD_CmdWrite(0x58);
    LCD_CmdWrite(0x00);
    LCD_CmdWrite(0x60);
    LCD_CmdWrite(0x00);
    LCD_CmdWrite(0x70);
    LCD_CmdWrite(0x00);
    /*LCD_CmdWrite(0x80);
    LCD_CmdWrite(0x33);*/
    LCD_CmdWrite(0x90);
    LCD_CmdWrite(0x1E);
    LCD_CmdWrite(0xB0);
    LCD_CmdWrite(0x27);
    LCD_CmdWrite(0xB8);
    LCD_CmdWrite(0xEF);
    LCD_CmdWrite(0xA0);
    LCD_CmdWrite(0x08);
    LCD_CmdWrite(0xC0);
    LCD_CmdWrite(0xF0);
    LCD_CmdWrite(0xD0);
    LCD_CmdWrite(0xe0);      /* 发现使能亮度控制时(原值为0x30),显示屏全黑。其他显示也不能正常工作 */
    LCD_CmdWrite(0xE0);
    LCD_CmdWrite(0x00);
    LCD_CmdWrite(0xF0);
    LCD_CmdWrite(0xA0);
}
/*******************************************************************************
   LCD Cursor Set Subroutine
*******************************************************************************/
void LCD_CursorX(unsigned char Cursor) small
{
    LCD_CmdWrite(0x60);
    LCD_CmdWrite(Cursor);
}

/*******************************************************************************
    LCD Cursor Set Subroutine
*******************************************************************************/
void LCD_CursorY(unsigned char Cursor) small
{
    LCD_CmdWrite(0x70);
    LCD_CmdWrite(Cursor);
}

/*******************************************************************************
    LCD Clear Screen Subroutine
*******************************************************************************/
void LCD_Clear(void) small
{
	unsigned char REG_TMP;
	LCD_CmdWrite(0xE0);LCD_CmdWrite(0x00);
	REG_TMP = LCD_CmdRead(0xF0);
	REG_TMP &= (0xF7);
	REG_TMP |= (0x08);
	LCD_CmdWrite(0xF0);
	LCD_CmdWrite(REG_TMP);
	DelayXms(1);
}

/*******************************************************************************
    LCD Command Write Subroutine
*******************************************************************************/
void LCD_CmdWrite(unsigned char Cmd_Data) small
{
	LCD_ChkBusy();           /* Call LCD_ChkBusy to Check Busy Bit */
	LCD_Command = Cmd_Data;
	EN = 0;
	P2 = 0x8d;               /* rst=1,P2.6-P2.4=0,BUSU=1,INT=1,CS1=0,RS=1 */
	LCD_RW = 0;
	_nop_();
	EN = 1;
	_nop_();
	EN = 0;
	LCD_RW = 1;
	P2 = 0x8d;
}

/*******************************************************************************
    LCD Data Write Subroutine
*******************************************************************************/
void LCD_DataWrite(unsigned char Data_Data) small
{
	LCD_ChkBusy();           /* Call LCD_ChkBusy to Check Busy Bit */
	LCD_Data = Data_Data;
	EN = 0;
	P2 = 0x8c;
	LCD_RW = 0;
	_nop_();
	EN = 1;
	_nop_();
	EN = 0;
	LCD_RW = 1;
	P2 = 0x8d;
}

/*******************************************************************************
    LCD Cmd Read Subroutine
*******************************************************************************/
unsigned char LCD_CmdRead(unsigned char REG_Addr) small
{
	unsigned char REG_READ;
	LCD_CmdWrite(REG_Addr);
	LCD_RW = 1;
	EN = 0;
	P2 = (0x8d);
	EN = 1;
	_nop_();
	REG_READ = LCD_Command;
	_nop_();
	EN = 0;
	P2 = (0x8d);
	return REG_READ;
}
/*******************************************************************************
    LCD Data Read Subroutine
*******************************************************************************/
unsigned char LCD_DataRead(void) small
{
	unsigned char DATA_READ;
	LCD_ChkBusy();
	LCD_RW = 1;
	EN = 0;
	P2 = (0x8c);
	EN = 1;
	_nop_();
	REG_READ = LCD_Command;
	_nop_();
	EN = 0;
	P2 = (0x8d);
	return DATA_READ;
}

/*******************************************************************************
    LCD Check Busy Subroutine
*******************************************************************************/
void LCD_ChkBusy(void) small
{
    do
    {
        ;    }
    while(BUSY == 1);
}

/*******************************************************************************
    Delay Subroutine
*******************************************************************************/
void DelayXms(int count) small
{
    int i,j;
    for(i=0; i<count; i++)
    for(j=0; j<240; j++)
    _nop_();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -