上海婦科疾病研究所 上海女性不孕醫(yī)院 上海引產(chǎn)醫(yī)院 無痛引產(chǎn)痛不痛 上海人流醫(yī)院 白癜風治療醫(yī)院 上海小兒腦癱醫(yī)院 上海女子醫(yī)院
豆豆小说阅读网,欢乐颂小说结局是什么,欢乐颂第二季

国产精品无码毛片AV_亚洲毛片精品在线_全球黄色短视频在线免费观看_亚洲一区二区爱av_成年人免费观看网址_欧美美女性爱喷水网址_亚洲毛片av无码不卡_国产无码视频在线观看_高清国语自产拍在线播放_女人午夜免费黄片

用戶名: 密碼:
主頁 設為首頁 加入收藏
      產(chǎn)品中心       技術(shù)中心       下載中心        社區(qū)新聞        誠聘英才       大學計劃        關(guān)于我們       技術(shù)論壇
  您的當前位置:ADSP開源社區(qū) >> 技術(shù)中心 >> Blackfin 今天是:
技術(shù)中心  
SigmaDSP
SHARC
A2B音頻總線
Blackfin
ADI操作系統(tǒng)
ADSP-218X
TigerSAHRC
ADI DSP仿真器
產(chǎn)品導航
ADI DSP仿真器
SigmaDSP開發(fā)板
ADI A2B總線開發(fā)板
SHARC DSP開發(fā)板
銷售網(wǎng)絡
Blackfin  
基于ADI的Blackfin 的大型貨車超載超速實時檢測系統(tǒng)-稱重模塊設計
[ 作者: ] [ 來源:ADSP開源社區(qū) ] [ 發(fā)布時間:2011-11-22 ]
測重模塊有硬件和軟件部分,硬件部分負責采集車體重量數(shù)據(jù)和車體傾角數(shù)據(jù),軟件部分負責對數(shù)據(jù)進行預處理和處理,硬件部分這里不多介紹,主要說軟件部分,對預處理數(shù)據(jù)的處理流程如下:

  圖1 數(shù)據(jù)處理流程

(1)預處理程序:

asm("INT OFF");       //A0口發(fā)送脈沖,A1口接收DOUT的數(shù)據(jù),A2是轉(zhuǎn)換完成標志位

*P_IOA_Dir=0x0001;

*P_IOA_Attrib=0x0001;

*P_IOA_Data=0x0002;

*P_INT_Ctrl=C_IRQ1_TMA;

 

*P_TimerA_Ctrl=C_SourceA_Fosc256+C_SourceB_1;

*P_TimerA_Data=0xFFFB; //

//Ltmp=*P_IOA_Data&0x0002;

while(*P_IOA_Data&0x0002);

delay();

asm("INT IRQ");

 

while(1)

{

       *P_Watchdog_Clear = C_WDTCLR;

       if(*P_IOA_Data&0x0004)//A2為輸出數(shù)據(jù)完成標志位

              {

                     asm("INT OFF");//     IRQ_OFF();

                     dout=*P_IOA_Data>>4;//取A口高12位的數(shù)據(jù)

                     *P_IOA_Data=0x0002;//DOUT重新置數(shù)

                     while(*P_IOA_Data&0x0002);//等待DOUT高電平變?yōu)榈碗娖?/P>

                     delay();//延遲函數(shù)

                     asm("INT IRQ");

              }

}

}

 

void IRQ1(void)

{  

       if(k<=48)

     {k++;

              if(!(*P_IOA_Data&0x0002))  Ltmp++;

     }

       if(*P_IOA_Data&0x0001)//下降沿取DOUT

       {    

              *P_IOB_Data=*P_IOB_Data+1;//記錄產(chǎn)生一個脈沖

              if((*P_IOB_Data<=12))//下降沿取DOUT 

              {

                     tmp=*P_IOA_Data&0xFFF0;//取A口的高12位

                     tmp=tmp<<1;            

                     //如果DOUT為高電平則加1               

                     if(*P_IOA_Data&0x0002)

                     tmp=tmp+0x0010;

                    

                     *P_IOA_Data=(*P_IOA_Data&0x000f)+tmp;

                    

              }

       if(*P_IOB_Data==25)

        {

            

                    *P_IOA_Data=*P_IOA_Data|0x0004;       //置標志位A2口    

                    *P_IOB_Data=0x0000;

        }

       }

c_flag^= 0xFFFF; //電平標志寄存器取反

*P_IOA_Data=(c_flag&0x0001)|(*P_IOA_Data&0xFFF6);

*P_INT_Clear=C_IRQ1_TMA;

}

(2)主程序相關(guān)程序流程圖

停止后超載處理流程圖如圖2:

相關(guān)說明:

標志K

K= -1      靜止且不超載              K=0        初次靜止超載

K=1        運動超載                     K=2        停車后超載

countR    取數(shù)據(jù)次數(shù)

countW,  超載次數(shù)

v            車速度

m           車載重量

tR           車啟動時間

tS           停車時間                       圖2 超載處理流程圖

運動前超載處理程序圖如圖3:

運動中超載處理流程圖如圖.4:

相關(guān)說明:

標志K

K= -1  靜止且不超載      K=0    初次靜止超載

K=1    運動超載          K=2    停車后超載

countR取數(shù)據(jù)次數(shù)

countW,    超載次數(shù)

v      車速度

m      車載重量

tR     車啟動時間

tS     停車時間

 

     

     圖3 運動前超載處理程序圖          圖4 運動中超載處理流程圖

小車運動前超載處理程序如下:

Void BeforeTheStateDidNotExercise(float* parameter,float weight,int *countR,int *countW)

{     (*countR)++;

       if(*countR>=17)

              *countR=0; 

       if(weight>M)

       {

              (*countW)++;

              if(*countW>=12)

              {

                     *parameter=0;

                     *countW=0;

                     printf("報警函數(shù)                     ");

                     }           

              }

      }

 

運動前超載處理程序:

void campaignStatus(float* parameter,float weight,int *countR,int *countW,clock_t *start)

       {

              if(* parameter!=1)

                     (*countR)++;

       //記錄當前時間

        momentNow();

       *start=clock();

 

       printf("  記錄當前時間t1");

             

               if(weight>M)

                      (*countW)++;

              if(*countR>=100)

              {                  

                     if( *countW>=70)

                     {

                            printf("報警程序              ");         

                            * parameter=1;

                            }

                     *countR=0;

                     *countW=0;

                     }

             }

運動中超載處理:

       void       afterStoppingState(float* parameter,float weight,int *countR,int *countW,clock_t *finish)

              {

                     (*countR)++;

                     //記錄當前時間t2

                     *finish=clock();                

                     if(weight>M)

                            (*countW)++;

                     if(*countR>=100)

                     {

                            if(*countW<30)

                            {*parameter=-1;

                                   printf("發(fā)送相關(guān)信息到主機");                                

                                   }                         

                            *countR=0;

                            *countW=0;

                            }

                     }

 

//根據(jù)速度和參數(shù)K和parameter確定車體狀態(tài)

void  carStatus(float speed,float* parameter,float weight,int *countR,int *countW)

{

        //超載持續(xù)時間

       clock_t start, finish;

       double   duration;

       

 

       if(speed==0)

       {

              if(*parameter<=0)

                     BeforeTheStateDidNotExercise(parameter,weight,countR,countW);

              else       afterStoppingState(parameter,weight,countR,countW,clock_t &finish);

                     }

       else              campaignStatus(parameter,weight,countR,countW,clock_t &start);

 

       //超重持續(xù)時間

        duration = (double)(finish - start) / CLOCKS_PER_SEC;

              printf( "%f seconds\n", duration );

 

       }

//獲取當前時間

int momentNow(void)

{

    

     time_t t;

     t=time(0);

     local=localtime(&t);

        printf(" %d-%d-%d\n%d:%d:%d\n",local->tm_year+1900,local->tm_mon,local->tm_mday,local->tm_hour,local->tm_min,local->tm_sec);           

     return 0;

}

聯(lián)系我們 | 關(guān)于我們 | 免責聲明 | 誠征英才 | 友情鏈接
Copyright 2019 All rights reserved  本網(wǎng)頁版權(quán)屬Open ADSP所有
北京海淀區(qū)中關(guān)村大街32號新中發(fā)市場3659 郵編100100
電話 18611096839 
粵ICP備14035876號-1