C51--LCD1602显示屏

news2024/11/20 20:36:11

LCD602显示:

1、概述

LCD602是一种工业字符型液晶,能够同时显示16x02,即32字符(16列,2行)

2、引脚:

  1. VSS:电源地
  2. VDD:电源正极——5V电源
  3. VO: 液晶显示偏压
    (接正电源时液晶显示器对比度最弱,接地时对比度最高,对比度过高产生“鬼影”,可使用10K的电位器调整对比度)
  4. RS: 数据/命令选择
    (寄存器选择:高电平——数据寄存器;低电平——指令寄存器)
  5. R/W: 读/写选择
    (高电平——读;低电平——写。)
    (RS与R/W同为低电平——写入指令或者显示地址;RS为低电平R/W为高电平——读忙信号;RS为高电平R/W为低电平——写入数据)
  6. E: 使能信号
    (由高电平跳变为低电平时,液晶模块执行指令)
  7. D0: 数据 (8为双向数据线)
  8. D1: 数据 (8为双向数据线)
  9. D2: 数据 (8为双向数据线)
  10. D3: 数据 (8为双向数据线)
  11. D4:数据 (8为双向数据线)
  12. D5:数据 (8为双向数据线)
  13. D6:数据 (8为双向数据线)
  14. D7:数据 (8为双向数据线)
  15. BLA:背光源正极
  16. BLK:背光源负极

3.与C51的连接:

电源:
VSS——GND
VDD——5V
对比度:
VO——GND
控制线:
RS——P1.0
RW——P1.1
E——P1.4
背光灯:
ELA——5V
ELK——GND
数据:
D0–D7——P0.0–P0.7

4.在哪里显示:

在这里插入图片描述

例如:第二行第一个字符的地址是 40H,那么是否直接写入 40H 就可以将光标定位在第二行第一个字符的位置呢?
这样不行,因为写入显示地址时要求最高位 D7 恒定为高电平 1 所以实际写入的数据应该是 :
01000000B(40H) +10000000B(80H)=11000000B(C0H)。

写入时序图:
在这里插入图片描述
RS = 1(高电平)写内容
RS = 0(低电平)写指令 / 地址

读取时序图:
在这里插入图片描述

根据读写操作时序图来写代码,控制命令的执行

显示一个字符 ” C “:

注意要添加LCD1602 8bit的初始化命令
(1)延时 15ms
(2)写指令 38H(不检测忙信号)
(3)延时 5ms
(4)以后每次写指令, 读/写数据操作均需要 检测忙信号
(5)写指令 38H:显示模式设置
(6)写指令 08H:显示关闭
(7)写指令 01H:显示清屏
(8)写指令 06H:显示光标移动设置
(9)写指令 0CH:显示开及光标设置

#include "reg52.h"
#include <intrins.h>

/*
VSS——GND
VDD——5V

VO——GND

RS——P1.0
RW——P1.1
E——P1.4

ELA——5V
ELK——GND

D0-D7——P0.0-P0.7
*/

#define databuffer  P0		//定义8位数据线,P0端口组

sbit RS = P1^0;
sbit RW = P1^1;
sbit E  = P1^4;

//检测忙信号, 读时序
void check_busy()
{
	char tmp = 0x80;		//忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。
	databuffer = 0x80;
	
	while(tmp & 0x80){		//高电平时一直读取.与上高位为1
		RS = 0;
		RW = 1;		//读时序
	
		E  = 0;			
		_nop_();				
		E  = 1;			
		_nop_();		
		_nop_();
		tmp = databuffer;
		E  = 0;			
		_nop_();
	}
	
}

/*
高电平——数据寄存器;低电平——指令寄存器

RS = 1(高电平)写内容
RS = 0(低电平)写指令 / 地址
*/
void Write_Cmd_Func(char cmd)		
{
	check_busy();
	RS = 0;
	RW = 0;
	
	E  = 0;			//低电平
	_nop_();		//上升沿时间
	databuffer = cmd;		//传输数据
	_nop_();
	E  = 1;			//切换为高电平
	_nop_();		
	_nop_();
	E  = 0;			//变为低电平
	_nop_();
}

void Write_Data_Func(char dataShow)
{
	check_busy();
	RS = 1;
	RW = 0;
	
	E  = 0;			
	_nop_();		
	databuffer = dataShow;	
	_nop_();
	E  = 1;			
	_nop_();		
	_nop_();
	E  = 0;			
	_nop_();
}

void Delay15ms()		//@11.0592MHz
{
	unsigned char i, j;

	i = 27;
	j = 226;
	do
	{
		while (--j);
	} while (--i);
}

