新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 51單片機控制HD61202液晶顯示C語言程序

        51單片機控制HD61202液晶顯示C語言程序

        作者: 時間:2016-11-28 來源:網絡 收藏

        //////////////////////////////////////////////
        // 從液晶片上讀數據,保留在全局變量cbyte中 //
        //////////////////////////////////////////////
        void Rddata(void)
        {
        Locatexy(); //坐標定位,返回時保留分區狀態不變 //
        Datalcm=0xFF;
        wtcom(); // waitting for enable //
        Dilcm = 1; //數據//
        Rwlcm = 1; //讀數據//
        Elcm = 1; //讀入到LCM//
        _nop_();
        cbyte = Datalcm; //虛讀一次 //
        Elcm = 0;
        Locatexy(); //坐標定位,返回時保留分區狀態不變 //
        Datalcm=0xFF;
        wtcom(); // waitting for enable //
        Dilcm = 1; //數據//
        Rwlcm = 1; //讀數據//
        Elcm = 1; //讀入到LCM//
        _nop_();
        cbyte = Datalcm; //從數據口讀數據,真讀 //
        Elcm = 0;
        }
        ///////////////////////////////////////////
        /// 數據寫入 //
        ///////////////////////////////////////////
        void Wrdata(Uchar X)
        {
        Locatexy(); ///坐標定位,返回時保留分區狀態不變 //
        wtcom();
        Dilcm = 1; ///數據輸出//
        Rwlcm = 0; ///寫輸出 //
        Datalcm = X; ///數據輸出到數據口 //
        Elcm = 1; ////讀入到LCM//
        _nop_();
        Elcm = 0;
        }
        ///////////////////////////////////////////
        /// 清屏,全屏幕清零 //
        ///////////////////////////////////////////
        void Lcmcls( void )
        {
        for(row=0;row<8;row++)
        for(col=0;col
        }
        ///////////////////////////////////
        ///液晶屏初始化 //
        ///////////////////////////////////
        void Lcminit(void)
        {
        cbyte = DISPOFF; ///關閉顯示屏 //
        WrcmdL(cbyte);
        WrcmdR(cbyte);
        cbyte = DISPON; ///打開顯示屏 //
        WrcmdL(cbyte);
        WrcmdR(cbyte);
        cbyte = DISPFIRST; ///定義顯示起始行為零 //
        WrcmdL(cbyte);
        WrcmdR(cbyte);
        Lcmcls();
        col=0; //清屏 //
        row=0;
        Locatexy();
        }
        ///////////////////////////////////
        /// 延時 //
        ///////////////////////////////////
        void Delay(Uchar MS)
        {
        Uchar us,usn;
        while(MS!=0)
        { usn = 4;
        while(usn!=0)
        {
        us=0xf0;
        while (us!=0){us--;};
        usn--;
        }
        MS--;
        }
        }
        /////////////////////////////////////////////////////////
        // 半角字符(西文字符庫)點陣碼數據輸出16/16 //
        /////////////////////////////////////////////////////////
        void Putedot(Uchar Order)
        {
        Uchar i,bakerx,bakery; //共定義4個局部變量 //
        int x; //偏移量,字符量少的可以定義為UCHAR //
        bakerx = row; //暫存x,y坐標,已備下半個字符使用 //
        bakery = col;
        x=Order / 0x10; //半角字符,每個字符16字節 //
        ///上半個字符輸出,8列 //
        for(i=0;i<8;i++)
        {
        cbyte = Ezk[x]; ///取點陣碼,rom數組 //
        Wrdata(cbyte); ///寫輸出一字節 //
        x++;
        col++;
        } ///上半個字符輸出結束 //
        col = bakery; ///列對齊 //
        row = bakerx+1; ///指向下半個字符行 //
        ///下半個字符輸出,8列 //
        for(i=0;i<8;i++)
        {
        cbyte = Ezk[x]; ///取點陣碼 //
        Wrdata(cbyte); ///寫輸出一字節 //
        x++;
        col++;
        } ///下半個字符輸出結束 //
        row=bakerx;
        } ///整個字符輸出結束 //
        /////////////////////////////////////////////////////
        /// 全角字符(漢字庫)點陣碼數據輸出16/32 //
        /////////////////////////////////////////////////////
        void Putcdot(Uchar Order)
        {
        Uchar i,bakerx,bakery; ///共定義3個局部變量 //
        int x; ///偏移量,字符量少的可以定義為UCHAR //
        bakerx = row; / / //暫存x,y坐標,已備下半個字符使用 //
        bakery = col;
        x=Order / 0x20; ///每個字符32字節 //
        ///上半個字符輸出,16列 //
        for(i=0;i<16;i++)
        {
        Wrdata(Hzk[x]); / //寫輸出一字節 //
        x++;
        col++;
        } ///上半個字符輸出結束 //
        ///下半個字符輸出,16列 //
        col = bakery;
        row = bakerx+1;
        for(i=0;i<16;i++) / //下半部分//
        {
        Wrdata(Hzk[x]);
        x++;
        col++;
        } //下半個字符輸出結束 //
        row = bakerx;
        } //整個字符輸出結束 //
        /////////////////////////////////////////////////////////////////////////////
        /// 一個字串的輸出.第一個參數為一個字符串,第二個參數為此字符串的字節數 //
        /////////////////////////////////////////////////////////////////////////////
        void Putstr(Uchar /puts,Uchar i)
        {
        Uchar j,X;
        for (j=0;j
        {
        X = puts[j];
        if (X&0x80)
        {
        Putcdot(X&0x7f); / //只保留低7位//
        }
        else Putedot(X-0x20); / //ascii碼表從0x20開始//
        if (col==LCMLIMIT){col=0;row+=2;}; ///下一列,如果列越界換行//
        if (row>6) row=0; ///如果行越界,返回首行 //
        }
        }

        上一頁 1 2 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 滦南县| 准格尔旗| 西和县| 莆田市| 朔州市| 黄大仙区| 孟州市| 桦甸市| 招远市| 聊城市| 莱西市| 长汀县| 龙岩市| 汾西县| 昌黎县| 桑日县| 弥勒县| 应城市| 平阳县| 新绛县| 紫云| 黔西县| 平舆县| 安达市| 旬阳县| 东阿县| 略阳县| 南城县| 陇南市| 庆元县| 崇州市| 布尔津县| 星子县| 伊川县| 罗甸县| 江川县| 青海省| 白朗县| 石河子市| 轮台县| 河津市|