亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? main.c

?? 結合飛思卡爾16位單片機MC9S12DG128B完成小車自動尋跡
?? C
?? 第 1 頁 / 共 2 頁
字號:
      * 
      *                             FUNCTION PROTOTYPES 
      **********************************************************************************/
      
     int CalculateP(void); 
     float CalculatePID(void);
     
     /***********************************************************************************
      *
      *
      *                                   PID控制程序
      ***********************************************************************************/ 
      
      
      struct CARSTATE 
            { int E0; 
              int E1; 
              int E2; 
              int E3; 
              float Integral; 
            }CarState;
            
      /* *********************************************************************************
       *
       * 
       *                                   初始化PID參數 
       **********************************************************************************/
       
        void Init_PID() 
             { 
                CarState.E0 = 0; 
                CarState.E1 = 0;
                CarState.E2 = 0; 
                CarState.E3 = 0; 
                CarState.Integral = 0; 
             }
             
   /* ********************************************************************************
    *
    * 
    *                                信號處理函數 
    * 
    *  程序描述: 對傳感器采集過來的數據進行處理,得到一些基本的計算參數 
    * 
    *  說明: 無 
    **********************************************************************************/          
    
    int SignalProcess( unsigned char signal ) 
             { 
                 const int BitValue[8] = {43,26,12,6,-6,-12,-26,-43}; //MAX:28 
                 int i,CurrPoint=0,LastPoint=0,BitNum=0; 
                 unsigned char SignalBit[8]; 
                 for(i=0;i<8;i++) 
                    {  SignalBit[i] = signal & 0x0001; 
                       BitNum += SignalBit[i]; 
                       signal >>= 1; 
                    } 
                 switch(BitNum) 
                 { 
                      case 1: 
                         for(i=0;i<8;i++) 
                            if(SignalBit[i] != 0) 
                               CurrPoint += BitValue[i]; 
                               CarState.E0 = CurrPoint; 
                                break; 
                      case 2: 
                         for(i=0;i<8;i++) 
                            if(SignalBit[i] != 0) 
                               CurrPoint += BitValue[i]; 
                               CurrPoint >>= 1;
                               CarState.E0 = CurrPoint; 
                                 break; 
                      default: 
                           CarState.E0 = CarState.E1; 
                                 break; 
                  } 
                  
                     return CalculateP()*100; 
             } 
    /***********************************************************************************
     *
     *
     *                              PID計算函數 
     * 
     * 程序描述: 計算P參數 
     * 
     * 說明: 無 
     **********************************************************************************/
     
     int CalculateP(void) 
          { 
             CarState.E1 = CarState.E0; 
             return((int)CarState.E0); 
          }
          
          
    /* *********************************************************************************
     *
     * 
     *                               PID計算函數 
     * 
     * 程序描述: 對傳感器采集過來的數據進行處理,得到一些基本的計算參數 
     * 
     * 說明: 無 
     **********************************************************************************/
      float CalculatePID(void) 
            { 
               float P, I = 0, D;                          
               float Kp = 1.0, Ki = -0.0002, Kd = -0.0002;    /* parameter const */ 
               P = CarState.E0 * Kp;                          /* P parameter */ 
                 if(P+I<2) 
                    { 
                          CarState.Integral += Ki * CarState.E0;
                           I = CarState.Integral;             /* I parameter */ 
                    }
                          D = Kd * ( CarState.E0 + 3*CarState.E1 - 3*CarState.E2 - CarState.E3 )/6.0; /* D parameter */  
                          CarState.E3 = CarState.E2; 
                          CarState.E2 = CarState.E1; 
                          CarState.E1 = CarState.E0; 
                          return (P+I+D); 
             }
             
             
    /* *********************************************************************************
     *
     * 
     *                                  Test.c 
     * 
     *   Description: This file includes I/ O function for test, the PWM outputs function for test, function 
     *
     *   testing sensors. 
     *   
     *   (c) Copyright 2006,Zhao Cheng 
     *
     *   All Rights Reserved 
     *
     *   By : Zhao Cheng 
     *
     *   Note : Don't change this file if possible. 
     **********************************************************************************/  
     
     #include <hidef.h> 
     #include <mc9s12dg128.h> 
