LCD1602显示总结

发布者:guqian999最新更新时间:2021-11-24 来源: eefocus关键字:LCD1602  高脉冲 手机看文章 扫描二维码
随时随地手机看文章

仿真原理图如下:

在这里插入图片描述

1.LCD1602正常显示两行数据


/*------------------------

功能:LCD1602显示两行数据

Author: Zhang Kaizhou

Date: 2019-6-3 12:42:22

------------------------*/

#include

#define uchar unsigned char

#define uint unsigned int

uchar code table0[] = {"0123456789ABCDEF"}; // 每行的字符数据

uchar code table1[] = {"0123456789abcdef"};

sbit lcdrs = P1^2; // LCD数据/命令选择端

sbit lcdrw = P1^3; // LCD读写选择端

sbit lcden = P1^4; // LCD使能端,高脉冲有效

uchar num;


void init();

void writeCommand(uchar command);

void delay(uchar xms);

void writeData(uchar dat);


void main()

{

init();

writeCommand(0x80); // 将数据指针定位到第一行的首地址

for(num = 0; num < 16; num++)

{

writeData(table0[num]);

delay(5);

}

writeCommand(0x80 + 0x40); // 将数据指针定位到第二行的首地址

for(num = 0; num < 16; num++)

{

writeData(table1[num]);

delay(5);

}

while(1);

}


/*初始化LCD1602的设置*/

void init()

{

lcden = 0; // 拉低使能端,准备产生使能高脉冲信号

writeCommand(0x38); // 显示模式设置(16x2, 5x7点阵,8位数据接口)

writeCommand(0x0c); // 开显示,不显示光标

writeCommand(0x06); // 写一个字符后地址指针自动加1

writeCommand(0x01); // 显示清零,数据指针清零

}


/*写指令函数*/

void writeCommand(uchar command)

{

lcdrs = 0; // 命令选择

lcdrw = 0;

P0 = command;

delay(5);

lcden = 1; // 产生一个正脉冲使能信号

delay(5);

lcden = 0;

}


/*写数据函数*/

void writeData(uchar dat)

{

lcdrs = 1; // 数据选择

lcdrw = 0;

P0 = dat;

delay(5);

lcden = 1;

delay(5);

lcden = 0;

}


/*延时函数*/

void delay(uchar xms)

{

uint i, j;

for(i = xms; i > 0; i--)

for(j = 110; j > 0; j--);

}


2.整屏左移显示


/*------------------------

功能:LCD1602整屏左移显示

Author: Zhang Kaizhou

Date: 2019-6-3 12:35:23

------------------------*/

#include

#define uchar unsigned char

#define uint unsigned int

uchar code table0[] = {"0123456789ABCDEF"}; // 每行的字符数据

uchar code table1[] = {"0123456789abcdef"};

sbit lcdrs = P1^2; // LCD数据/命令选择端

sbit lcdrw = P1^3; // LCD读写选择端

sbit lcden = P1^4; // LCD使能端,高脉冲有效

uchar num;


void init();

void writeCommand(uchar command);

void delay(uchar xms);

void writeData(uchar dat);


void main()

{

init();

writeCommand(0x80 + 0x10); // 将数据指针定位到第一行的非显示存储区

for(num = 0; num < 16; num++)

{

writeData(table0[num]);

delay(5);

}

writeCommand(0x80 + 0x50); // 将数据指针定位到第二行的非显示存储区

for(num = 0; num < 16; num++)

{

writeData(table1[num]);

delay(5);

}

for(num = 0; num < 16; num++) // 循环整屏左移

{

writeCommand(0x1c); // 整屏左移

delay(100);

}

while(1);

}


/*初始化LCD1602的设置*/

void init()

{

lcden = 0; // 拉低使能端,准备产生使能高脉冲信号

writeCommand(0x38); // 显示模式设置(16x2, 5x7点阵,8位数据接口)

writeCommand(0x0c); // 开显示,不显示光标

writeCommand(0x06); // 写一个字符后地址指针自动加1

writeCommand(0x01); // 显示清零,数据指针清零

}


/*写指令函数*/

void writeCommand(uchar command)

{

lcdrs = 0; // 命令选择

lcdrw = 0;

P0 = command;

delay(5);

lcden = 1; // 产生一个正脉冲使能信号

delay(5);

lcden = 0;

}


/*写数据函数*/

void writeData(uchar dat)

{

lcdrs = 1; // 数据选择

lcdrw = 0;

P0 = dat;

delay(5);

lcden = 1;

delay(5);

lcden = 0;

}


/*延时函数*/

void delay(uchar xms)

{

uint i, j;

for(i = xms; i > 0; i--)

for(j = 110; j > 0; j--);

}


