基于单片机GP2D12测距-proteus仿真-源程序

news2024/10/7 18:25:02

基于51单片机红外测距-proteus仿真-源程序
一、系统方案
本设计采用51单片机作为主控器,液晶1602显示,GP2D12采集距离值,按键设置报警阀值,测量值超过阀值,蜂鸣器报警。
在这里插入图片描述
二、硬件设计
原理图如下:
在这里插入图片描述

三、单片机软件设计
1、首先是系统初始化
//=lcd1602初始化函数===
void lcd_init()
{
lcdrw=0;
lcden=0;
lcd_write_com(0x38); //显示模式设置
lcd_write_com(0x0c); //显示开关,光标关闭
lcd_write_com(0x06); //显示光标移动设置
lcd_write_com(0x01); //清除屏幕
lcd_write_com(0x80); //数据指针移到第一行第一个位置
}
2、液晶显示程序
//=lcd1602写指令函数===
void lcd_write_com(char cmd) //写指令函数
{
lcdrs=0;
lcdrw=0;
LCD_PORT=cmd;
delayms(1);
lcden=1;
delayms(1);
lcden=0;
}

//=lcd1602写数据函数===
void lcd_write_data(uchar dat)
{
lcdrs=1;
LCD_PORT=dat ;
lcdrw=0;
delayms(1);
lcden=1;
delayms(1);
lcden=0;
}

//=定位写字符串函数====
void LCD_DispStr(uchar y,uchar x,uchar *str)
{
if(y0)lcd_write_com(0x80|x);
else if(y
1)lcd_write_com(0xc0|x);
while(*str!=‘\0’)
{
lcd_write_data(*str++);
delayms(5);
}
}

3、按键程序
void key()//按键扫描
{
if(key10)
{
delay(10);
if(key1
0)
{
while(!key1);
lcd_init();
mode++;
if(mode>2) mode=0;

	}
 }	

if(key20)
{
delay(10);
if(key2
0)
{
while(!key2);
if(mode==2)
{
ah++;
if(ah>80) ah=80;

			}
			if(mode==1)
			{
				al++;
				if(al>80) al=80;
			}
	}
 }	

if(key30)
{
delay(10);
if(key3
0)
{
while(!key3);
if(mode==2)
{

				if(ah>=1) ah--;
				
			}
			if(mode==1)
			{
			
				if(al>=1) al--;
			}
	}
}	

}
4、核心算法程序
//ADC0832函数==
uchar ADC0832()
{
uchar i,dat;
EA=0;
CS=1; //一个转换周期开始
CLK=0; //为第一个脉冲作准备
CS=0; //CS置0,片选有效
DIO=1; //DIO置1,规定的起始信号
CLK=1; //第一个脉冲
CLK=0; //第一个脉冲的下降沿,此前DIO必须是高电平
DIO=1; //DIO置1, 通道选择信号
CLK=1; //第二个脉冲,第2、3个脉冲下沉之前,DI必须跟别输入两位数据用于选择通道,这里选通道CH0
CLK=0; //第二个脉冲下降沿

DIO=0;                                                //选择通道0
CLK=1;                                                 //第三个脉冲
CLK=0;                                                 //第三个脉冲下降沿
DIO=1;                                                 //第三个脉冲下沉之后,输入端DIO失去作用,应置1
CLK=1;                                                 //第四个脉冲
for(i=0;i<8;i++)                                       //高位在前
{
    CLK=1;                                             //第四个脉冲
    CLK=0;
    dat<<=1;                                           //将下面储存的低位数据向右移
    dat|=(unsigned char)DIO;                           //将输出数据DIO通过或运算储存在dat最低位
}            
CS=1;                                                 //片选取消
EA=1;
return dat;                                           //将读出的数据返回    

}

四、 proteus仿真设计
Proteus软件是一款应用比较广泛的工具,它可以在没有硬件平台的基础上通过自身的软件仿真出硬件平台的运行情况,这样就可以通过软件仿真来验证我们设计的方案有没有问题,如果有问题,可以重新选择器件,连接器件,直到达到我们设定的目的,避免我们搭建实物的时候,如果当初选择的方案有问题,我们器件都已经焊接好了,再去卸载下去,再去焊接新的方案的器件,测试,这样会浪费人力和物力,也给开发者带来一定困惑,Proteus仿真软件就很好的解决这个问题,我们在设计之初,就使用该软件进行模拟仿真,测试,选择满足我们设计的最优方案。最后根据测试没问题的仿真图纸,焊接实物,调试,最终完成本设计的作品。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1178174.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

