目录

LCD1602:

数据指令:

字节写入时序:

1. LCD1602:LCD1602液晶上显示字符信息


LCD1602:

1602液晶也叫1602字符型液晶,它能显示2行字符信息,每行又能显示16个字符。它是一种专门用来显示字母、数字、符号的点阵型液晶模块。它是由若 干个5x7的点阵字符位组成,每个点阵字符位都可以用显示一个字符, 每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此,所以它不能很好的显示图片。

字符代码0x00~0x0F为用户自定义的字符图形RAM(对于5X8点阵的字符,可以存放8组,5X10点阵的字符,存放4组),就是CGRAM了。0x20~0x7F为标准的ASCII码,0xA0~0xFF为日文字符和希腊文字符,其余字符码(0x10~0x1F及0x80~0x9F)没有定义。写入显示地址时要求最高位D7恒定为高电平1。

数据指令:

//初始化
0X38 //八位数据接口,两行显示,5*7点阵
0X0C //显示开,光标关,闪烁关
0X06 //数据读、写操作后,AC自动加一,画面不动
0X01 //清除DDRAM和AC值,光标复位(清屏)
//显示位置
发送指令(0x80|(lie-1)); //设置光标位置80~8F
发送指令(0x80|(lie-1)+0x40);   //设置光标位置C0~CF

字节写入时序:

不是所有的地址都可以直接用来显示字符数据,只有第一行中的00-0F,第二行中的40-4F才能显示,其他地址只能用于存储。要使用LCD1602,首先需要对其初始化,即通过写入一些特定的指令实现。 然后选择要在LCD1602的哪个位置显示并将所要显示的数据发送到LCD的DDRAM。

①当要写指令字,设置LCD1602的工作方式时:需要把RS置为电平,RW置为低电平,然后将数据送到数据口D0~D7,最后E引脚一个高脉冲将数据写入(下降沿即可)。

②当要写入数据字,在1602上实现显示时:需要把RS置为电平,RW置为低电平,然后将数据送到数据口D0~D7,最后E引脚一个高脉冲将数据写入(下降沿即可)。 写指令和写数据,差别仅仅在于RS的电平不一样而已。

当要写命令字节的时候,时间由左往右,RS变为低电平,R/W变为低电平, 注意看是RS的状态先变化完成。然后这时,DB0~DB7上数据进入有效阶段,接着E引脚有一个整脉冲的跳变,接着要维持时间最小值为tpw=400ns的E脉冲宽 度。然后E引脚负跳变,RS电平变化,R/W电平变化。这样便是一个完整的LCD1602写命令的时序。

1. LCD1602:LCD1602液晶上显示字符信息

LCD1602函数

