在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 12232c液晶顯示和8051單片機的接口c語言程序

            12232c液晶顯示和8051單片機的接口c語言程序

            作者: 時間:2016-11-10 來源:網(wǎng)絡(luò) 收藏
            以下為彭總編寫的c語言程序,我用過了!赫赫?。≡赼tmega128中寫通訊協(xié)議的頭四位數(shù)字時好像不能分開一位一位的送,而是要把它當(dāng)作一個16進制的整體移位寫入!程序中的comm為寫0表示寫12232c的指令,dat為1表示寫數(shù)據(jù)。cs,sclk,std分別為片選、時鐘、及數(shù)據(jù)io口,可用sbit指令定義。

            /************lcd初始化程序**************/
            void init_lcd (void)
            {
            wr_lcd (comm,0x30); /*30---基本指令集動作,8位控制接口*/
            wr_lcd (comm,0x01); /*清屏,地址指針指向00H*/
            delay (80);
            wr_lcd (comm,0x06); /*光標的移動方向,光標右移*/
            wr_lcd (comm,0x0c); /*開顯示,關(guān)光標*/
            }

            本文引用地址:http://www.biyoush.com/article/201611/317349.htm

            /******************LCD顯示任意量程序********************/
            void eng_disp (uchar x,uchar y,uchar code *eng)
            {
            uchar i,j;
            wr_lcd (comm,0x30);
            wr_lcd (comm,0x80); /*第一行的起始地址*/
            for(j=0;j {
            for (i=0;i wr_lcd (dat,eng[j*16+i]);
            if((y==2)&&(j==1))
            {wr_lcd (comm,0x90);
            for (i=0;i<8;i++)
            wr_lcd (dat,eng[j*16+i]);
            }
            }
            }

            /*********************LCD顯示中文(歡迎界面)程序******************/

            void chn_disp (uchar code *chn) /*lcd顯示中文*/
            {
            uchar i,j;
            wr_lcd (comm,0x30);
            wr_lcd (comm,0x80); /*第一行的起始地址*/
            j=0;
            for (i=0;i<16;i++)
            wr_lcd (dat,chn[j*16+i]);
            wr_lcd (comm,0x90); //第二行的起始地址
            j=1;
            for (i=0;i<16;i++)
            wr_lcd (dat,chn[j*16+i]);
            }

            /***************************LCD清內(nèi)存程序*******************/
            void clrram (void) //lcd清內(nèi)存
            {
            wr_lcd (comm,0x30);
            wr_lcd (comm,0x01);
            delay (120);
            }

            /*************LCD寫數(shù)據(jù)或?qū)懨钭映绦?***************/

            void wr_lcd (uchar dat_comm,uchar content) /*lcd寫數(shù)據(jù)*/
            {
            uchar a,i,j;
            delay (40);
            a=content; //a為指令代碼或者數(shù)據(jù)
            cs=1; //置位cs開始傳輸數(shù)據(jù)
            sclk=0; //拉低sclk準備給上升沿,發(fā)送數(shù)據(jù)
            std=1; //置1
            for(i=0;i<5;i++) /*先傳輸起始字節(jié),首先5個1,sclk的上升沿傳輸啟動*/
            {
            sclk=1;
            sclk=0;
            }
            std=0; //RW=0;
            sclk=1;
            sclk=0;
            if(dat_comm)
            std=1; //如果是數(shù)據(jù)則RS為1
            else
            std=0; //如果是控制字則RS為0
            sclk=1; //給上升沿,啟動傳輸
            sclk=0; //拉低sclk
            std=0; //第8位為0,起始字節(jié)傳輸完畢
            sclk=1; //給上升沿,啟動傳輸
            sclk=0;
            for(j=0;j<2;j++) //一個字節(jié)分兩次發(fā)送,第一次發(fā)送高四位,后面補4個0,第二次發(fā)送低4位,后面同樣補4個0
            {
            for(i=0;i<4;i++) //先傳輸高4位
            {
            a=a<<1; //數(shù)據(jù)循環(huán)左移一位,低位補0
            std=CY; //把進位進行傳輸
            sclk=1;
            sclk=0;
            }
            std=0;
            for(i=0;i<4;i++) //后4位數(shù)據(jù)為4個0
            {
            sclk=1;
            sclk=0;
            }
            }
            }

            /**********************LCD延時程序************************************/
            void delay (uint us) //lcd延時時間
            {
            while(us--);
            }
            void delay1 (uint ms)
            {
            uint i,j;
            for(i=0;i for(j=0;j<15;j++)
            delay(1);
            }
            /*********************顯示數(shù)據(jù)位子程序*******************/

            void math_disp(uint math)
            { uint k;
            uchar i;
            uchar j;
            k=math;
            dispbuf[0]=k/10000; //得到萬位數(shù)
            k=k%10000;
            dispbuf[1]=k/1000; //得到千位數(shù)
            k=k%1000;
            dispbuf[2]=k/100; //得到百位數(shù)
            k=k%100;
            dispbuf[3]=k/10; //得到十位數(shù)
            dispbuf[4]=k%10; //得到個位數(shù)
            wr_lcd (comm,0x90); //給第二行的起始地址以讓數(shù)據(jù)在第二行顯示,
            for(i=0;i<5;i++)
            {
            for(j=0;j<2;j++) //連續(xù)顯示兩個tab2中的字節(jié),LCD自動把這兩個字節(jié)聯(lián)系起來顯示一個數(shù)據(jù)
            {
            wr_lcd(dat,tab2[xs2*dispbuf[i]+j]); //調(diào)用顯示子函數(shù)
            }
            }
            }



            關(guān)鍵詞: 12232c液晶顯示805

            評論


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

            關(guān)閉