void Delay5ms()		//@11.0592MHz
{
	unsigned char i, j;

	i = 9;
	j = 244;
	do
	{
		while (--j);
	} while (--i);
}



//初始化LCD
void LCD1602_INIT()
{
	Delay15ms(); 				//延时 15ms
	Write_Cmd_Func(0x38);		//写指令 38H(不检测忙信号)
	Delay5ms();					//延时 5ms
	check_busy();				//以后每次写指令,读/写数据操作均需要检测忙信号
	Write_Cmd_Func(0x38);		//写指令 38H:显示模式设置
	Write_Cmd_Func(0x08);		//写指令 08H:显示关闭
	Write_Cmd_Func(0x01);		//写指令 01H:显示清屏
	Write_Cmd_Func(0x06);		//写指令 06H:显示光标移动设置
	Write_Cmd_Func(0x0c);		//写指令 0CH:显示开及光标设置
}


void main()
{
	char position = 0x80 + 0x05;	//写入显示地址时要求最高位 D7 恒定为高电平 1
	char dataShow = 'C';
	
	LCD1602_INIT();					//初始化LCD
	Write_Cmd_Func(position);		//选择要显示的地址
	Write_Data_Func(dataShow);		//发送要显示的字符
}

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

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

相关文章

【深度学习笔记】06 softmax回归

06 softmax回归 softmax运算损失函数对数似然Fashion-MNIST数据集读取数据集读取小批量整合所有组件 softmax回归的从零开始实现初始化模型参数定义softmax操作定义模型定义损失函数分类精度训练预测 softmax回归的简洁实现 softmax运算 softmax函数能够将未规范化的预测变换为…

数字系列——数字经济(2)​

上次呢&#xff0c;已经为大家捋了什么是数字经济&#xff1f;、数字经济的特点有哪些&#xff1f;和数字经济的构成&#xff0c;对于数字经济有了基础性的了解&#xff0c;今天继续为大家捋一捋。 数字经济的发展 1.互联网的普及 互联网作为数字经济的坚实基础&#xff0c;其…

P27 C++this 关键字

目录 前言 01 this关键字的引入 02 this关键字 前言 本章的主题是 C 中的 this 关键字。 以前第一次学qt的时候就遇到了this关键字&#xff0c;那时候还不是很会C&#xff0c;所以有点懵&#xff0c;现在我们就来讲解以下C中的this关键字 C 中有一个关键字 this&#xff0…

致敬成长:借助昇腾AI,00后开发者如何破解睡眠呼吸辅助诊断难题

导读&#xff1a;两年&#xff0c;如何从AI小白到优秀开发者&#xff1f; 打呼噜正在成为人们身边隐形的“健康杀手”。据《2017年中国人睡眠质量及科普报告》显示&#xff0c;约5000万人在睡眠中发生过呼吸暂停。30~69岁成年人中&#xff0c;阻塞性睡眠呼吸暂停综合征&#xf…

Python接口自动化测试如何设计接口测试用例(详解)

简介 上篇我们已经介绍了什么是接口测试和接口测试的意义。在开始接口测试之前&#xff0c;我们来想一下&#xff0c;如何进行接口测试的准备工作。或者说&#xff0c;接口测试的流程是什么&#xff1f;有些人就很好奇&#xff0c;接口测试要流程干嘛&#xff1f;不就是拿着接口…

柯桥学英语,商务外贸英语,BEC中级写作冲刺干货

think of… as 把……认为 eager to… 渴望 look forward to Ving 期待/盼望…… accept…as 接受……为 be certain of 对……确信 in contact with 与……接触 in accordance with 与……相符/一致 remind…of 提醒……关于 be advantageous to 有利于…… assure…of使……放…

嵌入式八股 | 校招秋招 | 笔试面试 | 精选题目

欢迎关注微信公众号【赛博二哈】获取八股PDF 并加入嵌入式求职交流群。提供简历模板、学习路线、岗位整理等 欢迎加入知识星球【嵌入式求职星球】获取完整嵌入式八股。 提供简历修改、项目推荐、求职规划答疑。另有各城市、公司岗位、笔面难题、offer选择、薪资爆料等 嵌入式…

[ISCTF2023] Crypto/PWN/Reverse

最近新生赛还挺多&#xff0c;不过这个开始后注册页面就被删了&#xff0c;没注册上。拿别人的附件作了下。 Crypto 七七的欧拉 这题只给了n,e,c这种情况一般正常没法解&#xff0c;猜n不正常 import gmpy2 import libnum from crypto.Util.number import *flagbISCTF{****…

通过抖音商城小程序门店服务预约效果如何