3.刷屏显示多行字符


/*----------------------------

功能:LCD1602刷屏显示多行字符

Author: Zhang Kaizhou

Date: 2019-6-4 16:15:43

-----------------------------*/

#include

#include

#define uchar unsigned char

#define uint unsigned int

uchar code table0[] = {"0123456789ABCDEF"}; // 每行的字符数据

uchar code table1[] = {"0123456789abcdef"};

uchar code table2[] = {"Welcome to here!"};

uchar code table3[] = {"I'm ZKZ!"};

uchar code table4[] = {"Life is nice!"};

uchar code table5[] = {"Tomorrow is OK!"};


sbit lcdrs = P1^2; // LCD数据/命令选择端

sbit lcdrw = P1^3; // LCD读写选择端

sbit lcden = P1^4; // LCD使能端,高脉冲有效

uchar num;


void init();

void writeCommand(uchar command);

void delay(uint xms);

void writeData(uchar dat);


void main()

{

init();

/*第一屏*/

writeCommand(0x80); // 将数据指针定位到第一行首

for(num = 0; num < strlen(table0); num++)

{

writeData(table0[num]);

delay(5);

}

writeCommand(0x80 + 0x40); // 将数据指针定位到第二行首

for(num = 0; num < strlen(table1); num++)

{

writeData(table1[num]);

delay(5);

}

delay(2000);

writeCommand(0x01);

/*第二屏*/

writeCommand(0x80); // 将数据指针定位到第一行首

for(num = 0; num < strlen(table2); num++)

{

writeData(table2[num]);

delay(5);

}

writeCommand(0x80 + 0x40); // 将数据指针定位到第二行首

for(num = 0; num < strlen(table3); num++)

{

writeData(table3[num]);

delay(5);

}

delay(2000);

writeCommand(0x01);

/*第三屏*/

writeCommand(0x80); // 将数据指针定位到第一行首

for(num = 0; num < strlen(table4); num++)

{

writeData(table4[num]);

delay(5);

}

writeCommand(0x80 + 0x40); // 将数据指针定位到第二行首

for(num = 0; num < strlen(table5); num++)

{

writeData(table5[num]);

delay(5);

}

while(1);

}


/*初始化LCD1602的设置*/

void init()

{

lcden = 0; // 拉低使能端,准备产生使能高脉冲信号

writeCommand(0x38); // 显示模式设置(16x2, 5x7点阵,8位数据接口)

writeCommand(0x0c); // 开显示,不显示光标

writeCommand(0x06); // 写一个字符后地址指针自动加1

writeCommand(0x01); // 显示清零,数据指针清零

}


/*写指令函数*/

void writeCommand(uchar command)

{

lcdrs = 0; // 命令选择

lcdrw = 0;

P0 = command;

delay(5);

lcden = 1; // 产生一个正脉冲使能信号

delay(5);

lcden = 0;

}


/*写数据函数*/

void writeData(uchar dat)

{

lcdrs = 1; // 数据选择

lcdrw = 0;

P0 = dat;

delay(5);

lcden = 1;

delay(5);

lcden = 0;

}


/*延时函数*/

void delay(uint xms)

{

uint i, j;

for(i = xms; i > 0; i--)

for(j = 110; j > 0; j--);

}

关键字:LCD1602  高脉冲 引用地址:LCD1602显示总结

上一篇:C51键盘检测相关问题总结
下一篇:C51软件精确延时(us级)

推荐阅读最新更新时间:2024-11-13 01:18

