新聞中心

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

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

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









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

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



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


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

        #include //調(diào)用單片機(jī)頭文件
        #define uchar unsigned char//無符號字符型宏定義變量范圍0~255
        #define uintunsigned int//無符號整型 宏定義變量范圍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讀寫引腳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;//用來保存定時(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()////開始初始化保存的數(shù)據(jù)
        {
        read_eeprom();//讀出保存數(shù)據(jù)
        if(a_a != 2)//新的單片機(jī)初始單片機(jī)內(nèi)問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 ==

        主站蜘蛛池模板: 祥云县| 河南省| 石家庄市| 郓城县| 姜堰市| 定远县| 游戏| 霍林郭勒市| 文水县| 德庆县| 通江县| 沿河| 扬中市| 大丰市| 广昌县| 泰和县| 泗水县| 和平县| 洛阳市| 陇西县| 永靖县| 米易县| 广东省| 南召县| 宝丰县| 建宁县| 巩留县| 韶山市| 酉阳| 鹿邑县| 三江| 金堂县| 遵化市| 成都市| 若羌县| 嘉荫县| 巢湖市| 开远市| 陕西省| 平陆县| 抚顺县|