新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 430驅動的12864圖形點陣LCD

        430驅動的12864圖形點陣LCD

        作者: 時間:2016-11-13 來源:網絡 收藏
        #include "msp430x16x.h"
        #include "INCLUDES.H"
        #include "CONSTANTS.H"
        #include "FUNCTIONS.H"
        #include "GLOBALS.H"

        /************************************************
        函 數 名: CheckLcdBusy()
        功 能:檢查是否LCD忙碌
        說 明:
        調 用:
        全局變量
        入口參數:無
        出口參數:無
        返 回 值:無
        ************************************************/
        void CheckLcdBusy(void){
        LCD_DATA_DIR = 0x00;
        LCD_DATA_OUT = 0xFF;
        LCD_CON_OUT &= ~LCD_E; //E=0
        LCD_CON_OUT |= LCD_RW; //RW=1
        LCD_CON_OUT &= ~LCD_RS; //RS=0
        while(LCD_DATA_IN & LCD_BF)
        {
        LCD_CON_OUT |= LCD_E; //E=1
        Delay_ms( 1 );
        LCD_CON_OUT &= ~LCD_E; //E=0
        }
        LCD_DATA_DIR = 0xFF;
        }
        /************************************************
        函 數 名: LcdWriteCommand()
        功 能:寫入控制命令到LCD
        說 明:
        調 用:
        全局變量:
        入口參數:command: LCD控制指令
        出口參數:無
        返 回 值:無
        ************************************************/
        void LcdWriteCommand(uchar command){
        CheckLcdBusy();
        LCD_CON_OUT &= ~LCD_E; //E=0
        LCD_CON_OUT &= ~LCD_RW; //RW=0
        LCD_CON_OUT &= ~LCD_RS; //RS=0
        LCD_CON_OUT |= LCD_E; //E=1
        LCD_DATA_OUT = command;
        LCD_CON_OUT &= ~LCD_E; //E=0
        }
        /************************************************
        函 數 名: LcdWriteData()
        功 能:寫入顯示數據到LCD
        說 明:
        調 用:
        全局變量:
        入口參數:data: 顯示數據
        出口參數:無
        返 回 值:無
        ************************************************/
        void LcdWriteData(uchar data){
        CheckLcdBusy();
        LCD_CON_OUT &= ~LCD_E; //E=0
        LCD_CON_OUT &= ~LCD_RW; //RW=0
        LCD_CON_OUT |= LCD_RS; //RS=1
        LCD_CON_OUT |= LCD_E; //E=1
        LCD_DATA_OUT = data;
        LCD_CON_OUT &= ~LCD_E; //E=0
        }
        /************************************************
        函 數 名: ClearLCD()
        功 能:清除LCD文本屏幕
        說 明:
        調 用:
        全局變量:
        入口參數:無
        出口參數:無
        返 回 值:無
        ************************************************/
        void ClearLcd( void ){
        LcdWriteCommand( 0x01 );
        }
        /************************************************
        函 數 名: LcdInit()
        功 能:初始化LCD
        說 明:
        調 用:
        全局變量:
        入口參數:無
        出口參數:無
        返 回 值:無
        ************************************************/
        void LcdInit(void){
        LCD_RST0; //RST=0
        Delay_ms( 5 );
        LCD_PSB; //PSB=1
        LCD_RST1; //RST=1

        LcdWriteCommand( 0x30 ); //基本指令操作
        Delay_ms( 5 );
        LcdWriteCommand( 0x06 );
        Delay_ms( 5 );
        ClearLcd();
        Delay_ms( 5 );
        LcdWriteCommand( 0x0C ); //開顯示,關光標,不閃爍
        Delay_ms( 5 );
        LcdWriteCommand( 0x02 );
        }
        /************************************************
        函 數 名: DispString()
        功 能:顯示字符串
        說 明:
        調 用:
        全局變量:
        入口參數:X: 行(0-3)
        Y: 列(0-7)
        speed: 顯示速度(毫秒)
        *msg: 字符數據
        出口參數:無
        返 回 值:無
        ************************************************/
        void DispString(uchar X,uchar Y,uchar speed,uchar *msg) {
        if(X == 0)
        {
        X = 0x80;
        }
        else if(X == 1)
        {
        X = 0x90;
        }
        else if(X == 2)
        {
        X = 0x88;
        }
        else if(X == 3)
        {
        X = 0x98;
        }
        Y += X;
        LcdWriteCommand( Y );
        Delay_ms( 5 );
        while(*msg)
        {
        LcdWriteData( *msg++ );
        Delay_ms( speed );
        }
        }


        評論


        技術專區

        關閉
        主站蜘蛛池模板: 莲花县| 新丰县| 封丘县| 和硕县| 普兰县| 邹平县| 普格县| 三原县| 图木舒克市| 永德县| 正定县| 库车县| 新巴尔虎左旗| 手游| 望江县| 绥中县| 南投市| 全州县| 会同县| 浦城县| 江华| 永宁县| 德兴市| 松江区| 泽州县| 韶山市| 鸡西市| 云梦县| 临潭县| 梅河口市| 宜良县| 黔东| 高邮市| 恩施市| 永德县| 陆良县| 西乌| 本溪| 同心县| 永寿县| 晴隆县|