文件重命名自动化:批量处理让生活更简单

在我们的日常生活和工作中&#xff0c;需要处理大量的文件&#xff0c;无论是文档、图片、音频还是视频。很多时候&#xff0c;为了更好地管理和查找&#xff0c;我们都需要对文件进行重命名。然而&#xff0c;一个一个地重命名文件既耗时又容易出错。幸运的是&#xff0c;随着…

婴儿车上架美国站亚马逊TEMU平台认证标准要求ASTMF833测试报告CPC认证

婴儿车上架跨境电商平台美国站或者出口美国需要提交CPC认证&#xff0c;ASTMF833测试标准检测合规报告&#xff0c;才能进入美国市场&#xff0c;由美国CPSC 认可的实验室出具的检测报告&#xff0c;确认每件商品均已通过检测&#xff0c;符合上述适用要求。 本政策适用的卧式…

京东商品详情API接口(PC端和APP端),京东详情页,商品属性接口,商品信息查询

京东开放平台提供了API接口来访问京东商品详情。通过这个接口&#xff0c;您可以获取到商品的详细信息&#xff0c;如商品名称、价格、库存量、描述等。 以下是使用京东商品详情API接口的一般步骤&#xff1a; 注册并获取API权限&#xff1a;您需要在京东开放平台上注册并获取…

电脑发热发烫,具体硬件温度达到多少度才算异常?

环境&#xff1a; 联想E14 问题描述&#xff1a; 电脑发热发烫,具体硬件温度达到多少度才算异常? 解决方案&#xff1a; 电脑硬件的温度正常范围会因设备类型和使用的具体硬件而有所不同。一般来说&#xff0c;以下是各种硬件的正常温度范围&#xff1a; CPU&#xff1a;正…

【八股哪背的完】Redis我先背这点儿,够用!

Redis篇 数据类型及其业务场景 字符串&#xff08;String&#xff09; 字符串类型是最基本的数据类型&#xff0c;value 最多可以容纳的数据长度是 512M。 存储任意类型的数据&#xff0c;包括数字、文本等。适用于缓存、计数器、分布式锁等场景。共享 Session 信息 哈希&am…

Pandas数据分析Pandas进阶在线闯关_头歌实践教学平台

Pandas数据分析进阶 第1关 Pandas 分组聚合第2关 Pandas 创建透视表和交叉表 第1关 Pandas 分组聚合 任务描述 本关任务&#xff1a;使用 Pandas 加载 drinks.csv 文件中的数据&#xff0c;根据数据信息求每个大洲红酒消耗量的最大值与最小值的差以及啤酒消耗量的和。 编程要求…

思维模型 锚定效应

本系列文章 主要是 分享 思维模型&#xff0c;涉及各个领域&#xff0c;重在提升认知。先入为主&#xff0c;决策易偏。 1 锚定效应的应用 1.1 定价策略中的锚定效应 黑珍珠的定价策略&#xff1a;在 20 世纪 70 年代&#xff0c;黑珍珠被视为一种廉价的珠宝。然而&#xff…

【ARFoundation学习笔记】平面检测

写在前面的话 本系列笔记旨在记录作者在学习Unity中的AR开发过程中需要记录的问题和知识点。难免出现纰漏&#xff0c;更多详细内容请阅读原文。 文章目录 平面检测属性可视化平面平面检测的开关控制显示与隐藏已检测平面 平面检测属性 AR中检测平面的原理&#xff1a;AR Fou…

ZYNQ_project:led

本次实验完成&#xff1a;led流水间隔0.5s 闪烁间隔0.25s。 名词解释&#xff1a; analysis分析&#xff1a;对源文件进行全面的语法检查。 synthesis综合&#xff1a;综合的过程是由 FPGA 综合工具箱 HDL 原理图或其他形式源文件进行分析&#xff0c;进而推演出由 FPGA 芯…

记录:Unity脚本的编写5.0

