欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于at89s52 LED超聲波測距···

[復制鏈接]
跳轉到指定樓層
樓主
ID:71259 發表于 2014-12-29 01:15 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include<reg52.h>
   
sbit TX =P3^6;   //信號發送端
sbit RX =P3^7;   //信號接收端
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};  //數碼管值
void delay(unsigned int i)   //定義一個小延時,哈哈
{
while(--i);
}
void sent()      //定義一個發送
{  
TX=1;       //發送端發送信號
delay(25);      //給一個大于10US的信號
TX=0;       //關閉發送端信號
}
void Count()
{
time=TH0*256+TL0;    //計算時間
TH0=0;       //復位
TL0=0;       //復位
S=(time*1.7)/10;    //計算距離,單位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()     //定義一個接收
{
TR0=1;      //定時器0開
while(RX);     //持續延時RX為高電平的時間
TR0=0;      //定時器0關
Count();     //調用Count
}
main()
{
int lv;
EA=1;          //總中斷開
ET0=1;       //定時器中斷0開
ET1=1;       //定時器中斷1開
TMOD=0X11;      //定義TO,T1由TCON控制,工作方式為方式1
TH0=0;
TL0=0;
TH1=0;
TL1=0;
while(1)
{
  RX=1;      //給RX一個高電平
  sent();      //給發送端一個>10us的信號
  for(lv=2000;lv>0;lv--)
  {
   if(RX==1)
   {
    receive();   //調用RECEIVE
   }
  }
}
}

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

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表