微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 干簧管计数器中单片机中断的设计实现

干簧管计数器中单片机中断的设计实现

时间:07-23 来源:互联网 点击:

在本文的介绍中,要设计一个干簧管计数器,并用数码管来显示。本案例例中,还要接触单片机一个重要的功能“中断”。

干簧管是干式舌簧管的简称,是一种有触点的无源电子开关元件,具有结构简单,体积小便于控制等优点,其外壳一般是一根密封的玻璃营,管中装有两个铁质的弹性簧片电板,还灌有一种叫金属铑的惰性气体。平时,玻璃管中的两个由特殊材料制成的簧片是分开的。

下图是它的结构示意图。

干簧管计数器结构示意图

当有磁性物质靠近玻璃管时,在磁场磁力线的作用下,管内的两个簧片被磁化而互相吸引接触,簧片就会吸合在一起,使结点所接的电路连通。外磁力消失后,两个簧片由于本身的弹性而分开,线路也就断开了。

因此,作为一种利用磁场信号来控制的线路开关器件,干簧管可以作为传感器用,用于计数,限位等,同时还被广泛使用于各种通信设备中。在实际运用中,通常用永久磁铁控制这两根金属片的接通与否,所以又被称为“磁控管”。

下图是干簧管状态读入电路,

干簧管状态读入电路

当磁铁靠近干簧管时,相当于按键按下,单片机P3.2口为OV,逻辑“0”:当磁铁拿走时,相当于按键抬键,P3.2为+5V,逻辑“1”。

我们要做的实验就是记录磁铁靠近干簧管的次数,也就是P3.2口由“1”变成“0”的次数。在写程序之前先介绍单片机中断的概念。

举个例子,如果我们有很多工作要做,偏偏有一个重要的客人要来,而且不知道来的具体时间,我们该怎么办?没错,我们先做工作,客人来了放下工作先接待,等客人走了接着做刚才放下的工作。

单片机的中断系统也是这样,中断请求来临时,单片机从当前运行的程序中跳出,直接运行中断服务程序,运行完中断服务程序后,再回到刚才程序中断的地方接着运行。

在本实验的电路设计中,用P3.2口读取干簧管的状态,单片机的P3.2口有一个重要的功能,它是外部中断0的接入口。经过初始化,当P3.2口的状态从“1”变到“0”时就会触发外部中断0,程序会自动跳到我们写好的中断服务程序,执行完中断服务程序后,再回到刚才主程序中断的地方继续执行主程序。程序如下:

#include

//存储数码管显示码的一维数组

unsignedcharShowCode[]=(Oxc0,Oxf9,Oxa4,OxbO,Ox99,Ox92,Ox82,Oxf8,Ox80,Ox90):

//主程序

voiDMAin(void){unsignedchari….

….

….

P1=ShowCode[num];//在数码管上显示数字num}

}

:主程序第一个语句初始化了外部中断0,将外部中断0(P3.2)设置为下降沿触发,即触发中断的条件是P3.2口的状态从“1”变到“0”。

第二句使能了外部中断0,只有使能中断,当中断条件发生时,程序才能跳到中断服务程序;否则,即使中断条件发生,程序也不会跳去执行中断服务程序。

:中断服务程序,外部中断0的中断向量为0。每次磁铁靠近干簧管都会使P3.2的状态从“1”变到“0”,从而触发中断,程序会直接跳到本中断服务程序,num++语句使变量num加1。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top