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

目录

一、主要功能

二、使用步骤

三、硬件资源

四、软件设计

五、实验现象

联系作者

一、主要功能

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设计。

相关推荐
AUTO_150756759655 小时前
XS2186 是一个八通道、供电设备(PSE)电源控制器,设计用于IEEE® 802.3at/af兼容PSE,用于交换机/路由器
单片机·嵌入式硬件·芯片
眠修7 小时前
MongoDB 数据库应用
数据库·mongodb
程序猿小D8 小时前
第24节 Node.js 连接 MongoDB
数据库·mongodb·npm·node.js·编辑器·vim·express
SY师弟10 小时前
台湾TEMI协会竞赛——1、龙舟机器人组装教学
c语言·单片机·嵌入式硬件·机器人·嵌入式·台湾temi协会
星宇CY10 小时前
STM32 定时器应用:从精准延时到智能控制的实战指南
stm32·单片机·嵌入式硬件
学习噢学个屁10 小时前
基于STM32音频频谱分析设计
c语言·stm32·单片机·嵌入式硬件·音视频
GeekAGI13 小时前
通过 MongoDB URL 连接到 MongoDB 数据库
mongodb
Peter_Deng.15 小时前
单片机 - STM32 非阻塞式编程详解:以 LED 和按键为例(附超详细寄存器级代码)
stm32·单片机·嵌入式硬件
平凡灵感码头15 小时前
基于 STM32 的四路 PWM 控制智能小车运动的模块化控制程序
stm32·单片机·嵌入式硬件
情意绵绵67415 小时前
VAS1085Q奇力科技LED驱动芯片车规级线性芯片
单片机·嵌入式硬件·硬件架构·硬件工程·pcb工艺