lv122333 2020-03-07 22:21 采纳率: 0%
浏览 204

求讲解流程图细致点啊

#include
#define uint unsigned int
#define uchar unsigned char

sbit DQ1=P2^0; //传感器A定义使用单片机P20端口
sbit DQ2=P2^1; //传感器B定义使用单片机P21端口
sbit DQ3=P2^2; //传感器C定义使用单片机P22端口
sbit DQ4=P2^3; //传感器D定义使用单片机P23端口

sbit DQ5=P2^4; //传感器E定义使用单片机P24端口

unsigned char car_num=0; //车位数值

unsigned char Set_car_H=5; //设置车数数值
signed char s_car_num=0; //剩余车位数值

uchar flag1,flag2; //设置 2 个标志位
uchar flag3,flag4; //设置 2 个标志位
uchar flag5,flag6; //设置 2 个标志位
uchar flag7,flag8; //设置 2 个标志位
uchar flag9,flag10; //设置 2 个标志位

uchar N1=0,N11=0; //有车或者没有标志
uchar N2=0,N22=0;
uchar N3=0,N33=0;
uchar N4=0,N44=0;
uchar N5=0,N55=0;

#include"nrf905.c"

void jishu();
void campare_display();

void delay_us(uint z) //延时
{
uint a,b;
for(a=z;z>0;z--)
for(b=110;b>0;b--);
}
///////////////////////////////////////////////////////////////

/******************主函数************************/
void main()
{

   uchar num;
   nRF905Init();   //NRF905的初始化
   Config905();    //配置无线模块NRF905
   TxBuf[0]=1;    //模块
    while(1)
    {                                                                                                                                                                                                                 
            jishu();  //车位统计
            campare_display();     //车位号识别

            TxBuf[1]=car_num/10;//十位
            TxBuf[2]=car_num%10;//个位                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
            num++;
            if(num==2){      //模块
                    num=0;
                    TX(); //发送
            }                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     

    }            

}
void campare_display() //比较
{

       if((N1==1)||(N2==1)||(N3==1)||(N4==1)||(N5==1)) {
               if(N1==1){
                       TxBuf[3]='A'; 

                  }
                else{
                       TxBuf[3]=0;  
                }
                if(N2==1){

                        TxBuf[4]='B';

                } else{

                        TxBuf[4]=0; 
                }
                if(N3==1){

                        TxBuf[5]='C';   
                } else{

                        TxBuf[5]=0; 
                }
                if(N5==1){

                        TxBuf[6]='D';       
                } else{

                        TxBuf[6]=0;
                }
                if(N4==1){

                        TxBuf[7]='E';       
                } else{

                        TxBuf[7]=0;
                }                   
          }  else{

// Lcd_ShowSring(1,0," ");

            }

}

//****************************************************
void jishu() //统计车位数函数
{

if(DQ1==0)                //车位1
{
    delay_us(5);     //类似于去抖
    if(DQ1==0)
    {
            flag1=1; //标志位flag1

    }
}

     if(flag1==1)//  flag1=1 传感器A 红外对管检测到 说明有车
      {
                delay_us(5);
                if(N1==0){                      
                  car_num++;     //车位数值加1
                  N1=1;
                 }                    //
                flag1=0;      //清标志位
                flag2=1;      //启动标志
                N11=0;

     }
     if(DQ1==1&&flag2==1) {      //否则检测不到车

          if(N11==0){                       
                     car_num--;     //车位数值减1
                     TxBuf[3]=0;
                      N11=1;
                 }

               N1=0;
        }

////////////////////////////////////////////////////////////////////////////////////////////////////////////

if(DQ2==0) //车位2
{
delay_us(5); //类似于去抖
if(DQ2==0)
{
flag3=1; ////标志位flag3

    }

}

     if(flag3==1)//  传感器B  红外对管检测到 说明有车
      {
                delay_us(5);
                if(N2==0){                      
                  car_num++;         //车位数值加1
                  N2=1;
                 }                   
                flag3=0;      //清空标志位
                flag4=1;       //启动标志
                N22=0;

     }
     if(DQ2==1&&flag4==1) {      //否则检测不到车

          if(N22==0){                       
                     car_num--;         //车位数值减1
                     TxBuf[4]=0;
                      N22=1;
                 }

               N2=0;
        }   

/////////////////////////////////////////////////////////////////////////////////////////////////////////
if(DQ3==0) //车位3
{
delay_us(5); //类似于去抖
if(DQ3==0)
{
flag5=1; ////标志位flag5

    }

}

     if(flag5==1)//  传感器C 红外对管检测到 说明有车
      {
                delay_us(5);
                if(N3==0){                      
                  car_num++;         //车位数值加1
                  N3=1;
                 }                    //
                flag5=0;      //清空标志位
                flag6=1;      //启动标志
                N33=0;

     }
     if(DQ3==1&&flag6==1) {       //否则检测不到车

          if(N33==0){                       
                     car_num--;
                     TxBuf[5]=0;    //车位数值减1
                      N33=1;
                 }

               N3=0;
        }   

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(DQ4==0) //车位4
{
delay_us(5); //类似于去抖
if(DQ4==0)
{
flag7=1; ////标志位flag7

    }

}

     if(flag7==1)//  传感器D   红外对管检测到 说明有车
      {
                delay_us(5);
                if(N4==0){                      
                  car_num++;         //车位数值加1
                  N4=1;
                 }                    //
                flag7=0;      //清空标志位
                flag8=1;       //启动标志
                N44=0;

     }
     if(DQ4==1&&flag8==1) {      //否则检测不到车

          if(N44==0){                       
                     car_num--;     //车位数值减1
                     TxBuf[7]=0;
                      N44=1;
                 }

               N4=0;
        }

///////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(DQ5==0) //车位5
{
delay_us(5); //类似于去抖
if(DQ5==0)
{
flag9=1; //

    }

}       
     if(flag9==1)//  传感器E   红外对管检测到 说明有车
      {
                delay_us(5);
                if(N5==0){                      
                  car_num++;
                  N5=1;
                 }                    //
                flag9=0;      //清空标志位
                flag10=1;      //启动标志
                N55=0;

     }
     if(DQ5==1&&flag10==1) {  //否则检测不到车

          if(N55==0){                       
                     car_num--; //车位数值减1
                     TxBuf[6]=0;
                      N55=1;
                 }

               N5=0;
        }    

}

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-20 17:50
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

悬赏问题

  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制