3. 51——LCD1602显示 字符、字符串、数字

这篇具有很好参考价值的文章主要介绍了3. 51——LCD1602显示 字符、字符串、数字。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

LCD1602简介

3. 51——LCD1602显示 字符、字符串、数字

LCD1602相关引脚

3. 51——LCD1602显示 字符、字符串、数字

LCD1602写命令、写数据相关操作图

3. 51——LCD1602显示 字符、字符串、数字

3. 51——LCD1602显示 字符、字符串、数字

写指令 代码

void LCD_WriteCommand(unsigned char Command)
{
	LCD_RS = 0; //指令
	LCD_RW = 0; //写
	LCD_DataPort = Command; //数据存放
	LCD_E  = 1; //使能
	Delay1ms(); //最低要求延迟150纳秒 我们直接给1ms
	LCD_E  = 0; //失能
	Delay1ms();
}

写数据 代码

void LCD_WriteData(unsigned char Data)
{
	LCD_RS = 1; //数据
	LCD_RW = 0; //写
	LCD_DataPort = Data; //数据存放
	LCD_E  = 1; //使能
	Delay1ms(); //最低要求延迟150纳秒 我们直接给1ms
	LCD_E  = 0; //失能
	Delay1ms();
}

LCD1602显示程序步骤及如何初始化

  1. 显示开关控制指令(功能:控制显示器开/关 光标显示/关闭 是否闪烁)
  2. 进入模式设置指令(功能:每写入一位数据后光标的移动 左/右 显示屏不移动/整体右移 )
  3. 功能设定指令(功能:设定数据总线的位数 显示的行数 字型 )
  4. 清屏指令(功能:清屏显示空白 光标归位 地址计数器(AC)的值为0)
  5. 显示位置设置(功能:指定在1602上哪个位置上显示数据)

显示开关控制指令

3. 51——LCD1602显示 字符、字符串、数字

LCD_WriteCommand(0x0c); // 0000 1100 显示关,游标不显示,不闪烁

进入模式设置指令

3. 51——LCD1602显示 字符、字符串、数字

LCD_WriteCommand(0x06) // 0000 0110 写入数据后光标自动右移 整屏不移动

功能设定指令

3. 51——LCD1602显示 字符、字符串、数字

LCD_WriteCommand(0x38); //0011 1000 数据总线8位 16X2显示 5*7点阵

清屏指令

3. 51——LCD1602显示 字符、字符串、数字

LCD_WriteCommand(0x01); //0000 0001 清屏 

设置从(x,y)开始显示

3. 51——LCD1602显示 字符、字符串、数字

如果想在1602屏幕上第一行第一个开始显示 就是0x80
如果想在1602屏幕上第二行第一个开始显示 就是0xc0

void LCD_SetCursor(unsigned char Line,unsigned char Columu)
{
	if(Line == 1)
	{
		LCD_WriteCommand( 0x80 | (Columu-1) );
	}
	else
	{
		LCD_WriteCommand( 0x80 | ( Columu-1 )+0x40 );
	}
}

显示字符 或 字符串

显示字符

void LCD_ShowChar(unsigned char Line,unsigned char Columu,unsigned char Char)
{
	LCD_SetCursor(Line,Columu);
	
	LCD_WriteData(Char);
}

显示字符串

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

显示数字

获取次方数

3. 51——LCD1602显示 字符、字符串、数字

int LCD_Pow(unsigned char x,unsigned char y)
{
	unsigned char i = 0;
	int result = 1;
	
	for(i=0;i<y;i++)
	{
		result *= x;
	}
	
	return result;
}

显示数字

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

接线图

3. 51——LCD1602显示 字符、字符串、数字

代码整合

LCD1602.c

#include "regx52.h"
#include "LCD1602.h"
#include "intrins.h"

sbit LCD_RS = P2^5;
sbit LCD_RW = P2^6;
sbit LCD_E  = P2^7;
sbit LED_V0 = P1^0;

#define LCD_DataPort P0

void Delay1ms()		//@11.0592MHz 1ms
{
	unsigned char i, j;

	_nop_();
	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;
		Delay1ms();
		LCD_E  = 0;
		Delay1ms();
		
}

void LCD_WriteData(unsigned char Data)
{
		LCD_RS = 1;
		LCD_RW = 0;
		LCD_DataPort = Data;
		LCD_E  = 1;
		Delay1ms();
		LCD_E  = 0;
		Delay1ms();
		
}

void LCD_Init()
{
		LCD_WriteCommand(0x38);
		LCD_WriteCommand(0x0c);
		LCD_WriteCommand(0x06);
		LCD_WriteCommand(0x01);
		LED_V0 = 0;
}

void LCD_SetCursor(unsigned char Line,unsigned char Columu)
{
	if(Line == 1)
	{
		LCD_WriteCommand( 0x80 | (Columu-1) );
	}
	else
	{
		LCD_WriteCommand( 0x80 | ( Columu-1 )+0x40 );
	}
}

void LCD_ShowChar(unsigned char Line , unsigned char Columu , unsigned char Char)
{
		LCD_SetCursor(Line,Columu);
	
		LCD_WriteData(Char);
}

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

int LCD_Pow(unsigned char x,unsigned char y)
{
		int result = 1;
		unsigned char i = 0;
		
		for(i=0;i<y;i++)
		{
				result *= x;
		}
		
		return result;
}

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

LCD1602.h

#ifndef _LCD1602_h_
#define _LCD1602_h_

