Proteus超声波测距仿真电路图+单片机源程序

发布者:楼高峰最新更新时间:2020-11-04 来源: 51hei关键字:Proteus  超声波测距  单片机 手机看文章 扫描二维码
随时随地手机看文章

大多数人感觉超声波测距proteus仿真是无法实现的,虽然proteus自带的库有GUR03和SRF04两种模型,但是却与实际传感器使用方法相差甚远,即使求助度娘也很难找到简单易懂的教程。



之前很多人想做超声波测距仿真但都没有找到很好的办法去实现,在软件里没有这样的元件,有人用一个按键开关去模拟仿真,这样仿真出来的效果,非常不好。还有人用555时基电路产生一个延时信号(555电路作为超声波仿真的内部元件),来模拟超声波头发送后遇到回波返射回来的这阶段时间,来对单片机超声波测距单片机系统进行模拟,能完成对超声波测距模块大致仿真,但需要繁杂的设计。

下面是一个超声波测距模块的proteus模型,能直接用于proteus仿真,且使用方法与实际传感器几乎一致,模型如下图。楼主千辛万苦终于完成了仿真,分享交流一下,请大家不啬赐教!

(library文件见附件)

下面是仿真效果:


单片机程序代码:

#include

#include

#include


#define Delay4us(){_nop_();_nop_();_nop_();_nop_();}


sbit LEDRed=P2^4;        //测距指示灯,亮表示正在测距,灭表示测距完成

sbit Trig=P1^7;                //HC-SR04触发信号输入

sbit Echo=P1^6;                //HC-SR04回响信号输出


float DistanceValue=0.0;        //测量的距离值

float SPEEDSOUND;                                //声速


//延时函数 20微秒 @12.000MHz

void Delay20us()

{

        uchar i;

        _nop_();

        i = 7;

        while (--i);

}



//测量距离

float MeasuringDistance()

{

        //最大定时时间约65ms

        TH0=0;

        TL0=0;

        

        //生成20us的脉冲宽度的触发信号

        Trig=1;                                

        Delay20us();

        Trig=0;


        //等待回响信号变高电平

        while(!Echo);        

        TR0=1;                //启动定时器0


        //等待回响信号变低电平

        while(Echo);               

        TR0=0;                //关闭定时器0


        //返回距离值(mm)

        return (SPEEDSOUND*(TH0*256.0+TL0))/2000;

}


//HCSR04初始化

void HCSR04_Initialize()

{


        SPEEDSOUND=334.1+25*0.61;                                

        Trig=0;        

        Echo=0;

        TMOD=0x01;

}


//测距的数值排序求平均

float DistanceStatistics()

{

        uchar i;

        float disData;

        for(i=0;i<7;i++)          //连续测距

        {

                disData+=MeasuringDistance();        

                delay(1);        

        }

        return disData/7.0;

}


void main()

{


        LcdInitiate();//1602初始化

        HCSR04_Initialize();//HC-SR04初始化

        while(1)

        {

                DistanceValue= DistanceStatistics()        ;

                display_val((int)DistanceValue,0x45);//显示距离值

                delay(1000);

                LEDRed=~LEDRed;                //测距系统工作指示灯

               

        }

}



关键字:Proteus  超声波测距  单片机 引用地址:Proteus超声波测距仿真电路图+单片机源程序

上一篇:单片机波形发生器Proteus仿真程序
下一篇:51单片机中的ROM和RAM分别是什么?

推荐阅读最新更新时间:2024-11-06 22:17

8051单片机中断系统结构及中断控制原理
当几个中断源同时向CPU请求中断时,按所发生的实时事件的轻重缓急排队,优先处理最紧急事件的中断请求,于是单片机规定每个中断源的优先级别。 当CPU正在处理一个中断请求,又发生另一个优先级比它高的中断请求,CPU暂时中止对前一中断处理,转而去处理优先级更高的中断请求,待处理完后,再继续执行原来的中断处理程序,这样的过程称为中断嵌套,这样的中断系统称为多级中断系统。 由于外界异步事件中断CPU正在执行的程序时随机的,CPU转向去执行中断服务程序时,除了硬件会自动把断电地址,即16位PC程序计数器的值压入堆栈之外,用户还得注意保护有关工作寄存器,累加器,标志位等信息,这个过程通常称为保护现场 。以便在完成中断服务程序后,恢复原工
[单片机]
PIC单片机的可编程电源的设计
        引言   随着各种电器和仪表设备的日渐丰富,对电源应用的灵活性提出了更高的要求。设计一款使用灵活、方便且价格相对便宜的通用电源,正越来越成为市场所需。现代单片机正朝着处理速度越来越快,外设资源越来越丰富,价格越来越便宜的方向发展,将单片机融入电源的设计中可以极大地提升电源的性能和灵活性。本文介绍了一种单片机加PWM芯片的开关电源设计方法,既可以保留PWM芯片带来的稳定工作性能,又可以利用单片机的控制能力提供各种人机交互和通信接口。笔者设计的电源作为通用电源使用,可以提供灵活可编程的电压电流输出,另外还可以设置成铅酸电池充电器的模式,具有广阔的应用前景。   1 系统功能   通过对电源的编程,可以方便地实现图
