LCD1602液晶显示屏

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

主函数

#include "1602.h"

void main(void)
{

InitLcd1602();//初始化 
LcdShowStr(0,0,"www.weimeng.com");//显示屏幕上的,第1格,第一排,显示字符串
LcdShowStr(2,1,"www.weimeng.com");//显示屏幕上的,第3格,第二排,显示字符串
}

LCD1602.c

#include<reg52.h>

#define LCD1602_DB  P0      //data bus 数据总线

sbit LCD1602_RS = P2^6;	  
sbit LCD1602_RW = P2^5;
sbit LCD1602_EN = P2^7;	  


/******************************底层时序***********************/
//CPU是否繁忙检测函数,判断bit7是0,允许执行;1禁止
void Read_Busy()           
{
    unsigned char sta;      
    LCD1602_DB = 0xff;		//P0端口(D0-D7)的引脚全部给0xff
    LCD1602_RS = 0;
    LCD1602_RW = 1;
    do
    {
        LCD1602_EN = 1;	   //使能
        sta = LCD1602_DB;  
        LCD1602_EN = 0;    //禁能,用完就拉低,释放总线
    }while(sta & 0x80);	   //(D7)STA7=0时允许下一步读写操作
}						   //(D7)STA7=1时禁止下一步读写操作

//写命令
void Lcd1602_Write_Cmd(unsigned char cmd)     
{
    Read_Busy();		 //繁忙检测
    LCD1602_RS = 0;		 //RS=0,是传输命令
    LCD1602_RW = 0;		 //RW=0,是写操作
    LCD1602_DB = cmd;	 //把我们要写的数值放到D0-D7上面去
    LCD1602_EN = 1;		 //使能(开始)
    LCD1602_EN = 0;    	 //禁能(结束)
}

//写数据
void Lcd1602_Write_Data(unsigned char dat)   
{
      Read_Busy();		 //繁忙检测
      LCD1602_RS = 1;	 //RS=1,是传输数据
      LCD1602_RW = 0;	 //RW=0,是写操作
      LCD1602_DB = dat;	 //把我们要写的数值放到D0-D7上面去
      LCD1602_EN = 1;	 //使能(开始)
      LCD1602_EN = 0;	 //禁能(结束)
}
/****************************************************************/

/******************************高层时序***********************/

//坐标显示
// y=0是上面那一排,y=1是下面那一排
void LcdSetCursor(unsigned char x,unsigned char y) //本函数用来设置当前光标位置,其实就是设置当前屏幕上用来编辑显示的位置 
{												   //其实就是内部的数据地址指针设置,其实就是RAM显存的偏移量
    unsigned char addr;
    if(y == 0) //上面一排(00到0F的格子)
        addr = 0x00 + x;
    else	   //下面一排(40到4F的格子)
        addr = 0x40 + x;
    
    Lcd1602_Write_Cmd(0x80+addr);  //效果一样的建议使用(addr|0x80),因为计算机计算位或的时候比计算加减法快
	//数据指针设置(指哪个格子写那格子)
}

//函数功能:从坐标(x,y)开始显示字符串str
//注意:这个函数不能跨行显示,超过的就会跑到后面看不见的格子里面去
//不过我们是可以封装出一个能够折行显示的函数的
void LcdShowStr(unsigned char x,unsigned char y,unsigned char *str)     //显示字符串
{
    LcdSetCursor(x,y);      //当前字符的坐标(调用了坐标显示函数)
							//X用于指哪一列格子,Y用于指向行
    while(*str != '\0')
    {
        Lcd1602_Write_Data(*str++);//写入内容对应的ASCLL码用于显示
    }
}

//初始化LCD,让它能开始正常工作
void InitLcd1602()              //1602初始化
{
    Lcd1602_Write_Cmd(0x38);    //显示模式设置:16x2显示,5*7点阵,8位数据接口
   	Lcd1602_Write_Cmd(0x08);	//关闭显示:显示开/关及光标指令设置
	Lcd1602_Write_Cmd(0x01);    //清屏 
    Lcd1602_Write_Cmd(0x06);	//显示光标移动设置 
								//全部设置好以后在打开显示防止花屏(虽然一瞬间的花屏无伤大雅)
	Lcd1602_Write_Cmd(0x0c);	//打开显示:显示开/关及光标指令设置 
}

LCD1602.h

#ifndef __1602_H__
#define __1602_H__

