小猪学arduino—1602LCD液晶显示屏

本次实验使用arduino直接驱动1602液晶显示字母。
1602液晶在应用中非常广泛,最初的1602液晶使用的是HD44780控制器,现在各个厂家的1602模块基本上都是采用了与之兼容的IC,所以特性上基本都是一致的。

1602LCD主要技术参数
显示容量为16×2个字符;
芯片工作电压为4.5~5.5V;
工作电流为2.0mA(5.0V);
模块最佳工作电压为5.0V;
字符尺寸为2.95×4.35(W×H)mm。

1602采用标准的16脚接口,其中:
第1脚:VSS为地电源
第2脚:VDD接5V正电源
第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度
第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读信号,当RS为高电平RW为低电平时可以写入数据。
第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:D0~D7为8位双向数据线。
第15脚:背光电源正极
第16脚:背光电源负极

1602直接与arduino通信,根据产品手册描述,分8位连接法与4位连接法,本实验使用8位连接法。硬件连接方式如下图好电路后,就可以开始编写程序了。
8位连接法:

%e6%9c%aa%e5%91%bd%e5%90%8d

4位连接法:

%e5%b1%8f%e5%b9%95%e5%bf%ab%e7%85%a7-2016-12-17-14-46-25

8位与4位连接法除初始化时不同,其它是一样的。

在Arduino的安装目录下\libraries\LiquidCrystal可以查看到函数的原型
LiquidCrystal()——定义你的LCD的接口:各个引脚连接的I/O口编号,格式为LiquidCrystal(rs, enable, d4, d5, d6, d7)
LiquidCrystal(rs, rw, enable, d4, d5, d6, d7)
LiquidCrystal(rs, enable, d0, d1, d2, d3, d4, d5, d6, d7)
LiquidCrystal(rs, rw, enable, d0, d1, d2, d3, d4, d5, d6, d7)
begin()——定义LCD的长宽(n列×n行),格式lcd.begin(cols, rows)
clear()——清空LCD,格式lcd.clear()
home()——把光标移回左上角,即从头开始输出,格式lcd.home()
setCursor()——移动光标到特定位置,格式lcd.setCursor(col, row)
write()——在屏幕上显示内容(必须是一个变量,如”Serial.read()”),格式lcd.write(data)
print()——在屏幕上显示内容(字母、字符串,等等),格式lcd.print(data)
lcd.print(data, BASE)
cursor()——显示光标(一条下划线),格式lcd.cursor()
noCursor()——隐藏光标,格式lcd.noCursor()
blink()——闪烁光标,格式lcd.blink()
noBlink()——光标停止闪烁,格式lcd.noBlink()
display()——(在使用noDisplay()函数关闭显示后)打开显示(并恢复原来内容),格式lcd.display()
noDisplay()——关闭显示,但不会丢失原来显示的内容,格式为lcd.noDisplay()
scrollDisplayLeft()——把显示的内容向左滚动一格,格式lcd.scrollDisplayLeft()
scrollDisplayRight()——把显示的内容向右滚动一格,格式为lcd.scrollDisplayRight()
autoscroll()——打开自动滚动,这使每个新的字符出现后,原有的字符都移动一格:如果字符一开始从左到右(默认),那么就往左移动一格,否则就向右移动,格式lcd.autoscroll()
noAutoscroll()——关闭自动滚动,格式lcd.noAutoscroll()
leftToRight()——从左往右显示,也就是说显示的字符会从左往右排列(默认),但屏幕上已经有的字符不受影响,格式lcd.leftToRight()
rightToLeft()——从右往左显示,格式lcd.rightToLeft()
createChar()——自造字符,最多5×8像素,编号0-7,字符的每个像素显示与否由数组里的数(0-不显示,1-显示)决定,格式lcd.createChar(num, data)
参考源程序如下:

#include <LiquidCrystal.h> //申明1602液晶的函数库
//申明1602液晶的引脚所连接的Arduino数字端口,8线或4线数据模式,任选其一
LiquidCrystal lcd(12,11,10,9,8,7,6,5,4,3,2); //8数据口模式连线声明
//LiquidCrystal lcd(12,11,10,5,4,3,2); //4数据口模式连线声明
int i;

void setup(){
	lcd.begin(16,2); //初始化1602液晶工作 模式
	//定义1602液晶显示范围为2行16列字符
	while(1){
		lcd.home(); //把光标移回左上角,即从头开始输出
		lcd.print("Hello World"); //显示
		lcd.setCursor(0,1); //把光标定位在第1行,第0列
		lcd.print("Welcome to BST-Arduino"); //显示
		delay(500);
		for(i=0;i<3;i++){
			lcd.noDisplay();
			delay(500);
			lcd.display();
			delay(500);
		}
		for(i=0;i<24;i++){
			lcd.scrollDisplayLeft();
			delay(500);
		}
		lcd.clear();
		lcd.setCursor(0,0); //把光标移回左上角,即从头开始输出
		lcd.print("Hi,"); //显示
		lcd.setCursor(0,1); //把光标定位在第1行,第0列
		lcd.print("Arduino is fun"); //显示
		delay(2000);
	}
}

void loop(){//初始化已完成显示,主循环无动作
}

效果图:

wechatimg1

注:如果想显示汉字,可以考虑使用12864屏,支持128*64个像素点,有中文字库。

yan 2016.12.17 14:53

欢迎关注下方“非著名资深码农“公众号进行交流~

发表评论

邮箱地址不会被公开。