[电源管理]
PIC<font color='red'>单片机</font>的可编程电源的设计
基于MSP430单片机的M430/OS对系统的意义解析
1 在 MSP 430上使用RTOS的意义 一般的观点认为,MSP430上使用RTOS是没有意义的这是可以理解的。因为MSP430的硬件资源有限(以MSP430F149为例,只有2KB RAM),任何商业操作系统都不可能移植到MSP430上。目前在MSP430上得到应用的RTOS,只有μC/OS-II,但使用μC/OS-II 必须有昂贵的C编译器,这严重地限制了其在MSP430上的使用。 正是基于以上情况,笔者在应用MSP430过程中,编写了一个基于MSP430F149的RTOS,暂定名为M430/OS。它占用RAM量少、代码短小,稍加改动就可适用于大多数其它MSP430 单片机 。 在MSP430单片机系统上
[单片机]
8位单片机随机数
8位单片机很多地方需要随机数,比如游戏的洗牌,可在timer中取数,但是随机数质 量不高。随机数是一个既简单又复杂的问题,这里的例子使用了众所周知的线性叠加法,没 有完美的方法产生随机数,不过线性叠加法是一个合适的方法,彻底解决8位机随机数的问 题。 伪随机数函数总是返回可预知的数字,像抛骰子,如果抛足够多次,那么我们得到了一 个足够长的数字序列, 3,1,5,1,4,6,5,4,6,5,4,5,6,1,3,2,1,6,4,6,5,4,3,2,1,3,2,1,4,2,3,1,3...... 如果从序列中一个接一个的取出数字,那么数字就看似随机。 问题的关键是从这序列的哪个点(数字)开始取数?这个开始的点(数字)叫做种子
[单片机]
PIC单片机的程序设计经验分享
PIC单片机(Peripheral Interface Controller)是一种用来开发去控制外围设备的集成电路(IC)。一种具有分散作用(多任务)功能的CPU。本内容讲述了PIC单片机中的程序设计方面的学习 1、PIC单片机程序的基本格式 先介绍二条伪指令: EQU ——标号赋值伪指令 ORG ——地址定义伪指令 PIC16C5X单片机在RESET后指令计算器PC被置为全“1”,所以PIC16C5X几种型号芯片的复位地址为: PIC16C54/55:1FFH PIC16C56:3FFH PIC16C57/58:7FFH 一般来说,PIC单片机的源程序并没有要求统一的格式,大家可以根据自己的风格来编写。但这里我们推荐一种清
[单片机]
PIC<font color='red'>单片机</font>的程序设计经验分享
MCU大缺货!台系MCU再次宣布调价1成以上,或停止接单
由于产能紧缺,MCU价格不断,多家台湾MCU厂商近日再次宣布调涨价格,甚至停止接单。 义隆23日表示,由于MCU需求强劲,公司自今年1月1日起正式调涨价格,近期也因考量公司产品规划,年后MCU产品全面暂停接单,累计价格涨幅至少1成起跳。义隆今年共新增两家晶圆代工协力厂,包括台系、大陆系晶圆代工厂,新产能分别在第三季、第四季加入,其中,台系将用于生产指纹识别、LTDI等高压制程产品,大陆系则主要生产TDDI。 该公司董事长叶仪晧指出,尽管义隆今年取得产能较去年提升20%,但仍无法满足所有客户,同时由于MCU并非公司主力产品,虽说可以竞争,但相比公司笔电产品,获利表现约在平均值,因此将产能挪去承接对公司获利表现较有利的产品。 除了义隆
[手机便携]
采用MSP430单片机的可穿戴式血糖仪电路设计
  介绍了一种便携式血糖仪的设计。该设计主要从低功耗及精确性的角度出发,以MSP430系列单片机为核心,葡萄糖氧化酶电极为测试传感器,较快地测试出血糖浓度。此外,所设计的血糖仪还具有储存功能,有助于用户查看血糖浓度历史值和变化趋势。   血糖测试电路:在酶电极两端滴入血液后,会产生自由电子。由于电极两端存在激励电压,就会有定向电流流过电极。该激励电压是由ADC模块提供的1.5V稳压通过电阻分压而产生的,大约在300mV左右,它能产生μA级别的定向电流。由于A/D转换模块测量的是电压,所以需要将该定向电流转换成电压,并且进行一定的放大。本系统采用图2所示的电路来实现电流到电压的转换和放大。运算放大器LM358的反相端连接血糖试纸
[单片机]
采用MSP430<font color='red'>单片机</font>的可穿戴式血糖仪电路设计
利用单片机实现复杂的分立逻辑
开发人员可利用PIC16F13145系列单片机中的可配置逻辑模块(CLB)外设实现硬件中复杂的分立逻辑功能,从而精简物料清单(BOM)并开发定制专用逻辑。 在许多嵌入式系统应用中,通常都会使用分立式逻辑器件,例如74'HC系列。这些逻辑器件的优势在于可以独立于单片机(MCU)工作,并且响应速度比软件快得多。但是,这些器件会增加物料清单(BOM)并且需要占用额外的PCB面积。 为了解决这一问题,Microchip的许多单片机都集成了一种名为可配置逻辑单元(CLC)的外设(在PIC® MCU上)或名为可配置定制逻辑(CCL)的类似外设(在AVR® MCU上)。这两种外设都实现了软件定义的定制逻辑,可以独立于CPU执
[单片机]
利用<font color='red'>单片机</font>实现复杂的分立逻辑
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved