51单片机通过DHT11温度传感器读取温度(2)

51单片机通过DHT11温度传感器读取温度(2),第1张

一.LCD1602的使用

1.概念:LCD1602(Liquid Crystal Display)是一种工业字符型液晶,能够同时显示 16×02 即 32 字符(16列两行)

2.引脚定义

 

 

具体说明

(1)VSS:模块供电电源地

(2)VDD:模块供电电源的正极

(3)RS:数据/命令选择,当处于高电平时选择数据寄存器,当处于低电平时选择指令寄存器。


RS 为低电平 R/W 为高电平时可以读忙信号,当RS 为高电平 R/W 为低电平时可以写入数据。


(4)R/W:读写选择,当处于高电平时进行读 *** 作,当处于低电平时进行写 *** 作

(4)E:使能信号,当电平由高电平变成低电平时,开始执行指令

(5)D:数据,D0-D7是数据位

 3.显示方法

由图可以知道,如果要第二行第一列显示,则只需要写入40H,但是这样是不行的,因为写入显示地址时要求最高位 D7 恒定为高电平 1,所以需要加上80H,则最后的结果为40H+80H=C0H

4.显示内容与对应的位数

 

5.时序图

(1)读时序

 

(2)写时序

(3)时序时间

 

二.LCD1602的时序分析

1.写指令

由条件可以知道RS = 0;由时序图可以看到R/W = 0处于低电平,同时E = 0,并延时TR的时间长度,过后进行数据建立连接,然后将E端电平拉高,同时延迟Tpw的时间,之后E端电平被拉低,并延迟THD1的时间

2.写数据

由条件可以知道RS = 1;由时序图可以看到R/W = 0处于低电平,同时E = 0,并延时TR的时间长度,过后进行数据建立连接,然后将E端电平拉高,同时延迟Tpw的时间,之后E端电平被拉低,并延迟THD1的时间

三.LCD1602程序代码实现

编程实现要求,要求实现写数据,写指令与读忙碌

#include 
#include "intrins.h"
sbit RS = P1^0;
sbit RW = P1^1;
sbit E = P1^2;
#define data_buffer    P0
/*
用于读取LCD1602的忙碌状态
*/
void check_lcd_busy()
{
	char tep = 0x80;
	data_buffer = 0x80;
	while(tep & 0x80)
	{
	RS = 0;
	RW = 1;
	E = 0;
	_nop_();
	E = 1;
	_nop_();
	tep = data_buffer;
	}
}
void lcd_write_cmd(char cmd)
{
	check_lcd_busy();
	RS = 0;
	RW = 0;
	E = 0;
	data_buffer = cmd;
	_nop_();
	E = 1;
	_nop_();
	E = 0;
	_nop_();
}
void lcd_write_data(char datashow)
{
	check_lcd_busy();
	RS = 1;
	RW = 0;
	E = 0;
	data_buffer = datashow;
	_nop_();
	E = 1;
	_nop_();
	E = 0;
	_nop_();
}

 

 

 

 

 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/564227.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-03
下一篇 2022-04-03

发表评论

登录后才能评论

评论列表(0条)

保存