51单片机的红外计数器设计

设计功能

(1)主要采用51单片机+最小系统、LCD1602显示屏显示、红外避障传感器、按键、蜂鸣器及电源组成。
(2)显示屏设备采用1602液晶,使用两个红外光电传感器,分别对进入和出去的人进行检测,通过统计进入和出去的人数,算出当前的总人数并进行显示;其计数范围为0-9999。
(3)一旦总人数大于或等于设置的人数上限值时,进行声光报警。
(4)可通过按键设置人数上限报警值;按键从左边第一个起,设置键、加键/清零键、减键。单独一个控制为复位按键;按下复位按键,清零计数;

原理图:

        原理图绘制软件采用AD2013。

        红外计数传感器的原理是红外发射管发射红外线,红外接收管接收红外线,并且接收管当有红外线照射的时候,电阻比较小,当无线外线照射的时候电阻比较大,这样就可以通过一个电压比较器和一个基准电压进行对比,当有光照的时候,红外接收管电阻比较小,那么和其串联的电压分压就会增大,所以电压比较器将会输出一高电平;

        当无光照射的时候,红外接收管的电阻比较大,这样电压比较器就会输出一个低电平。这个便是外部计数电平信号,这个电平信号送入51单片机进行计数控制,在经过扩展、显示驱动完成最后的显示过程。两个红外传感器分别检测进入的人和出去的人。

其总体硬件原理图如图所示。

程序设计

程序采用C作为编程语言,使用Keil5作为编程软件;

/******************主程序**********************/	   
void main()
{
	beep = 0;				    //开机蜂鸣器叫一声
	delay_1ms(100);
	P0 = P1 = P2 = P3 = 0xff;   //初始化IO口
	time_init();
	init_1602();	//lcd1602初始化
	while(1)
	{
		key();			   //按键扫描函数
		if(key_can < 10)
		{
			key_with();    //按键执行函数
		}	
		hw_jin_dis();	//红外计数	
		hw_chu_dis();	//红外计数	
		if(menu_1 == 0)	 //扫描显示倒计时数
		{	 
			if(flag_500ms == 1)
			{
				flag_500ms = 0;
				if(num >= set_num)
					beep = ~beep;    //报警
				else 
				{
					beep = 1;
				}
			}
		}
	}
}

/*************定时器0中断服务程序***************/
void time0_int() interrupt 1
{	
	static uint value;
	TH0 = 0xd8;
	TL0 = 0xf0;     // 10ms
	value ++;
	if(value >= 50)
	{
		value = 0;
		flag_500ms = ~flag_500ms;
	}

}


关注公众号-单片机实例设计,发送“计数器”获取资料;

下载地址

  • 1
    点赞
  • 92
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值