0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于51单片机的1602液晶显示方案

天才小狸花 来源:Sigle_chip 作者:Sigle_chip 2022-09-27 11:49 次阅读

前言

作为常见的一种显示方案,被广泛运用于实际的产品,相对于数码管,其显示稳定,无频闪,显示内容丰富,相对于屏幕,控制简单,被广泛运用于对体积要求不严格的场所。

1602

其显示为每行16个字符,两行。被成为1602,大多数1602模块基于HD44780液晶芯片进行控制,其内部含有Ascii字库,可直接显示所对应的Ascii字符。其每个字符为5*8像素点阵,可通过汉字取模来增加1602对一些简单汉字的显示。

字符型LCD1602通常分为14条引脚和16引脚两种,16引脚多出来的是背光电源线VCC(15引脚)和地线(16引脚),其控制原理与14引脚LCD完全一样,由于其引脚使用较多,可通过IIC转接减少所使用的IO。

操作时序

1602 含3个控制端,分别是:RS(数据/命令选择端)、RW(读写控制端)、E(使能信号,RW和RS指示了读、写的方向和内容。

在读数据(或者Busy标志)期间,EN线必须保持高电平;

而在写指令(或者数据)过程中,EN线上必须送出一个正脉冲。RW、RS的组合一共有四种情况,分别对应四种操作:

读状态

在进行读写指令和数据时,需要检测当前1602是否处于忙状态,处于忙状态时不能读写。当D0-D7数据引脚不全为0时,单片机处于忙状态。需要等待。

Input:
RS=L;
RW=H;
E=H;
Output:
D0- D7

void readSta() //读状态
{
unsignedchar Sa;
LCD=0xff; //单片机读状态时,保证自己是高电位
RS=0;
RW=1;
E=1;
do{
Sa=LCD;
}while(Sa&0x80);//拉低七位 判断最高位为0不忙跳出循环为1忙不跳出循环
}

写状态(指令)

向1602中写入一个字节的控制指令来达到一定的控制效果,常见指令如下。

# 01H:清除DDRAM的所有单元,光标被移动到屏幕左上角。
# 02H:DDRAM所有单元的内容不变,光标移至左上角。



输入方式设置:
这些指令规定了两个方面:一是写入一个DDRAM单元后,地址指针如何改变(加一还是减一);二是屏幕上的内容是否滚动。

# 04H:写入DDRAM后,地址指针减一,比如第一个字符写入8FH,则下一个字符会写入8EH;屏幕上的内容不滚动。
# 05H:写入DDRAM后,地址指针减一,同上一种情况;每一个字符写入以后,屏幕上的内容向右滚动一个字符位。
# 06H:写入DDRAM后,地址指针加一,比如第一个字符写入80H,则下一个字符会写入81H;屏幕上的内容也是不滚动。这应该是最常用的一种显示方式。
# 07H:写入DDRAM后,地址指针加一,同上一种情况;每一个字符写入以后,屏幕上的内容向左滚动一个字符位。




屏幕开关、光标开关、闪烁开关设置

# 08H、09H、0AH、0BH:关闭显示屏,实质上是不把DDRAM中的内容对应显示在屏幕上,对DDRAM的操作还是在进行的,执行这条指令,接着对 DDRAM进行写入,屏幕上没有任何内容,但是接着执行下面的某条指令,就能看到刚才屏幕关闭期间,对DDRAM操作的效果了。

# 0cH:打开显示屏,不显示光标,光标所在位置的字符不闪烁。
# 0dH:打开显示屏,不显示光标,光标所在位置的字符闪烁。
# 0eH:打开显示屏,显示光标,光标所在位置的字符不闪烁。
# 0fH:打开显示屏,显示光标,光标所在位置的字符闪烁。

关于光标的位置:光标所在的位置指示了下一个被写入的字符所处的位置,加入在写入下一个字符前没有通过指令设置DDRAM的地址,那么这个字符就应该显示在光标指定的地方。



设置光标移动、整体画面是否滚动。
# 10H:每输入一次该指令,AC就减一,对应了光标向左移动一格。整体的画面不滚动。
# 14H:每输入一次该指令,AC就加一,对应了光标向右移动一格。整体的画面不滚动。
# 18H:每输入一次该指令,整体的画面就向左滚动一个字符位。
# 1CH:每输入一次该指令,整体的画面就向右滚动一个字符位。画面在滚动的时候,每行的首尾是连在一起的,也就是每行的第一个字符,若左移25次,就会显示在该行的最后一格。在画面滚动的过程中,AC的值也是变化的。

显示模式设定指令,设定了显示几行,显示什么样的点阵字符,数据总线占用几位。
# 20H:4位总线,单行显示,显示5×7的点阵字符。
# 24H:4位总线,单行显示,显示5×10的点阵字符。
# 28H:4位总线,双行显示,显示5×7的点阵字符。
# 2CH:4位总线,双行显示,显示5×10的点阵字符。
# 30H:8位总线,单行显示,显示5×7的点阵字符。
# 34H:8位总线,单行显示,显示5×10的点阵字符。
# 8H:8位总线,双行显示,显示5×7的点阵字符。这是最常用的一种模式。3CH:8位总线,双行显示,显示5×10的点阵字符。

RS = L

RW = L

然后将数据送到数据口 D0~D7,最后 E引脚一个高脉冲将数据写入。

/*写指令函数*/
void write_con(u8 con){
P0=con; //送出指令
RS=0;RW=0;EN=1; //写指令时序
delay(200);
EN=0;
}

写数据

RS = H

RW = L

然后将数据送到数据口 D0~D7,最后 E引脚一个高脉冲将数据写入。

void write_dat(u8 dat){
P0=dat; //送出数据
RS=1;RW=0;EN=1;//写数据时序
delay(200);
EN=0;
}

读数据

RS=H,RW=H,E=H

读出D0~D7数据

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6034

    文章

    44553

    浏览量

    634436
  • 液晶
    +关注

    关注

    6

    文章

    606

    浏览量

    69627
收藏 人收藏

    评论

    相关推荐

    使用51单片机实现LCD1602液晶显示实验的程序免费下载

    本文档的主要内容详细介绍的是使用51单片机实现LCD1602液晶显示实验的程序免费下载。
    发表于 09-18 17:20 16次下载
    使用<b class='flag-5'>51</b><b class='flag-5'>单片机</b>实现LCD<b class='flag-5'>1602</b><b class='flag-5'>液晶显示</b>实验的程序免费下载

    LCD1602的引脚说明和使用51单片机控制1602液晶显示的代码免费下载

    本文档的主要内容详细介绍的是LCD1602的引脚说明和使用51单片机控制1602液晶显示的代码免费下载。
    发表于 07-31 17:35 9次下载
    LCD<b class='flag-5'>1602</b>的引脚说明和使用<b class='flag-5'>51</b><b class='flag-5'>单片机</b>控制<b class='flag-5'>1602</b><b class='flag-5'>液晶显示</b>的代码免费下载

    使用51单片机开发板进行1602液晶显示的程序免费下载

    本文档的主要内容详细介绍的是使用51单片机开发板进行1602液晶显示的程序免费下载。
    发表于 06-28 17:42 9次下载
    使用<b class='flag-5'>51</b><b class='flag-5'>单片机</b>开发板进行<b class='flag-5'>1602</b><b class='flag-5'>液晶显示</b>的程序免费下载

    使用51单片机进行LCD1602液晶显示的控制代码程序免费下载

    本文档的主要内容详细介绍的是使用51单片机进行LCD1602液晶显示的控制代码程序免费下载。
    发表于 06-11 17:47 8次下载
    使用<b class='flag-5'>51</b><b class='flag-5'>单片机</b>进行LCD<b class='flag-5'>1602</b><b class='flag-5'>液晶显示</b>的控制代码程序免费下载

    使用51单片机进行1602液晶显示控制代码的资料免费下载

    本文档的主要内容详细介绍的是使用51单片机进行1602液晶显示控制代码的资料免费下载。
    发表于 05-29 17:56 5次下载
    使用<b class='flag-5'>51</b><b class='flag-5'>单片机</b>进行<b class='flag-5'>1602</b><b class='flag-5'>液晶显示</b>控制代码的资料免费下载

    基于51单片机简易水位控制系统1602液晶显示仿真设计资料

    基于51单片机简易水位控制系统1602液晶显示仿真设计资料
    发表于 10-25 10:09 30次下载

    51单片机怎么显示当前时间_(记录)51单片机——LCD1602液晶显示模块

    51单片机怎么显示当前时间_(记录)51单片机——LCD1602
    发表于 11-16 15:06 29次下载
    <b class='flag-5'>51</b><b class='flag-5'>单片机</b>怎么<b class='flag-5'>显示</b>当前时间_(记录)<b class='flag-5'>51</b><b class='flag-5'>单片机</b>——LCD<b class='flag-5'>1602</b><b class='flag-5'>液晶显示</b>模块

    基于51单片机1602液晶显示秒表例程源代码

    基于51单片机1602液晶显示秒表例程源代码
    发表于 05-12 16:19 8次下载

    基于51单片机1602液晶显示温度例程源代码

    基于51单片机1602液晶显示温度例程源代码
    发表于 05-17 15:06 5次下载

    基于51单片机的串口发送1602液晶显示例程源代码

    基于51单片机的串口发送1602液晶显示例程源代码
    发表于 05-16 11:53 5次下载

    基于89C51单片机1602液晶显示的计算器源程序

    基于89C51单片机1602液晶显示的计算器源程序
    发表于 05-16 10:22 20次下载

    基于89C51单片机1602液晶显示的密码锁源程序

    基于89C51单片机1602液晶显示的密码锁源程序
    发表于 05-16 10:14 6次下载

    基于89C51单片机1602液晶显示距离源程序

    基于89C51单片机1602液晶显示距离(需选配超声波探头)源程序
    发表于 05-16 10:13 0次下载

    基于89C51单片机的PCF8591 1602液晶显示源程序

    基于89C51单片机的PCF8591 1602液晶显示源程序
    发表于 05-16 09:58 0次下载

    基于89C51单片机的红外解码1602液晶显示源程序

    基于89C51单片机的红外解码1602液晶显示源程序
    发表于 05-15 11:07 4次下载