#include "common.h"
#include "delay.h"
#include "lcd12864.h"
void LCD_Write(bit style, uchar input)
{
LcdEn=0;
LcdRs=style;
LcdRw=0; _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
DBPort=input; _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();//注意顺序
LcdEn=1; _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();//注意顺序
LcdEn=0; _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
LCD_Wait();
}
unsigned char LCD_Wait(void)
{
LcdRs=0;
LcdRw=1; _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
LcdEn=1; _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
while(DBPort&0x80);
LcdEn=0;
return DBPort;
}
void LCD_Clear_Screen()
{
LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏
}
void LCD_Init()
{
DBPort=0xFF;
DelayMs(5);
LcdEn=0;
DelayMs(5);
LCD_Write(LCD_COMMAND,0x38);/*功能设定*/ //8位传数,基本功能指令
DelayMs(5);
LCD_Write(LCD_COMMAND,0x08);/*关显示指令*/
DelayMs(5);
LCD_Write(LCD_COMMAND,0x06);/*游标右移*/ //游标向右移动,地址计数器(DDRAM)AC=AC+1;
DelayMs(5);
LCD_Clear_Screen();/*清屏*/
DelayMs(5);
LCD_Write(LCD_COMMAND,0x0c);/*开显示指令*/
}
void LCD_Set_xy(uchar x, uchar y)
{
xdata uchar address;
switch(y)
{
case 0:
address = 0x86 + x; //第一行
break;
case 1:
address = 0x90 + x; //第二行
break;
case 2:
address = 0x88 + x; //第三行
break;
case 3:
address = 0x98 + x; //第四行
break;
default:
address = 0x80 + x;
}
LCD_Write(LCD_COMMAND,address);
}
void prints(uchar * temp)
{
while((*temp)!='\0')
{
LCD_Write(LCD_DATA,*temp);
temp++;
}
}