历史上的今天
今天是: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; //测距系统工作指示灯 } }
史海拾趣
|
从家庭中常用的冰箱、洗衣机、洗碗机到工厂及加工厂的水泵和风扇、以及办公室里的空调系统,中小型电机都需要得到有效的控制。在商业、工业和家庭环境中,我们对电动机的依赖无处不在,据估计电动机消耗的电能占据了全球电能消耗的50%以上。 然而, ...… 查看全部问答> |
|
市场上有S3C,TI,Freescale等不同品牌的产品,但是那一款比较适合做消费电子产品,下面我给大家做个分析。S3C的开发板产品价格相对较低,受到很多高校的钟爱,但是,要知道作为工程师必须使用和了解高端的产品,像这种给高校用来做基础教育的产品 ...… 查看全部问答> |
|
举例1: 有人要打印4张内容, 如何记录这个人打印的信息: PCName, Ip, 要打印的文档之Title, 4张, 保存到数据库 举例2: 有人要打印4张内容, 判断这个人是否允许打印4张, 若限制他打印2张 没有头绪啊...抓狂~~~ 请大家多多指教....… 查看全部问答> |
|
书上说: RS232接口:是数据传送设备与传输线之间的物理接口。计算机通过RS232接口与调制解调器连接,调制解调器与网络连接。 网卡:用来连接网络传输介质,控制信息的收发。 (1)我的理解是: 计算机通过RS232接 ...… 查看全部问答> |
|
求助啊求助,用的是DE2的板子,要实现一个触摸屏的涂鸦板,根据例子用纯硬件已经实现了的,但是老师突然说要用NIOS来实现,现在离毕业设计结束还有1周时间,感觉来不及了,也不太明白,能不能有哪位帮帮我,指导一下?QQ676674149… 查看全部问答> |
|
Resume back from PXA_PmEnterException 'Data Abort'(4) Thread-Id=07d0000e(pth=870 CE 6.O在系统待机恢复的时候总是出现这个问题,不知道是怎么回事啊?我已经在注册表里面把外设的驱动都已经去掉了,剩下touchpanel和LCD的驱动,还是不行。不清楚哪里出了问题。哪位高手给指点一下。谢谢了。 Resume back from PXA_PmEnterExcepti ...… 查看全部问答> |
|
本人修改了wince5里的largekb文件夹下的im.cpp文件,把大键盘删去了首行(29像素), 功能都正常,可是键盘显示尾部,老是多29像素高度的空白区域。 在largekb文件里能改的地方自认为都改了,感觉应该更改系统文件里调用软键盘的窗口尺寸 该如何 ...… 查看全部问答> |




