单片机的学习(15)--LCD1602

LCD1602

  • 14.1LCD1602的基础知识
    • 1.LCD1602介绍
    • 2.引脚及应用电路
    • 3.内部结构框图
    • 4.时序结构
    • 5.LCD1602指令集
    • 6.字符值
    • 7.LCD1602操作流程
  • 14.2LCD1602功能函数代码
    • 1.显示一个字符
      • (1)工程目录
      • (2)main.c函数
      • (3)LCD1602.c函数
    • 2.显示一组字符串
      • (1)代码
    • 2.显示数字
      • (1)无符号代码
      • (2)有符号代码
    • 2.显示进制
      • (1)十六进制
      • (1)二进制

14.1LCD1602的基础知识

1.LCD1602介绍

LCD1602(Liquid Crystal Display)液晶显示屏是一种字符型液晶显示模块,可以显示ASCII码的标准字符和其它的一些内置特殊字符,还可以有8个自定义字符
显示容量:16×2个字符,每个字符为5*7点阵

2.引脚及应用电路

在这里插入图片描述

3.内部结构框图

在这里插入图片描述

4.时序结构

在这里插入图片描述

5.LCD1602指令集

在这里插入图片描述

6.字符值

在这里插入图片描述

7.LCD1602操作流程

在这里插入图片描述

14.2LCD1602功能函数代码

1.显示一个字符

(1)工程目录

在这里插入图片描述

(2)main.c函数

#include <REGX52.H>
#include "LCD1602.h"
void main()
{LCD_Init();LCD_ShowChar(2,3,'A');while(1){}
}

(3)LCD1602.c函数

#include <REGX52.H>sbit LCD_RS=P2^6;
sbit LCD_RW=P2^5;
sbit LCD_E=P2^7;
#define LCD_DataPort P0void LCD_Delay()		//@11.0592MHz  1ms
{unsigned char data i, j;i = 2;j = 199;do{while (--j);} while (--i);
}void LCD_WriteCommand(unsigned char Command)
{LCD_RS=0;LCD_RW=0;LCD_DataPort=Command;LCD_E=1;LCD_Delay();LCD_E=0;LCD_Delay();
}void LCD_WriteData(unsigned char Data)
{LCD_RS=1;LCD_RW=0;LCD_DataPort=Data;LCD_E=1;LCD_Delay();LCD_E=0;LCD_Delay();
}
void LCD_Init(void)
{LCD_WriteCommand(0x38);LCD_WriteCommand(0x0C);LCD_WriteCommand(0x06);LCD_WriteCommand(0x01);
}void LCD_ShowChar(unsigned char Line,unsigned char Column,unsigned char Char)
{if(Line==1){LCD_WriteCommand(0x80|(Column-1));}else{LCD_WriteCommand(0x80|(Column-1)+0x40);}LCD_WriteData(Char);
}

补充知识点:字符和字符串
字符:根据一定规则建立的数字到字符的映射(ASCII码表)
例如:0x21=‘!’.0x41=‘A’.0x00=\0’
定义方法:char x=‘A’:(等效干char x=0x41:)

