主文件函数:
#include <reg52.h>
#include "./delay/delay.h"
sbit RS = P2^4;
sbit RW = P2^5;
sbit E = P2^6;
#define LCDPORT P0
#define LCD_WRITE_DATA 1
#define LCD_WRITE_COM 0
void lcd1602_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;
}
void lcd_dis_char(unsigned char x, unsigned char y, unsigned char byte)
{
if((x > 15) || (y > 1))
{
return ;
}
if(0 == y)
{
lcd1602_write(0x80 + x,LCD_WRITE_COM);
}
else
{
lcd1602_write(0x80 + 0x40 + x,LCD_WRITE_COM);
}
lcd1602_write(byte,LCD_WRITE_DATA);
}
void lcd1602_dis_str(unsigned char x, unsigned char y, unsigned char *str)
{
if((x > 15) || (y > 1))
{
return ;
}
if(0 == y)
{
lcd1602_write(0x80 + x,LCD_WRITE_COM);
}
else
{
lcd1602_write(0x80 + 0x40 + x,LCD_WRITE_COM);
}
while(*str != '\0')
{
lcd1602_write(*str,LCD_WRITE_DATA);
str++;
}
}
void lcd_init()
{
delay_ms(15);
lcd1602_write(0x38,LCD_WRITE_COM);
delay_ms(5);
lcd1602_write(0x38,LCD_WRITE_COM);
delay_ms(5);
lcd1602_write(0x38,LCD_WRITE_COM);
delay_ms(5);
lcd1602_write(0x38,LCD_WRITE_COM);
delay_ms(5);
lcd1602_write(0x08,LCD_WRITE_COM);
delay_ms(5);
lcd1602_write(0x01,LCD_WRITE_COM);
delay_ms(5);
lcd1602_write(0x06,LCD_WRITE_COM);
delay_ms(5);
lcd1602_write(0x0c,LCD_WRITE_COM);
delay_ms(5);
}
void main()
{
lcd_init();
lcd1602_write(0x80,LCD_WRITE_COM);
lcd1602_write('a',LCD_WRITE_DATA);
lcd1602_dis_str(4,0,"i like mcu");
while(1);
}
void delay_us(unsigned char t)
{
while(--t);
}
void delay_ms(unsigned char t)
{
while(t--)
{
delay_us(245);
delay_us(245);
}
}
void delay_s(unsigned char t)
{
while(t--)
{
delay_ms(200);
delay_ms(200);
delay_ms(200);
delay_ms(200);
delay_ms(200);
}
}