📄 lcm240128zktest.c
字号:
}
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 + -