tft每日頭條

 > 科技

 > lcd1602液晶顯示介紹

lcd1602液晶顯示介紹

科技 更新时间:2024-12-25 22:01:45

1.簡介

LCD1602是很多單片機愛好者較早接觸的字符型液晶顯示器,它的主控芯片是HD44780或者其它兼容芯片。與此相仿的是LCD12864液晶顯示器,它是一種圖形點陣顯示器,能顯示的内容比LCD1602要豐富得多,除了普通字符外,還可以顯示點陣圖案,帶有漢字庫的還可以顯示漢字,它的并行驅動方式與LCD1602相差無幾,所以,在這裡花點時間是值得的。

一般來說,LCD1602有16條引腳,據說還有14條引腳的,與16腳的相比缺少了背光電源A(15腳)和地線K(16腳)。這塊LCD1602的型号是HJ1602A,是繪晶科技公司的産品,它有16條引腳。如圖1所示:

lcd1602液晶顯示介紹(LCD1602液晶顯示屏應用)1

2.硬件參數

(1) LCD1602主要技術參數

a.顯示容量:16×2個字符

b.芯片工作電壓:4.5—5.5V

c.工作電流:2.0mA(5.0V)

d.模塊最佳工作電壓:5.0V

e.字符尺寸:2.95×4.35(W×H)mm

(2) 引腳定義

lcd1602液晶顯示介紹(LCD1602液晶顯示屏應用)2

首先,1602液晶顯示屏除了電源、地以外,有3個控制引腳 RS R/W E 和8個數據引腳DB0-7。建議8個數據引腳接在同一組上,程序寫起來比較簡單。硬件連接參考如圖。

lcd1602液晶顯示介紹(LCD1602液晶顯示屏應用)3

當我們想在指定位置寫入内容時,要先指定地址,如在第一行第一位寫入,地址位是00H,再加上DB7的1,即80H(0010000000),第二行第一位是40H,再加上DB7的1,即C0H(0011000000),依次類推。

LCD的已有的字模存儲在CGROM中,自定義的存儲在CGRAM,留給自定義的位置隻有8個地址,字模地址為01000000-01000111八個地址,也就是最多自定義8個符号或者圖形。

lcd1602液晶顯示介紹(LCD1602液晶顯示屏應用)4

根據這條指令,來寫一個攝氏度℃的自定義符号,對應圖如下

lcd1602液晶顯示介紹(LCD1602液晶顯示屏應用)5

**上面的數據也可以用8X8的字模軟件進行獲取字符數據**

用zimo221軟件, 新建一個8*8的圖像,留出左邊3列,用右邊5列點出自定義字符,選擇取模方式C51,就可得到對應的編碼

lcd1602液晶顯示介紹(LCD1602液晶顯示屏應用)6

字符對應的數組為table【】={0x10,0x06,0x09,0x08,0x08,0x09,0x06,0x00},将℃寫入指定的位置之前,要先把對應數組寫入CGRAM存儲,再寫入DDRAM顯示。如果直接用已有的字符,可以直接把數組寫入DDRAM顯示。

區分清楚自定義字符和已有字符,程序就簡單了。主要步驟是延時函數、寫指令、寫數據、初始化、主函數。

下面舉兩個例子,寫入常規字符串12345,寫入字符串℃。

```c

程序一

#include<reg52.h> //包含頭文件

#define uint unsigned int //預定義

#define uchar unsigned char

sbit rs=P2^6; //1602的數據/指令選擇控制線

sbit rw=P2^5; //1602的讀寫控制線

sbit en=P2^7; //1602的使能控制線

/*P0口接1602的D0~D7*/

uchar code table[]="1234"; //要顯示的内容放入數組table

void delay(uint n) //延時函數

{

uint x,y;

for(x=n;x>0;x--)

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

}

void lcd_wcom(uchar com) //1602寫命令函數

{

rs=0; //選擇指令寄存器

rw=0; //選擇寫

P0=com; //把命令字送入P2

delay(5); //延時一小會兒,讓1602準備接收數據

en=1; //使能線電平變化,命令送入1602的8位數據口

en=0;

}

void lcd_wdat(uchar dat) //1602寫數據函數

{

rs=1; //選擇數據寄存器

rw=0; //選擇寫

P0=dat; //把要顯示的數據送入P2

delay(5); //延時一小會兒,讓1602準備接收數據

en=1; //使能線電平變化,數據送入1602的8位數據口

en=0;

}

void lcd_init() //1602初始化函數

{

lcd_wcom(0x38); //8位數據,雙列,5*7字形

lcd_wcom(0x0c); //開啟顯示屏,關光标,光标不閃爍

lcd_wcom(0x06); //顯示地址遞增,即寫一個數據後,顯示位置右移一位

lcd_wcom(0x01); //清屏

}

void main() //主函數

{

uchar m=0;

lcd_init(); //液晶初始化

lcd_wcom(0x80); //顯示地址設為80H(即00H,)上排第一位

for(m=0;m<4;m ) //将table[]中的數據依次寫入1602顯示

{

lcd_wdat(table[m]);

delay(200);

}

while(1); //動态停機

}

```

```c

程序二

#include<reg52.h> //包含頭文件

#define uint unsigned int //預定義

#define uchar unsigned char

sbit rs=P2^6; //1602的數據/指令選擇控制線

sbit rw=P2^5; //1602的讀寫控制線

sbit en=P2^7; //1602的使能控制線

/*P0口接1602的D0~D7*/

uchar code table[]={0x10,0x06,0x09,0x08,0x08,0x09,0x06,0x00}; //要顯示的内容放入數組table

void delay(uint n) //延時函數

{

uint x,y;

for(x=n;x>0;x--)

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

}

void lcd_wcom(uchar com) //1602寫命令函數

{

rs=0; //選擇指令寄存器

rw=0; //選擇寫

P0=com; //把命令字送入P2

delay(5); //延時一小會兒,讓1602準備接收數據

en=1; //使能線電平變化,命令送入1602的8位數據口

en=0;

}

void lcd_wdat(uchar dat) //1602寫數據函數

{

rs=1; //選擇數據寄存器

rw=0; //選擇寫

P0=dat; //把要顯示的數據送入P2

delay(5); //延時一小會兒,讓1602準備接收數據

en=1; //使能線電平變化,數據送入1602的8位數據口

en=0;

}

void lcd_init() //1602初始化函數

{

lcd_wcom(0x38); //8位數據,雙列,5*7字形

lcd_wcom(0x0c); //開啟顯示屏,關光标,光标不閃爍

lcd_wcom(0x06); //顯示地址遞增,即寫一個數據後,顯示位置右移一位

lcd_wcom(0x01); //清屏

}

void main() //主函數

{

uchar m;

lcd_init(); //液晶初始化

lcd_wcom(0x40);//設定CGRAM地址,把自定義字符存儲進去

for(m=0;m<8;m ) //将table[]中的數據依次寫入1602顯示

{

lcd_wdat(table[m]);

delay(200);

}

lcd_wcom(0x85); //顯示地址設為85H,上排中間位

lcd_wdat(0);

while(1); //動态停機

}

```

總結:區分DDRAM和CGRAM,DDRAM是字符對應在屏幕上的位置,CGRAM是把自己定義的字符存在8個字節裡,即lcd_wcom(0x40)。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved