<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 51單片機(jī)加HC—SR04超聲波測距儀用LCD1602顯示

          51單片機(jī)加HC—SR04超聲波測距儀用LCD1602顯示

          作者: 時間:2016-12-02 來源:網(wǎng)絡(luò) 收藏
          #include

          #include
          #define uchar unsigned char
          #define uint unsigned int
          sbit lcden=P1^2;
          sbit lcdrs=P1^0;
          sbit lcdrw=P1^1;
          sbit RX=P2^1;
          sbit TX=P2^0;

          uint time=0;
          unsignedlongS=0;
          bitflag=0;
          uchar disdat[4]={ 0,0,0,0,};
          void delay(uint z) //延時子程序
          {
          uint x,y;
          for(x=z;x>0;x--)
          for(y=110;y>0;y--);
          }
          void write_com(uchar com)//定義一個帶參數(shù)的寫命令子程序
          {
          lcdrs=0; //1602的rs為0時,接收命令,為1時接收數(shù)據(jù)
          P0=com;//把void write_com(uchar com)中的COM中的數(shù)據(jù)給P0口
          delay(5);
          lcden=1;
          delay(5);
          lcden=0;
          delay(5);
          }
          void write_shu(uchar shu)//定義一個帶參數(shù)的寫數(shù)據(jù)子程序
          {
          lcdrs=1; //1602的rs為0時,接收命令,為1時接收數(shù)據(jù)
          P0=shu;//把void write_shu(uchar shu)中的COM中的數(shù)據(jù)給P0口
          delay(5);
          lcden=1;
          delay(5);
          lcden=0;
          delay(5);
          }
          void write_1602(uchar add,uchar dat)
          {
          write_com(0x80+0x40+add);
          write_shu(dat);
          }

          本文引用地址:http://www.ex-cimer.com/article/201612/324677.htm

          void zifuchuan(uchar *ch)
          {
          while(*ch!=0)
          write_shu(*ch++);
          delay(20);
          }
          void init()//定義一個初始化子程序
          {
          lcden=0;
          lcdrw=0;
          write_com(0x38);//調(diào)用 write_com子程序并把0x38賦給P0口,顯示模式打開
          delay(2);
          write_com(0x0c);//調(diào)用 write_com子程序并把“開顯示,顯示光標(biāo),光標(biāo)不閃爍”指令碼賦給P0口
          write_com(0x06);//調(diào)用 write_com子程序并把“地址指針加1,整屏不移動”指令碼賦給P0口
          write_com(0x80);//數(shù)據(jù)指針初始化,讓指針指向最左端,顯示從第一行開始
          write_com(0x01);//調(diào)用 write_com子程序并把"清零指"令碼賦給P0口
          zifuchuan("HHSY Zhoujiaoshi");

          }

          /********************************************************/
          void Conut()
          {
          time=TH0*256+TL0;
          TH0=0;
          TL0=0;

          //S=(time*1.7)/100;
          S=time/58; //算出來是CM
          disdat[0]=S%1000/100;
          disdat[1]=S%1000%100/10;
          disdat[2]=S%1000%10 %10;
          write_1602(1, disdat[0]+0x30);
          write_1602(2, disdat[1]+0x30);
          write_1602(3, disdat[2]+0x30);
          write_1602(4,.);
          write_1602(5, disdat[3]+0x30);
          write_1602(6, C);
          write_1602(7, m);

          }
          /********************************************************/
          void zd0() interrupt 1 //T0中斷用來計數(shù)器溢出,超過測距范圍
          {
          flag=1;//中斷溢出標(biāo)志
          }
          /********************************************************/
          void StartModule() //啟動模塊
          {
          TX=1; //啟動一次模塊
          _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
          _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
          _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
          _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
          _nop_();
          TX=0;
          }
          /*********************************************************/
          void main(void)
          {
          delay(400); //啟動等待,等LCD講入工作狀態(tài)
          init(); //LCD初始化
          TMOD=0x01;//設(shè)T0為方式1,GATE=1;
          TH0=0;
          TL0=0;
          ET0=1; //允許T0中斷
          EA=1;//開啟總中斷

          while(1)
          {
          StartModule();
          while(!RX); //當(dāng)RX為零時等待
          TR0=1; //開啟計數(shù)
          while(RX); //當(dāng)RX為1計數(shù)并等待
          TR0=0; //關(guān)閉計數(shù)
          Conut(); //計算
          delay(20);

          }
          }



          評論


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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();