1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。
1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。
目前市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。
1602采用标准的16脚接口,其中:
第1脚:VSS为电源地
第2脚:VCC接5V电源正极
第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会 产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。
第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。
第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。
第6脚:E(或EN)端为使能(enable)端。
第7~14脚:D0~D7为8位双向数据端。
第15~16脚:空脚或背灯电源。15脚背光正极,16脚背光负极。
+3.3V电压,对比度可调
内含复位电路
提供各种控制命令,如:清屏、字符闪烁、光标闪烁、显示移位等多种功能
有80字节显示数据存储器DDRAM
内建有192个5X7点阵的字型的字符发生器CGROM
8个可由用户自定义的5X7的字符发生器CGRAM
微功耗、体积小、显示内容丰富、超薄轻巧,常用在袖珍式仪表和低功耗应用系统中。
注:关于E=H脉冲——开始时初始化E为0,然后置E为1。
字符集
1602液晶模块内部的字符发生存储器CGROM已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。
因为1602识别的是ASCII码,试验可以用ASCII码直接赋值,在单片机编程中还可以用字符型常量或变量赋值,如'A’。
#include "p18f458.h"
#include "delays.h"
#pragma romdata TABLE=0x1000
const rom char table[240]={0x08,0xF8,0x08,0x08,0x08,0x08,0xF0,0x00,
0x20,0x3F,0x21,0x01,0x01,0x01,0x00,0x00, //"P",0~15
0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0x00,
0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00, //"I",16~31
0xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00,
0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00, //"C",32~47
0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,
0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00, //"1",48~63
0x00,0x70,0x88,0x08,0x00,0x1C,0x22,0x21, //"8"左,64~71
0x08,0x88,0x70,0x00,0x21,0x22,0x1C,0x00, //"8"右,72~79
0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,
0x20,0x3F,0x20,0x00,0x03,0x00,0x00,0x00, //"F",80~95
0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,
0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00, //"4",96~111
0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,
0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00, //"5",112~127
0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,
0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00, //"8",128~143
0x00,0x10,0x0C,0x04,0x4C,0xB4,0x94,0x05,
0xF6,0x04,0x04,0x04,0x14,0x0C,0x04,0x00,
0x00,0x82,0x82,0x42,0x42,0x23,0x12,0x0A,
0x07,0x0A,0x12,0xE2,0x42,0x02,0x02,0x00, //"实",144~175
0x02,0xFA,0x82,0x82,0xFE,0x80,0x40,0x60,
0x08,0x04,0x24,0x40,0x3F,0x22,0x2C,0x21, //"验"左,176~191
0x58,0x46,0x48,0x50,0x20,0x20,0x20,0x00,
0x21,0x2E,0x20,0x30,0x2C,0x23,0x20,0x00, //"验"右,192~207
0x10,0x10,0xD0,0xFF,0x50,0x90,0x00,0xFE,
0x62,0xA2,0x22,0x21,0xA1,0x61,0x00,0x00,
0x04,0x03,0x00,0x7F,0x00,0x11,0x0E,0x41,
0x20,0x11,0x0A,0x0E,0x31,0x60,0x20,0x00};//"板",208~239
#pragma romdata
//主函数
main()
{
int j;
for(j=0;j<5;j++)
{
initial();
LCD1INIT(1);
LCD1INIT(2);
DISPLAY1(1,0xBC-j,0x5C);
DISPLAY2(2,0xBC-j,0x40);
DISPLAY3(1,0xBE-j,0x68);
DISPLAY4(2,0xBE-j,0x40);
Delay10KTCYx (255); /*暂停 (255 * 10,000 cycles) */
}
}
文章评论(0条评论)
登录后参与讨论