新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 從零開始學單片機(七)液晶接口

        從零開始學單片機(七)液晶接口

        作者: 時間:2016-11-22 來源:網絡 收藏
        這里我買的板子上帶有一個SMC1602A LCM。使用也很簡單很方便,但是還是要看它的使用說明書才行。

        先看看引腳說明,在開發板上,D0-D7接到P0口上,RS接到P3.5,使能信號E接到P3.6上,讀寫端RW接地(通常不需要讀),沒有結背光電源。

        本文引用地址:http://www.104case.com/article/201611/319878.htm

        RAM要比實際顯示的多很多(16字×2行),將來做平移就比較方便了。

        時序圖還是要看的。

        1602的指令碼(用于設置系統屬性的)

        顯示模式設定:

        38H(16×2顯示,5×7點陣,8位數據接口)

        顯示開關及光標設置:

        08H+x(x=4:開顯示; x=2:顯示光標; x=1:光標閃爍)

        04H+x(x=2:讀寫一個字符后地址指針加1,光標加1; x=1:當寫一個字符,整屏左移)

        數據指針設置:

        80H+地址嗎(0H-27H,40H-67H)

        其他:

        01H:顯示清屏(數據指針清零,顯示清零)

        02H:顯示回車(數據指針清零,

        1602初始化過程

        延時15ms

        寫指令38H(不檢測忙信號)

        延時5ms

        寫指令38H(不檢測忙信號)

        延時5ms

        寫指令38H(不檢測忙信號)

        (以后,每次寫指令,讀寫操作都需要檢測忙信號)

        寫指令38H:顯示模式設置

        寫指令08H:顯示關閉

        寫指令01H:顯示清屏

        寫指令06H:顯示光標移動設置

        寫指令0CH:顯示開及光標設置

        #include

        #define LCD_Data P0

        sbit LCD_RS = P3^5;

        sbit LCD_E = P3^4;

        void delay(unsigned int ms);

        void WriteCommand(unsigned char com);

        void WriteData(unsigned char chr);

        void ini_LCD();

        void main(void)

        {

        ini_LCD();

        WriteData(A);

        WriteData(B);

        WriteData(C);

        WriteData(D);

        WriteData(E);

        while(1)

        {

        }

        }

        void delay(unsigned int ms)

        {

        unsigned int Temp;

        while(ms--){Temp=82;while(Temp--);}

        }

        void ini_LCD()

        {

        delay(15);

        WriteCommand(0x38);

        delay(5);

        WriteCommand(0x38);

        delay(5);

        WriteCommand(0x38);

        delay(5);

        WriteCommand(0x38);

        WriteCommand(0x0f);

        WriteCommand(0x06);

        WriteCommand(0x01);

        WriteCommand(0x80);

        }

        void WriteCommand(unsigned char com)

        {

        LCD_RS = 0;

        LCD_Data = com;

        delay(1);

        LCD_E = 1;

        delay(2);

        LCD_E = 0;

        LCD_RS = 1;

        }

        void WriteData(unsigned char chr)

        {

        LCD_RS = 1;

        LCD_Data = chr;

        delay(1);

        LCD_E = 1;

        delay(2);

        LCD_E = 0;

        LCD_RS = 0;

        }



        關鍵詞: 單片機液晶接

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 丽江市| 泰州市| 广水市| 延安市| 娄烦县| 康定县| 佳木斯市| 浪卡子县| 东海县| 宜良县| 正宁县| 高邮市| 兴国县| 安徽省| 衡阳县| 哈巴河县| 文化| 虹口区| 杭锦后旗| 泰州市| 锦州市| 临高县| 湘潭县| 通州市| 乌兰察布市| 荔浦县| 正定县| 旬阳县| 长岛县| 芜湖市| 香格里拉县| 涟源市| 乐东| 修水县| 乐至县| 依兰县| 夹江县| 乌兰察布市| 平凉市| 应城市| 梁平县|