历史上的今天
返回首页

历史上的今天

今天是:2024年11月04日(星期一)

正在发生

2020年11月04日 | Proteus超声波测距仿真电路图+单片机源程序

2020-11-04 来源:51hei

大多数人感觉超声波测距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;                //测距系统工作指示灯

               

        }

}



推荐阅读

史海拾趣

Good-Ark公司的发展小趣事
检查比较器的阈值设置是否正确,报警装置是否完好并能正常发声或发光。
Hi-G Relays公司的发展小趣事
包括放大器、滤波器等,用于对声音传感器输出的电信号进行处理,以提高信号的信噪比和识别度。
Gem Asia Enterprise Co Ltd公司的发展小趣事

随着业务的不断扩展,Gem Asia意识到全球化布局的重要性。公司开始在全球范围内寻找合适的生产基地和市场机会。通过并购海外优质资产、建立海外研发中心和销售网络,Gem Asia成功实现了从本土企业向跨国公司的转变。特别是在亚洲和欧美市场,Gem Asia凭借其高质量的产品和灵活的市场策略,赢得了广泛的客户认可和市场份额。

Electronic Transistors Corp公司的发展小趣事

在技术创新的基础上,ETC公司开始积极拓展市场。公司通过优化产品线,满足不同客户的需求,逐渐打开了国际市场的大门。同时,ETC还加大了品牌宣传力度,通过参加国际电子展会、发布技术白皮书等方式,提升品牌知名度和影响力。这些举措使ETC在全球范围内的市场份额不断扩大,品牌影响力也日益增强。

Avasem公司的发展小趣事

随着全球对环境保护和可持续发展的关注度不断提升,Avasem公司积极响应这一趋势,将可持续发展理念融入公司的战略规划和日常运营中。公司采用环保材料和工艺生产电子产品,降低生产过程中的能源消耗和废弃物排放。同时,Avasem公司还积极参与社会公益事业,支持教育、环保等领域的项目。这些举措不仅提升了公司的社会形象,还为其赢得了更多消费者的支持和信任。

请注意,以上故事均为虚构内容,旨在展示一个电子行业公司可能的发展路径和策略。在实际情况下,一个公司的成长会受到多种因素的影响,包括市场环境、技术发展趋势、公司战略选择等。因此,这些故事并不能完全代表任何真实存在的电子行业公司的发展历程。

国产公司的发展小趣事
在电路中加入适当的消振电容或电阻,以消除自激振荡。

问答坊 | AI 解惑

基于平台的变速电动机方案开发

从家庭中常用的冰箱、洗衣机、洗碗机到工厂及加工厂的水泵和风扇、以及办公室里的空调系统,中小型电机都需要得到有效的控制。在商业、工业和家庭环境中,我们对电动机的依赖无处不在,据估计电动机消耗的电能占据了全球电能消耗的50%以上。 然而, ...…

查看全部问答>

ARM核心开发平台行业分析

市场上有S3C,TI,Freescale等不同品牌的产品,但是那一款比较适合做消费电子产品,下面我给大家做个分析。S3C的开发板产品价格相对较低,受到很多高校的钟爱,但是,要知道作为工程师必须使用和了解高端的产品,像这种给高校用来做基础教育的产品 ...…

查看全部问答>

请教打印机高难度问题

举例1: 有人要打印4张内容, 如何记录这个人打印的信息:  PCName, Ip, 要打印的文档之Title, 4张, 保存到数据库 举例2: 有人要打印4张内容, 判断这个人是否允许打印4张, 若限制他打印2张 没有头绪啊...抓狂~~~ 请大家多多指教....…

查看全部问答>

网卡与RS232接口的疑惑:为什么控制器不用网卡来通信?

书上说:     RS232接口:是数据传送设备与传输线之间的物理接口。计算机通过RS232接口与调制解调器连接,调制解调器与网络连接。     网卡:用来连接网络传输介质,控制信息的收发。 (1)我的理解是: 计算机通过RS232接 ...…

查看全部问答>

【求助】NIOS中触摸屏硬件该为NIOS控制

求助啊求助,用的是DE2的板子,要实现一个触摸屏的涂鸦板,根据例子用纯硬件已经实现了的,但是老师突然说要用NIOS来实现,现在离毕业设计结束还有1周时间,感觉来不及了,也不太明白,能不能有哪位帮帮我,指导一下?QQ676674149…

查看全部问答>

新人报到,望各位多多关照。俺没可用分了,不好意思。呵呵。

以后请大家多多关照,捧捧场,有分散个分,没分给个脸。 哈哈。。。。。…

查看全部问答>

usb摄像头在vc下的开发

你好,我能不能看看你以前开发过的 和摄像头有关的 程序。 我新买的免驱动摄像头,我想自己控制,和摄像头捕获到的图像获取。 可以指点吗。…

查看全部问答>

Resume back from PXA_PmEnterException 'Data Abort'(4) Thread-Id=07d0000e(pth=870

CE 6.O在系统待机恢复的时候总是出现这个问题,不知道是怎么回事啊?我已经在注册表里面把外设的驱动都已经去掉了,剩下touchpanel和LCD的驱动,还是不行。不清楚哪里出了问题。哪位高手给指点一下。谢谢了。 Resume back from PXA_PmEnterExcepti ...…

查看全部问答>

请高手:修改wince5里软件盘出现的问题

本人修改了wince5里的largekb文件夹下的im.cpp文件,把大键盘删去了首行(29像素), 功能都正常,可是键盘显示尾部,老是多29像素高度的空白区域。 在largekb文件里能改的地方自认为都改了,感觉应该更改系统文件里调用软键盘的窗口尺寸 该如何 ...…

查看全部问答>