//     #define HIGHSPEED 8000 
     #define LOWSPEED 11000 /* 速度變量,0-24000 數值越大,速度越慢 */ 
     void PWMout(int, int); /* 24000-20000 */ 
     void IOtest(void) 
           { 
               static unsigned char i=0,j=0x01,k; 
                                DDRB = DDRA = 0xFF; 
                                PORTB = 0xf0; 
                              for(;;) 
                                { 
                                   k=(~j)&0x7f; 
                                   PORTA = PORTB = k; 
                                   while (TCNT != 0x0000); 
                                   while (TCNT == 0x0000) 
                                       { 
                                           if(i>9) 
                                              { 
                                                 j=j<<1; 
                                                 i=0; 
                                               } 
                                           i++; 
                                        } 
                                            if(j>=0x80) 
                                                j=0x01; 
                                } 
           } 
    void PWMtest(void) 
          { 
             int counter=-4500; 
             DDRB = 0xff; 
             PORTB = 0xff; 
             TSCR1 = 0x80; /* enable timer TCNT */ 
             TSCR2 = 0x00; /* TCNT prescaler setup */ 
             for(;;) 
                 {      
                     while (TCNT != 0x0000); 
                     while (TCNT == 0x0000);    //我認為這有一些問題
                     counter=counter+30; 
                     if(counter >= 3000) 
                          { 
                             counter = 0; 
                             PWMout(4500, LOWSPEED); 
                          } 
                     if(counter == 1500) 
                          { 
                             PWMout(-4500, LOWSPEED); 
                          } PORTB = (char)(counter/100); 
                 } 
           } 
   void SignalTest(void) 
           { 
                unsigned char signal; 
                int Direction, Velocity; 
                Direction = 0; 
                Velocity = LOWSPEED; 
                DDRA = 0x00; 
                DDRB = 0xff; 
                signal = PORTA; 
                PORTB = ~signal; 
                switch(signal) 
                   { 
                      case 0x08: /* 0001 1000 */ 
                      case 0x10: 
                               Direction = 800; 
                               Velocity = HIGHSPEED; 
                               break; 
                      case 0x04: /* 0010 0100 */ 
                      case 0x20: 
                               Direction = 1500; 
                               Velocity = HIGHSPEED; 
                               break; 
                      case 0x02: /* 0100 0010 */ 
                      case 0x40: 
                               Direction = 2800; 
                               Velocity = HIGHSPEED; 
                               break; case 0x01: /* 1000 0001 */ 
                      case 0x80: 
                                Direction = 4000; 
                                Velocity = LOWSPEED;      
                                break; 
                      case 0x3c: /* 0011 1100 over start line */ 
                     
                      case 0xff: /* 1111 1111 over crossing line */ 
                      
                      case 0x00: /* 0000 0000 go straight not need changed state */ 
                      
                      default: 
                                 break; 
                   }
                
                  if(signal > 0x0f)
                     Direction = -Direction; 
                     PWMout(Direction, LOWSPEED);
                     
                     
            }
           
     /**********************************************************************************
     *
     * 
     *                                 LCD1620.c 
     * 
     * ICC-AVR application builder : 2006-1-8 21:43:48 
     *
     * Target : M8 * Crystal: 4.0000Mhz 
     *
     * Note : Don't change this file if possible. 
     **********************************************************************************/      
     
     #define CMD_CLEAR 0x01 
     #define CMD_RESET 0x02
//    #include <iom8v.h> 
//     #include <macros.h> 
     #define LCD_DATA 0xff 
     #define LCD_EN 0x01 //PORTC 0 
     #define LCD_RS 0x02 //PORTC 1 
     #define LCD_RW 0x04 //PORTC 2 
     #define LCD_DATAPORT PORTB 
     #define LCD_ENPORT PORTA 
     #define LCD_RSPORT PORTA 
     #define LCD_RWPORT PORTA 
     void lcd_init(void); 
     void lcd_write_cmd(unsigned cmd,unsigned data); 
     void lcd_setxy(unsigned char x,unsigned char y); 
     void lcd_write_string(unsigned char X,unsigned char Y,unsigned char *str); 
     void delay_nus(unsigned int n); void delay_nms(unsigned int n); 
     void lcd_init(void) 
           { 
              DDRB |= LCD_DATA; 
              DDRA |= LCD_EN | LCD_RS | LCD_RW; 
              LCD_RWPORT&=~LCD_RW; 
              LCD_DATAPORT=0x30; //控制字規則:5:8bit,4:16x2,3:5x7 
              LCD_ENPORT|=LCD_EN; delay_nus(1); 
              LCD_ENPORT&=~LCD_EN; delay_nus(40); 
              lcd_write_cmd(0,0x38); //8bit test 
              lcd_write_cmd(0,0x0c); //顯示開 
              lcd_write_cmd(0,0x01); //顯示清屏 
              lcd_write_cmd(0,0x06); //顯示光標移動設置 
           } 
              void lcd_write_cmd(unsigned cmd,unsigned data) 
                     { 
                         if(cmd==0)
                              LCD_RSPORT&=~LCD_RS; 
                         else 
                              LCD_RSPORT|=LCD_RS; 
                              LCD_DATAPORT&=0x00; 
                              LCD_DATAPORT=data; 
                              LCD_ENPORT|=LCD_EN; 
                              delay_nus(10); 
                              LCD_ENPORT&=~LCD_EN; 
                              delay_nus(10); 
                     } 
              void lcd_setxy(unsigned char x,unsigned char y) 
                     { 
                          unsigned char addr;
                        
                            if(y==0)
                                addr=x+0x80; 
                            else 
                                addr=x+0xc0; 
                                lcd_write_cmd(0,addr);
                      } void 
               lcd_write_string(unsigned char X,unsigned char Y,unsigned char *str) 
                      { 
                          lcd_setxy(X,Y); 
                         
                             while(*str) 
                               { 
                                   lcd_write_cmd(1,*str); str++;
                               } 
                       } 
              void delay_1us(void)                 //1us延時函數 
                    { 
                       asm("nop");
                    } 
              void delay_nus(unsigned int n)       //N us延時函數 
                    
                    { 
                        unsigned int i=0;
                          for (i=0;i<n;i++) 
                           delay_1us(); 
                    }
               void delay_1ms(void) //1ms延時函數 
                   { 
                       unsigned int i; 
                          for (i=0;i<1140;i++); 
                   } 
               void delay_nms(unsigned int n) //N ms延時函數 
                   { 
                       unsigned int i=0; 
                         for (i=0;i<n;i++) 
                               delay_1ms();
                   } 
                //call this routine to initialize all peripherals
             // void main(void)            
             //       { 
             //       
              //          lcd_init(); 
             //               while(1) 
             //                 { 
             //                     lcd_write_cmd(0,0x01);/*清屏*/ 
             //                     delay_nms(2); 
             //                     lcd_write_string(0,0,"happy new year"); 
             //                     delay_nms(100); 
             //                     lcd_write_string(0,1,"LCD successful!"); 
             //                     delay_nms(100); 
             //                  }
             //        } 
              /******************************* 程序結束 *********************************/ 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91原创在线视频| 亚洲欧美国产77777| 日韩激情一二三区| 欧美在线三级电影| 一区二区三区中文字幕电影| 成人av网站免费观看| 国产精品乱码人人做人人爱| 国产91丝袜在线观看| 国产精品日韩精品欧美在线| 大尺度一区二区| 国产精品污www在线观看| 国产成人在线色| 欧美精品乱码久久久久久按摩 | 欧美日韩电影在线播放| 一区二区三区国产精品| 日韩欧美一区二区在线视频| 国产高清成人在线| 一区二区三区在线免费| 日韩精品一区二区三区蜜臀| 成人性视频网站| 五月婷婷激情综合网| 久久蜜桃av一区二区天堂| 色94色欧美sute亚洲线路一久 | 成a人片亚洲日本久久| 亚洲精品成人悠悠色影视| 日韩一区二区三区视频| 国产69精品久久久久毛片| 亚洲成av人片| 国产欧美日韩一区二区三区在线观看| 91理论电影在线观看| 免费不卡在线观看| 国产亚洲精品超碰| 亚洲自拍偷拍av| 国产精品美女视频| 国产一区在线看| 欧美大片在线观看一区二区| 亚洲卡通动漫在线| 91久久精品日日躁夜夜躁欧美| 欧美xxxxxxxx| 五月天亚洲精品| 欧美图片一区二区三区| 性欧美疯狂xxxxbbbb| 久久色中文字幕| 日本不卡中文字幕| 亚洲猫色日本管| 精品粉嫩超白一线天av| 欧美日韩视频在线观看一区二区三区| 国产不卡高清在线观看视频| 日av在线不卡| 亚洲一区二区三区国产| 中文字幕一区二区三中文字幕| 日韩欧美在线综合网| 欧美日韩免费一区二区三区| 91亚洲大成网污www| 丁香网亚洲国际| 国产一区二区三区四| 美国毛片一区二区| 五月综合激情日本mⅴ| 一区二区在线免费| 亚洲欧洲无码一区二区三区| 国产欧美视频一区二区| 亚洲精品在线免费播放| 欧美不卡一二三| 在线不卡中文字幕播放| 欧美日韩午夜影院| 欧美色大人视频| 欧美午夜视频网站| 在线观看av不卡| 在线视频亚洲一区| 91国产丝袜在线播放| 色94色欧美sute亚洲线路一久| 色综合久久综合网欧美综合网| 成人sese在线| 波多野结衣亚洲| 色综合天天综合在线视频| 色综合天天视频在线观看| 不卡一区二区三区四区| 成人动漫av在线| 91免费看`日韩一区二区| 91污在线观看| 欧美午夜精品一区二区三区| 欧美视频一区二区三区四区 | 午夜视频久久久久久| 亚洲一二三四区| 日韩高清在线观看| 美洲天堂一区二卡三卡四卡视频 | 国产成人午夜视频| 国产凹凸在线观看一区二区| 国产成人av网站| www.综合网.com| 欧美午夜精品久久久久久孕妇| 蜜臀av一区二区在线观看| 国产精品一区在线观看你懂的| 91浏览器打开| 成人福利视频在线看| 成人免费毛片片v| 欧美综合天天夜夜久久| 激情小说亚洲一区| 国产自产2019最新不卡| 日本不卡在线视频| 国产在线日韩欧美| 岛国精品在线播放| 欧美一区午夜视频在线观看| 国产成人av电影在线观看| 国产剧情在线观看一区二区| 不卡的av在线| 欧美视频在线观看一区| 日韩久久精品一区| 一区在线观看免费| 日韩不卡免费视频| 丁香网亚洲国际| 欧美日韩亚洲不卡| 欧美极品少妇xxxxⅹ高跟鞋 | 亚洲国产精品一区二区久久恐怖片| 亚洲影视在线播放| 国精产品一区一区三区mba桃花 | 在线日韩一区二区| 精品国产1区二区| 亚洲欧美视频在线观看视频| 麻豆国产精品官网| 91视频一区二区三区| 日韩精品在线网站| 一区二区三区四区激情| 国产在线视视频有精品| 欧美亚洲国产一区在线观看网站| 精品国产免费久久| 一区二区三区四区五区视频在线观看| 老司机一区二区| 欧洲精品在线观看| 亚洲国产精品二十页| 日本三级亚洲精品| 在线免费观看日韩欧美| 国产婷婷色一区二区三区| 午夜精品久久久久久久久久久 | 亚洲精品日韩综合观看成人91| 蜜桃视频在线一区| 欧美亚洲综合在线| 中文字幕在线不卡一区| 精品在线观看免费| 欧美剧情电影在线观看完整版免费励志电影| 国产蜜臀av在线一区二区三区| 日本欧美大码aⅴ在线播放| 色婷婷久久综合| 国产精品国产三级国产普通话蜜臀| 久久丁香综合五月国产三级网站| 欧美亚洲国产一区二区三区va| 国产精品的网站| 国产乱码精品一品二品| 欧美一级在线视频| 午夜精品福利视频网站| 91丨国产丨九色丨pron| 国产精品私人影院| 亚洲综合999| 日韩一区二区电影网| 国产成人午夜片在线观看高清观看| 精品制服美女丁香| 国产一区二区三区在线看麻豆| 日韩一级在线观看| 国产乱妇无码大片在线观看| 丝瓜av网站精品一区二区 | 99视频超级精品| 国产精品国产精品国产专区不蜜 | 欧美日韩aaaaa| 91一区二区三区在线观看| 欧美亚洲禁片免费| 亚洲国产一区二区三区| 欧美日韩一区小说| 亚洲高清免费一级二级三级| 欧美吞精做爰啪啪高潮| 丝袜a∨在线一区二区三区不卡| 精品视频在线看| 日韩av中文字幕一区二区三区 | 欧美日韩国产系列| 天天影视网天天综合色在线播放| 精品视频在线视频| 美女久久久精品| 精品国产免费久久| 成人一区二区三区视频在线观看| 国产精品久久99| 欧美影院精品一区| 日韩1区2区3区| 久久久精品蜜桃| 99精品热视频| 亚洲18女电影在线观看| 日韩美女视频在线| 国产91在线看| 亚洲综合精品自拍| 欧美精品乱码久久久久久按摩| 蜜臀久久99精品久久久久宅男| 久久综合九色综合欧美就去吻| 国产成人免费在线| 亚洲精选视频在线| 91精品国产91久久综合桃花| 久久精品国产99| 1区2区3区精品视频| 欧美日韩在线亚洲一区蜜芽| 精品一区二区三区久久| 中文字幕视频一区| 欧美一区二区三区婷婷月色 | 亚洲欧美日韩一区二区三区在线观看|