新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于單片機(jī)的LCD1602控制總線模式

        基于單片機(jī)的LCD1602控制總線模式

        作者: 時間:2012-09-10 來源:網(wǎng)絡(luò) 收藏

        第一行顯示W(wǎng)elcome;第二行顯示=Happy day;若要顯示其他字符,請直接往數(shù)組 LCMLineOne[16]和LCMLineTwo[16]填充相應(yīng)的代碼。直接上圖,仿真圖如下:

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

        10.jpg

        源程序如下,可以對比時序方式,理解的操作方法。

        #includereg51.h>
        //#includeabsacc.h>
        #define uchar unsigned char
        #define uint unsigned int
        #define busy 0x80
        uchar xdata LCMWriteCOM _at_ 0x80ff; //寫指令寄存器
        uchar xdata LCMReadCOM _at_ 0xa0ff ; //讀指令寄存器
        uchar xdata LCMWriteData _at_ 0xc0ff ; //寫數(shù)據(jù)寄存器
        uchar xdata LCMReadData _at_ 0xe0ff ; //讀數(shù)據(jù)寄存器
        uchar data LCMLineOne[16]=Welcome; //第一行顯示的數(shù)據(jù)
        uchar data LCMLineTwo[16]=Happy day; //第二行顯示的數(shù)據(jù)

        void Delayms(uchar ms)
        {
        uchar i,j;
        for(i=0;ims;i++)
        for(j=0;j57;j++)
        ;
        }
        //寫指令寄存器
        void LCMWriteC(uchar COMData)
        { uchar LCMStatus;
        do
        {
        LCMStatus=(LCMReadCOMbusy);
        }
        while(LCMStatus!=0);
        LCMWriteCOM=COMData;
        }
        //讀指令寄存器
        uchar LCMReadC()
        {uchar LCMStatus;
        do
        {
        LCMStatus=(LCMReadCOMbusy);
        }
        while(LCMStatus!=0);
        LCMStatus=LCMReadCOM;
        return(LCMStatus);
        }
        //讀數(shù)據(jù)寄存器
        uchar LCMReadD(uchar addr)
        {uchar LCMStatus;
        do
        {
        LCMStatus=(LCMReadCOMbusy);
        }
        while(LCMStatus!=0);
        LCMWriteC(0x80+addr);
        LCMStatus=LCMReadData;
        return(LCMStatus);
        }
        //寫數(shù)據(jù)寄存器帶地址
        void LCMWriteDAdd(uchar addr,uchar LCMData)
        {uchar LCMStatus;
        do
        {
        LCMStatus=(LCMReadCOMbusy);
        }
        while(LCMStatus!=0);
        LCMWriteC(0x80+addr);
        LCMWriteData=LCMData;
        }

        //寫數(shù)據(jù)寄存器無地址
        void LCMWriteD(uchar LCMData)
        {uchar LCMStatus;
        do
        {
        LCMStatus=(LCMReadCOMbusy);
        }
        while(LCMStatus!=0);
        LCMWriteData=LCMData;
        }
        //初始化
        void LCMInit(void)
        { Delayms(15);
        LCMWriteCOM=0x38;
        Delayms(5);
        LCMWriteCOM=0x38;
        Delayms(5);
        LCMWriteCOM=0x38;
        Delayms(5);

        LCMWriteC(0x38);
        LCMWriteC(0x08);
        LCMWriteC(0x01);
        LCMWriteC(0x06);
        LCMWriteC(0x0c);
        }

        main()
        { uchar i;
        LCMInit();
        while(1)
        { LCMWriteC(0x80); //第一行開始地址
        for(i=0;i16;i++)
        LCMWriteD(LCMLineOne[i]);
        LCMWriteC(0x80+0x40); //第二行開始地址
        for(i=0;i16;i++)
        LCMWriteD(LCMLineTwo[i]);
        }
        }



        評論


        相關(guān)推薦

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

        關(guān)閉
        主站蜘蛛池模板: 岳阳市| 白山市| 灵石县| 台南县| 隆尧县| 隆昌县| 建湖县| 广河县| 本溪市| 黄冈市| 河池市| 巴中市| 台东县| 克什克腾旗| 遂宁市| 多伦县| 饶河县| 上饶县| 开平市| 新蔡县| 田阳县| 蓬莱市| 涟水县| 成安县| 安西县| 庆云县| 丰宁| 云安县| 绥芬河市| 亚东县| 中方县| 宁蒗| 长沙县| 石景山区| 双牌县| 阿瓦提县| 青浦区| 苍山县| 惠州市| 丰宁| 科技|