【Proteus仿真】【32单片机-A012】GP2D12红外测距系统设计

发布于:2025-06-11 ⋅ 阅读:(52) ⋅ 点赞:(0)

目录

一、主要功能

二、使用步骤

三、硬件资源

四、软件设计

五、实验现象

联系作者

一、主要功能

1、距离测量与LCD显示
2、低于测量阈值,警报模块启动
3、测量距离阈值设置

二、使用步骤

使用LCD1602液晶、按键、蜂鸣器、GP2D12红外传感器,
GP2D12红外传感器测量范围 20-150 因非线性测量存在误差。
系统运行后,LCD1602显示红外测量距离值和阈值;
当测量距离值低于阈值,报警器启动。
按键调节阈值。

三、硬件资源

1、32单片机核心模块
2、按键模块
3、GP2D12红外传感器
4、蜂鸣器模块
5、LCD1602显示模块

四、软件设计

#include "delay.h"
#include "sys.h"
#include "1602.h"
#include "key.h"
#include "ADC.h"
#include "Tool.h"



u16 Infrared_value; //距离检测值
u16 Infrared_value_L=25; //距离检阈值


u8 Set_num=0;		//设置标志位
u8 Key_num=0;//按键值

void key_san(void);//按键判断函数
void Work(void);//工作运行函数

void Delay(int num)
{
	while(num--) ;
}
void display_data(void)///显示
{	
	LcdWriteCom(0x0C);	  		                            //取消光标闪烁	
	LcdWriteCom(0x80+7); //第一行
	LcdWriteData(Infrared_value%1000/100+0x30);
	LcdWriteData(Infrared_value%100/10+0x30);
	LcdWriteData(Infrared_value%10+0x30);
	
	LcdWriteCom(0x80+0x40+7); //第二行
	LcdWriteData(Infrared_value_L%1000/100+0x30);
	LcdWriteData(Infrared_value_L%100/10+0x30);
	LcdWriteData(Infrared_value_L%10+0x30);
}


int main()
{	
	delay_init();	    	 //延时函数初始化
	LCD1602_Init();      //lcd函数初始化
	ADC1_Init();      //adc函数初始化
	TOOL_Init();         //工具初始化
	KEY_Init();        //按键函数初始化
	while(1) 
	{	
		key_san();//按键判断函数
		middleAverageFilter();//获取ad值
		Work();//工作运行函数
		display_data();///显示
	}	  
}
void Work()//工作运行函数
{
	if(Key_num==0)
	{
		if(Infrared_value<Infrared_value_L)//低于距离
			BEEP  = 0;//开启
		else 
			BEEP  = 1;//关闭
	}
	else
		BEEP  = 1;//关闭

}
void key_san()//按键判断函数
{
		Key_num=KEY_Scan(0);
		switch(Key_num)
		{
			case 1://设置按键		
					if(Set_num==1)
						Set_num = 0 ;
					else	
						Set_num++;
				break;
			case 2://加
					if(Set_num==1)
					{
						if(Infrared_value_L<100) Infrared_value_L++;
					}
				break;
			case 3://减
					if(Set_num==1)
					{
						if(Infrared_value_L>20) Infrared_value_L--;
					}
				break;
			case 4:


				break;	
		}
		if(Set_num==1)
		{
			LcdWriteCom(0x80+0x40+15); //第二行
			LcdWritestr("<");
		}
		else if(Set_num==0)
		{
			LcdWriteCom(0x80+0x40+15); //第二行
			LcdWritestr(" ");
		}
}




五、实验现象

B站演示视频:

【STM32单片机-A012】【Proteus仿真】GP2D12红外测距系统仿真_哔哩哔哩_bilibili本项目使用Proteus8仿真STM32单片机GP2D12红外测距系统使用LCD1602液晶、按键、蜂鸣器、GP2D12红外传感器,GP2D12红外传感器测量范围 20-150 因非线性测量存在误差。系统运行后,LCD1602显示红外测量距离值和阈值;当测量距离值低于阈值,报警器启动。按键调节阈值。主要功能如下:1、距离测量与LCD显示2、低于测量阈值,警报模块启动3、测量距离阈值设置, 视频播放量 0、弹幕量 0、点赞数 0、投硬币枚数 0、收藏人数 0、转发人数 1, 视频作者 无忧电子设计, 作者简介 Q:215138327 V:Kinpar 承接51,32单片机设计定做,51,32单片机protues仿真,实物,程序等。,相关视频:【51单片机-B002】【protues仿真】基于51单片机多功能计算器仿真,基于STM32单片机DHT11温湿度检测系统仿真,【STM32单片机-A005】【Proteus仿真】烟雾温湿度检测系统,【51单片机-B005】【protues仿真】基于51单片机自动售货机12864屏幕1仿真,【STM32单片机-A008】【Proteus仿真】MPX4115压力检测系统仿真,【51单片机-B003】【protues仿真】基于51单片机交通灯1仿真,【51单片机-B004】【protues仿真】基于51单片机密码锁1仿真,【STM32单片机-A004】【Proteus仿真】超声波测距系统,基于STM32单片机DS18B20温度检测系统仿真,A006 基于STM32单片机PWM波形系统仿真https://www.bilibili.com/video/BV1WwTizVEZj/

联系作者

作者B站链接:https://space.bilibili.com/3493294220773802

专注于51单片机、STM32、Proteus、物联网软件开发,PCB设计。


网站公告

今日签到

点亮在社区的每一天
去签到