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

QQ登錄

只需一步,快速開始

搜索
查看: 2712|回復(fù): 0
收起左側(cè)

基于at89s52 LED超聲波測(cè)距···

[復(fù)制鏈接]
ID:71259 發(fā)表于 2014-12-29 01:15 | 顯示全部樓層 |閱讀模式
#include<reg52.h>
   
sbit TX =P3^6;   //信號(hào)發(fā)送端
sbit RX =P3^7;   //信號(hào)接收端
unsigned long S;
unsigned int time;
unsigned char qian,bai,shi,ge;
code unsigned char tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};  //數(shù)碼管值
void delay(unsigned int i)   //定義一個(gè)小延時(shí),哈哈
{
while(--i);
}
void sent()      //定義一個(gè)發(fā)送
{  
TX=1;       //發(fā)送端發(fā)送信號(hào)
delay(25);      //給一個(gè)大于10US的信號(hào)
TX=0;       //關(guān)閉發(fā)送端信號(hào)
}
void Count()
{
time=TH0*256+TL0;    //計(jì)算時(shí)間
TH0=0;       //復(fù)位
TL0=0;       //復(fù)位
S=(time*1.7)/10;    //計(jì)算距離,單位MM
if(S<5000)
{
  qian=tab[S/1000];    //定義第四位
  bai=tab[S/100%10];    //定義第三位
  shi=tab[S/10%10];    //定義第二位
  ge=tab[S%10];     //定義第一位
  P1=ge;     //送出顯示
  P0=3;
  delay(300);
  P1=shi;
  P0=2;
  delay(300);
  P1=bai;
  P0=1;
  delay(300);
  P1=qian;
  P0=0;
  delay(300);
}
}
void receive()     //定義一個(gè)接收
{
TR0=1;      //定時(shí)器0開
while(RX);     //持續(xù)延時(shí)RX為高電平的時(shí)間
TR0=0;      //定時(shí)器0關(guān)
Count();     //調(diào)用Count
}
main()
{
int lv;
EA=1;          //總中斷開
ET0=1;       //定時(shí)器中斷0開
ET1=1;       //定時(shí)器中斷1開
TMOD=0X11;      //定義TO,T1由TCON控制,工作方式為方式1
TH0=0;
TL0=0;
TH1=0;
TL1=0;
while(1)
{
  RX=1;      //給RX一個(gè)高電平
  sent();      //給發(fā)送端一個(gè)>10us的信號(hào)
  for(lv=2000;lv>0;lv--)
  {
   if(RX==1)
   {
    receive();   //調(diào)用RECEIVE
   }
  }
}
}

//寫了我一天的時(shí)間,唉,效率還是太低···努力,努力···

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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