c51单片机光电门测反应时间(实战小项目)

第一步:准备材料(光电门)也叫测距模块

 产品用途:广泛用于电机转速检测,脉冲计数,位置限位等。

模块特色:
1、使用进口槽型光耦传感器,槽宽度 5mm。
2、有输出状态指示灯,输出高电平灯灭,输出低电平灯亮。
3、有遮挡,输出高电平;无遮挡,输出低电平。
4、比较器输出,信号干净,波形好,驱动能力强,超过 15mA。
5、工作电压 3.3V-5V
6、输出形式 :数字开关量输出(0 和 1)
7、设有固定螺栓孔,方便安装
8、小板 PCB 尺寸:3.2cm x 1.4cm
9、使用宽电压 LM393 比较器
模块使用说明:
1.模块槽中无遮挡时,接收管导通,模块 DO 输出低电平,遮挡时,
DO 输出高电平;
2、DO 输出接口可以与单片机 IO 口直接相连,检测传感器是否有遮
档,如用电机码盘则可检测电机的转速。
2.模块 DO 可与继电器相连,组成限位开关等功能,也可以与有源蜂
鸣器模块相连,组成报警器。

还有一个普中的开发板

直接上代码吧

这个原理主要是光点门没有东西过的时候反馈的是一个低电平,反之是高电平。然后根据高低电平来判断是否启动定时器来计速既是反应时间(毫秒级别)可以用来测人的反应时间。神经反应时间。

main.c

#include <REGX52.H>
#include "LCD1602.h"


sbit LightDoor=P3^7;

typedef unsigned int uint;

uint fen,miao,umiao;

uint m1,m2,m3,m4,m5;


void Timer0_Init()
{
		TMOD &= 0xF0;		//设置定时器模式
  	TMOD |= 0x01;		//设置定时器模式
		TL0 = 0x18;		//设置定时初值
		TH0 = 0xFC;		//设置定时初值
		TF0 = 0;		//清除TF0标志
		TR0 = 0;		//定时器0开始计时
		ET0=1;
  	EA=1;//打开中断
}


void main()
{
		Timer0_Init();
		LCD_Init();//初始化	
		LCD_ShowString(1,12,"GAP");
		while(1)
		{
				LCD_ShowString(1,1,"F");//显示分
				LCD_ShowString(1,4,"M");//显示miao
				LCD_ShowString(1,7,"mM");//显示微秒
				
				LCD_ShowNum(2,1,fen,2);//显示分
				LCD_ShowChar(2,3,'.');//显示.
				LCD_ShowNum(2,4,miao,2);//显示秒
				LCD_ShowChar(2,6,'.');//显示.
				LCD_ShowNum(2,7,umiao,2);//显示u秒
				LCD_ShowString(2,9,"s");
				LCD_ShowChar(2,14,'.');
				LCD_ShowNum(2,15,umiao,2);
				LCD_ShowNum(2,12,miao,2);
				
			
//				m4=umiao;//毫秒
//		  	m3=miao;//秒转为毫秒*1000
//			  //m2=fen*m3;//分转为毫秒
			  
			
			
				if(LightDoor==1)
				{
					TR0=0;
				 
				}
				 else
				{
					TR0=1;
					if(umiao>1000)
					{
						m1=umiao=0;
						m2=miao=0;
					  m3=fen=0;
						
					LCD_ShowChar(2,14,'.');
					LCD_ShowNum(2,15,m1,2);
					LCD_ShowNum(2,12,m2,2);

					}
//					LCD_ShowChar(2,14,'.');
//					LCD_ShowNum(2,15,umiao,2);
//					LCD_ShowNum(2,12,miao,2);

				}
		
		
		}
}


void Timer0_Routine() interrupt 1
{
		TL0 = 0x18;		//设置定时初值
		TH0 = 0xFC;		//设置定时初值
		umiao++;

		if(umiao>1000)
		{ 
		//	m1=umiao;
			umiao=0;
			miao++;
			if(miao>60)
			{
				miao=0;
				fen++;
			}
	 }
}




 LCD1602模块之前的博客也发过了,如有需要请自行查找吧

 最后是运行效果图

 

  • 5
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值