久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > 51單片機驅動1602液晶顯示器的小例子

51單片機驅動1602液晶顯示器的小例子

作者: 時間:2016-11-19 來源:網絡 收藏
首先附上1602的相關資料:

引腳功能:

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

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

指令表:

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

特性:

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

測試電路原理圖:

測試代碼:

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

測試效果:



評論


技術專區

關閉