字符数组:存储字符变量的一个数组
定义方法:char y[]=f’A’,‘B’,‘C’;(等效于char y[]={0x41,0×42,0×43;)

字符串:在字符数组后加一个字符串结束标志,本质上是字符数组定义方法:char z[]="ABC”;(等效于char z[]=f’A’,‘B’,’C’,\O;)

2.显示一组字符串

(1)代码

void LCD_ShowString(unsigned char Line,unsigned char Column,unsigned char String[])
{unsigned char i;LCD_SetCursor(Line,Column);for(i=0;String[i]!='\0';i++){LCD_WriteData(String[i]);}
}

2.显示数字

(1)无符号代码

void LCD_ShowNum(unsigned char Line,unsigned char Column,unsigned int Number,unsigned char Length)
{unsigned char i;LCD_SetCursor(Line,Column);for(i=Length;i>0;i--){LCD_WriteData('0'+Number/LCD_Pow(10,i-1)%10);}
}

(2)有符号代码

void LCD_ShowSignedNum(unsigned char Line,unsigned char Column,int Number,unsigned char Length)
{unsigned char i;unsigned int Number1;LCD_SetCursor(Line,Column);if(Number>=0){LCD_WriteData('+');Number1=Number;}else{LCD_WriteData('-');Number1=-Number;}for(i=Length;i>0;i--){LCD_WriteData('0'+Number1/LCD_Pow(10,i-1)%10);}
}

2.显示进制

(1)十六进制

void LCD_ShowHexNum(unsigned char Line,unsigned char Column,unsigned int Number,unsigned char Length)
{unsigned char i;unsigned char SingleNumber;LCD_SetCursor(Line,Column);for(i=Length;i>0;i--){SingleNumber=Number/LCD_Pow(16,i-1)%16;if(SingleNumber<10){LCD_WriteData('0'+SingleNumber);}else{LCD_WriteData('A'+SingleNumber-10);}}
}

(1)二进制

void LCD_ShowBinNum(unsigned char Line,unsigned char Column,unsigned int Number,unsigned char Length)
{unsigned char i;LCD_SetCursor(Line,Column);for(i=Length;i>0;i--){LCD_WriteData('0'+Number/LCD_Pow(2,i-1)%2);}
}

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

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

相关文章

oj E : 投资项目的方案

Description 有n种基础的投资项目&#xff0c;每一种的单位收益率为profitn&#xff0c;存在m种投资组合&#xff0c;限制每一种的投资总额不能超过invest_summ 每种投资组合中项目所需的单位投入是不同的&#xff0c;为costmn 求&#xff1a;使得收益率之和最高的每种项目投…

基于机器学习的制冷系统过充电和欠充电故障诊断(采用红外热图像数据,MATLAB)

到目前为止&#xff0c;制冷系统故障诊断方法已经产生很多种&#xff0c;概括起来主要有三大类&#xff1a;基于分析的方法&#xff0c;基于知识的方法和基于数据驱动的方法。基于分析的方法主要获得制冷系统的数学模型&#xff0c;通过残差来检测和诊断故障。如果存在残差且很…

[JS]BOM操作

介绍 BOM(Browser Object Model)是浏览器对象模型 window对象是一个全局对象, 也是JS中的顶级对象通过var定义在全局作用域中的变量和函数都会变成window对象的属性和方法window对象下的属性和方法调用时一般省略window 间歇函数 定时器 定时器是间歇函数的一种, 可以每个每…

酒店客房管理系统(Java+MySQL)

技术栈 Java: 作为主要编程语言。Swing GUI: 用于开发图形用户界面。MySQL: 作为数据库管理系统。JDBC: 用于连接和操作MySQL数据库。 功能要点 管理登录认证 系统提供管理员登录认证功能。通过用户名和密码验证身份&#xff0c;确保只有授权的用户可以访问和管理酒店客房信…

【three.js案例二】时空隧道

import * as THREE from ./build/three.module.js // 引入轨道控制器扩展库OrbitControls.js import { OrbitControls } from three/addons/controls/OrbitControls.js; // 引入dat.gui.js的一个类GUI import { GUI } from three/addons/libs/lil-gui.module.min.js;// 场景 co…

刷题——合并二叉树

合并二叉树_牛客题霸_牛客网 方法一&#xff1a; TreeNode* mergeTrees(TreeNode* t1, TreeNode* t2) {// write code hereif(t1 NULL) return t2;if(t2 NULL) return t1;TreeNode* head new TreeNode(t1->val t2->val);head->left mergeTrees(t1->left, t2-…

Supplemental Logging LOG DATA (ALL) COLUMNS

加的columns越多&#xff0c;说明一个普通的update中where 条件校验的列越多 update "SCOTT"."EMP" set "ENAME" ALLKEY where "EMPNO" 7566 and "ENAME" JONES and "JOB" MANAGER and "MGR" 783…

Android Service两种启动方式的区别

在Android中&#xff0c;启动Service的方式主要有两种&#xff0c;分别是通过startService()和bindService()。以下是这两种方式的详细解释&#xff1a; 1、通过startService()启动Service&#xff1a; 这是最常用的启动Service的方式。开发者可以通过Intent来指定要启动的Se…

名企面试必问30题(十)——你有自己的方法论吗?

1.思路 第一&#xff0c;方法论指的是做某些事情或业务的套路&#xff0c;但它没有绝对的正确性&#xff0c;每个人都可以拥有专属的方法论。 第二&#xff0c;方法论必定源自于自身实战经验的总结。 2.参考解答 “在软件测试工作中&#xff0c;我逐渐形成了自己的一套方法论。…

python简单爬虫firefox selenium

# codingutf-8# 1.先设置编码&#xff0c;utf-8可支持中英文&#xff0c;如上&#xff0c;一般放在第一行# 2.注释&#xff1a;包括记录创建时间&#xff0c;创建人&#xff0c;项目名称。Created on 2019-11-25 author: Project: python selenium-打开和关闭浏览器 # 3.导入模…

学习记录:`for` 语句与`while`语句的区别

for 语句与while语句的区别&#xff1a; for 和 while 语句都是循环控制结构&#xff0c;用于重复执行一段代码直到满足特定条件。尽管它们的基本目的是相似的&#xff0c;但它们的语法和一些使用场景有所不同。 for 语句&#xff1a; 用途&#xff1a;通常用于已知循环次数…

离线安装docker社区版

以下是离线安装 Docker 社区版的一般步骤&#xff1a; 准备工作&#xff1a; 在有网络的环境下&#xff0c;从 Docker 官网下载适合你系统的 Docker 社区版安装包以及相关依赖包。 传输安装包到离线机器&#xff1a; 使用移动存储设备或其他合适的方式将下载好的安装包及依赖转…

【剑指Offer系列】53-0到n中缺失的数字(index)

给定一个包含 [0, n] 中 n 个数的数组 nums &#xff0c;找出 [0, n] 这个范围内没有出现在数组中的那个数。 示例 1&#xff1a; 输入&#xff1a;nums [3,0,1] 输出&#xff1a;2 解释&#xff1a;n 3&#xff0c;因为有 3 个数字&#xff0c;所以所有的数字都在范围 [0,3]…

应用决策树批量化自动生成【效果好】【非过拟合】的策略集

决策树在很多公司都实际运用于风险控制,之前阐述了决策树-ID3算法和C4.5算法、CART决策树原理(分类树与回归树)、Python中应用决策树算法预测客户等级和Python中调用sklearn决策树。 本文介绍应用决策树批量自动生成效果好,非过拟合的策略集。 文章目录 一、什么是决策树二…

数字化那点事:一文读懂数字乡村

一、数字乡村的定义 数字乡村是指利用信息技术和数字化手段&#xff0c;推动乡村社会经济发展和治理模式变革&#xff0c;提升乡村治理能力和公共服务水平&#xff0c;实现乡村全面振兴的一种新型发展模式。它包括农业生产的数字化、乡村治理的智能化、乡村生活的现代化等方面…

Elasticsearch的节点、集群和分片

Elasticsearch的节点、集群和分片 节点 什么是节点 ES是使用Java语言开发的。ES可以创建多个节点&#xff0c;一个节点就是一个ES实例&#xff0c;也就是一个Java线程。ES在生产环境中每个节点都是分布在不同的服务器上的&#xff0c;目的是达到集群的高可用多个节点构成一个…

Nginx系列-1 Nginx安装与使用

背景 最近对项目进行了Https改造&#xff0c;改造过程涉及Nginx技术&#xff0c;因此进行简单总结。 从本文开始将开启一个新的专题Nginx系列&#xff0c;用于收集Nginx相关的文章&#xff0c;内容将包括&#xff1a; Nginx系列—1 Nginx安装与使用Nginx系列—2 Nginx配置Ngi…

记一次小程序渗透

这次的小程序渗透刚好每一个漏洞都相当经典所以记录一下。 目录 前言 漏洞详情 未授权访问漏洞/ 敏感信息泄露&#xff08;高危&#xff09; 水平越权&#xff08;高危&#xff09; 会话重用&#xff08;高危&#xff09; 硬编码加密密钥泄露&#xff08;中危&#xff0…

熟练掌握爬虫技术

一、Crawler、Requests反爬破解 1. HTTP协议与WEB开发 1. 什么是请求头请求体&#xff0c;响应头响应体 2. URL地址包括什么 3. get请求和post请求到底是什么 4. Content-Type是什么1.1 简介 HTTP协议是Hyper Text Transfer Protocol&#xff08;超文本传输协议&#xff09;…

整合 Mybatis Plus

什么是 MyBatis Plus&#xff1f; MyBatis Plus &#xff08;简称 MP&#xff09; 是一款持久层框架&#xff0c;说白话就是一款操作数据库的框架。它是一个 MyBatis 的增强工具&#xff0c;就像 iPhone手机一般都有个 plus 版本一样&#xff0c;它在 MyBatis 的基础上只做增强…