新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī)驅(qū)動1602液晶顯示器的小例子

51單片機(jī)驅(qū)動1602液晶顯示器的小例子

作者: 時間:2016-11-19 來源:網(wǎng)絡(luò) 收藏
首先附上1602的相關(guān)資料:

引腳功能:

本文引用地址:http://m.butianyuan.cn/article/201611/318169.htm1602采用標(biāo)準(zhǔn)的16腳接口,其中:
第1腳:VSS為電源
第2腳:VCC接5V電源正極
第3腳:V0為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地電源時對比度最高(對比度過高時會 產(chǎn)生“鬼影”,使用時可以通過一個10K的電位器調(diào)整對比度)。
第4腳:RS為寄存器選擇,高電平1時選擇數(shù)據(jù)寄存器、低電平0時選擇指令寄存器。
第5腳:RW為讀寫信號線,高電平(1)時進(jìn)行讀操作,低電平(0)時進(jìn)行寫操作。
第6腳:E(或EN)端為使能(enable)端,高電平(1)時讀取信息,負(fù)跳變時執(zhí)行指令。
第7~14腳:D0~D7為8位雙向數(shù)據(jù)端。

第15~16腳:空腳或背燈電源。15腳背光正極,16腳背光負(fù)極。

指令表:

指令碼
功 能
RS
R/W
D7
D6
D5
D4
D3
D2
D1
D0
清除顯示
0
0
0
0
0
0
0
0
0
1
將DDRAM填滿"20H",并且設(shè)定DDRAM的地址計(jì)數(shù)器(AC)到"00H"
地址歸位
0
0
0
0
0
0
0
0
1
X
設(shè)定DDRAM的地址計(jì)數(shù)器(AC)到"00H",并且將游標(biāo)移到開頭原點(diǎn)位置;這個指令不改變DDRAM 的內(nèi)容
顯示狀態(tài)開/關(guān)
0
0
0
0
0
0
1
D
C
B
[D=1: 整體顯示 ON][C=1: 游標(biāo)ON]
[B=1:游標(biāo)位置反白允許]
進(jìn)入點(diǎn)設(shè)定
0
0
0
0
0
0
0
1
I/D
S
指定在數(shù)據(jù)的讀取與寫入時,設(shè)定游標(biāo)的移動方向及指定顯示的移位
游標(biāo)或顯示移位控制
0
0
0
0
0
1
S/C
R/L
X
X
設(shè)定游標(biāo)的移動與顯示的移位控制位;這個指令不改變DDRAM 的內(nèi)容
功能設(shè)定
0
0
0
0
1
DL
X
RE
X
X
[DL=0/1:4/8位數(shù)據(jù)]
[RE=0/1: 基本指令操作 / 擴(kuò)充指令操作]
設(shè)定CGRAM地址
0
0
0
1
AC5
AC4
AC3
AC2
AC1
AC0
設(shè)定CGRAM 地址
設(shè)定DDRAM地址
0
0
1
0
AC5
AC4
AC3
AC2
AC1
AC0
設(shè)定DDRAM 地址(顯示位址)
[第一行:80H-A7H]
[第二行:C0H-E7H]
讀取忙標(biāo)志和地址
0
1
BF
AC6
AC5
AC4
AC3
AC2
AC1
AC0
讀取忙標(biāo)志(BF)可以確認(rèn)內(nèi)部動作是否完成,同時可以讀出地址計(jì)數(shù)器(AC)的值
寫數(shù)據(jù)到RAM
1
0
數(shù)據(jù)
將數(shù)據(jù)D7——D0寫入到內(nèi)部的RAM (DDRAM/CGRAM/IRAM/GRAM)
讀出RAM的值
1
1
數(shù)據(jù)
從內(nèi)部RAM讀取數(shù)據(jù)D7——D0(DDRAM/CGRAM/IRAM/GRAM)

特性:

3.3V或5V工作電壓,對比度可調(diào)
內(nèi)含復(fù)位電路
提供各種控制命令,如:清屏、字符閃爍、光標(biāo)閃爍、顯示移位等多種功能
有80字節(jié)顯示數(shù)據(jù)存儲器DDRAM
內(nèi)建有192個5X7點(diǎn)陣的字型的字符發(fā)生器CGROM
8個可由用戶自定義的5X7的字符發(fā)生器CGRAM

測試電路原理圖:

測試代碼:

#include#define uchar unsigned char#define uint unsigned intsbit lcden=P3^2;     //使能端sbit lcdrs=P3^0;	 //數(shù)據(jù)命令選擇端sbit rw=P3^1;uchar code table[]="xian shi 1";  //輸入的字符uchar code table1[]="xian shi 2";  //輸入的字符uchar num=0;void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void write_com(uchar com)//根據(jù)寫時序圖寫出指令程序{lcdrs=0;rw=0;P1=com;delay(5);lcden=1;delay(5);lcden=0;}void write_data(uchar date)//根據(jù)寫時序圖寫出數(shù)據(jù)程序{lcdrs=1;rw=0;P1=date;delay(5);lcden=1;delay(5);lcden=0;}void init(){lcden=0; //使能端為低電平write_com(0x38);/*顯示模式設(shè)置  00111000  設(shè)置16*2顯示  5*7點(diǎn)陣  8位數(shù)據(jù)接口*/write_com(0x0f);/*顯示開關(guān)及光標(biāo)設(shè)置   00001DCBD=1,開顯示     D=0, 關(guān)顯示C=1,顯示光標(biāo)   C=0,不顯示光標(biāo)B=1,光標(biāo)閃爍   B=0,光標(biāo)不閃爍*/write_com(0x06);//地址指針自動+1且光標(biāo)+1,寫字符屏幕不會移動write_com(0X01);write_com(0X80); }void main(){init();for(num=0;num<10;num++)    //輸入的字符數(shù)量,修改{write_data(table[num]);delay(50);}write_com(0X80+0x40);for(num=0;num<10;num++)	//輸入的字符數(shù)量,修改{write_data(table1[num]);delay(50);}while(1);}

測試效果:



評論


技術(shù)專區(qū)

關(guān)閉