新聞中心

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

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

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

        引腳功能:

        本文引用地址:http://www.104case.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);}

        測試效果:



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 东至县| 汉源县| 磐石市| 游戏| 西和县| 甘南县| 高陵县| 尖扎县| 柘荣县| 古丈县| 广宁县| 平和县| 卓资县| 四平市| 米泉市| 夏河县| 桂平市| 兴国县| 山阴县| 宝坻区| 勐海县| 峡江县| 麦盖提县| 大姚县| 涡阳县| 八宿县| 鄢陵县| 清涧县| 临沂市| 大石桥市| 黄平县| 新竹县| 宿松县| 莎车县| 武邑县| 吉林市| 鄂托克前旗| 恩平市| 新宁县| 安福县| 曲阜市|