📄 main.c
字号:
delays();
lcd_WR =1;
delays();
lcd_RS =0;//
delays();
lcd_CS =1;
delays();
}
unsigned lcd_cmdread(unsigned char cmdReg)
{
unsigned char REG_Read=0;
LCD_ChkBusy(); //if RA8803 busy
lcd_DATA = cmdReg; //write reg address
delays();
lcd_CS =0;
delays();
lcd_RD =1;
delays();
lcd_RS =0;
delays();
lcd_WR =0;
delays();
lcd_WR =1;
delays();
lcd_RS =1;
delays();
lcd_CS =1;
delays();
//----------------------------------------------
TRISDbits.TRISD0 =1; //set RD0 as in port
TRISDbits.TRISD1 =1; //set RD1 as in port
TRISDbits.TRISD2 =1; //set RD2 as in port
TRISDbits.TRISD3 =1; //set RD3 as in port
TRISDbits.TRISD4 =1; //set RD4 as in port
TRISDbits.TRISD5 =1; //set RD5 as in port
TRISDbits.TRISD6 =1; //set RD6 as in port
TRISDbits.TRISD7 =1; //set RD7 as in port
//-----------------------------------------------
lcd_CS =0;
delays();
lcd_WR =1;
delays();
lcd_RD =1;
delays();
lcd_RS =0;
delays();
lcd_RD =0;
delays();
REG_Read =lcd_DATA;
delays();
lcd_RD =1;
delays();
lcd_RS =1;
delays();
lcd_CS =1;
delays();
//-----------------------------------------------
TRISDbits.TRISD0 =0; //set RD0 as out port
TRISDbits.TRISD1 =0; //set RD1 as out port
TRISDbits.TRISD2 =0; //set RD2 as out port
TRISDbits.TRISD3 =0; //set RD3 as out port
TRISDbits.TRISD4 =0; //set RD4 as out port
TRISDbits.TRISD5 =0; //set RD5 as out port
TRISDbits.TRISD6 =0; //set RD6 as out port
TRISDbits.TRISD7 =0; //set RD7 as out port
lcd_DATA =0xff;
return (REG_Read);
}
void lcd_reset(void)
{
lcd_RS =0;
delays();
lcd_WR =1;
delays();
lcd_CS =1;
delays();
lcd_RD =1;
delays();
lcd_DATA =0xff;
delay1ms(100);
lcd_RES =0; //reset start
delay1ms(70); //delay atlest 250ms
lcd_RES =1; //reset end
delay1ms(500);
}
void lcd_on(void)
{
unsigned char datax;
datax =lcd_cmdread(0x00);
datax |= 0x04;
lcd_cmdwrite(0x00,datax);
}
void lcd_Initial(void)
{
lcd_cmdwrite(0x00,0xcd); //WLCR
lcd_cmdwrite(0x01,0x02); //MISC
lcd_cmdwrite(0x02,0x10); //APSR
lcd_cmdwrite(0x03,0x80); //ADSR
lcd_cmdwrite(0x10,0x6b); //WCCR
lcd_cmdwrite(0x12,0xb3); //MAMR
lcd_cmdwrite(0x20,0x27); //AWRR
lcd_cmdwrite(0x30,0xef); //AWBR
lcd_cmdwrite(0x40,0x00); //AWLR
lcd_cmdwrite(0x50,0x00); //AWTR
lcd_cmdwrite(0x21,0x27); //DWRR
lcd_cmdwrite(0x31,0xef); //DWBR
lcd_cmdwrite(0x41,0x00); //DWLR
lcd_cmdwrite(0x51,0x00); //DWTR
lcd_cmdwrite(0x60,0x00); //CPXR
lcd_cmdwrite(0x61,0x00); //BGSG
lcd_cmdwrite(0x70,0x00); //CPYR
lcd_cmdwrite(0x71,0x00); //BGCM
lcd_cmdwrite(0x72,0xef); //EDCM
lcd_cmdwrite(0x90,0x09); //SCCR
lcd_cmdwrite(0xc0,0xc8); //TPCR
lcd_cmdwrite(0xc1,0x3a); //TPSR
lcd_cmdwrite(0xc8,0x80); //TPXR
lcd_cmdwrite(0xc9,0x80); //TPYR
lcd_cmdwrite(0xca,0x00); //TPZR
lcd_cmdwrite(0xd0,0x0f); //LCCR
lcd_cmdwrite(0xe0,0x00); //PNTR
lcd_cmdwrite(0xf0,0xa0); //FNCR
lcd_cmdwrite(0xf1,0x0f); //FVHT
}
void delay1ms(unsigned int count)
{
int i,j;
for(i=0;i<=count;i++)
for(j=0;j<=45;j++);
}
void WriteTextScreen(const rom unsigned char *TxtData)
{
unsigned int i,j;
lcd_cmdwrite(0x00,0xcd);
lcd_cmdwrite(0x60,0x00);
// set cursor X location to 0
lcd_cmdwrite(0x70,0x00);
// set cursor Y location to 0
for (j=0; j<8; j++)
{
for(i=0; i<24; i++)
{
lcd_datawrite(*TxtData++);
}
}
}
void WriteGraphicScreen(const rom unsigned char *GDData)
{
unsigned int i, j;
lcd_cmdwrite(0x00,0xc5); // normal power mode, Graphic mode
lcd_cmdwrite(0x60,0x00); // set cursor X location to 0
lcd_cmdwrite(0x70,0x00); // set cursor Y location to 0
lcd_cmdwrite(0x12,0x91); // normal power mode, Graphic mode
for(i=0;i<128;i++)
{
for(j=0;j<24;j++)
{
lcd_datawrite(*GDData++);
}
}
}
void delays(void)
{
Nop(); Nop(); Nop();
}
void main(void)
{
inti_lcdio();
lcd_reset();
lcd_Initial();
lcd_on();
while(1)
{
WriteTextScreen(TextLogo);
delay1ms(500);
WriteGraphicScreen(GraphicLogo1);
led=!led;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -