51单片机之LCD1602
描述:利用KEIL5编程,使AT89C52单片机控制LCD1602显示。
硬件:
电路仿真图(未运行)

电路仿真图(运行)

程序:
LCD1602一些基本指令
https://blog.csdn.net/m0_46916361/article/details/106199122?spm=1011.2415.3001.5331




#include <REGX52.H>
#define uchar unsigned char
#define uint unsigned int
sbit RS = P2^0;
sbit RW = P2^1;
sbit E = P2^2;
sbit D7 = P3^7;
void write_code(uchar row, uchar col, uchar *p);
void LCD_init();
void main()
{
LCD_init();
while(1)
{
write_code(0, 0, "0123456789");
write_code(1, 0, "ABCDEFGHIJK");
}
}
void delay(uint n)
{
while(n--);
}
void write_dat(uchar dc, uchar dat)
{
delay(10);
E = 0;
delay(10);
RW = 0;
delay(10);
RS = dc;
delay(10);
P3 = dat;
delay(10);
E = 1;
delay(10);
E = 0;
}
void write_code(uchar row, uchar col, uchar *p)
{
row %= 2; col %= 16;
write_dat(0, 0x80+0x40*row+col);
while(*p != '\0')
write_dat(1, *p++);
}
void LCD_init()
{
write_dat(0, 0x38);
write_dat(0, 0x0c);
write_dat(0, 0x06);
write_dat(0, 0x01);
}