LCD1602学习笔记

    最近搞比赛经常用到LCD1602,但每次都用的不是很顺利,现在就特地写一篇博客来复习一下LCD1602,顺便也希望能给大家一些小小的启发。

既然是硬件,那就先上接线图

LCD1602学习笔记_第1张图片

VL:对比度,正常接一个1K的电阻就好了,如果电阻过大会出现一个个黑方块,而你要显示的就看不清楚了,反之如果电阻过小,就会根本显示不出东西,亮亮的一片。也可以接1K的电位器实现改对比度的功能。

RS、RW、EN:这些都是控制端口,要留心注意他们的接线

D0-D7:这些是数据端口,用来传递数据的。

Bl-  、 Bl+ :这些是背光电源,如果你上电连LCD都不亮就要检查一下这里。

好了基础的硬件知识说完了,来讲讲软件吧,废话不多说,直接贴代码

#ifndef __lcd1602_H__
#define __lcd1602_H__

#include 
#include 

sbit RS=P2^5;
sbit RW=P2^6;
sbit EN=P2^7;
#define DATA P0

void lcd1602_display_str(unsigned char x,bit y,unsigned char dat[]);
void lcd1602_display_byte(unsigned char x,bit y,unsigned char ascll);
void lcd1602_init();

void lcd1602_write(bit sign, unsigned char dat)			   //sign=0	:写入命令   sign=1:写入数据
{
 delay_1ms(10);
 RS=sign;
 RW=0;
 EN=0;
 DATA=dat;
 EN=1;
 delay_1ms(10);
 EN=0;
 if(sign)
 RS=0;
 delay_1ms(10);
}


void lcd1602_init()
{
	delay_1ms(10);
	lcd1602_write(0,0x38);
	lcd1602_write(0,0x38);
	lcd1602_write(0,0x38);	
	lcd1602_write(0,0x0c);	
	lcd1602_write(0,0x01);	
}


void lcd1602_display_str(unsigned char x,bit y,unsigned char dat[])
{
 unsigned char point=0x80+x;
 unsigned char len=16;
 unsigned char j=0;
 if(y)
 {point+=0x40;}
 lcd1602_write(0,point);
 len=strlen(dat);
 for(j=0;j

这上面就是LCD1602的基础代码(布局不变)

PS: LCD1602只能显示英文字符,一行16个,一共两行

      该程序是STC12的程序,相关的延时函数请根据实际的芯片修改。

要在LCD上第二行显示“HELLO,WORLD”怎么写呢?

unsigned char table[]="HELLO,WORLD";
lcd1602_display_str(0,1,table);

第一个参数表示列:示例是从第0列开始显示(0-15);

第二个参数表示行:第2行是1,第一行是0;

第三个参数表示字符数组(数组名也可以理解为数组的地址)

lcd1602_display_byte(unsigned char x,bit y,unsigned char ascll)
这个也是相同的用法,只不过他是专门在特地区域显示字符的。

你可能感兴趣的:(LCD1602学习笔记)