历史上的今天
返回首页

历史上的今天

今天是:2024年12月23日(星期一)

正在发生

2020年12月23日 | 51单片机超声波测距报警系统

2020-12-23 来源:51hei

要想做超声波测距系统的仿真,核心是怎么解决这个问题:实物系统实际存在的超声波并利用它测距如何在仿真图中实现。我也下载过很多别人的仿真图,可是自己一运行就是没显示,全部都不能用,其实问题就是出在仿真图中超声波发射接收模块。经过修改的仿真图如下(亲测可用)

这个仿真图还包含按键设置模块和报警模块(前者用于设置报警值,后者在测得距离小于设置报警值时候蜂鸣器报警),由上图中标注的按键模块和报警模块实现,按键设置模块用法如下:
按下一次KEY1,显示屏显示当前设置的报警值,按下KEY2最小值加1CM,按下KEY2减1CM,设置完成后按下KEY1保存,显示屏返回显示距离,如此往复循环。


KEIL程序框架图

单片机源程序如下:

#include "task.h"


extern unsigned int S;        //声明距离缓存变量,在文件"task.c"中定义

extern unsigned int dis_buf[4];        //声明显示缓存数组,在文件"task.c"中定义

extern unsigned int code duan_ma[16];

extern unsigned int S_H, S_L;        //S_H:报警上限值,默认400cm,S_L:报警下限值,默认10cm




/* 主函数 */

void main(void)

{

        digDuan = 0x40;                //显示"----"

        digWei1 = 0;

        digWei2 = 0;

        digWei3 = 0;

        digWei4 = 0;

        delayms(1000);                //延时大约1s

        InitTimer0();                //定时器0初始化


        while(1)

        {

                count();                                        //计算距离

                if(S>=S_H || S<=S_L)                //如果超出设定的范围,则显示"---"

                {

                        dis_buf[3] = 0x00;

                        dis_buf[2] = 0x40;                 //显示"---"

                        dis_buf[1] = 0x40;

                        dis_buf[0] = 0x40;       

                        BEEP = 0;                        //蜂鸣器鸣叫

                        delayms(1000);

                }

                else

                {

                        BEEP = 1;                        //关闭蜂鸣器

                        dis_distance();                //显示距离

                }


                if(key_scan() == 1)                //如果按下设置键,则进入设置报警功能

                {

                        BEEP = 0;                        //按键提示音

                        delayms(50);

                        BEEP = 1;

                        delayms(100);

                         key_fuction();                //进入设置报警功能

                }                       

        }

}



推荐阅读

史海拾趣

得倍(DBIC)公司的发展小趣事

在激烈的市场竞争中,倍(DBIC)公司不断优化供应链管理,降低成本,提高效率。公司与全球多家供应商建立了长期稳定的合作关系,确保原材料的稳定供应。同时,倍(DBIC)公司还加强了对生产过程的监控和管理,确保产品质量和交货期。这些措施使倍(DBIC)公司在成本控制和交付能力方面具备了明显的竞争优势。

明波通信(BWAVE)公司的发展小趣事

随着国内市场的日益饱和,明波通信开始将目光投向全球市场。公司先后在日本东京和江苏常州设立了子公司,通过技术合作和市场拓展,进一步巩固了公司在全球通信领域的地位。同时,明波通信也积极参与国际技术交流和合作,不断提升自身的技术水平和创新能力。这一系列的国际化战略举措,为明波通信的未来发展奠定了坚实的基础。

以上五个故事都是基于明波通信在电子行业中的发展历程和公开资料进行的概括性描述。虽然无法涵盖所有细节和具体事件,但希望能够展现出明波通信在创业、技术创新、市场拓展和国际化等方面的努力和成就。

Deltrol Controls公司的发展小趣事

随着电子设备的日益复杂,对内部连接件的要求也越来越高。Deltrol Controls意识到,传统的连接方式已经无法满足行业的需求。为此,公司投入大量资金研发新型软管组件,该组件不仅具有优异的耐温、耐压性能,而且安装简便、维护方便。这一突破性的产品迅速赢得了客户的青睐,Deltrol Controls在电子行业的影响力也进一步扩大。

圣邦微电子(Fangtek)公司的发展小趣事

随着电子设备的日益复杂,对内部连接件的要求也越来越高。Deltrol Controls意识到,传统的连接方式已经无法满足行业的需求。为此,公司投入大量资金研发新型软管组件,该组件不仅具有优异的耐温、耐压性能,而且安装简便、维护方便。这一突破性的产品迅速赢得了客户的青睐,Deltrol Controls在电子行业的影响力也进一步扩大。

