基于preteus的1602液晶显示器的学习(LM016L)
(证明学过,以示纪念)
所谓1602就是每行可以显示16个字符,可以显示两行。1602液晶在工业中使用比较广泛,其基本都采用的是HD44780控制器,或者兼容该指令集,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。其实主要会看时序图就可以了。

1.1602字符LCD指标

注:工作电流是指液晶的耗电,没有考虑背光耗电。一般情况下,背光耗电大约为20mA。
2.引脚与功能

注:
3.1602字符LCD内部显存
1602液晶内部包含80个字节的显示RAM,用于存储需要发送的数据,第二行存储器地址范围为0x40~0x67。其中,第行存储器地址范围0x00~0x0F与1602字符LCD第一行位置对应;第二行存储器地址范围0x40~0x4F与1602字符LCD第二行位置对应,每行多出来的部分是为了显示移动字幕。

4.读写时序

5.1602的指令集
https://www.cnblogs.com/aslmer/p/5801363.html
6.读写的流程

7.代码演示

#include<reg51.h>
sbit P1_0 = P1 ^ ;
sbit P1_1 = P1 ^ ;
sbit P1_2 = P1 ^ ;
#define LCDPORT P2
#define RSCLR P1_0=0 //P1_0 接的是RS 寄存器 ,RS=1 : 数据寄存器 RS=0 指令寄存器
#define RSSET P1_0=1
#define RWCLR P1_1=0 //P1_1 接的是RW寄存器 , RW=1: 读数据 RW=0 写数据
#define RWSET P1_1=1
#define ENCLR P1_2 =0 //P1^2 接的是EN 使能寄存器 写时下降沿 读时 高电平有效
#define ENSET P1_2=1
void lcd_delay(unsigned char delayTime)
{
while (delayTime)
{
delayTime--;
}
}
void wrirte_lcd_command(unsigned char write_command)
{
lcd_delay();
RSCLR;
RWCLR;
ENCLR; //使能 ,下降沿触发
LCDPORT = write_command;
ENSET;
ENCLR;
}
void write_lcd_data(unsigned char write_data)
{
lcd_delay();
LCDPORT = write_data;
RSSET;
RWCLR;
ENSET;
ENCLR;
}
void initlize_lcd(void)
{
unsigned char i;
; i > ; i--) lcd_delay();
wrirte_lcd_command(0x3f); //表明数据总线是8位,字体大小是5*10的字体
; i > ; i--) lcd_delay();
wrirte_lcd_command(0x3f); //表明数据总线是8位
wrirte_lcd_command(0x0f); //打开显示,打开光标,并且显示。
wrirte_lcd_command(0x01); //将地址计数器(AC)设为00H,DDRAM内容保持不变,光标移至左上脚
; i > ; i--) lcd_delay(); //进入模式设置指令(Entry Mode Set)
wrirte_lcd_command(0x06); //光标右移,关闭整体移动。
}
void lcd_display(unsigned char x, unsigned char y, const unsigned char *str)
{
switch (x)
{
:
wrirte_lcd_command(0x80 + y); break;
:
wrirte_lcd_command(0xc0 + y); break;
}
while (*str)
{
write_lcd_data(*str);
str++;
}
}
const unsigned char lcddisplay_row1[] = { "sp-02122" };
const unsigned char lcddisplay_row2[] = { "hahahaaha" };
void Delay(unsigned int t)
{
while (t)t--;
}
void main(void)
{
unsigned char i;
initlize_lcd();
wrirte_lcd_command(0x80);//从第一行开始写
; i > ; i--)
{
write_lcd_data(i + 'A');
Delay();
Delay();
}
wrirte_lcd_command(0xc0);//改到第二行写
; i > ; i--)
{
write_lcd_data(i + 'a');
Delay();
Delay();
}
lcd_display(, , lcddisplay_row1);
Delay();
Delay();
lcd_display(, , lcddisplay_row2);
);
}
基于preteus的1602液晶显示器的学习(LM016L)的更多相关文章
- 基于STM32的USB枚举过程学习笔记
源:基于STM32的USB枚举过程学习笔记 基于STM32的USB枚举过程学习笔记(一) 基于STM32的USB枚举过程学习笔记(二) 基于STM32的USB枚举过程学习笔记(三) 基于STM32的U ...
- Android应用---基于NDK的samples例程hello-jni学习NDK开发
Android应用---基于NDK的samples例程hello-jni学习NDK开发 NDK下载地址:http://developer.android.com/tools/sdk/ndk/index ...
- 基于jquery的插件turn.js学习笔记
基于jquery的插件turn.js学习笔记 简介 turn.js是一个可以实现3d书籍展示效果的jq插件,使用html5和css3来执行效果.可以很好的适应于ios和安卓等触摸设备. How it ...
- StreamDM:基于Spark Streaming、支持在线学习的流式分析算法引擎
StreamDM:基于Spark Streaming.支持在线学习的流式分析算法引擎 streamDM:Data Mining for Spark Streaming,华为诺亚方舟实验室开源了业界第一 ...
- 基于搜索的贝叶斯网络结构学习算法-K2
基于搜索的贝叶斯网络结构学习算法-K2 2018-04-05 19:34:18 ItsBlue 阅读数 3172更多 分类专栏: 贝叶斯网络 网络结构学习 版权声明:本文为博主原创文章,遵循CC ...
- [炼丹术]基于SwinTransformer的目标检测训练模型学习总结
基于SwinTransformer的目标检测训练模型学习总结 一.简要介绍 Swin Transformer是2021年提出的,是一种基于Transformer的一种深度学习网络结构,在目标检测.实例 ...
- 基于 Cmd MarkDown 的 markdown 语法学习
首先我要打一个属于干货的广告:CmdMarkDown 是非常好用的markdown编辑器软件,支持全平台,由作业部落出品,分为客户端与WEB端两种使用场景. 本篇博客学习的markdown语法都是基于 ...
- Keras:基于Theano和TensorFlow的深度学习库
catalogue . 引言 . 一些基本概念 . Sequential模型 . 泛型模型 . 常用层 . 卷积层 . 池化层 . 递归层Recurrent . 嵌入层 Embedding 1. 引言 ...
- 基于STM32的USB枚举过程学习笔记(转)
之前使用ST官方的库以及网络的资料,完成了使用USB HID类进行STM32和PC机的通讯.由于其他原因并没有深入的分析,虽然实现了功能,但是关于USB设备的枚举,以及具体的通讯方式都没有清晰的概念, ...
随机推荐
- 【星云测试】开发者测试(3)-采用精准测试工具对springcloud微服务应用进行穿透测试
1.微服务简介 微服务英文名称Microservice,Microservice架构模式就是将整个Web应用组织为一系列小的Web服务.这些小的Web服务可以独立地编译及部署,并通过各自暴露的API接 ...
- 分布式架构学习-Consul集群配置
简介 之前公司用的是Consul进行服务发现以及服务管理,自己一直以来只是用一下,但是没有具体的深入,觉得学习不可以这样,所以稍微研究了一下. 网上有很多关于Consul的介绍和对比,我这里也不献丑了 ...
- Apache安装排错
今天安装一下Apache,发现报错,且在网上没有找到相关解决方法,所以记录一下 安装步骤:将下载好的apache包放置到要放置的目录中,最好是盘根目录下,然后命令行下进入到apache下面的bin目录 ...
- vue+echarts实现可拖动节点的折现图(支持拖动方向和上下限的设置)
本篇文档主要是利用echarts实现可拖动节点的折现图,在echarts中找到了一个demo,传送门:https://echarts.baidu.com/examples/editor.html?c= ...
- tp框架如何处理mysql先排序在分组
$giModel = M('GroupIntegral'); $gi_table = $giModel->order('id desc')->limit('999')->buildS ...
- MySQL+Service+Servlet+Jsp实现Table表格分页展示数据
下面以一个示例讲解如何使用MySQL+Service+Servlet+Jsp实现Table表格分页展示数据: eg:请假管理系统 要求如下: 一.打开首页页面, 访问查询请假记录的 servlet , ...
- JAVA 设计模式之原型模式
目录 JAVA 设计模式之原型模式 简介 Java实现 1.浅拷贝 2.深拷贝 优缺点说明 1.优点 2.缺点 JAVA 设计模式之原型模式 简介 原型模式是六种创建型设计模式之一,主要应用于创建相同 ...
- [转]windows下多个python版本共存,pip使用
windows下多个python版本共存,pip使用 2017年09月13日 17:21:30 阅读数:2574 一.同时装了Python3和Python2,怎么区分 了解python的人都知道pyt ...
- CentOS6安装各种大数据软件 第一章:各个软件版本介绍
相关文章链接 CentOS6安装各种大数据软件 第一章:各个软件版本介绍 CentOS6安装各种大数据软件 第二章:Linux各个软件启动命令 CentOS6安装各种大数据软件 第三章:Linux基础 ...
- NFS服务的搭建
NFS服务的作用:提供网络文件系统给客户机 nfs服务器的安装配置和使用: 1.将已经制作好的文件系统rootfs_fs210_audio.tgz 拷贝到 /opt,并解压(这里的/opt目录是通过s ...