1.芯片簡介
LCD1602顯示屏為字符顯示屏,顯示字符為16*2。采用 LCD 顯示一個字符時比較復(fù)雜,因?yàn)橐粋€字符由 6×8 或 8×8 點(diǎn)陣組成,既要找到和顯示屏幕上某幾個位置對應(yīng)的顯示 RAM 區(qū)的 8 字節(jié),還要使每字節(jié)的不同位為“1”,其它的為“0”,為“1”的點(diǎn)亮,為“0”的不亮。這樣一來就組成某個字符。但由于內(nèi)帶字符發(fā)生器的控制器來說,顯示字符就比較簡單了,可以讓控制器工作在文本方式,根據(jù)在 LCD1602上開始顯示的行列號及每行的列數(shù)找出顯示 RAM 對應(yīng)的地址,設(shè)立光標(biāo),在此送上該字符對應(yīng)的代碼即可。
主要特點(diǎn)如下
- 顯示容量為16×2個字符;
- 芯片工作電壓為4.5~5.5V,最佳工作電壓為5.0V;
- 工作電流為2.0mA(5.0V);
- 字符尺寸為2.95×4.35(W×H)mm。
2. 24C02引腳定義
- VSS(1) :顯示屏電源地;
- VDD(2) :顯示屏電源;
- V0(3) :V0為液晶顯示器對比度調(diào)整端;
- RS(4) :寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器;
- RW(5) :讀寫信號線,高電平時進(jìn)行讀操作,低電平時進(jìn)行寫操作。當(dāng)RS和RW共同為低電平時可以寫入指令或者顯示地址,當(dāng)RS為低電平RW為高電平時可以讀忙信號,當(dāng)RS為高電平RW為低電平時可以寫入數(shù)據(jù);
- EN(6) :使能端,當(dāng)E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令;
- D0-D7(7-14) :8位雙向數(shù)據(jù)線;
- A(15) :背光正極;
- K(16) :背光負(fù)極;
3.LCD1602控制時序
(1)讀操作時序如圖:
(2)寫操作時序如圖
4.LCD1602驅(qū)動程序
(1)LCD1602.h
#ifndef __LCD1602_H__
#define __LCD1602_H__
#include< reg52.h >
sbit LCD1602_RS = P2^6;
sbit LCD1602_RW = P2^5;
sbit LCD1602_E = P2^7;
#define LCD1602_Data P0
void delay_50us_1602(unsigned int t);
void LCD1602_write_com(unsigned char com);
void LCD1602_write_data(unsigned int dat);
void LCD1602_init(void);
/*******************************************
函數(shù)名稱:Disp_ZF
功 能:控制液晶顯示字符
參 數(shù):addr--顯示位置的首地址
pt--指向顯示數(shù)據(jù)的指針
num--顯示字符個數(shù)
返回值 :無
********************************************/
void LCD1602_Disp_ZF(unsigned char addr,const unsigned char * pt,unsigned char num);
#endif
(2)LCD1602.c
#include "LCD1602.h"
//延時函數(shù)
void delay_50us_1602(unsigned int t)
{
unsigned char j;
for(;t >0;t--)
for(j=19;j >0;j--);
}
//LCD1602寫指令
void LCD1602_write_com(unsigned char com)
{
LCD1602_E = 0;
LCD1602_RS = 0;
LCD1602_RW = 0;
LCD1602_Data= com;
delay_50us_1602(10);
LCD1602_E = 1;
delay_50us_1602(20);
LCD1602_E = 0;
}
//LCD1602寫數(shù)據(jù)
void LCD1602_write_data(unsigned int dat)
{
LCD1602_E = 0;
LCD1602_RS = 1;
LCD1602_RW = 0;
LCD1602_Data = dat;
delay_50us_1602(10);
LCD1602_E = 1;
delay_50us_1602(20);
LCD1602_E = 0;
}
//LCD1602初始化
void LCD1602_init(void)
{
delay_50us_1602(300);
LCD1602_write_com(0X38);
delay_50us_1602(100);
LCD1602_write_com(0X38);
delay_50us_1602(100);
LCD1602_write_com(0X38);
LCD1602_write_com(0X38);
LCD1602_write_com(0X08);
LCD1602_write_com(0X01);
LCD1602_write_com(0X06);
LCD1602_write_com(0X0C);
}
void LCD1602_Disp_ZF(unsigned char addr,const unsigned char * pt,unsigned char num)
{
unsigned char i;
LCD1602_write_com(addr);
for(i = 0;i < (num*1);i++)
LCD1602_write_data(*(pt++));
}
-
控制器
+關(guān)注
關(guān)注
112文章
16103瀏覽量
177071 -
顯示屏
+關(guān)注
關(guān)注
28文章
4436瀏覽量
74051 -
電平
+關(guān)注
關(guān)注
5文章
357瀏覽量
39812 -
發(fā)生器
+關(guān)注
關(guān)注
4文章
1359瀏覽量
61604 -
lcd1602顯示
+關(guān)注
關(guān)注
0文章
10瀏覽量
7921
發(fā)布評論請先 登錄
相關(guān)推薦
評論