新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于單片機的LCD1602控制總線模式

        基于單片機的LCD1602控制總線模式

        作者: 時間:2012-09-10 來源:網絡 收藏

        第一行顯示Welcome;第二行顯示=Happy day;若要顯示其他字符,請直接往數組 LCMLineOne[16]和LCMLineTwo[16]填充相應的代碼。直接上圖,仿真圖如下:

        本文引用地址: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 ; //寫數據寄存器
        uchar xdata LCMReadData _at_ 0xe0ff ; //讀數據寄存器
        uchar data LCMLineOne[16]=Welcome; //第一行顯示的數據
        uchar data LCMLineTwo[16]=Happy day; //第二行顯示的數據

        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);
        }
        //讀數據寄存器
        uchar LCMReadD(uchar addr)
        {uchar LCMStatus;
        do
        {
        LCMStatus=(LCMReadCOMbusy);
        }
        while(LCMStatus!=0);
        LCMWriteC(0x80+addr);
        LCMStatus=LCMReadData;
        return(LCMStatus);
        }
        //寫數據寄存器帶地址
        void LCMWriteDAdd(uchar addr,uchar LCMData)
        {uchar LCMStatus;
        do
        {
        LCMStatus=(LCMReadCOMbusy);
        }
        while(LCMStatus!=0);
        LCMWriteC(0x80+addr);
        LCMWriteData=LCMData;
        }

        //寫數據寄存器無地址
        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]);
        }
        }



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 卢氏县| 原阳县| 大丰市| 哈密市| 石棉县| 江永县| 施甸县| 阿城市| 和田市| 台北县| 抚顺县| 瑞安市| 聊城市| 万源市| 垫江县| 屯昌县| 水城县| 修文县| 福建省| 玉环县| 新河县| 巩留县| 米林县| 布拖县| 连城县| 靖边县| 阿坝县| 苍南县| 西畴县| 师宗县| 建德市| 定襄县| 云龙县| 凉山| 安顺市| 潞西市| 甘泉县| 吉安县| 莒南县| 江口县| 梁平县|