找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1549|回復: 1
收起左側(cè)

光敏電阻嵌套超聲波

[復制鏈接]
ID:471928 發(fā)表于 2019-5-27 22:20 | 顯示全部樓層 |閱讀模式
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
unsigned int  time=0;
unsigned int  timer=0;
unsigned char posit;
unsigned long S;
bit   flag =0;

sbit RX=P1^1;
sbit TX=P1^0;

sbit DOUT=P3^7;          //輸出
sbit CLK =P3^6;          //時鐘
sbit DIN =P3^4;          //輸入
sbit CS  =P3^5;          //片選
sbit led=P2^6;
uint temp;

void delayms(unsigned char ms)

{

unsigned char i;

while(ms--)

{

for(i = 0; i < 120; i++);

}

}

void delay(uint i)
{
        while(i--);       
}

void Conut()
        {
         time=TH0*256+TL0;
         TH0=0;
         TL0=0;
          
         S= (long)(time*0.17);     //算出來是CM
       
         
         }
       
void zd0() interrupt 1                  //T0中斷用來計數(shù)器溢出,超過測距范圍
  {
    flag=1;                                                         //中斷溢出標志
  }

void  zd3()  interrupt 3                  //T1中斷用來掃描數(shù)碼管和計800MS啟動模塊
  {

         TH1=0xf8;
         TL1=0x30;
         
         
         timer++;
         if(timer>=100)
         {
          timer=0;
          TX=1;
                                                 //800MS  啟動一次模塊
          
         
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          
          TX=0;

         }
  }

void SPI_Start(void)
{
        CLK = 0;
        CS  = 1;
        DIN = 1;
        CLK = 1;
        CS  = 0;               
}
void SPI_Write(uchar dat)
{
        uchar i;
        CLK = 0;
        for(i=0; i<8; i++)
        {
                DIN = dat >> 7;          //放置最高位
                dat <<= 1;
                CLK = 0;                        //上升沿放置數(shù)據(jù)

                CLK = 1;

        }
}
uint SPI_Read(void)
{
        uint i, dat=0;
        CLK = 0;
        for(i=0; i<12; i++)                //接收12位數(shù)據(jù)
        {
                dat <<= 1;

                CLK = 1;
                CLK = 0;

                dat |= DOUT;

        }
        return dat;       
}
uint Read_AD_Data(uchar cmd)
{
        uchar i;
        uint AD_Value;
        CLK = 0;
        CS  = 0;
        SPI_Write(cmd);
        for(i=6; i>0; i--);         //延時等待轉(zhuǎn)換結(jié)果
        CLK = 1;          //發(fā)送一個時鐘周期,清除BUSY
        _nop_();
        _nop_();
        CLK = 0;
        _nop_();
        _nop_();
        AD_Value=SPI_Read();
        CS = 1;
        return AD_Value;       
}
void datapros()
{
        static uchar i;
       
        SPI_Write(2);

        Read_AD_Data(1);
        if(i==2)
        {       
                i=0;
                temp = Read_AD_Data(0xA4);       
       
        }
        i++;
               
}



void main()
{
        SPI_Start();
    TMOD=0x11;                  
        TH0=0;
        TL0=0;         
        TH1=0xf8;                   //2MS定時
        TL1=0x30;
        ET0=1;             //允許T0中斷
        ET1=1;                           //允許T1中斷
        TR1=1;                           //開啟定時器
        EA=1;                           //開啟總中斷

while(1)
{

  datapros();
  if(temp>3600)
  {
     delayms(10);
         while(!RX);                //當RX為零時等待
         TR0=1;                            //開啟計數(shù)
         while(RX);                        //當RX為1計數(shù)并等待
         TR0=0;
         Conut();
         if((S>=4000)||flag==1)
         {         
          flag=0;
          led=1;
         }
         else
         {
          led=0;
          delay(60000);
        }
        }
        else
        {
                led=1;
        }         
        }          
}

       









回復

使用道具 舉報

ID:1 發(fā)表于 2019-5-28 05:05 | 顯示全部樓層
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

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