新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > HC-SR04超聲波測距模塊電路設計

        HC-SR04超聲波測距模塊電路設計

        作者: 時間:2016-11-27 來源:網絡 收藏
        超聲波測距模塊參數









        超聲波測距模塊內部電路圖

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



        超聲波測距模塊與51單片機連接電路圖


        51單片機C語言參考程序

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


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

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

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

        long distance;//距離
        uint set_d;//距離
        bit flag_csb_juli;//超聲波超出量程
        uintflag_time0;//用來保存定時器0的時候的

        uchar menu_1;//菜單設計的變量



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


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


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

        //
        void init_eeprom()////開始初始化保存的數據
        {
        read_eeprom();//讀出保存數據
        if(a_a != 2)//新的單片機初始單片機內問EEPOM
        {
        set_d = 50;
        a_a = 2;
        write_eeprom();//保存數據
        }
        }


        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 ==

        主站蜘蛛池模板: 于田县| 精河县| 张北县| 油尖旺区| 泰来县| 秀山| 广丰县| 图片| 泗阳县| 洪江市| 余庆县| 隆尧县| 廊坊市| 慈溪市| 磴口县| 洞头县| 黄冈市| 内乡县| 鞍山市| 抚州市| 长子县| 富川| 扶绥县| 乾安县| 平谷区| 上思县| 白山市| 宁南县| 五台县| 宁明县| 兴海县| 九台市| 辰溪县| 巴里| 临沂市| 武乡县| 樟树市| 河源市| 屏东市| 米泉市| 偏关县|