新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 51單片機 HCSR04超聲波測距儀 基礎代碼

        51單片機 HCSR04超聲波測距儀 基礎代碼

        作者: 時間:2016-11-20 來源:網絡 收藏
        >_<:超聲波測距儀模塊:

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

        >_<:51單片機,11.0592MHz晶振,將采集數據發送到串口的基礎例子:

        >_<:代碼:

        1 /***********************************************************************************************************/2 //HC-SR04 超聲波測距模塊 DEMO 程序3 //晶振:11。05924 //接線:模塊TRIG接 P1.2  ECH0 接P1.15 //串口波特率96006 /***********************************************************************************************************/      7 #include   8 #include   9 #include   10 11 #define uchar unsigned  char12 #define uint  unsigned   int  13 #define  RX  P1_114 #define  TX  P1_215 16 17 unsigned int  time=0;18 unsigned int  timer=0;19 float         S=0;20 bit           flag =0;21 22 23 /********************************************************/24 void Conut(void)25 {26     time=TH0*256+TL0;27     TH0=0;28     TL0=0;29     S=(time*1.87)/100;     //算出來是CM30     if(flag==1)               //超出測量31     {32         flag=0;33         printf("--n"); 34     }    35     printf("S=%fn",S); 36 }37 /********************************************************/ 38 void delayms(unsigned int ms)39 {40     unsigned char i=100,j;41     for(;ms;ms--)42     {43         while(--i)44         {45             j=10;46             while(--j);47         }48     }49 }50 /********************************************************/51 void zd0() interrupt 1          //T0中斷用來計數器溢出,超過測距范圍52 {53     flag=1;                     //中斷溢出標志54 }55 /********************************************************/56 void  StartModule()          //T1中斷用來掃描數碼管和計800MS啟動模塊57 {58     TX=1;                     //800MS  啟動一次模塊59     _nop_(); 60     _nop_(); 61     _nop_(); 62     _nop_(); 63     _nop_(); 64     _nop_(); 65     _nop_(); 66     _nop_(); 67     _nop_(); 68     _nop_(); 69     _nop_(); 70     _nop_(); 71     _nop_(); 72     _nop_(); 73     _nop_(); 74     _nop_(); 75     _nop_();76     _nop_(); 77     _nop_(); 78     _nop_(); 79     _nop_();80     TX=0;81 }82 /********************************************************/83 void main(void)84 {  85     TMOD=0x21;                   //設T0為方式1,GATE=1;86     SCON=0x50;87     TH1=0xFD;88     TL1=0xFD;89     TH0=0;90     TL0=0; 91     TR0=1;  92     ET0=1;                     //允許T0中斷93     TR1=1;                       //開啟定時器94     TI=1;95     96     EA=1;                       //開啟總中斷97     98     99     while(1)100     {101         StartModule();102         while(!RX);            //當RX為零時等待103         TR0=1;                //開啟計數104         while(RX);            //當RX為1計數并等待105         TR0=0;                //關閉計數106         Conut();            //計算107         delayms(10);        //100MS108     }109 }              



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 册亨县| 永泰县| 临泉县| 苗栗县| 岳阳市| 朔州市| 塔河县| 南陵县| 荆门市| 龙井市| 北宁市| 容城县| 张家口市| 唐山市| 苗栗市| 博湖县| 恩平市| 安达市| 陵川县| 永善县| 扶沟县| 崇明县| 丰都县| 灵丘县| 如东县| 定安县| 仲巴县| 汤原县| 黄石市| 得荣县| 巴塘县| 墨竹工卡县| 新干县| 潼南县| 肇庆市| 清远市| 常德市| 增城市| 龙泉市| 怀仁县| 平凉市|