LCD1602显示总结
仿真原理图如下:
1.LCD1602正常显示两行数据
/*------------------------
功能:LCD1602显示两行数据
Author: Zhang Kaizhou
Date: 2019-6-3 12:42:22
------------------------*/
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned intuchar code table0[] = {"0123456789ABCDEF"}; // 每行的字符数据
uchar code table1[] = {"0123456789abcdef"};
sbit lcdrs = P1^2; // LCD数据/命令选择端
sbit lcdrw = P1^3; // LCD读写选择端
sbit lcden = P1^4; // LCD使能端,高脉冲有效
uchar num;void init();
void writeCommand(uchar command);
void delay(uchar xms);
void writeData(uchar dat);void main()
{init();writeCommand(0x80); // 将数据指针定位到第一行的首地址for(num = 0; num < 16; num++){writeData(table0[num]);delay(5);}writeCommand(0x80 + 0x40); // 将数据指针定位到第二行的首地址for(num = 0; num < 16; num++){writeData(table1[num]);delay(5);}while(1);
}/*初始化LCD1602的设置*/
void init()
{lcden = 0; // 拉低使能端,准备产生使能高脉冲信号writeCommand(0x38); // 显示模式设置(16x2, 5x7点阵,8位数据接口)writeCommand(0x0c); // 开显示,不显示光标writeCommand(0x06); // 写一个字符后地址指针自动加1writeCommand(0x01); // 显示清零,数据指针清零
}/*写指令函数*/
void writeCommand(uchar command)
{lcdrs = 0; // 命令选择lcdrw = 0;P0 = command;delay(5);lcden = 1; // 产生一个正脉冲使能信号delay(5);lcden = 0;
}/*写数据函数*/
void writeData(uchar dat)
{lcdrs = 1; // 数据选择lcdrw = 0;P0 = dat;delay(5);lcden = 1;delay(5);lcden = 0;
}/*延时函数*/
void delay(uchar xms)
{uint i, j;for(i = xms; i > 0; i--)for(j = 110; j > 0; j--);
}
2.整屏左移显示
/*------------------------
功能:LCD1602整屏左移显示
Author: Zhang Kaizhou
Date: 2019-6-3 12:35:23
------------------------*/
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned intuchar code table0[] = {"0123456789ABCDEF"}; // 每行的字符数据
uchar code table1[] = {"0123456789abcdef"};
sbit lcdrs = P1^2; // LCD数据/命令选择端
sbit lcdrw = P1^3; // LCD读写选择端
sbit lcden = P1^4; // LCD使能端,高脉冲有效
uchar num;void init();
void writeCommand(uchar command);
void delay(uchar xms);
void writeData(uchar dat);void main()
{init();writeCommand(0x80 + 0x10); // 将数据指针定位到第一行的非显示存储区for(num = 0; num < 16; num++){writeData(table0[num]);delay(5);}writeCommand(0x80 + 0x50); // 将数据指针定位到第二行的非显示存储区for(num = 0; num < 16; num++){writeData(table1[num]);delay(5);}for(num = 0; num < 16; num++) // 循环整屏左移{writeCommand(0x1c); // 整屏左移delay(100);}while(1);
}/*初始化LCD1602的设置*/
void init()
{lcden = 0; // 拉低使能端,准备产生使能高脉冲信号writeCommand(0x38); // 显示模式设置(16x2, 5x7点阵,8位数据接口)writeCommand(0x0c); // 开显示,不显示光标writeCommand(0x06); // 写一个字符后地址指针自动加1writeCommand(0x01); // 显示清零,数据指针清零
}/*写指令函数*/
void writeCommand(uchar command)
{lcdrs = 0; // 命令选择lcdrw = 0;P0 = command;delay(5);lcden = 1; // 产生一个正脉冲使能信号delay(5);lcden = 0;
}/*写数据函数*/
void writeData(uchar dat)
{lcdrs = 1; // 数据选择lcdrw = 0;P0 = dat;delay(5);lcden = 1;delay(5);lcden = 0;
}/*延时函数*/
void delay(uchar xms)
{uint i, j;for(i = xms; i > 0; i--)for(j = 110; j > 0; j--);
}
3.刷屏显示多行字符
/*----------------------------
功能:LCD1602刷屏显示多行字符
Author: Zhang Kaizhou
Date: 2019-6-4 16:15:43
-----------------------------*/
#include <reg52.h>
#include <string.h>
#define uchar unsigned char
#define uint unsigned intuchar code table0[] = {"0123456789ABCDEF"}; // 每行的字符数据
uchar code table1[] = {"0123456789abcdef"};
uchar code table2[] = {"Welcome to here!"};
uchar code table3[] = {"I'm ZKZ!"};
uchar code table4[] = {"Life is nice!"};
uchar code table5[] = {"Tomorrow is OK!"};sbit lcdrs = P1^2; // LCD数据/命令选择端
sbit lcdrw = P1^3; // LCD读写选择端
sbit lcden = P1^4; // LCD使能端,高脉冲有效
uchar num;void init();
void writeCommand(uchar command);
void delay(uint xms);
void writeData(uchar dat);void main()
{init();/*第一屏*/writeCommand(0x80); // 将数据指针定位到第一行首for(num = 0; num < strlen(table0); num++){writeData(table0[num]);delay(5);}writeCommand(0x80 + 0x40); // 将数据指针定位到第二行首for(num = 0; num < strlen(table1); num++){writeData(table1[num]);delay(5);}delay(2000);writeCommand(0x01);/*第二屏*/writeCommand(0x80); // 将数据指针定位到第一行首for(num = 0; num < strlen(table2); num++){writeData(table2[num]);delay(5);}writeCommand(0x80 + 0x40); // 将数据指针定位到第二行首for(num = 0; num < strlen(table3); num++){writeData(table3[num]);delay(5);}delay(2000);writeCommand(0x01);/*第三屏*/writeCommand(0x80); // 将数据指针定位到第一行首for(num = 0; num < strlen(table4); num++){writeData(table4[num]);delay(5);}writeCommand(0x80 + 0x40); // 将数据指针定位到第二行首for(num = 0; num < strlen(table5); num++){writeData(table5[num]);delay(5);}while(1);
}/*初始化LCD1602的设置*/
void init()
{lcden = 0; // 拉低使能端,准备产生使能高脉冲信号writeCommand(0x38); // 显示模式设置(16x2, 5x7点阵,8位数据接口)writeCommand(0x0c); // 开显示,不显示光标writeCommand(0x06); // 写一个字符后地址指针自动加1writeCommand(0x01); // 显示清零,数据指针清零
}/*写指令函数*/
void writeCommand(uchar command)
{lcdrs = 0; // 命令选择lcdrw = 0;P0 = command;delay(5);lcden = 1; // 产生一个正脉冲使能信号delay(5);lcden = 0;
}/*写数据函数*/
void writeData(uchar dat)
{lcdrs = 1; // 数据选择lcdrw = 0;P0 = dat;delay(5);lcden = 1;delay(5);lcden = 0;
}/*延时函数*/
void delay(uint xms)
{uint i, j;for(i = xms; i > 0; i--)for(j = 110; j > 0; j--);
}
4.其他显示方式可通过改变写入指令来实现…
LCD1602显示总结相关推荐
- C语言 | 基于MPU605(六轴传感器)的I2C实现LCD1602显示(代码类)
博主github:https://github.com/MichaelBeechan 博主CSDN:https://blog.csdn.net/u011344545 基于MPU605(六轴传感器)的I ...
- 3.5.基于STC89C52+MC20的短信远程控制开关LCD1602显示
需要准备的硬件 MC20开发板 1个 https://item.taobao.com/item.htm?id=562661881042 GSM/GPRS天线 1根 https://item.taoba ...
- 利用LCD1602显示超声波测距
利用LCD1602显示超声波测距 介绍 一.需要的器件 二.原理 工程代码 一. LCD1602 二.超声波测距及主程序 运行图 介绍 一.需要的器件 51单片机:任意一款都可以,我这里使用的是STC ...
- 基于51单片机的电子钟万年历LCD1602显示
本设计是51单片机的电子钟万年历LCD1602显示(proteus仿真+程序+报告+器件清单) 仿真图proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 编号C0002 ...
- (原创)制作一个采用 LCD1602 显示的电子钟,在 LCD 上显示当前的时间。显示格式为“时时:分分:秒秒”。设有 4 个功能键k1~k4,功能如下:(1)k1——进入时间修改。
(原创)制作一个采用 LCD1602 显示的电子钟,在 LCD 上显示当前的时间.显示格式为"时时:分分:秒秒".设有 4 个功能键k1-k4,功能如下: (1)k1--进入时间修 ...
- lcd1602显示和led显示的区别在哪里
LCD1602显示和LED显示有一些显著的区别: 原理不同:LCD1602显示使用液晶显示技术,而LED显示使用发光二极管(LED)显示技术. 功耗不同:LCD1602显示的功耗通常比LED显示要低. ...
- 基于C51单片机的万年历设计(LCD1602显示)
C51单片机万年历设计 注:该程序基于普中科技C51 V2.2开发板设计,库函数和硬件资料均来自普中科技,侵删.main.c大部分为原创,如有雷同,纯属巧合. 名称:C51万年历. 硬件:以C51芯片 ...
- 【Proteus仿真】AT24C02数据读写+LCD1602显示
[Proteus仿真]AT24C02数据读写+LCD1602显示 Proteus仿真 程序说明 AT24C02采用的IIC通讯,SCK:P20;SDA:P21 按键K1-K4分别接到P30-P33引脚 ...
- 【在线仿真】Arduino 超声波测距+LCD1602显示
[在线仿真]Arduino 超声波测距+LCD1602显示 程序代码 /*LiquidCrystal Library - Hello WorldThis sketch prints "Hel ...
- 【Proteus仿真】51单片机制作简易计算器+ LCD1602显示
[Proteus仿真]51单片机制作简易计算器+ LCD1602显示 Proteus仿真效果演示 程序代码 #include<reg51.h> //头文件 #define uint uns ...
最新文章
- C#按关闭按钮实现最小化,按ESC才关闭的实现【含系统消息大全】
- 内存淘汰算法_「承」Redis 原理篇——Redis 的内存回收机制
- mysql表大小限制_技术分享 | 在磁盘上查找 MySQL 表的大小
- C++ delete与 delete []区别
- 【机器视觉】 gen_measure_rectangle2算子
- Everything的下载
- 通过CSS来垂直居中文本
- 来看一下:构造函数的小秘密详解
- Apache 配置SSL网站
- Python 批量生成中文姓名(百家姓)
- ThreadLocal原理、ThreadLocal内存泄漏
- 汉语字典_Android版最新官方版,汉语字典专业版2020
- windows office visio各版本下载
- docker-compose+postsql多容器部署django-vue项目
- Java 中的 IO 和 NIO
- android移动应用技术教程课后答案,完整word版,《Android移动应用基础教程》_习题答案...
- 证明:在N维欧式空间中,两两互成钝角的非零向量不多于N+1个
- 关于SES2000找管线定位问题的实验
- 视频会议系统gk服务器,华为视频会议系统中的终端如何通过GK发起呼叫
- 零时科技 || TempleDAO攻击事件分析