新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 嵌入式汽车发动机检测装置设计

嵌入式汽车发动机检测装置设计

作者:时间:2011-09-02来源:网络收藏
速度脉冲计算的子程序及解释如下:

本文引用地址:http://www.eepw.com.cn/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 下一页

评论


相关推荐

技术专区

关闭