• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > 嵌入式汽車發動機檢測裝置設計

    嵌入式汽車發動機檢測裝置設計

    作者: 時間:2011-09-02 來源:網絡 收藏
    速度脈沖計算的子程序及解釋如下:

    本文引用地址:http://www.czjhyjcfj.com/article/150271.htm

      uint32 speed(void)

      {

      uint32 Time;

      uint32 SpeedValue;

      PINSEL0 = 0x00050005;

      PINSEL1 = 0x14000000;

      IO0DIR = 0x02000000;

      IO1DIR = 0x003f0000;

      // 硬件輸入輸出接口初始化

      T0TC = 0;

      //定時器設置為0

      T0PR = 0;

      //時鐘不分頻

      while((IOPIN0x00000004) != 0); //等待p0.4低電平脈沖信號

      T0TCR = 0x01;

      //啟動定時器0

      while((IOPIN0x00000004) == 0)

      while((IOPIN0x00000004) != 0);

      //等待p0.4下一個低電平脈沖信號

      T0TCR = 0x00;

      Time = T0TC;

      Time = Time/Fpclk;

      //記錄脈沖寬度

      SpeedValue = 1/Time*60;

      //計算速度每分鐘多少轉

      return SpeedValue;

      }

      顯示部分子程序及解釋如下:

      /*-顯示器初始化-*/

      void init_lcd (void)

      {

      IO1CLR = rst;//rst=0;

      delay(50);

      IO1SET = rst;//rst=1;

      IO1SET = cs1;//cs1=1;

      IO1SET = cs2;//cs2=1;

      wr_lcd (comm,disp_off); //#define comm 0 關顯示

      //#define disp_off 0x3e

      wr_lcd (comm,disp_on);

      //#define disp_on 0x3f 開顯示

      }

      /*-寫數據或命令到LCD-*/

      void wr_lcd (uint8dat_comm, uint8 content)

      {

      chk_busy ();

      if(dat_comm){ IO1SET = di; }

      else{ IO1CLR = di; } //di=dat_comm;

      IO1CLR = rw;//rw=0;

      IO0DIR = IO0DIR | IO16_23;

      // 設置P0.0-P0.7為GPIO輸出模式

      data_ora=( ( data_ora !(IO16_23) ) | content16 );

      IO1SET = e;//e=1;

      IO1CLR = e;//e=0;

      IO0DIR=IO0DIR !(IO16_23);// 設置P0.16-P0.23為GPIO輸入模式

      }

      /*-讀LCD數據-*/

      uint8 rd_lcd (void)

      {

      uint8 rddata;

      chk_busy ();

      IO1SET = di;//di=1;

      IO1SET = rw;//rw=1;

      IO1SET = e;//e=1;

      rddata= data_ora>>16;

      IO1CLR = e;//e=0;

      return rddata;

      }

      /*-寫點陣-*/

      void lat_disp (uint8 data1,uint8 data2)

      {

      uint8 i,j;

      IO1SET = cs1;//cs1=1; //兩屏同時寫數據

      IO1SET = cs2;

      //cs2=1;

      wr_lcd (comm,disp_on);

      for(j=0;j8;j++) //共8頁

      {

      wr_lcd (comm,disp_x+j);

      wr_lcd (comm,disp_z);

      wr_lcd (comm,disp_y);

      for(i=0;i32;i++)

      {

      wr_lcd (dat,data1);

      wr_lcd (dat,data2); //每頁64個數

      }

      }

      }

      /*---指定位置(x,y)顯示row_xl行(每行row_yl個)漢字(大小8xl*yl)---*/

      void chn_disp (uint8 x,uint8 y,uint8 xl,uint8 yl,uint8 row_xl,uint8 row_yl,const uint8 *chn)

      {

      uint8 i,j,k,l,a;

      //row_xl:顯示row_xl行

      wr_lcd (comm,disp_on);

      //每行row_yl個漢字

      for(l=0;l

      //xl:頁大小,一頁八個點

      {

      //yl: 列大小,一列一個點

      for(k=0;k

      //x,y:起始位置

      {

      for(j=0;j

      {

      wr_lcd (comm,disp_x+x+l *xl+j);

      wr_lcd (comm,disp_z);

      wr_lcd (comm,disp_y+y+k*yl);

      a=l*xl*yl*row_yl+k*xl*yl+j*yl; //a:數組chn[]中第a個字符

      for(i=0;i

      wr_lcd (dat,chn[a+i]);

      }

      }

      }

      }

      結語

      本系統以目前廣泛應用的LPC2134 ARM為控制處理核心,以感應高壓線圈和低壓線圈作為ARM的輸入信號,用OCM12864的點陣作為儀器的顯示,使該可以有效完成對的的精確測量。它可以將動態運行的各種參數和故障診斷出來,然后通過維修、調整以達到修復的目的。

    linux操作系統文章專題:linux操作系統詳解(linux不再難懂)

    上一頁 1 2 3 下一頁

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 乳源| 阳原县| 乌苏市| 临邑县| 嘉峪关市| 永城市| 乃东县| 洛川县| 英超| 长兴县| 崇阳县| 淄博市| 江油市| 福鼎市| 临沭县| 祥云县| 永仁县| 安溪县| 南华县| 嘉定区| 临城县| 江北区| 安义县| 武清区| 上饶市| 绍兴市| 高淳县| 江山市| 镇安县| 大竹县| 茶陵县| 韶山市| 天长市| 临潭县| 连州市| 徐闻县| 宝坻区| 罗定市| 庄河市| 武定县| 饶河县|