//只需要声明高层时序即可,而低层时序是不需要声明的。
//因为我们在头文件中声明这个函数,目的是为了让别的文件去包含这个头文件
//从而可以调用这个头文件中声明的函数,所以我们只需要声明1602.c中将来会被外部.c文件调用的那些函数即可。
//而1602.c中自己使用的内部函数将来也不会被外部.c文件调用,因此就不用声明了


//只需要声明高层时序即可,而低层时序是不需要声明的。
void LcdSetCursor(unsigned char x,unsigned char y);//坐标显示
void LcdShowStr(unsigned char x,unsigned char y,unsigned char *str); //显示字符串(调用了坐标显示函数)
void InitLcd1602();//初始化LCD1602

#endif

LCD1602液晶显示屏LCD1602液晶显示屏

接线图:

LCD1602液晶显示屏

 

LCD1602液晶显示屏

1、1602屏幕=16x2=32个字符,总共有32个字符

 2、每个字符由35个像素组成

LCD1602液晶显示屏LCD1602液晶显示屏

每个像素由一小块液晶控制

---------------------------------------------------------------------------------------------------------------------------------

液晶的控制原理:

不施加电压——液晶完全透明:0(透明)

施加电压——---液晶变不透明:1(不透明)

注意:通上电后LED背光板是一直发光的

LCD1602液晶显示屏黄的是背光板,灰的是液晶

组成:

1、背光板、液晶

2、控制液晶的芯片:HD44780U

---------------------------------------------------------------------------------------------------------------------------------

控制原理:

LCD1602液晶显示屏

控制原理:CUP因为引脚不够所以一般不直接控制液晶,而是通过控制芯片HD44780U来控制液晶

HD44780U芯片的控制范围:总共有80个字节的显存(DRAM)

LCD1602液晶显示屏

HD44780U芯片:

横向:控制显示40个字符

竖向:控制2个字符

LCD1601显示屏:

但是LCD1601显示屏上只能显示的范围:

第一排:00字符——0F字符(16个字符)

第二排:40字符——4F字符(16个字符)

LCD1602液晶显示屏控制LCD1601显示屏:永远有48个字节用不到

---------------------------------------------------------------------------------------------------------------------------------

 LCD1602液晶显示屏

液晶只能显示:ASCLL码上的数字、字母、符号

显示字符到对应的液晶块的代码原理:

第一步:CPU——发送显存地址——————————>HD44780U芯片——>LCD1602

第二步:CPU——在发送显示字符的ASCLL码————>HD44780U芯片——>LCD1602

---------------------------------------------------------------------------------------------------------------------------------

HD44780U芯片引脚分布图以及原理:

LCD1602液晶显示屏COM引脚控制:横向像素

SEG引脚控制 :纵向像素LCD1602液晶显示屏

COM控制一行:给低电压

SEG控制一竖:给高电压显示 或者 给低电压不显示

弊端:

这样子一次只能显示一行像素的。

要显示全部的像素如何解决呢?

解:逐行扫描的控制方式;

这样子我们人眼不就看到一直在扫描了吗?

不会的,这是通过人眼的视觉暂留原理,因为逐行扫描的频率很快,所以人眼看到的是静止的画面

---------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------------

LCD1602液晶显示屏LCD1602液晶显示屏

 HD44780U芯片:

一共有40个SEG引脚,但是一个字符要用5个SEG引脚,这样子只能控制纵向的8个区域

问:另外纵向的8个区域的16个字符怎么控制?

 答:HD44780U芯片➕ HD44100H芯片是协助主控完成另外一半的显示任务的

LCD1602液晶显示屏

 HD44100H芯片:

LCD1602液晶显示屏HD44780U芯片➕ HD44100H芯片=80个SEG引脚

                                     刚好可以控制LCD1602的所有像素也就是32个字符的显示

LCD1602液晶显示屏

---------------------------------------------------------------------------------------------------------------------------------

-------------------------------------------------------应用扩展-------------------------------------------------------------

 LCD1602液晶显示屏

在原来的基础上在加三块,在换一款能显示80字符的液晶显示屏,就能控制80个字符的显示了。

但这在多控制都不可能了,因为HD44780U芯片此时的显存已经满了文章来源地址https://www.toymoban.com/news/detail-469801.html

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

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

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