抖音已然成为众多企业商家经营的重要平台之一&#xff0c;尤其本地生活服务商家更可通过抖音实现套餐销售、门店引流等&#xff0c;而借势平台高额流量&#xff0c;也确实有非常高的效果。 而在实际运营中&#xff0c;随着私域化程度加快&#xff0c;无论微信还是抖音&#xf…

英语不好,能够学习编程语言吗?

可以&#xff0c;编程英语是不涉及语法、时态、人称的&#xff0c;比如&#xff1a; System.out.print("你好");此处的&#xff0c;System表示"系统"&#xff0c;out表示"在…外面"&#xff0c;print表示"打印"&#xff0c;每一个单词…

App的测试,和传统软件测试有哪些区别?应该增加哪些方面的测试用例?

从上图可知&#xff0c;测试人员所测项目占比中&#xff0c;App测试占比是最高的。 这就意味着学习期间&#xff0c;我们要花最多的精力去学App的各类测试。也意味着我们找工作前&#xff0c;就得知道&#xff0c;App的测试点是什么&#xff0c;App功能我们得会测试&#xff0…

解决tomcat 启动 , 中文乱码问题

解决tomcat 启动 , 中文乱码问题. 第一步找到server.xml, 找到连接器, 添加 URIEncoding"UTF-8" 注意是英文的引号. 第二步, 找到 logging.properties , 在其中找到 第三步,启动服务, 观察现象,亲测有效.

【Java学习笔记】 74 - 本章作业

1.验证电子邮件格式是否合法 规定电子邮件规则为 1.只能有一个 2. 前面是用户名,可以是a-z A-Z 0-9 _ - 字符 3. 后面是域名&#xff0c;并且域名只能是英文字母&#xff0c;比如sohu.com或者tsinghua.org.cn 4.写出对应的正则表达式&#xff0c;验证输入的字符串是否为满…

PC端ssh连接到Android手机的Termux部署http服务器

1. 下载并安装Termux至Android手机 Releases termux/termux-app (github.com) https://github.com/termux/termux-app/releases 2. 手机端启动Termux&#xff0c;安装openssh #更新仓库 pkg up pkg install openssh #安装好后&#xff0c;启动sshd sshd问题1&#xff1a;如…

STM32g70开启定时器死机原因

在做低功耗产品时&#xff0c;检查发现由于之前开启了BOOTLOADER升级程序&#xff0c;修改了中断向量FALSH起始地址&#xff0c;只在KEIL TARGET IROM1中修改了&#xff0c; 而忘记在程序文件system_stm32f10x.c里修改中断向量表flash起始地址 system_stm32f10x.c里&#xff0…

去北京医院预约,需要医保卡号,但是社保卡不在身边,北京的医保卡号咋网上查询

目录 1 问题2 查询 1 问题 要去北京某一个医院预约挂号&#xff0c;预约的时候选择的医保&#xff0c;需要写医保卡号&#xff0c;但是自己的社保卡不在身边&#xff0c;怎么办 记住&#xff0c;医保卡号不是社保卡号&#xff0c;是不一样的 北京医保卡号是12位 2 查询 登陆这…

单片机中断系统的应用

中断系统是单片机中非常重要的组成部分&#xff0c;它是为了使单片机能够对外部或内部随机发生的事件实时处理而设置的。中断功能的存在&#xff0c;在很大程度上提高了单片机实时处理能力&#xff0c;它也是单片机最重要的功能之一&#xff0c;是我们学习单片机必须掌握的重要…

C++基础 -17-继承中 基类与派生构造和析构调用顺序

首先声明 定义了派生类会同时调用基类和派生的构造函数 定义了派生类会同时调用基类和派生的析构函数 那么顺序如何如下图 构造由上往下顺序执行 析构则完全相反 #include "iostream"using namespace std;class base {public:base(){cout << "base-bui…

从事涉密测绘业务的人员应当具有中华人民共和国国籍,签订保密责任书,接受保密教育。

1、从事涉密测绘业务并签署保密责任书的人员清单&#xff08;包括&#xff1a;姓名、身份证号码、工作岗位、责任书签署日期&#xff09; 2、近三年内&#xff08;或培训证书仍在有效期内&#xff09;接受过省级自然资源主管部门或者其它单位及部门组织的测绘地理信息安全保密政…

零代码编程:用ChatGPT批量设置Word文件格式

文件夹中有很多txt文本文件&#xff0c;要转换成word文件&#xff0c;且要批量设置一些文件格式&#xff0c;方便后续的打印。 文本文件如下&#xff1a; 在chatgpt中输入提示词&#xff1a; 你是一个Python编程专家&#xff0c;要完成一个处理word内容的任务&#xff0c;具体…