找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1800|回复: 0
打印 上一主题 下一主题
收起左侧

求讲解或者画一下这个的工作流程图给我,NRF905的发射段

[复制链接]
跳转到指定楼层
楼主
ID:700033 发表于 2020-3-7 21:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
3黑币
#include<reg52.h>
#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;
                        }         
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表