在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī)采用模擬時(shí)序控制點(diǎn)陣圖形液晶程序

            51單片機(jī)采用模擬時(shí)序控制點(diǎn)陣圖形液晶程序

            作者: 時(shí)間:2016-11-28 來(lái)源:網(wǎng)絡(luò) 收藏


            //////////////////////////////////////////////////////////////////////////////////
            ///全角字符點(diǎn)陣碼數(shù)據(jù)輸出///
            //////////////////////////////////////////////////////////////////////////////////
            void Putcdot(Uchar Order)
            {
            Uchar i,bakerx,bakery;///共定義3個(gè)局部變量///
            int x;///偏移量,字符量少的可以定義為UCHAR///
            bakerx = col;///暫存x,y坐標(biāo),已備下半個(gè)字符使用 ///
            bakery = row;
            x=Order // 0x20;///每個(gè)字符32字節(jié)///

            ///上半個(gè)字符輸出,16列///
            for(i=0;i<16;i++)
            {
            Wrdata(Hzk[x]);///寫輸出一字節(jié)///
            x++;
            col++;
            if (col==LCMLIMIT){ col=0;row++;row++;} ///下一列,如果列越界換行///
            if (row>6) row=0;///如果行越界,返回首行///
            }///上半個(gè)字符輸出結(jié)束 ///

            ///下半個(gè)字符輸出,16列///
            col = bakerx;
            row = bakery+1;
            for(i=0;i<16;i++)///下半部分///
            {
            Wrdata(Hzk[x]);
            x++;
            col++;
            if (col==LCMLIMIT){col=0;row++;row++;}///下一列,如果列越界換行///
            if (row>7) row=1;///如果行越界,返回首行///
            }///下半個(gè)字符輸出結(jié)束 ///
            row = bakery;
            }///整個(gè)字符輸出結(jié)束///

            //////////////////////////////////////////////////////////////////////////////////
            ///清屏,全屏幕清零///
            //////////////////////////////////////////////////////////////////////////////////
            void Lcmcls( void )
            {
            for(row=0;row<8;row++)
            for(col=0;col
            }

            //////////////////////////////////////////////////////////////////////////////////
            ///從液晶片上讀數(shù)據(jù),保留在全局變量中///
            //////////////////////////////////////////////////////////////////////////////////

            void Rddata(void)
            {
            Locatexy();///坐標(biāo)定位,返回時(shí)保留分區(qū)狀態(tài)不變///
            Datalcm=0xFF;
            Dilcm = 1;///數(shù)據(jù)///
            Rwlcm = 1;///讀數(shù)據(jù)///
            Elcm = 1;///讀入到LCM///
            _nop_();
            cbyte = Datalcm;///虛讀一次 ///
            Elcm = 0;
            Locatexy();///坐標(biāo)定位,返回時(shí)保留分區(qū)狀態(tài)不變///
            Datalcm=0xFF;
            _nop_();
            Dilcm = 1;///數(shù)據(jù)///
            Rwlcm = 1;///讀數(shù)據(jù)///
            Elcm = 1;///讀入到LCM///
            _nop_();
            cbyte = Datalcm;///從數(shù)據(jù)口讀數(shù)據(jù),真讀 ///
            Elcm = 0;
            }

            //////////////////////////////////////////////////////////////////////////////////
            ///數(shù)據(jù)寫輸出///
            //////////////////////////////////////////////////////////////////////////////////

            void Wrdata(Uchar X)
            {
            Locatexy();///坐標(biāo)定位,返回時(shí)保留分區(qū)狀態(tài)不變///
            //wtcom();
            Dilcm = 1;///數(shù)據(jù)輸出///
            Rwlcm = 0;///寫輸出///
            Datalcm = X;///數(shù)據(jù)輸出到數(shù)據(jù)口 ///
            Elcm = 1;///讀入到LCM///
            _nop_();
            Elcm = 0;
            }

            //////////////////////////////////////////////////////////////////////////////////
            /// 命令輸出,每次輸出一個(gè)分區(qū)控制口 ///
            //////////////////////////////////////////////////////////////////////////////////

            ///void Wrcmd(Uchar X)
            //{
            //Locatexy();///確定分區(qū),返回時(shí)保留分區(qū)狀態(tài)不變///
            //wtcom();///等待LCM操作允許 ///
            //Dilcm = 0;///數(shù)據(jù)操作///
            //Rwlcm = 0;///寫輸出///
            //Datalcm = X;///數(shù)據(jù)輸出到數(shù)據(jù)口 ///
            //Elcm = 1;_nop_();Elcm = 0;///讀入到LCM///
            //}

            //////////////////////////////////////////////////////////////////
            /// 命令輸出到左區(qū)控制口///
            //////////////////////////////////////////////////////////////////

            void WrcmdL(Uchar X)
            {
            lcdbusyL();///確定分區(qū),返回時(shí)保留分區(qū)狀態(tài)不變///
            Dilcm = 0;///命令操作///
            Rwlcm = 0;///寫輸出///
            Datalcm = X;///數(shù)據(jù)輸出到數(shù)據(jù)口 ///
            Elcm = 1;_nop_();Elcm = 0;///讀入到LCM///
            }

            //////////////////////////////////////////////////////////////////
            /// 命令輸出到中區(qū)控制口///
            //////////////////////////////////////////////////////////////////

            void WrcmdM(Uchar X)
            {
            lcdbusyM();///確定分區(qū),返回時(shí)保留分區(qū)狀態(tài)不變///
            Dilcm = 0;///命令操作///
            Rwlcm = 0;///寫輸出///
            Datalcm = X;///命令輸出到數(shù)據(jù)口 ///
            Elcm = 1;_nop_();Elcm = 0;///讀入到LCM///
            }

            //////////////////////////////////////////////////////////////////
            /// 命令輸出到右區(qū)控制口///
            //////////////////////////////////////////////////////////////////

            void WrcmdR(Uchar X)
            {
            lcdbusyR(); ///確定分區(qū),返回時(shí)保留分區(qū)狀態(tài)不變///
            Dilcm = 0;///命令操作///
            Rwlcm = 0;///寫輸出///
            Datalcm = X;///命令輸出到數(shù)據(jù)口 ///
            Elcm = 1;_nop_();Elcm = 0;///讀入到LCM///
            }

            //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            /// 分區(qū)操作允許等待,返回時(shí)保留分區(qū)選擇狀態(tài)///
            //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            void lcdbusyL(void)
            {
            CS1LCM = 0;///CLRCS1///
            CS2LCM = 1;///SETBCS2///
            CS3LCM = 1;///SETBCS3///
            wtcom();/// waitting for enable///
            }

            void lcdbusyM(void)
            {
            CS1LCM = 1;///SETBCS1///
            CS2LCM = 0;///CLRCS2///
            CS3LCM = 1;///SETBCS3///
            wtcom();/// waitting for enable///
            }

            void lcdbusyR(void)
            {
            CS1LCM = 1;///SETBCS1///
            CS2LCM = 1;///SETBCS2///
            CS3LCM = 0;///CLRCS3///
            wtcom();/// waitting for enable///
            }

            void wtcom(void)
            {
            Dilcm = 0;///CLRDI///
            Rwlcm = 1;///SETBRW///
            Datalcm = 0xFF;///MOVDATA_LCM,#0FFH///
            Elcm= 1;_nop_();
            while(Datalcm & Lcdbusy);
            Elcm= 0;
            }

            //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            ///根據(jù)設(shè)定的坐標(biāo)數(shù)據(jù),定位LCM上的下一個(gè)操作單元位置///
            //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            void Locatexy(void)
            {
            unsigned charx,y;
            switch (col&0xc0)///col.and.0xC0///
            {///條件分支執(zhí)行///
            case 0:{lcdbusyL();break;} ///左區(qū)///
            case 0x40:{lcdbusyM();break;} ///中區(qū)///
            case 0x80:{lcdbusyR();break;} ///右區(qū)///
            }
            x = col&0x3F|SETX;///col.and.0x3f.or.setx///
            y = row&0x07|SETY;///row.and.0x07.or.sety///
            wtcom();///waitting for enable///
            Dilcm = 0;///CLRDI///
            Rwlcm = 0;///CLRRW///
            Datalcm = y;///MOVP0,Y///
            Elcm = 1;_nop_();Elcm = 0;
            wtcom();///waitting for enable///
            Dilcm = 0;///CLRDI///
            Rwlcm = 0;///CLRRW///
            Datalcm = x;///MOVP0,X///
            Elcm = 1;_nop_();Elcm = 0;
            }

            //////////////////////////////////////////////////////////////////
            ///液晶屏初始化///
            //////////////////////////////////////////////////////////////////

            void Lcminit(void)
            {
            cbyte = DISPOFF;///關(guān)閉顯示屏 ///
            WrcmdL(cbyte);
            WrcmdM(cbyte);
            WrcmdR(cbyte);
            cbyte = DISPON;///打開(kāi)顯示屏 ///
            WrcmdL(cbyte);
            WrcmdM(cbyte);
            WrcmdR(cbyte);
            cbyte = DISPFIRST;///定義顯示起始行為零 ///
            WrcmdL(cbyte);
            WrcmdM(cbyte);
            WrcmdR(cbyte);
            Lcmcls();
            col=0;///清屏///
            row=0;
            Locatexy();
            }
            //////////////////////////////////////////////////////////////////
            /// 延時(shí)///
            //////////////////////////////////////////////////////////////////
            void Delay(Uchar MS)
            {
            Uchar us,usn;
            while(MS!=0)
            { usn = 4;
            while(usn!=0)
            {
            us=0xf0;
            while (us!=0){us--;};
            usn--;
            }
            MS--;
            }
            }

            //////////////////////////////////////////////////////////////////
            //定義字符串?dāng)?shù)組///
            //////////////////////////////////////////////////////////////////

            Uchar code STR1[]=
            {
            0x80,0x81,0x82,0x83,0x84,0x85,
            0x86,0x87,0x88,0x89,0x8a,0x8B
            };

            Uchar code STR2[]="Our friend over the wold";
            Uchar code STR3[]="Program by Keil C51 6.12";
            Uchar code STR4[]="Thank you ~v~ 1234567890";


            評(píng)論


            技術(shù)專區(qū)

            關(guān)閉