色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > HC-SR04超聲波測(cè)距模塊電路設(shè)計(jì)

          HC-SR04超聲波測(cè)距模塊電路設(shè)計(jì)

          作者: 時(shí)間:2016-11-27 來(lái)源:網(wǎng)絡(luò) 收藏
          超聲波測(cè)距模塊參數(shù)









          超聲波測(cè)距模塊內(nèi)部電路圖

          本文引用地址:http://cafeforensic.com/article/201611/322501.htm



          超聲波測(cè)距模塊與51單片機(jī)連接電路圖


          51單片機(jī)C語(yǔ)言參考程序

          #include //調(diào)用單片機(jī)頭文件
          #define uchar unsigned char//無(wú)符號(hào)字符型宏定義變量范圍0~255
          #define uintunsigned int//無(wú)符號(hào)整型 宏定義變量范圍0~65535
          #include
          #include "eeprom52.h"


          sbit c_send= P3^3;//超聲波發(fā)射
          sbit c_recive = P3^2;//超聲波接收

          //這三個(gè)引腳參考資料
          sbit rs=P1^0;//1602數(shù)據(jù)/命令選擇引腳 H:數(shù)據(jù)L:命令
          sbit rw=P1^1;//1602讀寫(xiě)引腳H:數(shù)據(jù)寄存器L:指令寄存器
          sbit e =P1^2;//1602使能引腳下降沿觸發(fā)
          uchar code table_num[]="0123456789abcdefg";

          sbit beep = P1^4;//蜂鳴器IO口定義
          bit flag_300ms ;

          long distance;//距離
          uint set_d;//距離
          bit flag_csb_juli;//超聲波超出量程
          uintflag_time0;//用來(lái)保存定時(shí)器0的時(shí)候的

          uchar menu_1;//菜單設(shè)計(jì)的變量



          void delay_1ms(uint q)
          {
          uint i,j;
          for(i=0;i
          for(j=0;j<120;j++);
          }


          void write_eeprom()//保存數(shù)據(jù)
          {
          SectorErase(0x2000);
          byte_write(0x2000, set_d % 256);
          byte_write(0x2001, set_d / 256);
          byte_write(0x2058, a_a);
          }


          void read_eeprom()//讀出保存數(shù)據(jù)
          {
          set_d= byte_read(0x2001);
          set_d <<= 8;
          set_d|= byte_read(0x2000);
          a_a= byte_read(0x2058);
          }

          //
          void init_eeprom()////開(kāi)始初始化保存的數(shù)據(jù)
          {
          read_eeprom();//讀出保存數(shù)據(jù)
          if(a_a != 2)//新的單片機(jī)初始單片機(jī)內(nèi)問(wèn)EEPOM
          {
          set_d = 50;
          a_a = 2;
          write_eeprom();//保存數(shù)據(jù)
          }
          }


          void delay_uint(uint q)
          {
          while(q--);
          }


          void write_com(uchar com)
          {
          e=0;
          rs=0;
          rw=0;
          P0=com;
          delay_uint(25);
          e=1;
          delay_uint(100);
          e=0;
          }


          void write_data(uchar dat)
          {
          e=0;
          rs=1;
          rw=0;
          P0=dat;
          delay_uint(25);
          e=1;
          delay_uint(100);
          e=0;
          }


          void write_string(uchar hang,uchar add,uchar *p)
          {
          if(hang==1)
          write_com(0x80+add);
          else
          write_com(0x80+0x40+add);
          while(1)
          {
          if(*p ==