新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 嵌入式汽車發(fā)動機檢測裝置設(shè)計

        嵌入式汽車發(fā)動機檢測裝置設(shè)計

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

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

          uint32 speed(void)

          {

          uint32 Time;

          uint32 SpeedValue;

          PINSEL0 = 0x00050005;

          PINSEL1 = 0x14000000;

          IO0DIR = 0x02000000;

          IO1DIR = 0x003f0000;

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

          T0TC = 0;

          //定時器設(shè)置為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;

          //計算速度每分鐘多少轉(zhuǎn)

          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 關(guān)顯示

          //#define disp_off 0x3e

          wr_lcd (comm,disp_on);

          //#define disp_on 0x3f 開顯示

          }

          /*-寫數(shù)據(jù)或命令到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;

          // 設(shè)置P0.0-P0.7為GPIO輸出模式

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

          IO1SET = e;//e=1;

          IO1CLR = e;//e=0;

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

          }

          /*-讀LCD數(shù)據(jù)-*/

          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; //兩屏同時寫數(shù)據(jù)

          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個數(shù)

          }

          }

          }

          /*---指定位置(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:數(shù)組chn[]中第a個字符

          for(i=0;i

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

          }

          }

          }

          }

          結(jié)語

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

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

        上一頁 1 2 3 下一頁

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 平潭县| 彭泽县| 错那县| 塘沽区| 宁河县| 若尔盖县| 潍坊市| 古丈县| 修文县| 清镇市| 灌阳县| 蓬安县| 大理市| 阳江市| 桂平市| 鹿邑县| 清流县| 延边| 珠海市| 汾阳市| 宜川县| 泗水县| 廊坊市| 丹江口市| 太谷县| 德令哈市| 孝义市| 正阳县| 札达县| 滦南县| 大余县| 丘北县| 长治市| 通化市| 九江市| 巩义市| 西平县| 崇仁县| 奉新县| 芜湖市| 五常市|