新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > LCD 240*128 T6963C C51程序

        LCD 240*128 T6963C C51程序

        作者: 時間:2016-12-02 來源:網絡 收藏
        主程序

        /***********************************/
        /* LCM(RT-240128TA)顯示程序 */
        /* LCM 控制芯片 T6963C 帶32KRAM */
        /* MCU 型號: STC 89C52RD2 */
        /* 時鐘頻率: 11.0592 MHz */
        /* 接口方式: 直接接口(總線方式) */
        /* 開發環境: Keil C51 V7.03 */
        /* 開發日期: 2006.07.01 */
        /* 程序編寫: liu1234 */
        /***********************************/
        #define t6963c_c 1
        #include "t6963c3.h"
        uint txthome,grhome;
        /**********************************
        //= 函數原型: uchar check_cmd_st()
        //= 功 能: 查詢是否可讀寫命令和數據的狀態
        //= 參 數:
        //= 返 回 值: 非0不忙,否則忙
        //= 函數性質:私有函數
        **********************************/
        uchar check_cmd_st(void) // 狀態位STA1,STA0 判斷(讀寫指令和讀寫數據)
        {
        uchar i;
        for(i=100;i>0;i--)
        {
        if((LCMCP & 0x03) == 0x03)
        break;
        }
        return i; // 若返回零,說明錯誤
        }

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

        /**********************************
        //= 函數原型: uchar check_ar_st
        //= 功 能: 查詢是否可數據自動讀狀態
        //= 參 數:
        //= 返 回 值: 非0不忙,否則忙
        //= 函數性質:私有函數
        **********************************/
        uchar check_ar_st(void) // 狀態位ST2 判斷(數據自動讀狀態)
        {
        uchar i;
        for(i=100;i>0;i--)
        {
        if((LCMCP & 0x04) == 0x04)
        break;
        }
        return i; // 若返回零,說明錯誤
        }

        /**********************************
        //= 函數原型: uchar check_aw_st
        //= 功 能: 查詢是否可數據自動寫狀態
        //= 參 數:
        //= 返 回 值: 非0不忙,否則忙
        //= 函數性質:私有函數
        **********************************/
        uchar check_aw_st(void) // 狀態位ST3 判斷(數據自動寫狀態)
        {
        uchar i;
        for(i=100;i>0;i--)
        {
        if((LCMCP & 0x08) == 0x08)
        break;
        }
        return i; // 若返回零,說明錯誤
        }

        /**********************************
        //= 函數原型: uchar check_scrPeek_st()
        //= 功 能: 查詢是否可屏讀/屏拷貝狀態狀態
        //= 參 數:
        //= 返 回 值: 非0不忙,否則忙
        //= 函數性質:私有函數
        **********************************/
        uchar check_scrPeek_st(void) // 狀態位ST6 判斷(屏讀/屏拷貝狀態)
        {
        uchar i;
        for(i=100;i>0;i--)
        {
        if((LCMCP & 0x40) == 0x40)
        break;
        }
        return i; // 若返回零,說明錯誤
        }

        /**********************************
        //= 函數原型: uchar wr_cmd_2(uchar uCmd,uint uPar)
        //= 功 能: 給T6963C寫帶雙參數的指令
        //= 參 數:
        //= 返 回 值: 返回0 成功,否則忙
        //= 函數性質:私有函數
        **********************************/
        uchar wr_cmd_2(uchar uCmd,uint uPar) // 寫雙參數的指令
        {
        if(check_cmd_st() == 0) return 1;
        LCMDP = (uchar)(uPar& 0xFF);//先寫低字節,再寫高字節
        if(check_cmd_st() == 0) return 2;
        LCMDP = (uchar)(uPar>>8);
        if(check_cmd_st() == 0) return 3;
        LCMCP = uCmd;
        return 0; // 返回0 成功
        }

        /**********************************
        //= 函數原型: uchar wr_cmd_1(uchar uCmd,uchar uPar1)
        //= 功 能: 給T6963C寫帶單參數的指令
        //= 參 數:
        //= 返 回 值: 返回0 成功,否則忙
        //= 函數性質:私有函數
        **********************************/
        uchar wr_cmd_1(uchar uCmd,uchar uPar) // 寫單參數的指令
        {
        if(check_cmd_st() == 0) return 1;
        LCMDP = uPar;
        if(check_cmd_st() == 0) return 2;
        LCMCP = uCmd;
        return 0; // 返回0 成功
        }

        /**********************************
        //= 函數原型: uchar wr_cmd_0(uchar uCmd)
        //= 功 能: 給T6963C寫無參數的指令
        //= 參 數:
        //= 返 回 值: 返回0 成功,否則忙
        //= 函數性質:私有函數
        **********************************/
        uchar wr_cmd_0(uchar uCmd) // 寫無參數的指令
        {
        if(check_cmd_st() == 0) return 1;
        LCMCP = uCmd;
        return 0; // 返回0 成功
        }

        /**********************************
        //= 函數原型: uchar wr_data(uchar uData)
        //= 功 能: 給T6963C寫一次數據
        //= 參 數:
        //= 返 回 值: 返回0 成功,否則忙
        //= 函數性質:私有函數
        **********************************/
        uchar wr_data(uchar uData) // 寫一次數據
        {
        if(check_cmd_st() == 0) return 1;
        LCMDP = uData;
        return 0; // 返回0 成功
        }


        /**********************************
        //= 函數原型: uchar awr_data(uchar uData)
        //= 功 能: 給T6963C寫一個地址增加自動連續數據
        //= 參 數:
        //= 返 回 值: 返回0 成功,否則忙
        //= 函數性質:私有函數
        **********************************/
        uchar awr_data(uchar uData) // 自動寫數據
        {
        if(check_aw_st() == 0) return 1;
        LCMDP = uData;
        return 0; // 返回0 成功
        }

        /**********************************
        //= 函數原型: uchar ard_data(uchar uData)
        //= 功 能: 從T6963C讀一個地址增加自動連續數據
        //= 參 數:
        //= 返 回 值: 返回0 成功,否則忙
        //= 函數性質:私有函數
        **********************************/
        uchar ard_data(void) // 自動讀數據
        {
        if(check_ar_st() == 0) return 1;
        return LCMDP;
        }

        /**********************************
        //= 函數原型: void char_addr_Pointer_Set(uchar urow, uchar ucol)
        //= 功 能: 根據字符的行列設置vram地址
        //= 參 數:
        //= 返 回 值:
        //= 函數性質:私有函數
        **********************************/
        void char_addr_Pointer_Set(uchar urow, uchar ucol)
        {
        uint iPos;
        iPos = urow * 30 + ucol + txthome;
        wr_cmd_2(LC_ADD_POS,iPos);
        }


        上一頁 1 2 3 下一頁

        關鍵詞: LCDT6963CC51程

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 且末县| 栾城县| 庄浪县| 正蓝旗| 宕昌县| 商都县| 敦煌市| 中阳县| 九龙坡区| 尼勒克县| 团风县| 张家港市| 隆德县| 惠州市| 同心县| 大港区| 樟树市| 乌鲁木齐县| 辰溪县| 乐至县| 都兰县| 斗六市| 太保市| 河北区| 阿克陶县| 家居| 新泰市| 固安县| 武定县| 灌阳县| 民权县| 北票市| 昌吉市| 广州市| 杭锦后旗| 保亭| 平原县| 深水埗区| 巴东县| 班玛县| 福州市|