zoukankan      html  css  js  c++  java
  • 红外传感智能劝导系统

    一、项目简介:目前交通安全,文明出行是热点话题。交通方面的诸多设施都有待解决及改善,本项目以交通信号灯为研究背景,从行人的角度,节能安全为目的,来设计一个交通信号灯控制系统。




    二、系统主要模块及作用:红外检测模块,噪声检测模块,语音提示模块,上位机控制模块。
    *多对红外传感器检测人流量的大小;


    **对周围环境中的声音强度进行检测;


    ***语音提示行人不要闯红灯;


    ****上位机matlab串口通信设置手动和自动检测模式,及采集噪声数据,并储存,供以后分析。


    三、问题解决及目标实现:
    1.能够根据人是否闯红灯,控制闯红灯提示音播报【相比较没有语音提示,或一直语音提示,有着惊醒、节能两方面的优点


    2.能够根据交通信号灯周围环境大小,来控制语音播报声音大小【优点在于节能及智能化】


    3.上位机能够让交通管理员手动控制语音播报,并能够实现采集信号灯周围噪声环境数据,供相关人员分析以天为周期的交通信号灯环境下人员的心理变化,环境变化。


    四、总体图
    图片不好上传,略。








    五、工程实现
    项目的所有文件已上传至我的资源




    六、问题及建议
    1.工程
    对于硬件开发,涉及到诸多模块,每个模块必须要写成.c,.h形式方便后续调用,及裁剪


    2.全局变量
    全局变量一般不建议使用,但对于控制系统,模块间的信号耦合是无法避免的,而且许多全局变量的值必须要在中断里改变
    volatile 关键词可以避免编译器对全局变量的使用进行优化,防止全局变量的值在中断里成功修改,而在其他模块并没有改变。
    在此次项目中遇到个问题:即使加了关键词volatile ,中断里还是无法修改全局变量的值,最终经过排查,发现是由于我在两处中断里将全局变量的值分别致0,1而这两个中断服务程序的执行并不一致。
    还有建议将所有的全局变量单独弄个文件,进行调用






    3.时钟
    对于51单片机这个单一时钟,不存在这种问题,但是对于msp430或arm等多时钟的,时钟设置尤为重要,甚至可以说如果在项目开始初没有进行很好的预制,对后续的开发及调试有着致命的影响,而且有些时钟源可以提供不同的时钟,而在不同模块中使用同一时钟源的不同时钟,相互之间是会有影响的。比如串口通信,可能会造成接收字符的不完整性。




    4.程序框图
    对于小的c语言文件,不画程序框图,好像不影响什么,但是对于有着诸多文件的c工程。没有程序框图,会使得后续开发缺失宏观把握,对于mcu有限的资源,不能充分利用,导致需要外接模块。各模块之间、模块与主程序之间缺乏预定的逻辑连接。




    5.资源利用
    在画完程序框图后,应当接着将各个模块之间所需的构件列出,比如需要定时、计数器否?采用什么方式通信。
    然后在实现相应代码文件中注释好占用的管脚,内部资源,等一系列与mcu内部有关的东西











  • 相关阅读:
    Google Map API使用详解(一)——Google Map开发背景知识
    IOS开发中发送Email的两种方法
    iOS简单的画线(UIImageVIew方式)
    NSData + Base64
    (转载)谈Flash的破解与加密(附flash破解工具)
    Google Map API使用详解(二)——Google Map API中文说明
    oracle sysdate 等 时间的相关应用
    vc mail 封装类
    switch if 比较
    http://tech.ddvip.com/200810/122362552676322.html state模式~
  • 原文地址:https://www.cnblogs.com/stoneFang/p/6715342.html
Copyright © 2011-2022 走看看