📄 ra8803.c
字号:
/**********************Filename:RA8803.c**********************************************************/
#include <RA8803.h>
//==============================================================================
//Subroutine: Delay_1ms **** Function:
//==============================================================================
void Delay_1ms(uchar tm) small
{
uchar i;
while(tm){
for(i=0;i<250;i++){_nop_();}
tm--;
}
}
//==============================================================================
//Subroutine: LCD_Reset **** Function:
//==============================================================================
void LCD_Reset(void)
{
bRST = 0;
Delay_1ms(250);
Delay_1ms(250);
bRST = 1;
Delay_1ms(100);
}
//==============================================================================
//Subroutine: LCD_ChkBusy **** Function:
//==============================================================================
void LCD_ChkBusy(void)
{
// uchar temp;
// do
// {
// temp = LCD_CmdRead(ISR);
// }while(temp & cTestb7);
}
//==============================================================================
//Subroutine: LCD_CmdWrite **** Function:
//==============================================================================
void LCD_CmdWrite(uchar Addr, uchar Data)
{
LCD_ChkBusy();
bCSZ = 0;
bRS = 0;
_nop_();
Lcd_Reg = Addr; //Reg Addr
Lcd_Reg = Data; //Reg Data
bCSZ = 1;
Lcd_Reg=255;
}
//==============================================================================
//Subroutine: CmdRead
//Function:
//==============================================================================
uchar LCD_CmdRead(uchar Addr)
{
uchar Data;
bCSZ = 0;
bRS = 0;
Lcd_Reg = Addr; //Reg Addr
_nop_();
Data = Lcd_Reg; //Reg Data
bCSZ = 1;
return Data;
Lcd_Reg=255;
}
//==============================================================================
//Subroutine: LCD_DataWrite
//Function:
//==============================================================================
void LCD_DataWrite(uchar Data)
{
LCD_ChkBusy();
bRS = 1;
bCSZ = 0;
_nop_();
Lcd_Data= Data;
_nop_();
bCSZ = 1;
}
//==============================================================================
//Subroutine: LCD_DataRead
//Function:
//==============================================================================
uchar LCD_DataRead(void)
{
uchar Data;
LCD_ChkBusy();
bCSZ = 0;
bRS = 1;
_nop_();
Data = Lcd_Data;
bCSZ = 1;
Lcd_Data=255;
return Data;
}
//==============================================================================
//Subroutine: LCD_Initial
//Function:
//==============================================================================
void LCD_Initial(void)
{
LCD_CmdWrite(WLCR, 0xc5); //B1100_0101 Normal Power
LCD_CmdWrite(MISC, 0x02); //B0000_0010 8Mhz
LCD_CmdWrite(APSR, 0x20); //B0010_0010
LCD_CmdWrite(WCCR, 0x6f); //B0110_1011
LCD_CmdWrite(AWRR, cAWRR);
LCD_CmdWrite(AWBR, cAWBR);
LCD_CmdWrite(AWLR, 0x00); //B0000_0000
LCD_CmdWrite(AWTR, 0x00); //B0000_0000
LCD_CmdWrite(DWRR, cDWRR);
LCD_CmdWrite(DWBR, cDWBR);
LCD_CmdWrite(DWLR, 0x00); //B0000_0000
LCD_CmdWrite(DWTR, 0x00); //B0000_0000
LCD_CmdWrite(SCCR, 0x07); //B0000_0111 Frame Rate
LCD_CmdWrite(INTR, 0x00); //B0000_0000
LCD_CmdWrite(TPCR, 0xc0); //B1100_0000
LCD_CmdWrite(TPSR, 0x35); //B0011_0101
LCD_CmdWrite(PNTR, 0x00); //B0000_0000 Fill Data=00
LCD_CmdWrite(LCCR, 0x80); //B1000_0000 DAC Off
LCD_CmdWrite(FNCR, cFNCR); // GB Code or BIG5 Code
_nop_();
}
//==============================================================================
//Subroutine: LCD_On
//Function:
//==============================================================================
void LCD_ON(void)
{
uchar temp;
temp = LCD_CmdRead(WLCR);
temp |= 0x04; //cSetb2;
LCD_CmdWrite(WLCR, temp);
}
void LCD_OFF(void)
{
uchar temp;
temp = LCD_CmdRead(WLCR);
temp &= 0xfb; //cClrb2;
LCD_CmdWrite(WLCR, temp);
}
//==============================================================================
//Subroutine: LCD_GotoXY
//Function: LCD Cursor X-Y
//==============================================================================
void LCD_GotoXY(uchar x, uchar y)
{
LCD_CmdWrite(CPXR, (x & 0x3f));
LCD_CmdWrite(CPYR, y );
}
//==============================================================================
//Subroutine: LCD_Graphic
//Function:
//==============================================================================
void LCD_Graphic(void)
{
uchar temp;
temp = LCD_CmdRead(WLCR);
temp &= 0xf7; //cClrb3;
LCD_CmdWrite(WLCR, temp);
}
void LCD_Text(void)
{
uchar temp;
temp = LCD_CmdRead(WLCR);
temp |=0x08; //cSetb3;
LCD_CmdWrite(WLCR, temp);
}
//==============================================================================
//Subroutine: Bold
//Function:
//==============================================================================
void LCD_Bold(void)
{
uchar temp;
temp = LCD_CmdRead(WCCR);
temp |= 0x10; //cSetb4;
LCD_CmdWrite(WCCR, temp);
}
void LCD_NoBold(void)
{
uchar temp;
temp = LCD_CmdRead(WCCR);
temp &= 0xef; //cClrb4;
LCD_CmdWrite(WCCR, temp);
}
//==============================================================================
//Subroutine: Inv
//Function:
//==============================================================================
void LCD_Inv(void)
{
uchar temp;
temp = LCD_CmdRead(WCCR);
temp &= 0xdf; //cClrb5;
LCD_CmdWrite(WCCR, temp);
}
void LCD_NoInv(void)
{
uchar temp;
temp = LCD_CmdRead(WCCR);
temp |= 0x20; //cSetb5;
LCD_CmdWrite(WCCR, temp);
}
//==============================================================================
//Subroutine: GInv
//Function:
//==============================================================================
void LCD_GInv(void)
{
uchar temp;
temp = LCD_CmdRead(WLCR);
temp &= 0xfe; //cClrb0;
LCD_CmdWrite(WLCR, temp);
}
void LCD_NoGInv(void)
{
uchar temp;
temp = LCD_CmdRead(WLCR);
temp |= 0x01; //cSetb0;
LCD_CmdWrite(WLCR, temp);
}
//==============================================================================
//Subroutine: Blk & Blk Timer
//Function:
//==============================================================================
void LCD_Blk(void)
{
uchar temp;
temp = LCD_CmdRead(WLCR);
temp |= 0x02; //cSetb1;
LCD_CmdWrite(WLCR, temp);
}
void LCD_NoBlk(void)
{
uchar temp;
temp = LCD_CmdRead(WLCR);
temp &= 0xfd; //cClrb1;
LCD_CmdWrite(WLCR, temp);
}
void LCD_BlkTim(uchar buf)
{
uchar temp;
temp = LCD_CmdRead(BTMR);
temp |= buf;
LCD_CmdWrite(BTMR, temp);
}
//==============================================================================
//Subroutine: Cursor On
//Function:
//==============================================================================
void LCD_Cur(void)
{
uchar temp;
temp = LCD_CmdRead(WCCR);
temp |= 0x04; //cSetb2;
LCD_CmdWrite(WCCR, temp);
}
void LCD_NoCur(void)
{
uchar temp;
temp = LCD_CmdRead(WCCR);
temp &= 0xfb; //cClrb2;
LCD_CmdWrite(WCCR, temp);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -