LCD1602液晶显示屏

2023-11-14

介绍:LCD1602液晶显示屏是一种字符型液晶显示模块,可以显示ASCll码的标准字符和其他一些内置的特殊字符,还可以内置8个自定义字符。

显示容量:16✖2个字符,每个字符为5*7点阵或5*10点阵

一、引脚介绍:

VO:对比度调节电压

RS:数据 / 指令选择,1为数组,0为指令

RW:读 / 写选择,1为读,0为写

E:数据使能,下降沿执行命令

D0~D7:数据的输入 / 输出

A:背光灯电源正极

K:背光灯电源负极

 二、存储器结构:D2RAM(数据显示区)和G2RAM、G2ROM(内置字模库)

                                                      D2RAM(数据显示区)

        

                                                      G2RAM、G2ROM(内置字模库) 

 三、LCD1602显示指令集

四、时序结构:

                                                                写指令/数据

 

 

                                                               读指令/数据

五、模块函数化集成使用:

 代码:

void LCD_WriteCommand(unsigned char Command) //写指令
{
	LCD_RS=0;          
	LCD_RW=0;          
   // 指令 写

	LCD_DataPort=Command;  //并口:可以直接发送8位

	LCD_E=1;
	LCD_Delay1ms();
	LCD_E=0;
	LCD_Delay1ms();
}

代码:

void LCD_WriteData(unsigned char Data) //写数据
{
	LCD_RS=1;
	LCD_RW=0;
   //数据 写

	LCD_DataPort=Data;  //并口:直接发送8位

	LCD_E=1;
	LCD_Delay1ms();
	LCD_E=0;
	LCD_Delay1ms();
}

代码:

/**
   *   @brief        LCD1602初始化
   *   @param             无
   *   @retval            无
**/

void LCD_Init()
{
	LCD_WriteCommand(0x01);   //清屏
	LCD_WriteCommand(0x0C);   //显示开,光标关,闪烁开
	LCD_WriteCommand(0x06);   //数据读,写操作后,AC自动+1,画面不动
	LCD_WriteCommand(0x38);   //八位数据接口,两行显示,5✖7点阵
}

代码:

/**
   *   @brief         确定显示的首位置
   *   @param          Line,Column
   *   @retval            无
**/


void LCD_Cursor(unsigned char Line,Column)  //位置函数
{
	if(Line==1)   //根据数据显示区的地址可以得出 行和列 的关系
	{
		LCD_WriteCommand(0x80|(Column-1));
		
	}else
	{
		LCD_WriteCommand(0x80|(Column-1)+0x40);
	}
}

代码:

/**
   *   @brief           显示一个字符
   *   @param          Line,Column,Char
   *   @retval              无
**/
void LCD_ShowChar(unsigned char Line,Column,char Char)
{
	
	LCD_Cursor(Line,Column);  //确定位置
	LCD_WriteData(Char);      //发送字符
}

代码:

/**
   *   @brief       显示一个字符串
   *   @param       Line,Column,*String
   *   @retval            无
**/

void LCD_ShowString(unsigned char Line,Column,char *String)
{
	char Strlen=strlen(String),i; //确定字符串长度
	LCD_Cursor(Line,Column);      //确定首位置
	for(i=0;i<Strlen;i++)
	{
		LCD_WriteData(String[i]);
	}
	
}

代码:

/**
   *   @brief       显示一个数字
   *   @param     Line,Column,Num,lenth
   *   @retval           无
**/

void LCD_ShwoNum(unsigned char Line,Column,unsigned int Num,lenth)
{
	           char i;
		LCD_Cursor(Line,Column);
		for(i=lenth;i>0;i--)
	{
		LCD_WriteData(Num/(int)pow(10,i-1)%10+'0'); 
	}
            /*

                345/100%10   ->      3
                345/10%10    ->      4
                345/1%10     ->      5
                     
                                             */

}

代码:

/**
   *   @brief    显示一个有符号的数字
   *   @param      Line,Column,Num,lenth       
   *   @retval        无
**/

void LCD_ShowSignedNum(unsigned char Line,Column,int Num,unsigned int lenth)
{
		char i;
		if(Num>=0)
		{
			LCD_ShowChar(Line,Column,'+');
		}else
		{
			LCD_ShowChar(Line,Column,'-');
			Num=-Num;
		}
		
		for(i=lenth;i>0;i--)
	{
		LCD_WriteData(Num/(int)pow(10,i-1)%10+'0');
	}

         /*

                345/100%10   ->      3
                345/10%10    ->      4
                345/1%10     ->      5
                     
                                             */

}

代码:

/**
   *   @brief    显示一个十六进制的数
   *   @param     Line,Column,Num,lenth 
   *   @retval         无
**/

void LCD_ShowHexnum(unsigned char Line,Column,unsigned int Num,lenth)
{
	    unsigned char i;
		unsigned char SingleNum;
	  LCD_Cursor(Line,Column);
		for(i=lenth;i>0;i--)
	{
		
		SingleNum=((Num/(int)pow(16,i-1)%16));

         /*

                345/16^2%16   ->     1
                345/16%16    ->      5
                345/1%16     ->      9
                     
                                             */   

		if(SingleNum<10)   //根据ASCll码进行补码
		{
			LCD_WriteData('0'+SingleNum);
		}else
		{
			LCD_WriteData('A'+SingleNum-10);
		}
               
		
	}
}

代码:

/**
   *   @brief           显示一个二进制数字
   *   @param         Line,Column,Num,lenth  
   *   @retval                 无
**/

