实例10、Stc8a8k金属探测实验,外部中断P32接收下降沿触发信号

一、实验目的
熟悉金属探测器的原理;
外部中断的使用;
OLED屏幕的使用;
二、器材
stc8a8k自制核心板;
金属接近传感器;
OLED屏幕;
三、原理
金属接近传感器,用的是这种。也可以买其他的,原理差不多
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

图中,这个传感器的电源是10-30V,但是经过测试,5V也能用,不过检测距离等有所变小。、 注意,应该把金属应该在这个圆形的下方。这个是感觉的地方。

当没有金属在下面,那么就是5V,当有金属在下面,就是0.5V,从5v—0.5v,发生下降沿。用下降沿触发外部中断P32,当开启了下降沿触发模式,P32引脚接收到下降沿信号,那么在中断服务函数里面,进行相关设置。

在这里插入图片描述

代码:

#include <stc8a8k.h>
#include <oled.h>
unsigned char metalflag=0;
void delay1ms(unsigned int tms)		//@11.0592MHz
{
	unsigned char i, j;
	unsigned int k;
  for(k=tms;k>0;k--)
	{	
		i = 15;
		j = 90;
		do
		{
			while (--j);
		} while (--i);
	}
}
//P32中断0的中断服务函数
void INT0_Isr() interrupt 0 using 1
{
    metalflag=1;           //将标记位置1,主程序查询这个变量是不是变化
}
void main()
{
   IT0 = 1;               //使能INT0下降沿中断
   EX0 = 1;                //使能INT0中断
   EA = 1;
	 OLED_Init();
	 OLED_ShowString(0,0,"oou");	
	 while (1)
	 {
			if(metalflag==1)
			{
				 EX0 = 0;    
 //检测到,就关闭中断,进行设置,不然可能会不断进入中断 
				 OLED_ShowString(0,0,"yyw");	
//显示,蜂鸣器,LED灯亮灭亮灭,执行对应动作;
				 delay1ms(5000);
				 EX0 = 1;  //用完,就打开中断,给下次检测用
				 metalflag=0;//给下次检测用
			}
			else 
				 OLED_ShowString(0,0,"oou");	
		}
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值