超聲波測距 C程序_第1頁
超聲波測距 C程序_第2頁
超聲波測距 C程序_第3頁
超聲波測距 C程序_第4頁
超聲波測距 C程序_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、超聲波測距 C程序本探頭是自帶晶振的那種,只需發(fā)出一個脈沖,探頭發(fā)出方波,等待回波 并計(jì)時,液晶顯示。能避免超出測量距離的死等待,請大家完善。/超聲波模塊程序#include <reg52.h> #include <intrins.h>   #define uchar unsigned char#define uint  unsigned intunsigned int time;unsigned int S,s_false;unsigned long num1;bit flag ;sbit Trig =P36;/定義引腳sbit

2、 Echo=P37;sbit lcdrs=P20;/命令數(shù)據(jù)sbit lcdrw=P21;/讀寫sbit lcde=P22;/能sbit led=P35;void delay(uint z)uint x,y;for(x=z;x>0;x-)         for(y=110;y>0;y-);/*void delay_20us() uchar a ;    for(a=0;a<100;a+);*/*void write_com(unsigned char com)    

3、0;   lcdrs=0;        P0=com;        delay(5);        lcde=1;        delay(5);        lcde=0;void write_data(unsigned char zifu)        lcdrs=1;        P0=z

4、ifu;        delay(5);        lcde=1;        delay(5);        lcde=0;void write_temp(uint t_emp)        uchar qian,bai,shi,ge;        qian=t_emp/1000;        bai

5、=(t_emp%1000)/100;        shi=(t_emp%100)/10;        ge=t_emp%10;        write_com(0x80);        write_data(0x30+qian);        delay(1);        write_data(0x30+bai);    &

6、#160;   delay(1);        write_data(0x30+shi);        delay(1);        write_data(0x30+ge);                delay(1);        delay(100);/*/void T0_time() interrupt 1   

7、60;              /T0中斷用來計(jì)數(shù)器溢出,超過測距范圍              flag=0; /中斷溢出標(biāo)志,失敗                 TH0=0;                 TL0=0; 

8、            TR0=0;                                /關(guān)閉計(jì)數(shù)  /*/void T1_timer() interrupt 3 /中斷        TH1=(65536-50000)/256;        TL1=(6

9、5536-50000)%256;        num1+;        if (num1=20)                        num1=0;                led=led;        void  StartModule

10、()              /啟動模塊            Trig=1;                                  /啟動一次模塊          

11、;_nop_();           _nop_();           _nop_();           _nop_();           _nop_();           _nop_();           _nop_

12、();           _nop_();           _nop_();           _nop_();           _nop_();           _nop_();           _nop_(); &#

13、160;         _nop_();           _nop_();           _nop_();           _nop_();          _nop_();           _nop_();   &#

14、160;       _nop_();           _nop_();          Trig=0;  /*/void Count(void)                 time=TH0*256+TL0;         TH0=0; 

15、;        TL0=0;                 S=(time*1.7)/100;     /算出來是CM                 if(S<8)|(S>=600)|flag=0) /超出測量范圍顯示“-”失敗        

16、0;                                   /                flag=1;                          

17、60;     s_false=1000;                                 write_com(0x80);                                write_data('e&

18、#39;);                                delay(5);        write_data('r');                                delay(5);

19、        write_data('r');                                delay(5);        write_data('o');                     

20、;           delay(5);        write_data('r');                                delay(5);                    

21、    /        write_temp(s_false);                                                          else    &

22、#160;                                              write_temp(S);                             &

23、#160;   /*/*/ void init()        lcde=0;        write_com(0x38);        write_com(0x0c);        write_com(0x06);        write_com(0x01);        lcdrw=0;/*void main() 

24、0;/        unsigned char TempCyc;        delay(500); /啟動等待,等LCM講入工作狀態(tài)        lcdrw=0;        init(); /LCM初始化        delay(500); /延時片刻(可不要)        while(1)       

25、;          TMOD=0x11;                   /設(shè)T0為方式1,GATE=1;         TH0=0;         TL0=0;                  &

26、#160;ET0=1;             /允許T0中斷         ET1=1;         TR1=1;         EA=1;   /開啟總中斷                 Trig=0;&#

27、160;                                                  Echo=0;        while(1)                 &

28、#160;     StartModule();                 flag=1;         /         while(!Echo);                /當(dāng)echo為零時等待                 while(!Echo)&&flag);   

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論