目录
效果图:
硬件接线:
源代码:
Lcd1602.c
lcd1602.h
main.c
硬件:lcd1602 51单片机 串口
软件:stc keil
效果图:
硬件接线:
LCD1602 RW RS E 分别接51单片机的P25 P26 P27
LCD1602 D0~D7分别接51单片机的P00~P07
LCD1602 VSS VDD V0分别接51单片机GND VCC GND
串口tx rx gnd 分别接51单片机 rx tx gnd
源代码:
Lcd1602.c
#include <reg52.h>
#include "lcd1602.h"
#define LCD P0
sbit E = P2^7;
sbit RS = P2^6;
sbit RW = P2^5;
/******延迟5毫秒函数********/
void delay5ms() //误差 -0.000000000001us
{
unsigned char a,b;
for(b=15;b>0;b--)
for(a=152;a>0;a--);
}
/******LCD1602写命令函数********/
void write_com(unsigned char command)
{
RS = 0;
RW = 0; //高读低写
LCD = command;
delay5ms(); //这里延时最低要30纳秒 我们直接给5ms
E = 1; //使能拉高
delay5ms(); //最低要求延迟150纳秒 我们直接给5ms
E = 0;
}
/******LCD1602写数据函数********/
void write_data(unsigned char dat)
{
RS = 1;
RW = 0;
LCD = dat;
delay5ms(); //这里延时最低要30纳秒 我们直接给5ms
E = 1; //使能拉高
delay5ms(); //最低要求延迟150纳秒 我们直接给5ms
E = 0;
}
/******初始化LCD1602********/
void init_lcd()
{
write_com(0x06); //写入数据后光标自动右移 整屏不移动。 0x40(光标左移 整屏不移动)0x05(左移 整屏右移)0x07(右移 整屏右移)
write_com(0x0c); //开显示功能 无光标 不闪烁
write_com(0x38); //数据总线8位 16X2显示 5*7点阵
write_com(0x01); //清屏 0000 0001
}
void LCD_ShowChar(unsigned char Line,unsigned char Column,unsigned char Char)
{
if(Line == 1)
{
write_data(0x08|(Column -1));
}
else
{
write_data(0x08|(Column -1)+0x40);
}
}
lcd1602.h
void write_com(unsigned char command); //写命令函数
void write_data(unsigned char dat); //写数据函数
void init_lcd(); //初始化LCD1602函数
void delay5ms(); //延时5ms函数
void LCD_ShowChar(unsigned char Line,unsigned char Column,unsigned char Char);
main.c
#include <reg52.h>
#include "lcd1602.h"
#include "delay.h"
void main()
{
init_lcd();
LCD_ShowChar(2,3,'A');
while(1)
{
}
}