工业控制 | 能源技术 | 汽车电子 | 通信网络 | 安防监控 | 智能电网 | 移动手持 | 无线技术 | 家用电器 | 数字广播 | 消费电子 | 应用软件 | 其他方案

电路设计->光电电路图->其他光电实用电路图->单片机实现干簧管计数器的实验

单片机实现干簧管计数器的实验

作者:dolphin时间:2016-09-14

  在本实验中,要设计一个干簧管计数器,并用数码管来显示。在本例中,还要接触单片机一个重要的功能“中断”。
  
  干簧管是干式舌簧管的简称,是一种有触点的无源电子开关元件,具有结构简单,体积小便于控制等优点,其外壳一般是一根密封的玻璃营,管中装有两个铁质的弹性簧片电板,还灌有一种叫金属铑的惰性气体。下图是它的结构示意图。

干簧管结构示意图

  平时,玻璃管中的两个由特殊材料制成的簧片是分开的。
  
  当有磁性物质靠近玻璃管时,在磁场磁力线的作用下,管内的两个簧片被磁化而互相吸引接触,簧片就会吸合在一起,使结点所接的电路连通。外磁力消失后,两个簧片由于本身的弹性而分开,线路也就断开了。因此,作为一种利用磁场信号来控制的线路开关器件,干簧管可以作为传感器用,用于计数,限位等,同时还被广泛使用于各种通信设备中。在实际运用中,通常用永久磁铁控制这两根金属片的接通与否,所以又被称为“磁控管”。

  下图是干簧管状态读入电路,当磁铁靠近干簧管时,相当于按键按下,单片机P3.2口为OV,逻辑“0”:当磁铁拿走时,相当于按键抬键,P3.2为+5V,逻辑“1”。
  
  我们要做的实验就是记录磁铁靠近干簧管的次数,也就是P3.2口由“1”变成“0”的次数。在写程序之前先介绍单片机中断的概念。
  
  举个例子,如果我们有很多工作要做,偏偏有一个重要的客人要来,而且不知道来的具体时间,我们该怎么办?没错,我们先做工作,客人来了放下工作先接待,等客人走了接着做刚才放下的工作。
  
  单片机的中断系统也是这样,中断请求来临时,单片机从当前运行的程序中跳出,直接运行中断服务程序,运行完中断服务程序后,再回到刚才程序中断的地方接着运行。

干簧管状态读入电路


  
  在本实验的电路设计中,用P3.2口读取干簧管的状态,单片机的P3.2口有一个重要的功能,它是外部中断0的接入口。经过初始化,当P3.2口的状态从“1”变到“0”时就会触发外部中断0,程序会自动跳到我们写好的中断服务程序,执行完中断服务程序后,再回到刚才主程序中断的地方继续执行主程序。程序如下:
  
  #includereg52.h
  
  //存储数码管显示码的一维数组
  
  unsignedcharShowCode[]=(Oxc0,Oxf9,Oxa4,OxbO,Ox99,Ox92,Ox82,Oxf8,Ox80,Ox90):
  
  //主程序

  voiDMAin(void){unsignedchari….
  
  ….
  
  ….
  
  P1=ShowCode[num];//在数码管上显示数字num}
  
  }
  
  【注1】:主程序第一个语句初始化了外部中断0,将外部中断0(P3.2)设置为下降沿触发,即触发中断的条件是P3.2口的状态从“1”变到“0”。
  
  第二句使能了外部中断0,只有使能中断,当中断条件发生时,程序才能跳到中断服务程序;否则,即使中断条件发生,程序也不会跳去执行中断服务程序。
  
  【注2】:中断服务程序,外部中断0的中断向量为0。每次磁铁靠近干簧管都会使P3.2的状态从“1”变到“0”,从而触发中断,程序会直接跳到本中断服务程序,num++语句使变量num加1。
  



评论

技术专区