基于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设备的枚举,以及具体的通讯方式都没有清晰的概念, ...
随机推荐
- 设计模式 - 抽象工厂模式(abstract factory pattern) 具体解释
抽象工厂模式(abstract factory pattern) 详细解释 本文地址: http://blog.csdn.net/caroline_wendy/article/details/2709 ...
- redis单节点集群
一.概念 redis是一种支持Key-Value等多种数据结构的存储系统.可用于缓存.事件发布或订阅.高速队列等场景.该数据库使用ANSI C语言编写,支持网络,提供字符串.哈希.列表.队列.集合结构 ...
- Notes 20180311 : String第三讲_深入了解String
很多前辈我可能对于我的这节文章很困惑,觉得String这个东西还有什么需要特别了解的吗?其实不然,String是一个使用十分频繁的工具类,不可避免地我们也会遇到一些陷阱,深入了解String对于我们避 ...
- Swift基础学习笔记 一
之前学习过一段时间swift,由于目前开发的项目还是用的OC,一段时间不看swift又基本忘干净了,好记性不如烂笔头,还是用博客记录一下自己学的东西吧. 基本数据类型: 1.常量(let)和变量(va ...
- CentOS7.6离线安装JDK1.8
卸载CentOS自带的openJDK: 查看openJDK命令:rpm -qa|grep java 结果: java-1.8.0-openjdk-headless-1.8.0.181-7.b13.el ...
- 基于STM32的简易数码相册
原理:在板子上插入SD卡,并使用FATFS文件系统来循环读取并显示SD卡内的指定目录内的所有BMP图片. 这是显示效果(能上传视频的话就能看到循环显示效果): 因为图片显示函数显示的是24位BMP图片 ...
- 在全志V3/V3s和索智S3/S3L上调试32MB NorFlash
选取MX25L25635F作为调试对象,其他型号的NorFlash开发调试原理基本一致.为了使V3/V3s/S3/S3L识别32MB NorFlash并正常工作,主要针对以下三个部分进行开发和调试.下 ...
- Python--通过索引excel表将文件进行文件夹分类的脚本+读取指定目录下所有文件名的脚本
1.通过索引excel表将文件进行文件夹分类的脚本,此脚本由于将ip和id对应并生成对应id的文件夹将文件进行分类,也可以任意规定表格内容,通过vul_sc_ip.txt和xlsx文件进行索引. # ...
- vs code 写C#心得
!!!官方指南请访问: https://docs.microsoft.com/zh-cn/dotnet/core/index code runner 插件 ---------------------- ...
- 线段树模板(施工ing)
声明 题目: 洛谷 P3372 优化之处:复杂度 O(n log n)级,可快速维护区间的各种操作(如:区间和.)