PIC16F877A+18B10温度测量+LCD1602显示温度
;18B10温度测量+ LCD 1602显示温度 ;实战目的 ;1、学习18B20单总线温度 传感器 的使用。 ;2、学习LCD的使用。 ;3、学习10进制转10进制的方法。 ;所有资源: ;1、TMRO定时器。产生温度转换所需要的延时时间。 ;2、PORTA口。即做LCD显示时可控制端口,RA2同时做18B20的数据接口 ;3、PORTC口。做LCD显示时的数据口。 ;功能说明 ;1、通过18B20采集当前环境 ;最高温度可显示127.9375,最低温度可显示0.0625(无负温度处理部分) ;2、将温度在LCD上显示(3位整数,4位小数) ;硬件连接 ;1,在18B20按DEMO板上的标识插在插座U8上 ;2,拨码开关S13第
[单片机]
PIC16 单片机 LCD1602 驱动 程序 PIC16F877A PIC16F887
/* LCD显示相关 */ #define DATA 1 /* LCD写数据时为1 */ #define COM 0 /* LCD写命令时为0 */ #define LINE1 0b10000000 #define LINE2 0b11000000 #define LCD_E RD6 #define LCD_RW RD5 #define LCD_RS RD4 void LCD_WRITE_4( unsigned char R1, unsigned char FLAG ); void LC
[单片机]
PIC16 单片机 <font color='red'>LCD1602</font> 驱动 程序 PIC16F877A PIC16F887
ATmega16读取RTC和ADC显示LCD1602,同时串口输出
介绍mikroPascal for AVR 写的ATmega16读取RTC和ADC显示在LCD1602,同时串口输出,并写入EEPROM的程序。附带仿真文件。mikro编译器分为c,basic,pascal三种,除了语法有所区别外,使用和功能基本一样。有8051,AVR,PIC,ARM等版本,界面和语法都一样。学会一种芯片花很少时间就可以转到另一种芯片。自带常用库,帮助文件中例子很多,基本不需要其他文档就可以开始学习了。 仿真原理图如下 单片机源程序如下: program RTC_Read; var seconds, minutes, hours, day, month, year : byte; // Global
[单片机]
ATmega16读取RTC和ADC<font color='red'>显示</font>在<font color='red'>LCD1602</font>,同时串口输出
三星总结Galaxy系列手机十大创新不仅为Super AMOLED显示屏,
三星的Galaxy系列手机已经推出有好多年了,该系列的手机给手机行业的发展做出的卓越的贡献,最近三星总结了Galaxy系列手机的十大创新,一起来看看吧! 1.Super AMOLED显示屏(2010年发布的Galaxy S手机开始使用Super AMOLED显示屏,直到2019年发布的Galaxy S10系列手机开始使用Dynamic AMOLED显示屏) 2.S Pen(它首次出现在2011年发布的Galaxy Note上,此后变化不大,直到2018年发布的Galaxy Note9上,S Pen首次加入低功耗蓝牙控制功能) 3.三星Knox(它最早出现在2013年发布Galaxy Note3上,Knox是一种保证端对端安全性的解
[手机便携]
三星<font color='red'>总结</font>Galaxy系列手机十大创新不仅为Super AMOLED<font color='red'>显示</font>屏,
单片机 实时时钟电路(LCD1602、PCF8563)
一、简介 此电路主要有51单片机、LCD1602模块、PCF8563芯片和按键组成组成,通过LCD1062显示当前时间,按键可设置时间。 二、运行效果 三、部分代码 /*想要更多项目私wo!!!*/ #include reg52.h #include intrins.h #define uchar unsigned char #define uint unsigned int void init() { uchar num; lcden=0; write_com(0x38); //0011 1000B,功能模式设置,设置为8为数据口,两行显示,5*7点阵 write_com(0x0c)
[单片机]
单片机 实时时钟电路(<font color='red'>LCD1602</font>、PCF8563)
单片机+LCD1602显示℃ 这种自定义符号
#include all.h u8 xdata LCD1602_Write_Buffer1 ; u8 xdata LCD1602_Write_Buffer2 ; u8 code LCD1602_5x8 ={0x08,0x00,0x07,0x08,0x08,0x08,0x08,0x07}; u8 xdata LCD1602_Write_Cursor_Add; void LCD1602_Delay(u8 len) { u8 idata i; while(len--) { i=15; while(i--); } } void LCD1602_Write_Add(u8 Ad
[单片机]
单片机 实时时钟电路(AT89C51、LCD1602、PCF8563)
一、简介 此电路主要有51单片机、LCD1602模块、PCF8563芯片和按键组成组成,通过LCD1062显示当前时间,按键可设置时间。 二、运行效果 三、部分代码 /*想要更多项目私wo!!!*/ #include reg52.h #include intrins.h #define uchar unsigned char #define uint unsigned int void init() { uchar num; lcden=0; write_com(0x38); //0011 1000B,功能模式设置,设置为8为数据口,两行显示,5*7点阵 write_com(0x0c);
[单片机]
PIC单片机实现LCD1602滚动显示字符串
初始学习单片机,LCD1602的滚动只能实现2行同时移动,就改了哈,写了个滚动的程序。在测试的时候发现了一个问题,在学习板上能正常运行的代码放到Proteus上问题出错,不能正常显示,最后在网上搜索原因时发现可能是Proteus仿真时对端口有要求,最后将商品修改到PORTB和PORTD就正常了。 这是显示效果https://v.youku.com/v_show/id_XNDI5MDEwOTg4NA==.html?spm=a2h3j.8428770.3416059.1 LCD1602.c //--------------------------------------------------------------- /
[单片机]
PIC单片机实现<font color='red'>LCD1602</font>滚动<font color='red'>显示</font>字符串
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved