51单片机——LCD1602

单片机——1602液晶


宗旨:技术的学习是有限的,分享的精神是无限的。


 

11602液晶读写时序

(1)、读状态

       RS=L,R/W=H,E=H。(判断忙完毕后释放总线)

(2)、读数据

       RS=H,R/W=H,E=H。

(3)、写指令

  RS=L,R/W=L,D0~D7=指令码,E=高脉冲

(4)、写数据

        RS=H,R/W=L,D0~D7=数据,E=高脉冲

 

2、液晶显示驱动文件

#include <reg52.h>#define LCD1602_DB  P0
sbit LCD1602_RS = P1 ^ 0;
sbit LCD1602_RW = P1 ^ 1;
sbit LCD1602_E  = P1 ^ 5;/* 等待液晶准备好 */
void LcdWaitReady()
{unsigned char sta;LCD1602_DB = 0xFF;LCD1602_RS = 0;LCD1602_RW = 1;do{LCD1602_E = 1;sta = LCD1602_DB; //读取状态字LCD1602_E = 0;}while (sta & 0x80);   //bit7等于1表示液晶正忙,重复检测直到其等于0为止
}
/* 向LCD1602液晶写入一字节命令,cmd-待写入命令值 */
void LcdWriteCmd(unsigned char cmd)
{LcdWaitReady();LCD1602_RS = 0;LCD1602_RW = 0;LCD1602_DB = cmd;LCD1602_E  = 1;LCD1602_E  = 0;
}
/* 向LCD1602液晶写入一字节数据,dat-待写入数据值 */
void LcdWriteDat(unsigned char dat)
{LcdWaitReady();LCD1602_RS = 1;LCD1602_RW = 0;LCD1602_DB = dat;LCD1602_E  = 1;LCD1602_E  = 0;
}
/* 设置显示RAM起始地址,亦即光标位置,(x,y)-对应屏幕上的字符坐标 */
void LcdSetCursor(unsigned char x, unsigned char y)
{unsigned char addr;if (y == 0)  //由输入的屏幕坐标计算显示RAM的地址{addr = 0x00 + x;  //第一行字符地址从0x00起始}else{addr = 0x40 + x;  //第二行字符地址从0x40起始}LcdWriteCmd(addr | 0x80);  //设置RAM地址
}
/* 在液晶上显示字符串,(x,y)-对应屏幕上的起始坐标,str-字符串指针 */
void LcdShowStr(unsigned char x, unsigned char y, unsigned char *str)
{LcdSetCursor(x, y);   //设置起始地址while (*str != '\0')  //连续写入字符串数据,直到检测到结束符{LcdWriteDat(*str++);}
}
/* 初始化1602液晶 */
void InitLcd1602()
{LcdWriteCmd(0x38);  //16*2显示,5*7点阵,8位数据接口LcdWriteCmd(0x0C);  //显示器开,光标关闭LcdWriteCmd(0x06);  //文字不动,地址自动+1LcdWriteCmd(0x01);  //清屏
}



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/466959.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

recovery模式下支持ADB连接和串口操作

前言Android平台下我们有时候会进入recovery下做一些操作&#xff0c;不管是通过ADB连接还是通过串口操作&#xff0c;都需要你的平台支持&#xff0c;不支持的话可以按照我们这篇文章进行修改。正文ADB连接进入recovery后&#xff0c;我通过ADB连接会有如下报错exec "/sy…

Get busy living or get busy dying

好久不看大片了&#xff0c;今天花了一些时间仔细看了一遍《肖申克的救赎》&#xff0c;应该是很仔细的看了一遍&#xff0c;这个影片真的震撼心灵&#xff0c;“Get busy living or get busy dying.”&#xff08;忙着活&#xff0c;还是忙着死&#xff09;是安迪最重要的一句…

买房这件小事

终于有时间再来讨论这个问题&#xff0c;可能因为在深圳&#xff0c;每次说这个问题时都挺热闹的。— — 为什么想买房&#xff1f;人很奇怪&#xff0c;也很自知&#xff0c;我在上学的时候从来没有过这样大胆的想法。后来突然想买房&#xff0c;一个原因是自己有钱了&#xf…

51单片机——DS18B20

单片机——DS18B20 宗旨&#xff1a;技术的学习是有限的&#xff0c;分享的精神是无限的。 DS18B20——温度传感器&#xff0c;单片机可以通过 1-Wire 和 DS18B20 进行通 信&#xff0c;最终将温度读出。1-Wire 总线的硬件接口很简单&#xff0c;只需要把 18B20 的数据引脚和单…

房价是不是泡沫?

日本买房这件小事记&#xff0c;我在深圳买房继上一篇文章之后&#xff0c;有人说我没有了解中国房地产的历史&#xff0c;就公然写房产的文章。确实&#xff0c;我没有去搜刮很多历史的数据和文章来佐证&#xff0c;也没有引用什么大家之谈&#xff0c;很多都是自己经历的一些…

用Metasploit破解ftp用户名和密码

Metasploit是渗透测试人员在世界各地的资源和工具&#xff0c;比较常用的命令&#xff1a; msfconsole——直接进入 show options——查看 set RHOSTS ip地址/段 use 路径 需要在虚拟机的2003版本下创建FTP服务 将字典密码文件加入到虚拟机的系统里边 命令 ——rz 查看ftp是…

PWM实现语音播放原理

采用PWM进行播放语音原理1.概述2.声音原理3.DAC产生声音的原理是什么4.PWM又是如何实现的DAC的5.PWM的频率与底噪的关系6.PWM音乐曲目解析7.后续1.概述大多数微控制器上播放音频都是采用DAC进行输出&#xff0c;因为微控制器上都不会去带CODEC编解码芯片&#xff0c;但是DAC不是…

CTF 这个看起来有点简单

这个看起来有点简单分值&#xff1a;10 来源&#xff1a; 西普学院难度&#xff1a;易 很明显。过年过节不送礼&#xff0c;送礼就送这个 格式&#xff1a; 解题链接&#xff1a; http://ctf5.shiyanbar.com/8/index.php?id1 解法&#xff1a; 1.手工注入 id1 id1 and 11 id…

操作系统,你搞定了没?

#书籍赠送操作系统一直是比较难学的知识&#xff0c;要学好操作系统的相关内容&#xff0c;需要对硬件、软件、宏观、微观、有非常深刻的理解&#xff0c;而能找到一本讲解比较好的书籍也是非常难得的&#xff0c;恰好&#xff0c;最近有出版社的朋友推荐了这样的一本书籍&…

webcast(利用sharepoint Designer 定制 Office SharePoint Server 2007)学习笔记

讲 师:侯钟雷 微软特约讲师 北京易学育通科技发展有限公司时 间:90 分钟 下载地址:下载地址(需先注册,不过很快)讲座内容&#xff1a;SharePoint Designer是原Frontpage网页工具的演进版本&#xff0c;除了保持了原有强大的功能外&#xff0c;更增加了对SharePoint技术的…

C++ 的几个for 循环,范围for语句

我认为做嵌入式开发也需要学习C开发&#xff0c;可能我们学习的不只是一种编程语言&#xff0c;而是一种编程思想&#xff0c;C相对于C语言来说&#xff0c;会需要更多的想象力&#xff0c;原因就是C的特点太多了。不过&#xff0c;我们可以通过学习C的知识&#xff0c;来掌握面…

​我敢说,这是最全的常用设计模式汇总

今天&#xff0c;想跟大家聊聊代码能力的提升。想起我刚入行那会&#xff0c;怀抱满腔激情&#xff0c;到处学热门框架&#xff0c;但实际上受限于公司体量和业务逻辑&#xff0c;其实往往用不上&#xff0c;时间久了&#xff0c;不用就忘记了&#xff0c;于是在日复一日的工作…

Meterpreter Guide

转载&#xff1a;http://wooyun.jozxing.cc/static/drops/tips-10146.html 0x01 入门篇(生成与接收) 功能介绍 msfpayload和msfencode已经被时代淘汰了现在都转为msfvenom了 msfvenom命令行选项如下&#xff1a;Options:-p, --payload payload> 指定需要使用的…

跟老肖聊天

今天跟一个创业的朋友老肖聊天&#xff0c;聊完之后有点沉重老肖是我的朋友&#xff0c;我讲的都是基于真实的内容&#xff0c;如果觉得我是吹牛或者过分如何&#xff0c;可以绕道&#xff0c;也请嘴下留情。老肖因为公司不景气&#xff0c;这两天出去面试&#xff0c;面试了三…

SSM中(Spring-SpringMVC-Mybatis)(一:概念)

一&#xff1a;Spring&#xff1a; 参照我的另一篇博客&#xff1a; http://www.cnblogs.com/GH0522/p/8127530.html 二:SpringMVC: 流程图&#xff1a; SpringMVC接口解释 DispatcherServlet&#xff1a; Spring提供的前端控制器&#xff0c;所有的请求都有经过它来统一分…

C++实现一个栈

我们先说下栈的知识&#xff0c;先看下我们之前写的文章栈&#xff0c;C语言实现如何自己实现一个栈堆和栈的区别&#xff08;转过无数次的文章&#xff09;这是一个栈这是我们把数据入栈的操作这是数据出栈的操作之前僚机号里面发了一个用C实现的栈文章&#xff0c;比较简单&a…

JavaScript——文档对象模型

一、基本概念 文档对象模型&#xff08;DOM&#xff09;是表示文档和访问、操作构成文档的各种元素的应用程序接口&#xff08;API&#xff09;。它解决了NetScape的JavaScript和Microsoft的JavaScript之间的冲突&#xff0c;给web设计师和开发者一个标准的方法&#xff0c;可让…

你搞清楚「NULL」、「0」、「'0'」、「0」「\0」了吗?

我们先讨论NULL&#xff0c;平时使用指针的时候&#xff0c;会经常遇见这个家伙&#xff0c;这个家伙的值是是这样定义的#define NULL 0 或者 #define NULL (void *)0我们看一下下面这段代码#include <stdio.h>int main () {size_t ii;int *ptr NULL;unsigned long *nul…

周五跟大佬喝酒,顺便打了个球

这是前天发生的事情&#xff0c;昨天写好了文章&#xff0c;今天才发出来&#xff0c;但是名字还是想写成昨晚小聚。昨晚逍遥和啊尚过来找我打球&#xff0c;很开心&#xff0c;虽然酝酿了好久关于这次的活动&#xff0c;但是它真的发生时&#xff0c;我还是显得有些突兀和紧张…

安装Cygwin

Cygwin安装 宗旨&#xff1a;技术的学习是有限的&#xff0c;分享的精神是无限的。 下载cygwin&#xff1a;https://www.cygwin.com/ 箭头指的地方点一下就是安装该软件&#xff0c;开始要安装的一些软件&#xff0c;gcc&#xff0c;gdb&#xff0c;make&#xff0c;ssh等等。…