中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 液晶顯示器控制設(shè)計(jì)

        液晶顯示器控制設(shè)計(jì)

        作者: 時(shí)間:2016-10-15 來源:網(wǎng)絡(luò) 收藏

        利用實(shí)現(xiàn)數(shù)字和英文字符的顯示

        本文引用地址:http://www.antipu.com.cn/article/201610/307635.htm

        實(shí)驗(yàn)原理圖

        實(shí)驗(yàn)程序

        #include

        #include

        #include

        #include

        #include

        #define busy 0x80 //用于檢測(cè)LCD 狀態(tài)字中的Busy 標(biāo)識(shí)

        #define RSaddr 0x1000

        #define RWaddr 0x2000

        #define CSaddr 0x0400

        #define adtn 0xc8ff

        #define wc 0xcfff

        #define wd 0xdfff

        #define rc 0xefff

        unsigned char code homepage[] = {www.ispdown.com};

        unsigned char code email[] = {ispdown@21cn.com};

        //5ms 延時(shí)

        void delay5ms(void)

        {

        unsigned int TempCyc = 5552;

        while(TempCyc--);

        }

        //----------------------------------

        //400ms 延時(shí)

        void delay400ms(void)

        {

        unsigned char TempCycA = 5;

        unsigned int TempCycB;

        while(TempCycA--)

        {

        TempCycB=7269;

        while(TempCycB--);

        };

        }

        //--------------------------------

        void waitLcd()

        {

        char temp;

        bit flag=1;

        while(flag==1)

        {

        //temp=XBYTE[CSaddr+RWaddr+adtn];

        temp=XBYTE[rc];

        if (temp>>7==0) flag=0;

        P1=temp;

        }

        P1=0xff;

        }

        //---------------------------------

        void WC_Lcd(bit isCheck,char c)

        {

        if (isCheck==1) waitLcd();

        //XBYTE[CSaddr+adtn]=c;

        XBYTE[wc]=c;

        }

        //--------------------------------

        void WD_Lcd(char c)

        {

        waitLcd();

        //XBYTE[CSaddr+RSaddr+adtn]=c;

        XBYTE[wd]=c;

        }

        //----------------------------------

        void LcdInit()

        {

        delay5ms();

        delay5ms();

        delay5ms();

        WC_Lcd(0,0x38); //三次顯示模式設(shè)置,不檢測(cè)忙信號(hào)

        delay5ms();

        WC_Lcd(0,0x38);

        delay5ms();

        WC_Lcd(0,0x38);

        delay5ms();

        WC_Lcd(1,0x38); //顯示模式設(shè)置,開始要求每次檢測(cè)忙信號(hào)

        WC_Lcd(1,0x08); //關(guān)閉顯示

        WC_Lcd(1,0x01); //顯示清屏

        WC_Lcd(1,0x06); // 顯示光標(biāo)移動(dòng)設(shè)置

        WC_Lcd(1,0x0C); // 顯示開及光標(biāo)設(shè)置

        }

        //-------------------------------------------------------------------------

        //按指定位置顯示一個(gè)字符

        void displayOneChar(unsigned char X, unsigned char Y, unsigned char DData)

        {

        Y = 0x1;

        X = 0xF; //限制X 不能大于15,Y 不能大于1

        if (Y) X |= 0x40; //當(dāng)要顯示第二行時(shí)地址碼+0x40;

        X |= 0x80; //算出指令碼

        WC_Lcd(0,X); //這里不檢測(cè)忙信號(hào),發(fā)送地址碼

        WD_Lcd(DData);

        }

        //-------------------------------------------------------------------------------

        //按指定位置顯示一串字符

        void displayListChar(unsigned char X, unsigned char Y, unsigned char code *DData)

        {

        unsigned char ListLength;

        ListLength = 0;

        Y = 0x1;

        X = 0xF; //限制X 不能大于15,Y 不能大于1

        while (DData[ListLength]>0x20) //若到達(dá)字串尾則退出

        {

        if (X = 0xF) //X 坐標(biāo)應(yīng)小于0xF

        {

        displayOneChar(X, Y, DData[ListLength]); //顯示單個(gè)字符

        ListLength++;

        X++;

        }

        }

        }

        //====================================

        void main(void)

        {

        delay400ms();

        LcdInit();

        displayListChar(0, 0, homepage);

        displayListChar(0, 1, email);

        while(1);

        }



        評(píng)論


        相關(guān)推薦

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

        關(guān)閉