#include <REGX52.H>
#include "intrins.h"sbit LCD_RS=P2^6;
sbit LCD_WR=P2^5;
sbit LCD_EN=P2^7;
#define LCD_DB P0void LCD_Delay1ms()//LCD1602延时1ms函数@11.0592MHz
{unsigned char i, j;_nop_();i = 2;j = 199;do{while (--j);} while (--i);
}void LCD1602_WriteCommand(unsigned char Command)//写指令
{LCD_RS=0;LCD_WR=0;LCD_DB=Command;LCD_EN=1;LCD_Delay1ms();//延时 速度太快可能读不过来LCD_EN=0;LCD_Delay1ms();//延时 速度太快可能读不过来
}void LCD1602_WriteData(unsigned char Data)//写数据
{LCD_RS=1;LCD_WR=0;LCD_DB=Data;LCD_EN=1;LCD_Delay1ms();//延时 速度太快可能读不过来LCD_EN=0;LCD_Delay1ms();//延时 速度太快可能读不过来
}void LCD1602_Init(void)//初始化
{LCD1602_WriteCommand(0x38);//八位数据接口,两行显示,5*7点阵LCD1602_WriteCommand(0x0c);//显示开,光标关,闪烁关LCD1602_WriteCommand(0x06);//数据读、写操作后,AC自动加一,画面不动LCD1602_WriteCommand(0x01);//清除DDRAM和AC值,光标复位(清屏)
}void LCD1602_SetCursor(unsigned char hang,lie)//设置光标位置 1~2行,1~16列
{if(hang==1){LCD1602_WriteCommand(0x80|(lie-1));//第一行设置光标位置80~8F}else if(hang==2){LCD1602_WriteCommand(0x80|(lie-1)+0x40);//第二行设置光标位置C0~CF}
}void LCD1602_zifu(unsigned char hang,lie,Data)//显示字符 1~2行,1~16列,字符'*'
{LCD1602_SetCursor(hang,lie);LCD1602_WriteData(Data);
}void LCD1602_zifuchuan(unsigned char hang,lie,char *Datas)//显示字符串 1~2行,1~16列,字符串"**"
{unsigned char i;LCD1602_SetCursor(hang,lie);for(i=0;Datas[i]!='\0';i++) {LCD1602_WriteData(Datas[i]);}
}int LCD_Pow(int X,int Y)//返回值=X的Y次方
{unsigned char i;int Result=1;for(i=0;i<Y;i++){Result*=X;}return Result;
}void lCD1602_shuzi(unsigned char hang,lie,unsigned int Num,unsigned char wei)//显示十进制数字 1~2行,1~16列,数字0~65535,范围1~5
{unsigned char i;LCD1602_SetCursor(hang,lie);for(i=wei;i>0;i--){LCD1602_WriteData(Num/LCD_Pow(10,i-1)%10+'0');}
}void LCD1602_zfshuzi(unsigned char hang,lie,int zfNum,unsigned char wei)//显示有符号十进制数字 1~2行,1~16列,数字-32768~32767,范围1~5
{unsigned char i;unsigned int zfNumber;LCD1602_SetCursor(hang,lie);if(zfNum>=0){LCD1602_WriteData('+');zfNumber=zfNum;}else{LCD1602_WriteData('-');zfNumber=-zfNum;}for(i=wei;i>0;i--){LCD1602_WriteData(zfNumber/LCD_Pow(10,i-1)%10+'0');}
}void LCD1602_hex(unsigned char hang,lie,unsigned int hex,unsigned char wei)//显示十六进制数字 1~2行,1~16列,数字0~0xFFFF,范围1~4
{unsigned char i,hexnum;LCD1602_SetCursor(hang,lie);for(i=wei;i>0;i--){hexnum=hex/LCD_Pow(16,i-1)%16;if(hexnum<10){LCD1602_WriteData(hexnum+'0');}else{LCD1602_WriteData(hexnum-10+'A');}}
}void LCD1602_bin(unsigned char hang,lie,unsigned int bin,unsigned char wei)//显示二进制数字 1~2行,1~16列,数字0~1111 1111 1111 1111,范围1~16
{unsigned char i;LCD1602_SetCursor(hang,lie);for(i=wei;i>0;i--){LCD1602_WriteData(bin/LCD_Pow(2,i-1)%2+'0');}
}

主函数

#include <REGX52.H>
#include "LCD1602.h"void main()
{LCD1602_Init();LCD1602_zifu(1,1,'a');LCD1602_zifuchuan(1,3,"Hello");lCD1602_shuzi(1,9,12,5);LCD1602_hex(1,15,0xae,2);LCD1602_bin(2,1,0xaa,8);LCD1602_zfshuzi(2,10,-36,2);while(1){}
}

51单片机——LCD1602液晶屏 C语言入门编程相关推荐

  1. 51单片机LCD1602液晶屏显示字符,字符串,(有)无符号整数,十六进制数,二进制数等

    1.前言 LCD1602液晶显示器是广泛使用的一种字符型液晶显示模块.液晶显示模块具有体积小.功耗低.显示内容丰富.超薄轻巧等优点,在嵌入式应用系统中得到越来越广泛的应用,这讲中向大家介绍的LCD16 ...

  2. 电子时钟万年历+51单片机+1602液晶屏+DS1302+DS18B20+按键

    电子时钟万年历+51单片机+1602液晶屏+DS1302+DS18B20+按键 这次课程设计要完成的是制作一个基于51单片机的电子时钟的万年历(protues仿真),需要用到1602液晶屏+DS130 ...

  3. 51单片机-LCD12864液晶屏

    lcd12864液晶屏,有点复杂,只有基本的显示. #include <reg52.h> #include <intrins.h> #define uint unsigned ...

  4. LCD1602液晶屏使用(51单片机七夕特别版)

    LCD1602液晶屏使用(51单片机七夕特别版) LCD1602简介 实现过程 操作时序 指令码 如何改变文本的样式 代码 效果图 今天是七夕节,周围的朋友啊小姐妹(伪)啊都跟对象出去玩了 囧rz,而 ...

  5. 通过 I2C 驱动 LCD1602 液晶屏(51单片机)

    通过 I2C 驱动 LCD1602 液晶屏(51单片机) 硬件实物 原理图 3.程序 #include <reg51.h> #include <intrins.h>#defin ...

  6. 51单片机进阶案例(1)——基于MATLAB GUI的单片机串口与PC的通信实现实时时钟和双向可调时钟功能(利用DS1302时钟芯片和LCD1602液晶屏)

    目录 一.案例描述 二.实现功能 三.51单片机部分实现 3.1 实时时钟的实现 3.2 串口通信的实现 3.2.1 接收数据 3.2.2 发送数据 四.MATLAB部分实现 4.1 GUI界面 4. ...

  7. 【C51单片机学习笔记----DS18B20温度传感器LCD1602液晶屏直流电机调速与呼吸灯AD模数转换红外外部中断】

    文章目录 一.DS18B20温度传感器 1.DS18B20温度传感器连接原理图 2.DS18B20温度传感器单总线通信时序 3.DS18B20温度传感器代码模块 二.LCD1602液晶屏 1.LCD1 ...

  8. 带中文字库的240128的c语言程序,51单片机-240128液晶程序与调试

    原标题:51单片机-240128液晶程序与调试 今天终于把金鹏OCMJ8X15D-2液晶(240128点阵带字库无触屏液晶)调好了. 这块液晶能显示8行15个汉字,还有放大字形,从16*16点放大到3 ...

  9. 基于51单片机LCD1602显示

    基于51单片机LCD1602显示 要在1602上显示字符,要大概明白1602液晶显示屏工作原理. 一般的液晶显示器(Liquid Crystal Display, LCD) 的主要原理是以电流刺激液晶 ...

  10. 使用51单片机+lcd1602转接板-iic接口进行显示

    使用51单片机+lcd1602转接板-iic接口进行显示 某宝上有卖lcd1602与iic芯片pcf8574的整合,虽然lcd1602能直接用51单片机使用,不过经过整合之后只需要对SCL和SDA两个 ...

最新文章

  1. 用树莓派的方式打开小米手机:摇晃手机控制小车,前进后退加转弯,成本不到350元 | 开源...
  2. java ftp 读取 txt文件_java通过ftp方式读取文件,并解析入库
  3. 用闭包实现重载的过程学习闭包
  4. JTextAre 文字右对齐 JTextArea دىكى خەتلەرنى ئوڭدىن س...
  5. 几种SQL取日期部分的方法
  6. TCP通信之获取本机IPV4地址
  7. cat EOF file
  8. kettle查询mysql获取uuid_java中调用kettle转换文件
  9. Spring全家桶视频教程
  10. 盘点城市智慧水务领域的英文期刊
  11. React09——使用脚手架编程
  12. 【Oracle】执行计划详解
  13. 微信云控的好处及云控与群控的差别,后续讨论微信不死号
  14. 【数学】有理分式的拆解技巧
  15. 上周热点回顾(4.9-4.15)
  16. 【满分】【华为OD机试真题2023 JAVAJS】查找重复代码
  17. oracle dul for windows 一键打开,oracle 数据恢复
  18. Navigation Controller 的常用操作
  19. 《软件工程》知识点复习总结
  20. cmd怎么删除流氓软件?

热门文章

  1. 在 Cocos Creator 中使用缓动系统(cc.tween)
  2. SHIMANO各个等级配件的区别
  3. Vue学习(学习打卡Day12)
  4. 读研了,博客不更新嘞
  5. Java微信支付开发之查询订单
  6. 安卓救砖或删除第三方ROM推广APP
  7. java框架-框架的演变(记录)
  8. Python 第三方模块 科学计算 SciPy模块4 线性代数1
  9. 阿里云盘登录空白问题解决
  10. 企业微信获取临时素材,此处接口为语音接口