void LCD_BinNum(unsigned char Line,Column,unsigned int Num,lenth)
{
		unsigned char i;
	  LCD_Cursor(Line,Column);
		for(i=lenth;i>0;i--)
	{
		
		LCD_WriteData((Num/(int)pow(2,i-1)%2)+'0');	
     /*

                345/2^2%2   ->      101
                345/2%2     ->      011
                345/1%2     ->      001
                     
                                             */ 

	}
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LCD1602液晶显示屏 的相关文章

随机推荐

  • 前端系列之jQuery(jQuery插件)

    jQuery的插件机制 jQuery主要有两种使用方式 1 在jQuery集合对象上调用方法 2 直接调用jQuery方法 扩展jQuery对象上的方法 jQuery fn extend 扩展jQuery工具方法 jQuery extend
  • docker 安装

    docker ce社区版安装 1 首先卸载以前的docker相关内容 yum remove docker docker client docker client latest docker common docker latest dock
  • 102个java计算机本科毕业设计项目大全(附源码)

    今天给计算机专业大四的同学分享102个毕业设计项目 希望对正在为毕业设计发愁的小伙伴有帮助 一 成品列表 以下所有springboot框架项目的源码博主已经打包好上传到百du云了 在文末处 大家自行获取即可 1 Springboot高校专业
  • Vue项目打包成移动端APP

    Vue项目打包成移动端APP 需要准备的工具 Hbuilder 目录 Vue项目打包成移动端APP 首先打包vue到dist目录 然后再Hbuilder中打开dist目录 然后将dist包含的 web项目 转换为 移动 APP项目 前几步配
  • python解最小二乘(least square)

    给定 A R d n A in R d times n
  • 常用的前端4种请求方式

    一 GET请求 前端页面 第一种情况下 第二种情况下 后端代码 对应第一种传输对象 接参方式 若我们强行给对象添加 RequestBody注解 会发生如下错误 第二种情形下 我们取消用 PathVariable来接收前端发来的ID 情况如下
  • Vue学习

    Vue环境的搭建以及Vue项目的创建与启动 时光独白 AWY的博客 CSDN博客 vue 环境启动
  • Git命令上传项目到远程仓库

    1 为当前目录添加Git本地仓库 git init 实例化仓库 为当前目录添加Git本地仓库 添加成功会看到 git的隐藏目录 2 添加到暂存区 git add 文件名或目录名或 其中 表示当前目录下的全部文件 将指定文件 目录 当前目录全
  • 使用power shell连接远程linux服务器

    打开powershell 输入ssh 用户名 ip地址 比如 ssh root 111 111 111 111 输入yes 提示要输入密码 此时输入服务器密码即可
  • adb 调试命令

    ADB Android Debug Bridge 这里性能调试如下 性能测试需要进行如下设置 如果要让user模式能够进行root操作 需要更改 system core adb adb c 将无用的log信息去掉 define LOG NI
  • 有符号数与无符号数比较-详解

    正如我们所知道的 编程语句都有很多的基本数据类型 如char inf float等等 而在C和C 中还有一个特殊的类型就是无符号数 它由unsigned修饰 如unsigned int等 大家有没想过 就是因为这些不同的类型 而使大家编写的
  • JOYOI1432 楼兰图腾 - 树状数组【求二元组个数】

    JOYOI1432 楼兰图腾 传送门 思路 题目等价于要求满足 x 1
  • matlab 修改 设置 三维箭头大小 尺寸

    matlab 修改 设置 三维箭头大小 尺寸 冰三点水 转帖请注明原创 http blog csdn net u013608300 article details 79224002 微信公众号 工程师看海 matlab中绘制三维箭头的函数是
  • 三极管放大倍数

    恢复内容开始 三极管的交流放大倍数和直流放大倍数是两个不同的概念 但其值近似相等 三极管的直流放大倍数是hFE hFE 直流IC IB 是指三极管的交流电流放大倍数 输出交流电流 输入交流电流 要比 hFE小一点点 因为只是一点点 通常把这
  • 【Spring Boot 初识丨三】starter

    上一篇讲了如何构建MAVEN项目 本篇来讲一讲 starter 依赖项 Spring Boot 初识 Spring Boot 初识丨一 入门实战 Spring Boot 初识丨二 maven Spring Boot 初识丨三 starter
  • C——指针与数组名的区别

    昨天晚上做了一套企业面试题 第一题便是 数组名与指针的区别 做了才知道自己知之甚少 学长说像这样的题纸上那点地方是不够用的 而我们能写出来的仅仅是两三行而已 所以特地在网上搜了一下 指针和数组名的共同特点是都是用来指代一个地址的 不同的是
  • 致可爱的仙女程序“媛“们

    谈起程序员 难免大家都会有一些刻板印象 都会觉得在屏幕前猛敲代码的是我们这些五大三粗的大汉 头发那是秃得叫一个地中海 但是我们有的也头发茂密 很帅的好吗 更别说还有很多敲键盘的可是小仙女 说到这里 有些很难让人不生气的是有部分人 居然歧视那
  • HttpSession对象的创建过程

    1 概念 Session代表服务器与浏览器的一次会话过程 这个过程是连续的 也可以时断时续的 在Servlet中 session指的是HttpSession类的对象 这个概念到此结束了 也许会很模糊 但只有看完本文 才能真正有个深刻理解 2
  • idea打war的问题

    大家好 我是雄雄 欢迎关注微信公众号 雄雄的小课堂 前言 今天 记录个到现在为止还没搞清的问题 这个问题浪费了我几个小时的时间 基本上昨天晚上啥也没干 都在弄这个了 主要是还没弄出来 在各个技术群里面也都问了 有的说是项目的jar问题 有的
  • LCD1602液晶显示屏

    介绍 LCD1602液晶显示屏是一种字符型液晶显示模块 可以显示ASCll码的标准字符和其他一些内置的特殊字符 还可以内置8个自定义字符 显示容量 16 2个字符 每个字符为5 7点阵或5 10点阵 一 引脚介绍 VO 对比度调节电压 RS