写一个字节
void lcd_write(unsigned char byte,unsigned char flag)
{
if(flag)
{
RS = 1;
}
else
{
RS = 0;
}
RW = 0;
E = 1;
LCDPORT = byte;
delay_us(5);
E = 0;
}
{
if(flag)
{
RS = 1;
}
else
{
RS = 0;
}
RW = 0;
E = 1;
LCDPORT = byte;
delay_us(5);
E = 0;
}
从第y行第x位置显示字符
void lcd_dis_char(unsigned char x,unsigned char y,unsigned char byte)
{
unsigned char com;
com = 0x80 + x - 1 + 0x40 * (y - 1);
lcd_write(com,LCD_WRITE_COM);
lcd_write(byte,LCD_WRITE_DATA);
}
{
unsigned char com;
com = 0x80 + x - 1 + 0x40 * (y - 1);
lcd_write(com,LCD_WRITE_COM);
lcd_write(byte,LCD_WRITE_DATA);
}
从第y行第x位置显示字符串
void lcd_dis_str(unsigned char x,unsigned char y,unsigned char * s)
{
unsigned char * temp = s;
unsigned char com;
com = 0x80 + x - 1 + 0x40 * (y - 1);
lcd_write(com,LCD_WRITE_COM);
while(*temp != '\0')
{
lcd_write(*temp,LCD_WRITE_DATA);
temp++;
}
}
{
unsigned char * temp = s;
unsigned char com;
com = 0x80 + x - 1 + 0x40 * (y - 1);
lcd_write(com,LCD_WRITE_COM);
while(*temp != '\0')
{
lcd_write(*temp,LCD_WRITE_DATA);
temp++;
}
}
lcd初始化
void lcd_init()
{
delay_ms(15);
lcd_write(0x38,LCD_WRITE_COM);
delay_ms(5);
lcd_write(0x38,LCD_WRITE_COM);
delay_ms(5);
lcd_write(0x38,LCD_WRITE_COM);
delay_ms(5);
lcd_write(0x01,LCD_WRITE_COM);
delay_ms(5);
lcd_write(0x06,LCD_WRITE_COM);
delay_ms(5);
lcd_write(0x0c,LCD_WRITE_COM);
delay_ms(5);
}
{
delay_ms(15);
lcd_write(0x38,LCD_WRITE_COM);
delay_ms(5);
lcd_write(0x38,LCD_WRITE_COM);
delay_ms(5);
lcd_write(0x38,LCD_WRITE_COM);
delay_ms(5);
lcd_write(0x01,LCD_WRITE_COM);
delay_ms(5);
lcd_write(0x06,LCD_WRITE_COM);
delay_ms(5);
lcd_write(0x0c,LCD_WRITE_COM);
delay_ms(5);
}
显示十六进制数
void lcd_dis_hex(unsigned char x,unsigned char y,unsigned char byte)
{
unsigned char temp = byte;
unsigned char com;
if((x > 15)||(y > 2))
{
return ;
}
com = 0x80 + x - 1 + 0x40 * (y - 1);
lcd_write(com,LCD_WRITE_COM);
if((temp / 16) >= 10)
{
lcd_write((temp / 16) + 0x57,LCD_WRITE_DATA);
}
else
{
lcd_write((temp / 16) + 0x30,LCD_WRITE_DATA);
}
if((temp % 16) >= 10)
{
lcd_write((temp % 16) + 0x57,LCD_WRITE_DATA);
}
else
{
lcd_write((temp % 16) + 0x30,LCD_WRITE_DATA);
}
}
{
unsigned char temp = byte;
unsigned char com;
if((x > 15)||(y > 2))
{
return ;
}
com = 0x80 + x - 1 + 0x40 * (y - 1);
lcd_write(com,LCD_WRITE_COM);
if((temp / 16) >= 10)
{
lcd_write((temp / 16) + 0x57,LCD_WRITE_DATA);
}
else
{
lcd_write((temp / 16) + 0x30,LCD_WRITE_DATA);
}
if((temp % 16) >= 10)
{
lcd_write((temp % 16) + 0x57,LCD_WRITE_DATA);
}
else
{
lcd_write((temp % 16) + 0x30,LCD_WRITE_DATA);
}
}