void Delay1ms(void);
void LCD_WriteCommand(unsigned char Command);
void LCD_WriteData(unsigned char Data);
void LCD_Init(void);
void LCD_SetCursor(unsigned char Line,unsigned char Columu);
void LCD_ShowChar(unsigned char Line,unsigned char Columu,unsigned char Char);
void LCD_ShowString(unsigned char Line,unsigned char Columu,unsigned char* String);
void LCD_ShowNum(unsigned char Line,unsigned char Columu,unsigned int Num,unsigned int Length);

#endif

main.c

#include "regx52.h"
#include "intrins.h"
#include "Timer0.h"
#include "uart.h"
#include "LCD1602.h"

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

	_nop_();
	i = 4;
	j = 129;
	k = 119;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}

void main()
{
		LCD_Init();
		LCD_ShowChar(1,7,'Y');
		LCD_ShowString(2,2,"Hello!Yinyuer");
		LCD_ShowNum(1,8,689,3);
		
		while(1)
		{
				
		}
}

void UART_Routine() interrupt 4
{
		if( RI==1 )
		{
				P1=SBUF;
				UART_SendByte(SBUF);
				
				RI = 0;
		}
}

效果展示

3. 51——LCD1602显示 字符、字符串、数字文章来源地址https://www.toymoban.com/news/detail-404774.html

到了这里,关于3. 51——LCD1602显示 字符、字符串、数字的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 51单片机LCD1602液晶屏显示方法

    以显示hello,world!    2022.10.17  为例。 首先把LCD1602的模块化程序添加到项目目录中,模块化方法在51单片机之程序模块化_学习笔记吧的博客-CSDN博客这里可以学习。 实验程序: LCD1602.c文件代码: LCD1602.h文件代码: 把这两个代码,分别添加到LCD1602.c 和 LCD1602.h 文件,然后添加

    2023年04月08日
    浏览(55)
  • 基于51单片机驱动MPU6050模块(LCD1602显示)

    @TOC MPU-6050集成了3轴MEMS陀螺仪,3轴MEMS加速度计,以及一个可扩展的数字运动处理器DMP,可用IIC接口连接一个第三方的数字传感器。MPU-6050对陀螺仪和加速度计分别用了三个16位的ADC,将其测量的模拟量转化为可输出的数字量。为了精确跟踪快速和慢速的运动,传感器的测量范

    2024年02月11日
    浏览(42)
  • 【51单片机】LCD1602 液晶显示实验指导书

             来介绍一种非常简单且常用的显示装置——LCD1602 液晶显示器,使用它可以显示更多的字符数字。这将有助于我们清晰的观察程序的运行结果,更加方便我们的后续调试和开发。         我们的开发板上集成了一个 LCD1602 液晶显示器接口,将LCD1602 液晶对应插

    2024年02月01日
    浏览(63)
  • 初识LCD1602及编程实现字符显示

    LCD1602是一种工业字符型液晶,能够同时显示16x02即32字符(16列两行) 引脚说明 第 1 脚 : VSS 为电源地 第 2 脚 : VDD 接 5V 正电源 第 3 脚 : VL 为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个 10K 的电位

    2023年04月18日
    浏览(38)
  • 矩阵键盘控制LCD1602显示屏显示数字

     主函数部分,其中的LCD1602.h的头文件是在哔哩哔哩江科大自化协的博主的视频资料 总结:     首先是我学习时遇到的问题: 在我一开始运行的时候出现的问题就是,一开始在给主函数的keynumber赋值的时候,等号的左值是叫做Matrixkey的函数,当我按下1按键时显示屏显示01,

    2024年02月11日
    浏览(46)
  • 【附报告】51单片机计算器(LCD1602液晶显示)

      由于本文较早,这里推荐一下近期刚优化的:【优化】51单片机计算器(LCD1602液晶显示)_Gxtoeilee的博客-CSDN博客   1 设计目标 设计可选模式的计算器  2 主要功能 功能一:可选两种计算模式,模式一为四则运算,模式二为扩展内容; 功能二:除法的计算结果保留到小数点

    2024年02月11日
    浏览(57)
  • 【C语言】51单片机计算器(LCD1602液晶显示)

      由于本文较早,这里推荐一下近期刚优化的:【优化】51单片机计算器(LCD1602液晶显示)_Gxtoeilee的博客-CSDN博客   1 设计目标 设计可选模式的计算器  2 主要功能 功能一:可选两种计算模式,模式一为四则运算,模式二为扩展内容; 功能二:除法的计算结果保留到小数点

    2024年02月07日
    浏览(57)
  • 51单片机DS18B20测温LCD1602显示

    主函数 自定义头文件 LCD1602函数 DS18B20 共用函数

    2024年02月11日
    浏览(43)
  • 36、基于51单片机频率计 LCD 1602显示系统设计

    数字频率计是一种基本的测量仪器。它被广泛应用于航天、电子、测控等领域,还被应用在计算机及各种数学仪表中。一般采用的是十进制数字,显示被测信号频率。基本功能是测量正弦信号,方波信号以及其他各种单位时间内变坏的物理量。由于其使用十进制数显示,测量

    2024年02月03日
    浏览(50)
  • 基于51单片机的电子钟万年历LCD1602显示

    本设计是51单片机的电子钟万年历LCD1602显示(proteus仿真+程序+报告+器件清单) 仿真图proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 编号C0002 主要功能: 1、采用LCD1602液晶屏显示,DS1302记录日历和时间。 2、按键设置日期、时间、闹钟。 3、当实际的时间达到设定的闹钟时

    2024年02月11日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包