久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2958|回復: 3
打印 上一主題 下一主題
收起左側

超聲波測距代碼,調了一下午都沒能正確顯示距離

[復制鏈接]
跳轉到指定樓層
樓主
ID:206424 發表于 2017-8-11 20:21 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
這個是我剛剛寫的一個超聲波測距的代碼,麻煩大佬幫忙看看是哪出錯了啊,調了一下午都沒能正確顯示距離,若有大佬幫忙解決,小的定當感激不盡

#include <reg52.h>
#define uchar unsigned char
#define uint  unsigned int
int time;
int succeed_flag;
uchar timeL;
uchar timeH;
sbit Trig =P1^0;
sbit Echo =P3^2;
sbit rs   =P2^0;
sbit lcden=P2^2;
sbit rw   =P2^1;
uchar table[]={
0x30,0x31,0x32,0x33,0x34,0x35,
0x36,0x37,0x38,0x39,0x3a};
uchar code *table1[]={"x zhou:","y zhou:"};
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 lcdwrdata(uchar dat)     
{
rs=1;
lcden=1;
P0=dat;
delay(6);
lcden=0;
delay(6);
}
void lcdwrcom(uchar cdat)  
{
    rs=0;
lcden=1;
    P0=cdat;
delay(6);
lcden=0;
delay(6);
}
void lcd_init()
{
lcdwrcom(0x38);
lcdwrcom(0x0c);
lcdwrcom(0x06);
lcdwrcom(0x01);
}

void display(uint temp)
{
    uchar ge,shi,bai;
    bai=temp/100;
    shi=(temp%100)/10;  
    ge=temp%10;
    rw=0;
delay(200);
lcden=0;
lcd_init();
lcdwrcom(0x00|0x80);
    while(*table1[0]!='\0')
{
lcdwrdata(*table1[0]++);
delay(100);
}
lcdwrcom(0x00|0xc0);
while(*table1[1]!='\0')
{
lcdwrdata(*table1[1]++);
delay(100);
}
    lcdwrcom(0x08|0xc0);
    lcdwrdata(table[ge]);
    delay(1);
    lcdwrcom(0x09|0xc0);
    lcdwrdata(table[shi]);
    delay(1);
    lcdwrcom(0x0a|0xc0);
    lcdwrdata(table[bai]);
    delay(1);
}
void main()  
{
    uint distance;
    Trig=0;      
    EA=1;      
    TMOD=0x10;   
    while(1)        
    {
        EA=0;         
        Trig=1;        
        delay_20us();   
        Trig=0;         
        while(Echo==0);
        succeed_flag=0;
        EA=1;
        EX0=1;         
        TH1=0;         
        TL1=0;         
        TF1=0;         
        TR1=1;         
        delay(20);
        TR1=0;         
        EX0=0;        
       if(succeed_flag==1)
       {   
          time=timeH*256+timeL;
          distance=time*0.0172;  
       }                        
      if(succeed_flag==0)
       {
          distance=0;                  
        }
       display(distance);              
    }
}
void exter()  interrupt 0  
{  
     EX0=0;        
     timeH =TH1;   
     timeL =TL1;   
     succeed_flag=1;
}
void timer1() interrupt 3
    {
         TH1=0;
         TL1=0;
     }

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:82765 發表于 2017-8-12 12:23 | 只看該作者
提示: 作者被禁止或刪除 內容自動屏蔽
回復

使用道具 舉報

板凳
ID:227559 發表于 2017-8-14 14:05 | 只看該作者
建議使用US-100超聲波模塊,支持串口通信,非常好用
回復

使用道具 舉報

地板
ID:203572 發表于 2017-8-16 11:26 | 只看該作者

給你一個我們今年電做P題的超聲波測液位的程序,這個可以直接測出液位,我們模塊是用HC-SR04,你也可以用US-100直接把跳線帽抜了用電平觸發模式,因為能力有限不會用串口模式
#ifndef __CSBRABGE_H__

#define __CSBRABGE_H__
/*連接線圖:
---------------------------------------------------
| CSB-----51  | CSB-----51  | CSB-----51     |
| -------------------------------------------------------------- |
| Trig-----P3.6 | Echo-----P3.7  | VCC--5v   GND |
---------------------------------------------------*/
#define uchar unsigned char
#define uint unsigned int
/******************接線引腳定義**************************/
sbit csb_t=P3^6;
sbit csb_r=P3^7;
/******************測量范圍限制 *****************************/
#define MAX_AREA 25000
/*****************************************************
函 數 名:void delay_csb(uint t)
功    能:延時
說    明:
入口參數:無
返 回 值:無
*****************************************************/
void delay_csb(uint t)
{
while(t--);
}
/*****************************************************
函 數 名:uint  CsbRange(void)
功    能:測距
說    明:占用了定時器0
入口參數:無
返 回 值:返回S 測距結果
*****************************************************/
uint  CsbRange(void)
{
uint time,s;
TMOD=0x01;
TH0=0;
TL0=0;
csb_t=1;
delay_csb(10);
csb_t=0;
while(!csb_r);
TR0=1;
while(csb_r);
TR0=0;
time=TH0*256+TL0;
TH0=0;
TL0=0;
s=time*0.17;//測出的實際值
s=-1.1371*s + 562.62;//算出的液位值
return s;

}
#endif
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一区二区三区欧美 | 欧一区| 草草在线观看 | 中文字幕一级毛片视频 | 一区二区免费在线 | 黄色大片免费播放 | 亚洲视频www | 狠狠操电影 | 欧美狠狠操 | 亚洲视频免费 | 国产 91 视频 | 久久一区二区视频 | 都市激情亚洲 | 久久av一区二区三区 | 精品欧美一区二区三区久久久 | 一级片免费视频 | 1000部精品久久久久久久久 | 欧美成人二区 | 国产成人精品一区二区三区网站观看 | 性高朝久久久久久久3小时 av一区二区三区四区 | 成人国产精品色哟哟 | 91精品国产综合久久久久蜜臀 | 色香蕉在线 | 久久高清亚洲 | 国产精品久久国产精品 | 91精品亚洲 | 国产乱码精品一区二区三区五月婷 | 欧美一级做a爰片免费视频 国产美女特级嫩嫩嫩bbb片 | 欧美一区二区三区小说 | 国产精品欧美一区喷水 | 你懂的免费在线 | 超碰伊人久久 | 亚洲自拍偷拍欧美 | 在线观看亚洲欧美 | 成人a在线观看 | 免费一级网站 | 91精品国产91久久久 | 国产精品久久久久久久久久久久久 | 日韩欧美在线观看 | 亚洲日本视频 | 99热视 |