新聞中心

        單片機·LCD1602

        作者: 時間:2016-11-24 來源:網絡 收藏
        LCD1602 (能夠同時顯示16x02 ,32個字符)
        一、管腳功能介紹

        1.GND 地線
        2.VCC 電源正極
        3.VL 液晶顯示偏壓信號(對比度清晰一點)
        4.RS 數(shù)據(jù)/命令選擇端
        5.R/W 讀/寫選擇端
        6.EN 使能信號
        7.D0~D7 P0口數(shù)據(jù)傳輸
        8.BL+ 背光源正極
        9.BL- 背光源負極
        二、字符集
        這是LCD1602特別值得注意的一點,我開始學習的時候,以后可以使用通用的ascii碼,但是實驗了很久,得不到自己想要的結果,最后才發(fā)現(xiàn)LCD1602有自己的字符集
        (最長使用的十六進制中的A-F,可以通過 A+7來確定)

        三、LCD1602 的基本時序
        1.讀狀態(tài):輸入:RS = 0, RW = 1, EN = 1 , 輸出:D0-D7 = 狀態(tài)字 ;
        2.寫指令:輸入:RS = 0, RW = 1, EN = 0 , EN = 1 ,(高脈沖) 輸出:D0-D7 = 指令碼 ;
        3.讀數(shù)據(jù):輸入:RS = 0, RW = 1, EN = 1 , 輸出:D0-D7 = 數(shù)據(jù) ;
        4.寫數(shù)據(jù):輸入:RS = 0, RW = 1, EN = 0 ,EN = 1 ,(高脈沖) 輸出:D0-D7 = 數(shù)據(jù);
        四、LCD1602的狀態(tài)字的說明
        D7 D6 D5 D4 D3 D2 D1 D0
        其中bit7是判斷LCD忙狀態(tài)的標志,每次讀寫LCD1602必須對其狀態(tài)進行判斷。
        五、LCD1602初始化設置
        1.顯示模式設置
        指令碼 功能
        0011 1000 16x2顯示,5x7點陣,8位數(shù)據(jù)口
        2.顯示開關及光標設置
        指令碼 功能
        0000 1DCB D=1 開顯示;D=0 關顯示 ;
        C=1 顯示光標;C=0 不顯示光標 ;
        B=1 光標閃爍;B=0 光標不閃爍 ;
        0000 01NS N=1 讀寫一位,指針+1,光標+1 ;
        N=0 讀寫一位,指針 -1,光標 -1
        S =1 讀寫一位,屏幕左移(N=1)或者右移(N=0);
        S =0 屏幕不移動 ;
        3.指令碼 01H 1.數(shù)據(jù)指針清0 ;
        2.所有顯示清0 ;
        02H 1.數(shù)據(jù)指針清0 ;
        六、實驗
        實驗1:通過LCD1602顯示簡單的字符串
        程序:
        main.h
        #ifndef _1602_H_
        #define _1602_H_
        typedef unsigned char uint8 ;
        sbit RS = P1^0 ;
        sbit RW = P1^1 ;
        sbit EN = P1^5 ;
        sbit BUSY = P0^7 ;
        unsigned char code word1[] = {"yang zhou"} ;
        unsigned char code word2[] = {"I love you"} ;
        #endif
        main.c
        #include
        #include
        #include"1602.h"
        void wait()
        {
        P0 = 0xFF ;
        while(BUSY)
        {
        RS = 0 ;
        RW = 1 ;
        EN = 0 ;
        EN = 1 ;
        }
        EN = 0 ;
        }
        void W_cmd(uint8 cmd)
        {
        wait() ;
        EN = 0 ;
        P0 = cmd ;
        RS = 0 ;
        RW = 0 ;
        EN = 1 ;
        EN = 0 ;
        }
        void Init_LCD1602()
        {
        W_cmd(0x38) ;
        W_cmd(0x0C) ;
        W_cmd(0x06) ;
        W_cmd(0x01) ;
        }
        void W_dat(uint8 dat)
        {
        EN = 0 ;
        P0 = dat ;
        RS = 1 ;
        RW = 0 ;
        EN = 1 ;
        EN = 0 ;
        }
        void W_string(uint8 *p)
        {
        while(*p != 主站蜘蛛池模板: 习水县| 库车县| 万全县| 潜山县| 临汾市| 宁远县| 安西县| 武城县| 木里| 莱芜市| 大邑县| 道孚县| 昌江| 红原县| 玉林市| 自治县| 云浮市| 海伦市| 讷河市| 板桥市| 阜平县| 丽江市| 汝阳县| 呼图壁县| 灌云县| 噶尔县| 克什克腾旗| 禹城市| 甘泉县| 兴国县| 弥勒县| 宿松县| 通城县| 山阳县| 手游| 福建省| 南漳县| 平度市| 庆云县| 崇义县| 从化市|