单片机LCD液晶显示
目录
一、LCD1602的介绍
LCD1602是一款广泛应用于工业领域的字符型液晶显示模块。它的核心组成部分包括:
1、液晶显示屏:这是一种点阵型液晶显示器,能够同时显示16行共32个字符。
2、控制驱动主电路:通常采用的是HD44780及其扩展驱动电路HD44100。这些电路负责液晶显示器的供电、刷新以及对像素点的控制。
3、外部接口:LCD1602具备标准的16脚接口,包括GND(电源地)、VCC(电源正极)以及用于配置液晶显示参数的其他引脚。
LCD1602的特点在于能够显示ASCII码字符表中的任意字符,并且具有较低的成本、简单的编程接口以及较少的外围设备需求。然而,与OLED或某些其他类型的液晶显示器相比,它在显示图形方面的性能有限,因为这种显示方式主要依赖于点阵排列来实现字符和图像的显示。此外,由于其设计上的限制,LCD1602通常只能显示小尺寸的文字和符号,这可能会影响到一些需要大字体和高清晰度的应用场景。
LCD实图如下:

二、引脚说明
1:VSS:为电源地;(GND)
2:VDD:接5V正电源;(5v)
3:V0:为液晶屏显示对比度调整端口。
4:RS:为寄存器选择,高电平时选择数据寄存器,低电平时选择指令寄存器。
5:RW:为读写信号线,高电平时进行读操作,低电平进行写操作。
6:E:为使能端,当E端由高电平跳变成低电平时,液晶屏执行命令。
7~14:D0~D7:为8位双向数据线;
15:A:背光源正极(5V)
16:K:背光源负极(GND)
引脚图:

三、程序说明
1.判断LCD602是否再忙
在忙则等待。读双向数据线端的最高位D7,其为忙标志位。如果为高电平表示忙,不接受数据或指令(等待)。如果为低电平为不忙,此时可以接受数据或指令(放行)。
void Read_Busy()
{
uchar busy;
P0=0xff;
RS=0;
RW=1;
do
{EN=1;
busy=P0;
EN=0;
}while(busy & 0x80);
}
2.写指令。
RS选择指令寄存器,RW选择写操作。D0~D7输入你所需要写进的指令。后通过EN制造下降沿,让液晶屏执行命令即可(前面要判断是否忙)
void write_cmd(uchar cmd)
{
Read_Busy();
RS=0;
RW=0;
P0=cmd;
EN=1;
EN=0;
}
3.写数据。
RS选择数据寄存器,RW选择写操作。D0~D7输入你所需要写进的数据。后通过EN制造下降沿,让液晶屏执行命令即可(前面要判断是否忙)
void write_dat(uchar dat)
{
Read_Busy();
RS=1;
RW=0;
P0=dat;
EN=1;
EN=0;
}
4.LCD1602初始化。
输入一系列指令即可。(指令的含义在后面解释)
void LCD_init()
{
delayms(0x0f); //延时一段时间
write_cmd(0x38);
delayms(0x05); //延时一段时间
write_cmd(0x38);
write_cmd(0x0f);
write_cmd(0x01);
write_cmd(0x06);
write_cmd(0x0c);
}
四、总程序
#include <reg52.h>
typedef unsigned char uchar;
typedef unsigned int uint;
sbit RS=P2^6;
sbit RW=P2^5;
sbit EN=P2^7;
void Read_Busy()
{
uchar busy;
P0=0xff;
RS=0;
RW=1;
do
{EN=1;
busy=P0;
EN=0;
}while(busy & 0x80);
}
//写指令
void write_cmd(uchar cmd)
{
Read_Busy();
RS=0;
RW=0;
P0=cmd;
EN=1;
EN=0;
}
//写数据
void write_dat(uchar dat)
{
Read_Busy();
RS=1;
RW=0;
P0=dat;
EN=1;
EN=0;
}
void delayus()
{
uchar i;
for(i=0;i<255;i++);
}
void delayms(uchar m)
{
uchar j;
for(j=0;j<m;j++)
{
delayus();
}
}
//初始化LCD1602
void LCD_init()
{
delayms(0x0f); //延时一段时间
write_cmd(0x38);
delayms(0x05); //延时一段时间
write_cmd(0x38);
write_cmd(0x0f);
write_cmd(0x01);
write_cmd(0x06);
write_cmd(0x0c);
}
void main()
{
LCD_init();
write_cmd(0x80|0x04);
write_dat('B');
while(1);
}
五、实验现象
使用 USB 线将开发板和电脑连接成功后,把编译后产生的.hex 文件烧入到芯片内,实现现象如下:在 LCD1602 液晶上显示字符信息。
实验现象如图:

烧录教程
1、开发板准备
(1)检查芯片型号是不是STC89C52RS
普中A2开发板单片机芯片:

(2)单片机开发板连接电脑

2、烧录软件的准备
(1)下载好烧录软件鼠标左键双击打开运行

(2)芯片型号的选择

(3)检查串口是否有红框圈中的 USB-SERIAL CH340 字样(后面的COM口不用管,每台电脑都可能不一致)。有的话证明你的电脑已经装了CH340驱动;没有的就下载。

(4)打开程序文件找到已经编译生成的.hex文件,单击选中后点击打开


3、烧录程序
(1)点击下载编程按钮

(2)开关单片机开发板烧录成功

相关推荐
LCD液晶显示的51单片机简单计算器.rar
LCD液晶显示的51单片机简单计算器。
跟我学51单片机(七)——LCD1602液晶显示模块
本刊上期介绍单片机捕获红外遥控器解码方法电路原路和程序设计方法,并给出了实例。这一讲将介绍单片机驱动LCD1602 液晶显示模块。通过该讲,读者可以掌握LCD1602 液晶的工作原理和如何通过单片机来驱动LCD1602 液晶。 一、原理简介 液晶显示模块具有体积小、功耗低、显示内容丰富、超薄轻巧等优点,在嵌入式应用系统中得到越来越广泛的应用,这讲中向大家介绍的LCD1602 液晶显示模块(其内部控制器为HD44780 芯片),它可以显示两行,每行16 个字符,因此可相当于32 个LED 数码管,而且比数码管显示的信息还多。采用单+5V 电源供电,外围电路配置简单,价格便宜,具有很高
基于单片机LCD液晶显示的多级菜单程序解析
基于单片机的LCD液晶显示中涉及的多级菜单程序的源码(c语言)移植及移植中需要注意的源码解析移植文档,可以满足大多数应用,其中很多思想很值得借鉴
51单片机教程(七):LCD1602液晶显示模块
本刊上期介绍单片机捕获红外遥控器解码方法电路原路和程序设计方法,并给出了实例。这一讲将介绍单片机驱动LCD1602 液晶显示模块。通过该讲,读者可以掌握LCD1602 液晶的工作原理和如何通过单片机来驱动LCD1602 液晶。
单片机+LCD1602液晶显示字符串.doc
单片机+LCD1602液晶显示字符串.doc