Cogent_Computer_Systems公司的发展小趣事

在追求经济效益的同时,Cogent_Computer_Systems公司也积极履行社会责任。公司关注环保、节能等社会问题,并在产品设计和生产过程中积极采用环保材料和技术。此外,公司还积极参与公益活动,为社会做出贡献。这些举措不仅提升了公司的社会形象,也赢得了消费者和公众的尊重和认可。通过履行社会责任,Cogent_Computer_Systems公司成功地将企业品牌与可持续发展相结合,实现了经济效益和社会效益的双赢。

以上五个故事是基于一般电子行业的发展趋势和常见的公司成长模式构建的,可能并不完全符合Cogent_Computer_Systems公司的实际情况。如需了解该公司具体的发展故事,建议查阅相关新闻报道、公司年报或行业分析报告等权威资料。

CTS [CTS Corporation]公司的发展小趣事

为了满足全球市场的需求,CTS开始实施全球化扩张战略。公司在北美、亚洲和欧洲等地设立了生产设施,以便更好地服务全球客户。同时,CTS还积极与各地的合作伙伴建立紧密的合作关系,共同推动电子元器件和传感器市场的发展。

问答坊 | AI 解惑

51单片机C语言控制与应用教程

51单片机C语言控制与应用教程,很好的,初学者用…

查看全部问答>

难题请教,51从外部flash的FFFD地址启动?怎么做啊

我有一颗芯片 ip210w由 8051内核和一个MAC组成 芯片手册有一句话:CPU starts up and runs instructions at address 0xFFFD of external Flash. 就是这句话把我郁闷了好久,怎么烧程序都不行。CPU都跑不起来。 请教高手如何让我的CPU跑起来,谢 ...…

查看全部问答>

程序执行时间问题

问个VC问题  (应用程序通过pci采集板读数据) 应用程序的WM_TIMER在电脑刚开机(开机2,3分钟左右)会被阻塞吗? 我有段定时器(100ms)的执行程序,我想知道这段程序的执行时间。开始time1=GetTickCount(),末尾time=GetTickCount()-ti ...…

查看全部问答>

不能捕捉到CArchiveException 请各路英雄指教

大家好, 最近我遇到一个问题,在我的应用程序中(MFC工程), 里面有一句代码,是对文件读写的,如果这儿有一个空文件(里面什么内容也没有), 但我们又对它进行了读操作(调用CArchive >>进行读出),那么这儿一定会有个 CArchiveException异 ...…

查看全部问答>

MC45 GPRS模块如何实现自动重连 总是在线???

1.如题 ```` 2.还有就是如果一段时间没有数据传输 是不是就自动断开了? 3.断开后就可以继续发AT指令了么? 4.谢谢。。。。。…

查看全部问答>

EVC4.0编译后生成的EXE在目标板上执行 出错 乱码

1、开始我使用的共享MFC库出错,后来我使用的静态MFC库,不出错了,,,但我在PB里已经向目标板加上了MFC组件,不知道为什么出错 2、我生成的EXE文件里如果有中文会显示乱码,不如应该如何解决 先谢谢了…

查看全部问答>

WIN CE开发问题启蒙,希望得到帮助

谁有好的WIN CE的书籍或课程视频资料,介绍一下,我用VS2005的!最好都有链接地址,可以看看,简介也好!…

查看全部问答>

今天调试板子,发现不法连接

今天调试板子,发现无法连接。第一个想到的是电源电压(焊DSP之前有测过电压都是对的)。 把所有的电容测了,发现RTS管脚处,用了一个RC 滤波电路。C上电压变成2.75V。去掉电容,DSP可连接。 将原本的4.7K,电阻换小后,电压上抬到3V左右。DSP工 ...…

查看全部问答>

求助:任务ready不执行?

求助:建立了一个任务,就是不停进行打开、写、关闭、删除文件的操作,处于ready的状态,同时只有tShell处于ready状态,但spy后发现没有任何任务占用tick时间,中断也没有。该任务没执行。 出现这种情况是在建立任务后,在任务中输入i等指令后,就 ...…

查看全部问答>

自己总结的ucos引发任务调度的情况,求补充,求拍砖

1.最基本的:系统开始运行OSStart()会引发一次调度 2.创建一个新任务时,如果此时系统在运行状态,则引发一次调度。3.某任务调用挂起函数挂起自己后引发一次调度。 4.调用恢复任务函数OSTaskResume()引发一次调度。 5.任务延时时,引发一次 ...…

查看全部问答>