找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 5351|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

51hei板,超聲波測(cè)距

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:42637 發(fā)表于 2012-7-24 14:42 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
利用51hei預(yù)留接口,用US-100超聲波模塊,1602顯示,精度還行。

#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
#define lcd P0
sbit trig=P1^0;
sbit echo=P1^1;
sbit en=P3^4;
sbit rw=P2^7;
sbit rs=P3^5;
sbit busybit=P0^7;
sbit P24=P2^4;
sbit P26=P2^6;
sbit P27=P2^7;
bit test_flag;
uchar tab[]="0123456789";
void wr_com(uchar com,busyflag);

void delay(uint temp)
{
 while(temp--);
 //1620-14.99ms
 //520-5ms
 //5-450ns
}
void lcd_init(void)
{
 delay(1650);//time
 wr_com(0x38,0);
 delay(550);//time
 wr_com(0x38,0);
 delay(550);
 wr_com(0x38,0);
 wr_com(0x38,1);
 wr_com(0x08,1);
 wr_com(0x01,1);
 wr_com(0x06,1);
 wr_com(0x0c,1);
}
void init(void)
{
 P24=0;
 P26=1;
 P0=0x00;
 P26=0;
 P27=1;
 P0=0xff;
 P27=0;
 TMOD=0x01;
 TH0=0;
 TL0=0;
 TR0=0;//
 IT0=1;
 EX0=1;
 EA=1;
 lcd_init();
}
void testbusy(void)//read com
{
 busybit=1;
 en=0;
 rs=0;
 rw=1;
 delay(5);
 en=1;
 delay(5);
 while (busybit);
 en=0;
}
void wr_dat(uchar dat,busyflag)
{
 if(busyflag)
 testbusy();
 en=0;
 rs=1;
 rw=0;
 lcd=dat;
 delay(5);
 en=1;
 delay(5);
 en=0;
}
void wr_com(uchar com,busyflag)
{
 if(busyflag)
 testbusy();
 en=0;
 rs=0;
 rw=0;
 lcd=com;
 delay(5);
 en=1;
 delay(5);
 en=0;
}
uint test_distance(void)
{
 uint value;
 TH0=0;
 TL0=0;
 trig=0;
 _nop_();
 trig=1;
 _nop_();_nop_();_nop_();_nop_();_nop_();
 _nop_();_nop_();_nop_();_nop_();_nop_();
 trig=0;
 while(!echo);
 TR0=1;
 while(echo);
 TR0=0;
 value=TH0*256+TL0;
 return value;
}
void int0_srv() interrupt 0
{
 test_flag=1;
}
void main()
{
 uint value;
 uint a,b,c,d; 
 init();
 while(1)
 {
  if(test_flag)
  {
   test_flag=0;  
   EA=0;
   value=test_distance();
   a=value/100;
   b=a/2;
   c=b*340;
   d=c/10;
   a=d/1000;
   b=(d%1000)/100;
   c=((d%1000)%100)/10;
   d=d%10;
   EA=1;
  }
  wr_com(0x80,1);
  delay(5);
  wr_dat(tab[a],1);
  delay(5);
  wr_dat('.',1);
  delay(5);
    wr_dat(tab,1);
  delay(5);
   wr_dat(tab[c],1);
  delay(5);
  wr_dat(tab[d],1);
  delay(5);
  wr_dat('m',1);
  delay(5);
 }
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:1 發(fā)表于 2012-7-24 14:47 | 只看該作者

有圖就更完美了哦

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表