LCD12864串口驱动
sbit LCD_RS = P2^5; //(RS)片选 高电平有效
sbit LCD_RW = P2^6; //(RW)数据
sbit LCD_EN = P2^7; //(EN)时钟
//*12864液晶显示屏串口驱动程序--------------------------------------------------------*/
uchar dat;
//*写指令到LCD------------------------------------------------------------------------*/
void lcd_wcmd(uchar com)
{
uchar i,j,k;
LCD_RS=0; LCD_RS=1;
dat=0xf8;
for(i=1;i<=8;i++)
{
LCD_RW=(bit)(dat&0x80);
LCD_EN=0; LCD_EN=1;
LCD_EN=0; dat=dat<<1;
}
dat=com; dat=dat&0xf0;
for(j=1;j<=8;j++)
{
LCD_RW=(bit)(dat&0x80);
LCD_EN=0; LCD_EN=1;
LCD_EN=0; dat=dat<<1;
}
dat=com;
dat=_cror_(dat,4);// 此为高低四位交换
dat=dat&0xf0;
for(k=1;k<=8;k++)
{
LCD_RW=(bit)(dat&0x80);
LCD_EN=0; LCD_EN=1;
LCD_EN=0; dat=dat<<1;
}
}
//*写数据到LCD------------------------------------------------------------------------*/
void lcd_wdat(uchar com1)
{
uchar i,j,k;
LCD_RS=0; LCD_RS=1;
dat=0xfa;
for(i=1;i<=8;i++)
{
LCD_RW=(bit)(dat&0x80);
LCD_EN=0; LCD_EN=1;
LCD_EN=0; dat=dat<<1;
}
dat=com1; dat=dat&0xf0;
for(j=1;j<=8;j++)
{
LCD_RW=(bit)(dat&0x80);
LCD_EN=0; LCD_EN=1;
LCD_EN=0; dat=dat<<1;
}
dat=com1;
dat=_cror_(dat,4);// 此为高低四位交换
dat=dat&0xf0;
for(k=1;k<=8;k++)
{
LCD_RW=(bit)(dat&0x80);
LCD_EN=0; LCD_EN=1;
LCD_EN=0; dat=dat<<1;
}
} |