目录 前言创建动画Unity Animation、Animator常用类关于两者的区别Animator 编写脚本 大型连续剧之在untiy中&#xff08;或者别的什么活动&#xff09; 前言 之前在场景中添加了背景音乐&#xff0c;而在我们的日常的体验中&#xff0c;可以发现游戏或者场景中有很多有趣的动…

【mongoose】mongoose 基本使用

1. 连接数据库 // 1. 安装 mongoose // 2. 导入 mongoose const mongoose require(mongoose) // 3. 连接 mongodb 服务 mongoose.connect(mongodb://127.0.0.1:27017/xx_project) // 4. 设置回调 .on 一直重复连接 .once 只连接一次 mongoose.connection.on(open, () >…

测试用例的设计方法(全):错误推测方法及因果图方法

目录 错误推测方法 一. 方法简介 因果图方法 一. 方法简介 二. 实战演习 错误推测方法 一. 方法简介 1. 定义&#xff1a;基于经验和直觉推测程序中所有可能存在的各种错误, 从而有针对性的设计测试用例的方法。 2. 错误推测方法的基本思想&#xff1a; 列举出程序中…

创建删除查看电脑用户

命令框输入net user 查看计算机现有用户 创建用户 net user 用户名 密码 /add 创建隐藏账户 net user 用户名$ 密码 /add 删除用户 注册表查看用户&#xff0c;并创建用户 winR 运行regedit打开注册表编辑器&#xff0c;找到SAM把读取勾选上&#xff0c;关闭后重新打开注册表编…

使用 Clipdrop 替换长安三万里电影海报中的天空

长安三万里是一部不久前上映的古装动画电影&#xff0c;讲述了李白和高适的故事。电影海报中的天空是一片晴朗的月空&#xff0c;与扬州城的景色相得益彰。 最近&#xff0c;我发现了一款名为 Clipdrop 的软件&#xff0c;可以用来替换图片中的天空。这款软件使用人工智能技术&…

Vue3 简单实现虚拟Table,展示海量单词.利用WebAPI speechSynthesis,朗读英语单词

目录 本页面完整代码 视频演示 完整的页面代码 利用webapi speechSynthesis帮助我们自动郎读英语单词&#xff0c;可以利用这个API&#xff0c;做一些小说朗读或到账提示。 本页面完整代码 用Vue写了一个简单页面&#xff0c;里面还写了一个简单的虚拟Table支持海量数据展示…

Docker 持久化存储和数据共享_Volume

有些容器会自动产生一些数据&#xff0c;为了不让数据随着 container 的消失而消失&#xff0c;保证数据的安全性。例如&#xff1a;数据库容器&#xff0c;数据表的表会产生一些数据&#xff0c;如果我把 container 给删除&#xff0c;数据就丢失。为了保证数据不丢失&#xf…

GET 请求和 POST 请求

浅析HTTP中请求GET/POST - 知乎 (zhihu.com) 什么是GET GET&#xff1a;从服务器请求数据后获取服务端数据 常见发起get请求的方式&#xff1a; URL、src/href、表单(form) 格式&#xff1a; index.php?userNamejack&password123 语法&#xff08;keyvalue&keyva…

【Linux】 JumpServer 堡垒机远程访问

文章目录 前言1. 安装Jump server2. 本地访问jump server3. 安装 cpolar内网穿透软件4. 配置Jump server公网访问地址5. 公网远程访问Jump server6. 固定Jump server公网地址 前言 JumpServer 是广受欢迎的开源堡垒机&#xff0c;是符合 4A 规范的专业运维安全审计系统。JumpS…

【1++的Linux】之线程(二)

&#x1f44d;作者主页&#xff1a;进击的1 &#x1f929; 专栏链接&#xff1a;【1的Linux】 文章目录 一&#xff0c;对上一篇内容的补充二&#xff0c;Linux线程互斥1. 互斥的引出2. 互斥量3. 剖析锁的原理 一&#xff0c;对上一篇内容的补充 线程创建&#xff1a; pthread…

人工智能AI 全栈体系(十二)

第二章 计算机是如何学会下棋的 下棋一直被认为是人类的高智商游戏&#xff0c;从人工智能诞生的那一天开始&#xff0c;研究者就开始研究计算机如何下棋。著名人工智能学者、图灵奖获得者约翰麦卡锡在 50 年代就开始从事计算机下棋方面的研究工作&#xff0c;并提出了著名的 …