相关文章

  • STC89C52单片机LCD1602显示屏介绍与代码演示

    LCD1602显示屏介绍 引脚介绍 内部结构框图  存储器  DDRAM储存器地址  CGRAM与 CGROM的地址 时序介绍 LCD1602快捷指令  LCD1602指令操作流程: 字符、字符串的显示  各种进制的数字显示 在LCD1602上显示十进制数字 在LCD1602上显示十六进制数字 在LCD1602上显示二进制数字 LCD1602(Liq

    2024年02月08日
    浏览(51)
  • STM32-基本知识梳理10-FSMC控制ST7789V-LCD液晶显示屏

    一、ST7789V-LCD液晶显示 1,一种计算机的I/O设备,即输入输出设备; 2,数据传递结构,光线的传递通过偏光片进行调整,最终传递到滤光片上,进而不同RGB数据点,即像素点; 3, LCD显示器的关键参数 ①像素:显示器的像素指它成像最小的点 ②分辨率:像素点的个数的乘积

    2024年02月12日
    浏览(47)
  • TFT-液晶显示屏的结构和原理

    TFT-LCD (薄膜晶体管 液晶显示屏)的结构组成分为:背光部分,上下偏光片,液晶模组、TCON板 1. 背光模组部分 又分为:   (1)灯珠(冷阴极管):背光光源 (2)反射板:将灯管发出来的光 反射到导光板上,增加光的利用率 (3)导光板:将光线折射到扩散片上,使光 更

    2023年04月10日
    浏览(47)
  • STM32学习记录0010——TFTLCD液晶显示屏

    《STM32不完全手册》第18章 《ILI9341数据手册》 TFT-LCD 即薄膜晶体管液晶显示器。其英文全称为:Thin Film Transistor-Liquid Crystal Display。TFT-LCD与无源 TN-LCD、STN-LCD 的简单矩阵不同,它在液晶显示屏的每一个象素上都设置有一个薄膜晶体管(TFT),可有效地克服非选通时的串扰,使

    2023年04月09日
    浏览(48)
  • FPGA实现LCD显示屏显示彩条

    目录 总体设计  读显示屏ID  读显示屏ID代码 时钟分频  时钟分频代码  LCD显示 lcd显示模块 LCD驱动模块 lcd驱动代码 顶层模块 顶层模块代码 系统总体分为五个模块,分别是:rd_id(读显示屏ID模块),clk_div(时钟分频模块),lcd_display(lcd屏显示模块),lcd_driver(lcd屏驱动模块),和顶

    2024年02月16日
    浏览(39)
  • LCD拼接屏、LED显示屏和OLED显示屏的主要区别

    我们在生活或工作中经常看到大大小小的显示屏,但很多人却分不清楚这些屏到底属于哪一类,今天sostron与大家一起来分享下关于:LCD拼接屏、LED显示屏、OLED透明屏三者的区别。 LCD拼接屏、LED显示屏和OLED显示屏是不同类型的显示技术,它们在构成、工作原理和特点上存在明

    2024年02月17日
    浏览(48)
  • 单片机期末设计 - 液晶显示屏显示时间、日期、温度及按键控制(实验板实现)

    设计本代码的主要目的是为了完成期末作业,即在液晶显示屏上显示、时间、日期、温度,以及用按键控制时间、温度的显示。总的来说就是对前面学习计数的糅合,本代码实现的是显示时间,并能在实验板上成功显示。 1.液晶显示屏模块应用 主要是学会如何在液晶显示屏上

    2024年02月08日
    浏览(59)
  • LCD1602液晶显示模块

    1、概述: LCD1602(Liquid Crystal Display)是一种工业字符型液晶,能够同时显示 16×02,32个 字符(16列两行)。是我们接触引脚最多的模块。 LCD1602我们的非标准协议(标准协议有IIC、IIS、SPI)中比较容易懂的玩法。 2、引脚说明:翻阅LCD1602说明书 共有16根引脚,如下表: 编号 符号

    2024年02月16日
    浏览(50)
  • LCD12864显示屏原理及使用教程

            LCD12864液晶显示模块是 128×64点阵的汉字图形型液晶显示模块,可显示汉字及图形,内置 8192个中文汉字(16X16 点阵)(需带有字库的型号才能显示中文)、128 个字符(8X16 点阵)及 64X256 点阵显示 RAM(GDRAM)。可与 CPU 直接接口,提供两种界面来连接微处理机:8

    2024年01月19日
    浏览(41)
  • 【STM32篇】驱动LCD显示屏

    本次使用的硬件设备为野火的霸道V2开发板,显示器控制芯片型号为ILI9341,实际型号为ST7789V。在编写代码时参考的是ILI9341数据手册,二者差别不大,都是240*320分辨率。         ILI9341是一个用于TFT液晶显示的单芯片控制驱动器,具有262144色的240RGB x 320像素显示解决方案。

    2024年02月12日
    浏览(46)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包