新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 51單片機的1602驅動程序

        51單片機的1602驅動程序

        作者: 時間:2016-12-01 來源:網絡 收藏

        /*************************************
        函數名:lcdwcmd
        函數功能:向1602中寫指令
        參數:cmd(命令)
        返回:無
        備注:無
        *************************************/
        void lcdwcmd(uchar cmd)
        {
          while(lcdbusy());
          RSlcd=0;
          RWlcd=0;
          EPlcd=0;
          _nop_();
          _nop_();
          P0=cmd;
          delaynop();
          EPlcd = 1;
          delaynop();
          EPlcd = 0;
        }
        /*************************************
        函數名:lcdwdat
        函數功能:向1602中寫數據
        參數:dat(數據)
        返回:無
        備注:無
        *************************************/
        void lcdwdat(uchar dat)
        {
          while(lcdbusy());
          RSlcd=1;
          RWlcd=0;
          EPlcd=0;
          P0=dat;
          delaynop();
          EPlcd=1;
          delaynop();
          EPlcd=0;
        }
        /*************************************
        函數名:lcdprc
        函數功能:寫一個字符
        參數:zifu(字符)
        返回:無
        備注:無
        *************************************/
        void lcdprc(uchar zifu)
        {
          lcdwdat(zifu);
        }
        /*************************************
        函數名:lcdprs
        函數功能:寫字符串
        參數:zifu(字符)
        返回:無
        備注:無
        *************************************/
        void lcdprs(uchar *string)
        {
          while(*string)
          {lcdwdat(*string);string++;}
        }
        /*************************************
        函數名:lcdclear
        函數功能:清屏
        參數:無
        返回:無
        備注:無
        *************************************/
        void lcdclear(void)
        {
          lcdwcmd(0x01);
        }
        /*************************************
        函數名:lcdenter
        函數功能:軟復位
        參數:無
        返回:無
        備注:無
        *************************************/
        void lcdenter(void)
        {
          lcdwcmd(0x2);
        }
        /*************************************
        函數名:lcdsetxs
        函數功能:顯示設置
        參數:d(顯示)c(光標)b(閃爍)
        返回:無
        備注:d=1(開顯示),d=0(關顯示)
        c=1(顯示光標),c=0(不顯示光標)
        b=1(光標閃爍),b=0(不閃爍)
        *************************************/
        void lcdsetxs(bit D,bit C,bit B)
        {
          unsigned char order;
          order=0x8;
          if(D)
            order=order+0x4;
          if(C)
            order=order+0x2;
          if(B)
            order=order+0x1;
          lcdwcmd(order);
        }
        /*************************************
        函數名:lcdsetim
        函數功能:左右移動
        參數:I_D(地址指針), S(整行移動)
        返回:無
        備注:I_D=1(光標右移),I_D=0(光標左移)
        S=1(整行左右移),S=0(整行不動)
        *************************************/
        void lcdsetim(bit I_D,bit S)
        {
          unsigned char order;
          order=0x4;
          if(I_D)
            order=order+0x2;
          if(S)
            order=order+0x1;
          lcdwcmd(order);
        }

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

        /*************************************
        函數名:lcdinit
        函數功能:初始化
        參數:無
        返回:無
        備注:無
        *************************************/
        void lcdinit()
        {

          lcdwcmd(0x38);
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          lcdwcmd(0x38);
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          lcdwcmd(0x38);
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          lcdsetxs(1,0,0);//設置輸入模式,默認增量方式,畫面不動,光標向右邊移動
          lcdsetim(1,0);
          lcdwcmd(0x01);//清屏
        }

        /*************************************
        函數名:lcdsetxy
        函數功能:坐標設置
        參數:x(列數),y(行數)
        返回:無
        備注:配合lcdxyprc,lcdxyprs函數使用
        列數小于39,行數小于2
        *************************************/
        void lcdsetxy(uchar X,uchar Y)
        {
        uchar Address;
        if(X>39)
           X=39;
        if (Y == 0)
         {
          Address = 0x80 + X;
        }
        else
         {
         Address = 0xc0 + X;
         }
        lcdwcmd(Address);
        }



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 沙湾县| 垣曲县| 新乐市| 阳泉市| 红河县| 夏津县| 和政县| 呼玛县| 寿宁县| 乐陵市| 衡南县| 黄石市| 南平市| 安庆市| 从化市| 慈利县| 曲沃县| 喀喇沁旗| 南投县| 中超| 成都市| 金华市| 股票| 巧家县| 旌德县| 司法| 青田县| 平定县| 阳山县| 克拉玛依市| 靖宇县| 营山县| 新疆| 金沙县| 曲阳县| 吴江市| 徐汇区| 措勤县| 阿拉尔市| 台中县| 商洛市|