带摄像头和GPS的自行小车控制器设计


    




    带摄头GPS行车控制器设计



    中文题目

    课题核心行车单片机控制系统该系统采4红外探测头进行循迹避障循迹中利黑色光线反射率特点面颜色黑色时障碍物光线会反射样避障程中红外光反射回时传感器会点亮灯输出低电0超声波测距较相似控制口发出高电接收口会高电输出样计算出距离
    关键词:智车红外避障黑线循迹超声波测距避障














    Abstract
    This topic is at the heart of the car by single chip microcomputer control system the system USES four infrared detection head tracking and obstacle avoidance use black to light reflectivity in the tracking this characteristic when the surface color is not black in the reflection characteristics of obstacle avoidance of obstacles to light with an obstacle on the surface of the current the infrared sensor to launch out by most reflected The sensor outputs low level 0 and lights up the lamp At the same time the ultrasonic probe is used for ranging and obstacle avoidance When the control port emits a high level it can wait for the high level output at the receiving port so as to calculate the distance
    Keywords smart car Infrared obstacle avoidanceBlack line trackingUltrasonic distance measurement and obstacle avoidance









    目录
    1前言 6
    11 设计目意义应达技术求 6
    12 设计国外发展概况存问题 7
    13 设计应解决问题 7
    2设计 8
    21设计原理 9
    22方案选择 15
    221分析问题 15
    222设计程 16
    3结 22
    参考文献 23
    致谢 24
    附录 25









    1前言
    21世纪类研究单品机方式正进行场前未世纪革命次革命中会社会产生巨革命印刷术产生影响更电气革命基础迎世界第四次伟革命现世界已单片机包围未察觉生活中手机计算机洗衣机板空调中少配12部单片机较型工业控制系统中甚会百台运行未单片机运更加广泛汽车水龙头电饭煲电灯会包含说会巨发展空间
    11设计目意义应达技术求
    设计智车目通红外发射接收达动避障通超声波达测距避障动化智化基础求软件硬件结合C语言编程通学单片机类巩固加深理解前理提高动手力增强安装调试水够编写程序学控制里面资源懂软硬件联系日学工作基础
    12设计国外发展概况存问题
    121研究现状意义
    着工业40时代单片机工智解探索断加深量公司开始投入研究生产智车现实生产生活中越越越广泛工厂运输快递便捷离开智典型新型高科技更驾驶基础集众知识领域学科交叉结合体环境感知规划决策动驾驶等世界许国家20年前开始研发中国开始重视取成
    122设计应解决问题
    解决程序硬件结合问题:程序实现特定目标解决特定问题计算机语言编写命令序列集合写出意思执行事情做事情次解决车红外避障黑线循迹超声波测距问题














    2设计
    (1)掌握单片机电路结构功特性基础利单片机C51通Keil软件编写程序烧录软件车种行动方式功通动手安装车学单片机理知识编写程序
    (2)采C51开发板车功进行设计通车底板部位调试设计烧入程序运行通车实验测试成功终完成结构设计图21

    图21 图中P7接法:
    IN1接实验板P12
    IN2接实验板P13
    EN1接实验板P14
    EN2接实验板P15
    IN3接实验板P16
    IN4接实验板P17

    J3接法:
    IN5接实验板P21
    IN6接实验板P20
    P4接法:
    OUT1接实验板P32
    OUT2接实验板P33
    OUT3接实验板P34
    OUT4接实验板P35
    电源接法:
    P1(4VCC 4GND 选)
    VCC接实验板 VCC 引脚
    GND接实验板 GND 引脚图21 P7:
    21设计原理
    211红外避障:
    车左右两边两组红外发送装置车红外避障功红外探头感知周围障碍物障碍时收红外反射光线区时烧入程序进单片机控制车进行避障利红外光物体反射功判断黑白
    1 根反射特点反射回光会传感器输出低电0时L4L5灯会点亮
    2 前面空旷情况红外光反射回少时传感器输出1
    3什传感器输出01判断否存障碍物然进行避障
    原理图:
    图2223红外发射发射光线然接收光线接受红外线根障碍物进行改变然电阻会变电压变
    图22 红外检测电路

    图23 红外检测发射接受电路
    图24通IN3IN4检测模块提示模块:
    电压参考电压会输出高电指示灯会灭
    电压相时输出低电指示灯亮

    图24 检测提示电路
    212黑线循迹:
    车背两红外探测探测面实现黑白线识黑线相红外光吸收时传感器会输出高电1果黑线白色区域红外光量返回样传感器会输出0否黑线保持循迹传感器高者低电调节
    原理图:

    图25 红外检测电路

    图26 红外发射接受电路
    图27P2P3车头前方底板传感器通红外接受RC1接收信号改变身阻值时IN3值改变然图中IN3接口

    图27
    213超声波测距避障
    超声波种波频率高指性强超声波测距原理默认波速度概光速通车超声波探头发射超声波测量碰障碍物返回时间然计算出发射点障碍物实际距离知道点外点时间速度时间算出回距离二需距离速度已知时间已知距离计算果精确测量考虑环境温度问题
    模块工作原理:
    (1)首先IO口触发Trig引脚段发送等10us 高电超声波模块收信号会认外界控制开始工作时发出超声波脉脉40KHZ
    (2)超声波模块部行测试完毕段时间时超声波部通IO Echo输出高电图28时序图里面测少高电时间回时间少
    图28时序图硬件软件结合紧密方首先触发信号引脚Trig中发送10UsTTL触发信号10us全部高电时波型代表脉高电软件中直接输出1然延迟时模块部圆形探头会发出840khz脉接着输出高电直收840KHZ止然立马Echo引脚输出高电检查距离约信号持续时间越长


    图28 超声波时序图
    电路原理图:

    图29 发射接收电路
    图图30 IO口:单片机IO口相连P20P21直接接线开发板中P20Echo接收端接收端P21指持续接收高电通高电时间判断超声波运行时间控制端控制端发送10US信号控制

    图210 单片机IO口
    22方案选择
    红外避障黑线循迹:
    PWM调速样车速度选择变化特避障黑线循迹中车速度必须控制PWM调速果车太快传感器反应行动间车速快足调整车会撞障碍物
    超声波测距避障:
    电压般5V数元器件工作电压开发板工作电压需电流2mA前方整体探测角度15度探测距离高精度厘米级
    表21 超声波电气参数表
    221分析问题
    1红外避障:
    太阳光直射中光线太强会较影响红外线耳朵身原外传感器灵敏度问题果灵敏度高话相微弱反射光线检测认障碍物时候需调低中间程度根调电阻调节
    2循迹:
    会出现黑线传感器感应黑线情况黑线传感器灵敏度调太高应该调低灵敏度样检测黑线灵敏度太高黑色反射红外光传感器识
    3超声波测距
    (1)测距时测物体面积05方米然测
    (2)果带电连接时会影响模块正常工作
    (3)程序插液晶屏需P07杜邦线接
    222设计程
    1设计基础:
    首先学keli明白录入程序话必须先保存电脑文件里然KELI中存入main明白创造性提出问题学计算机重性次懂软件中找问题循环中时序控制明白写法做什检测键盘输入轻触开关种电子开关时轻轻开关钮开关接通松开手时开关断开开关图:
    P30—P37 双功口(置拉电阻)
    具特定第二功第二功时普通通准双IO口键盘分类独立式键盘电路原理
    编写简单键盘输入程序: KEY1LED显示出信号
    读端口读Pn端口寄存器读引脚读该引脚Pn端口寄存器中应位通引Pn端口寄存器值者引Pn端口寄存器中应位实现读端口者读引脚IF语句
    键盘输入检测种基方法:轮询法
    键释放时输入信号抖动现象进行键盘软件消抖
    键般利机械触点闭合断开作机械触点弹性作闭合断开瞬间均右抖动程抖动时间般5—10mS稳定闭合时间操作员键动作决定般零点秒秒保证单片机次闭合仅作次键输入操作必须编程时候编写必程序代码抖动影响称键盘软件消抖
    2模块调试:
    (1) 避障模块:W1(W2)两电位器组成L4(L5)信号指示灯左(右)光电传感器组成 L4信号灯接收低电亮没高电
    W1左光电信号强度调节时针测远逆时针 W2右光电信号强度调节理
    (2)黑白线识模块调试: W3(W4)电位器L2(L3)信号指示灯左光电传感器组成 中间两灯方片白色时探测器接收会发出低电灯亮方条黑线时时红外反射量偏传感器会输出高电灯灭 W3左光电信号强度调节时针测远逆时针 W4右光电信号强度调节理
    (3)电机模块调试:般需调试调试

    图211 电机电路
    3软件设计
    (1)车动作

    图31 车前左右动作图
    (2) 黑线循迹流程图:

    图32 红外循迹图
    (2)红外避障流程图:

    图214 红外避障图
    (4)超声波测距:

    图215 超声波测距图
    (5)超声波避障:
    图216 超声波避障图














    3结
    通原理图实验操作分析出红外循迹避障间关系红外发送接收完成硬件通滑动电阻调节灵敏度指示灯亮起时候信号输出低着探测方位面前方第二循迹话需没信号灯灭判断黑线位置避障需灯亮信号判断位置循迹需精细调节左右避障需转弯电机速度会更快终该车实现功板黑线循迹红外避障车身前部超声波循迹避障













    参考文献
    杨阳民编著亚博科技北京理工学出版社2002年4月第版
    蒋明编著单片机原理应清华学出版社2018年2月第1版
    张志良编著单片机原理控制技术第二版机械工业出版社2014年5月第1版
    周立功编著单片机基础实验指导书广州周立功单片机发展限公司出版社2016年3月第1版
    杨志忠编著模拟电子技术 高等教育出版社出版2012年8月第1版
    严雨编著新编51单片机C语言实战教程电子工业出版社2017年4月第1版
    张俊涛数字电路逻辑设计清华学出版社2017年7月第1版
    崔岩松电路设计仿真PCB设计清华学出版社2019年8月1日
    谭浩强C程序设计清华学出版社2017年9月第五版
    史蒂夫卢奇工智民邮电出版社2018年9月第1版






    谢 辞
    时学期毕业设计结束意味者北京理工学珠海学院学生涯结束毕业设计段时间里身提高中包含电气电子电路理解软件编程理解运硬件软件结合许新感悟更加解单片机C语言行业创造发展关方面书籍认识学新思维帮助等等然益指导老师蒋伟荣力帮助身学中断指出错误点点指导现成果希继续加深学















    附 录
    (1)车动作程序:
    #include 包含52单片机系统头文件

    定义智车驱动模块输入IO口
    sbit IN1P1^2 高电1 退(反转)
    sbit IN2P1^3 高电1 前进(正转)

    sbit IN3P1^6 高电1 前进(正转)
    sbit IN4P1^7 高电1 退(反转)

    sbit EN1P1^4 高电
    sbit EN2P1^5 高电

    void delay(unsigned int xms)
    {
    unsigned int ij
    for(ixmsi>0i) ixms延时约xms毫秒
    for(j112j>0j)
    }

    void run(void) 前进函数
    {
    EN11
    EN21电机
    IN10
    IN21 左电机正转
    IN31
    IN40右电机正转
    }

    void back(void) 退函数
    {
    EN11
    EN21电机
    IN11
    IN20 左电机反转
    IN30
    IN41右电机反转
    }

    void right(void) 右转函数
    {
    EN11
    EN21电机
    IN10
    IN21 左电机正转
    IN30
    IN40右电机动
    }

    *void right(void) 右转函数 写法2供参考
    {
    EN11
    EN20右电机
    IN10
    IN21 左电机正转
    IN31
    IN40IN3 IN4赋值右电机动
    } *


    void left(void) 左转函数
    {
    EN11
    EN21电机
    IN10
    IN20 左电机动
    IN31
    IN40右电机正转
    }
    void stop(void) 停止函数
    {
    EN11
    EN21电机
    IN10
    IN20 左电机动
    IN30
    IN40右电机正转
    }


    void spin_right(void) 右转函数
    {
    EN11
    EN21电机
    IN10
    IN21 左电机正转
    IN30
    IN41右电机反转
    }

    void spin_left(void) 左转函数
    {
    EN11
    EN21电机
    IN11
    IN20 左电机反转
    IN31
    IN40右电机正转
    }



    void main(void)
    {
    int i
    delay(2000) 延时2s启动
    run()
    delay(1000)
    back()
    delay(1000) 全速前进急停退(电压足够情况会甩尾)
    stop()
    delay(500)

    for(i0i<5i++)
    {
    run()
    delay(100) 车间断性前进5步
    stop()
    delay(80)
    }

    for(i0i<5i++)
    {
    back()
    delay(100) 车间断性退5步
    stop()
    delay(80)
    }

    for(i0i<5i++)
    {
    left()
    delay(1000) 弯套弯连续左旋转
    spin_left()
    delay(500)
    }

    for(i0i<5i++)
    {
    right()
    delay(1000) 弯套弯连续右旋转
    spin_right()
    delay(500)
    }

    for(i0i<10i++)
    {
    right()
    delay(100) 间断性原右转弯
    stop()
    delay(100)
    }

    for(i0i<10i++)
    {
    left()
    delay(100) 间断性原左转弯
    stop()
    delay(100)
    }

    for(i0i<10i++)
    {
    left()
    delay(300) 走S形前进
    right()
    delay(300)
    }

    for(i0i<10i++)
    {
    spin_left()
    delay(300) 间断性原左转
    stop()
    delay(300)
    }

    for(i0i<10i++)
    {
    spin_right()
    delay(300) 间断性原右转
    stop()
    delay(300)
    }


    while(1) 死循环 复位键重新跑程序


    }



    (2)黑线循迹:
    #include 包含52系统头文件
    #include bst_carh 包含bst_carh智车头文件

    unsigned char pwm_val_left 0变量定义
    unsigned char pwm_val_right 0
    unsigned char push_val_left 5 左电机占空N20 速度调节变量 020020
    unsigned char push_val_right5 右电机占空N20
    家根循迹效果修改两数值
    bit Right_PWM_ON1 右电机PWM开关
    bit Left_PWM_ON 1 左电机PWM开关


    延时函数
    void delay(unsigned int xms)
    {
    unsigned int ij
    for(ixmsi>0i) ixms延时约xms毫秒
    for(j112j>0j)
    }

    前进
    void run(void)
    {
    push_val_left6 速度调节变量 020020
    push_val_right6
    Left_moto_go 左电机前走
    Right_moto_go 右电机前走
    }

    左转
    void leftrun(void)
    {
    push_val_left5
    push_val_right5
    Right_moto_go 右电机前走
    Left_moto_Stop 左电机停止
    }

    右转
    void rightrun(void)
    {
    push_val_left5
    push_val_right5
    Left_moto_go 左电机前走
    Right_moto_Stop 右电机前走
    }

    停止
    void stop(void)
    {
    Left_moto_Stop
    Right_moto_Stop
    }

    ************************************************************************
    PWM调制电机转速

    左电机调速
    *调节push_val_left值改变电机转速占空*
    void pwm_out_left_moto(void)
    {
    if(Left_PWM_ON)
    {
    if(pwm_val_left {
    EN11
    }
    else
    {
    EN10
    }
    if(pwm_val_left>20)
    pwm_val_left0
    }
    else
    {
    EN10 未开启PWMEN10 左电机 停止
    }
    }
    ******************************************************************
    * 右电机调速 *
    void pwm_out_right_moto(void)
    {
    if(Right_PWM_ON)
    {
    if(pwm_val_right {
    EN21 占空620
    }
    else
    {
    EN20
    }
    if(pwm_val_right>20)
    pwm_val_right0
    }
    else
    {
    EN20 未开启PWMEN20 右电机 停止
    }
    }


    TIMER0中断服务子函数产生PWM信号
    void timer0()interrupt 1 using 2
    {
    TH00XFC 1Ms定时
    TL00X66
    pwm_val_left++
    pwm_val_right++
    pwm_out_left_moto()
    pwm_out_right_moto()
    }

    void keyscan(void) 键扫描函数
    {
    A if(K40) 判断否信号
    {
    delay(10) 延时10ms
    if(K40) 次判断否
    {
    FM0 蜂鸣器响
    while(K40) 判断否松开键
    FM1 蜂鸣器停止
    }
    else
    {
    goto A 跳转A重新检测
    }
    }
    else
    {
    goto A 跳转A重新检测
    }
    }


    函数
    void main(void)
    {
    P10X00 关电机
    keyscan() 键启动检测
    delay(1000)1s启动

    TMOD0X01
    TH0 0XFC 1ms定时
    TL0 0X66
    TR0 1
    ET0 1
    EA 1 开总中断


    while(1) 限循环
    {
    信号0 没信号1
    if(Left_1_led0&&Right_1_led0)
    run() 调前进函数
    else if(Left_1_led1&&Right_1_led0) 左边检测黑线
    {
    leftrun() 调车左转函数
    }
    else if(Right_1_led1&&Left_1_led0) 右边检测黑线
    {
    rightrun() 调车右转函数
    }
    else
    stop()
    }
    }
    (3)红外避障:
    #include 包含52系统头文件
    #include bst_carh 包含bst_carh智车头文件

    unsigned char pwm_val_left 0变量定义
    unsigned char pwm_val_right 0
    unsigned char push_val_left 9 左电机占空N20 速度调节变量 020020
    unsigned char push_val_right9 右电机占空N20
    bit Right_PWM_ON1 右电机PWM开关
    bit Left_PWM_ON 1 左电机PWM开关


    延时函数
    void delay(unsigned int xms)
    {
    unsigned int ij
    for(ixmsi>0i) ixms延时约xms毫秒
    for(j112j>0j)
    }

    前进
    void run(void)
    {
    push_val_left5 速度调节变量 020020
    push_val_right5
    Left_moto_go 左电机前走
    Right_moto_go 右电机前走
    }

    左转
    void leftrun(void)
    {
    push_val_left5
    push_val_right5
    Right_moto_go 右电机前走
    Left_moto_Stop 左电机停止
    }

    右转
    void rightrun(void)
    {
    push_val_left5
    push_val_right5
    Left_moto_go 左电机前走
    Right_moto_Stop 右电机前走
    }


    ************************************************************************
    PWM调制电机转速

    左电机调速
    *调节push_val_left值改变电机转速占空*
    void pwm_out_left_moto(void)
    {
    if(Left_PWM_ON)
    {
    if(pwm_val_left {
    EN11
    }
    else
    {
    EN10
    }
    if(pwm_val_left>20)
    pwm_val_left0
    }
    else
    {
    EN10 未开启PWMEN10 左电机 停止
    }
    }
    ******************************************************************
    * 右电机调速 *
    void pwm_out_right_moto(void)
    {
    if(Right_PWM_ON)
    {
    if(pwm_val_right {
    EN21 占空620
    }
    else
    {
    EN20
    }
    if(pwm_val_right>20)
    pwm_val_right0
    }
    else
    {
    EN20 未开启PWMEN20 右电机 停止
    }
    }


    TIMER0中断服务子函数产生PWM信号
    void timer0()interrupt 1 using 2
    {
    TH00XFC 1Ms定时
    TL00X66
    pwm_val_left++
    pwm_val_right++
    pwm_out_left_moto()
    pwm_out_right_moto()
    }

    void keyscan(void) 键扫描函数
    {
    A if(K40) 判断否信号
    {
    delay(10) 延时10ms
    if(K40) 次判断否
    {
    FM0 蜂鸣器响
    while(K40) 判断否松开键
    FM1 蜂鸣器停止
    }
    else
    {
    goto A 跳转A重新检测
    }
    }
    else
    {
    goto A 跳转A重新检测
    }
    }


    函数
    void main(void)
    {
    P10X00 关电机
    keyscan() 键启动检测
    delay(1000)1s启动

    TMOD0X01
    TH0 0XFC 1ms定时
    TL0 0X66
    TR0 1
    ET0 1
    EA 1 开总中断


    while(1) 限循环
    {
    信号0 没信号1
    if(Left_2_led1&&Right_2_led1)
    run() 调前进函数
    if(Left_2_led1&&Right_2_led0) 右边检测障碍物
    {
    leftrun() 调车左转函数
    }
    if(Right_2_led1&&Left_2_led0) 左边检测障碍物
    {
    rightrun() 调车右转函数
    }

    }
    }

    (4) 超声波避障
    #include 52芯片配置文件
    #include 包含nop等系统函数
    #include bst_carh 包含bst—v51智车头文件

    #define LCM_Data P0 定义液晶屏数口
    #define Busy 0x80 检测LCM状态字中Busy标识

    sbit DU P2^6 数码段选
    sbit WE P2^7 数码位选

    sbit LCM_RWP1^1 定义LCD引脚
    sbit LCM_RSP1^0
    sbit LCM_EP2^5

    unsigned char code Range[] Range FinderLCD1602显示格式
    unsigned char code ASCII[13] 0123456789M
    unsigned char code table[]Distance0000cm
    unsigned char code table1[] Out of range

    unsigned char disbuff[4]{0000}分存放距离值01mmmmcmm值

    unsigned int time0存放定时器时间值
    unsigned long S0存放距离值
    bit flag 0 量程溢出标志位
    char a0


    void delay(unsigned int xms)
    {
    unsigned int ij
    for(ixmsi>0i) ixms延时约xms毫秒
    for(j112j>0j)
    }

    void Delay10us(unsigned char i) 10us延时函数 启动超声波模块时
    {
    unsigned char j
    do{
    j 10
    do{
    _nop_()
    }while(j)
    }while(i)
    }

    void cmg88()关数码
    {
    DU1
    P00X00
    DU0
    }
    ************************************LCD1602液晶屏驱动函数************************************************
    *******************读状态*************************
    unsigned char ReadStatusLCM(void)
    {
    LCM_Data 0xFF
    LCM_RS 0
    Delay10us(1)
    LCM_RW 1
    Delay10us(1)
    do{
    LCM_E 0
    Delay10us(1)
    LCM_E 0
    Delay10us(1)
    LCM_E 1
    Delay10us(1)
    }
    while (LCM_Data & Busy) 检测忙信号
    return(LCM_Data)
    }

    ****************写数************************
    void WriteDataLCM(unsigned char WDLCM)
    {
    ReadStatusLCM() 检测忙
    LCM_Data WDLCM
    LCM_RS 1
    Delay10us(1)
    LCM_RW 0
    Delay10us(1)
    LCM_E 0 晶振速度太高加延时
    Delay10us(1)
    LCM_E 0 延时
    Delay10us(1)
    LCM_E 1
    Delay10us(1)
    }

    ****************写指令*************************
    void WriteCommandLCM(unsigned char WCLCMBuysC) BuysC0时忽略忙检测
    {
    if (BuysC) ReadStatusLCM() 根需检测忙
    LCM_Data WCLCM
    LCM_RS 0
    Delay10us(1)
    LCM_RW 0
    Delay10us(1)
    LCM_E 0
    Delay10us(1)
    LCM_E 0
    Delay10us(1)
    LCM_E 1
    Delay10us(1)
    }



    *******************LCM初始化**********************
    void LCMInit(void)
    {
    LCM_Data 0
    WriteCommandLCM(0x380) 三次显示模式设置检测忙信号
    delay(5)
    WriteCommandLCM(0x380)
    delay(5)
    WriteCommandLCM(0x380)
    delay(5)

    WriteCommandLCM(0x381) 显示模式设置开始求次检测忙信号
    WriteCommandLCM(0x081) 关闭显示
    WriteCommandLCM(0x011) 显示清屏
    WriteCommandLCM(0x061) 显示光标移动设置
    WriteCommandLCM(0x0c1) 显示开光标设置
    }

    *********************指定位置显示字符***********************
    void DisplayOneChar(unsigned char X unsigned char Y unsigned char DData)
    {
    Y & 0x1
    X & 0xF 限制X15Y1
    if (Y) X | 0x40 显示第二行时址码+0x40
    X | 0x80 算出指令码
    WriteCommandLCM(X 1) 发命令字
    WriteDataLCM(DData) 发数
    }

    **********************指定位置显示串字符*************************
    void DisplayListChar(unsigned char X unsigned char Y unsigned char code *DData)
    {
    unsigned char ListLength

    ListLength 0
    Y & 0x1
    X & 0xF 限制X15Y1
    while (DData[ListLength]>0x19) 达字串尾退出
    {
    if (X < 0xF) X坐标应0xF
    {
    DisplayOneChar(X Y DData[ListLength]) 显示单字符
    ListLength++
    X++
    }
    }
    }


    ***************************************************************************


    void StartModule() 启动超声波模块
    {
    TX1 启动次模块
    Delay10us(2)
    TX0
    }

    void Forward(void)前进
    {

    IN21
    IN31
    IN10
    IN40
    }

    void Stop(void) 停车
    {

    IN10
    IN20
    IN30
    IN40
    }

    void back(void) 退
    {

    IN11
    IN20
    IN30
    IN41
    }
    void Turn_Right(void) 右旋转
    {
    IN10
    IN21
    IN30
    IN41

    }

    ********距离计算程序***************
    void conut1(void)
    {
    timeTH1*256+TL1
    TH10
    TL10

    时time时间单位决定晶振频率外接晶振110592MHZ
    1us声波走远距离呢?1s1000ms1000000us
    3401000000000034米
    000034米1000034毫米 1us走034毫米
    现计算超声波发射反射接收双路程
    计算结果2实际路程
    Stime*017+10时计算结果毫米精确毫米两位两数点
    }

    void Conut(void)
    {

    conut1()
    显示部分
    if((S>5000)||flag1) 超出测量范围
    {
    a0
    flag0
    DisplayListChar(0 1 table1)
    }
    else
    {
    disbuff[0]S10
    disbuff[1]S1010
    disbuff[2]S10010
    disbuff[3]S1000
    DisplayListChar(0 1 table)
    DisplayOneChar(9 1 ASCII[disbuff[3]])
    DisplayOneChar(10 1 ASCII[disbuff[2]])
    DisplayOneChar(11 1 ASCII[disbuff[1]])
    DisplayOneChar(12 1 ASCII[10])
    DisplayOneChar(13 1 ASCII[disbuff[0]])
    }
    避障部分
    if(S<240) 刹车障碍物距离 车速关 更改
    {
    a++
    if(a>2)
    {
    a0
    FM0
    Stop()
    back() 退缓
    delay(230) 退缓时间 车速关 更改

    BTurn_Right()
    delay(50) 旋转角度 环境复杂程度关 更改
    Stop()
    delay(100) 旋转顿挫时间 视觉效果 更改
    StartModule()
    while(RX0)
    TR11 开启计数
    while(RX) RX1计数等
    TR10 关闭计数
    conut1()


    if(S>340) 直行方障碍物距离 环境关 更改
    {

    Turn_Right()
    delay(90)
    Stop() 微调前进方 避免车宽前进影响
    delay(200)
    FM1
    Forward()
    }
    else
    {
    goto B 没转空旷方 回B点 继续旋转次
    }

    }
    else
    {
    Forward() 障碍物 直行
    }

    }

    else
    {
    a0
    Forward() 障碍物 直行
    }


    }

    ********************************************************
    void zd0() interrupt 3 T0中断计数器溢出超测距范围
    {
    flag1 中断溢出标志
    RX0
    }

    ********超声波高电脉宽度计算程序***************
    void Timer_Count(void)
    {
    TR11 开启计数
    while(RX) RX1计数等
    TR10 关闭计数
    Conut() 计算

    }
    ********************************************************
    void keyscan(void) 键扫描函数
    {
    A if(K40) 判断否信号
    {
    delay(10) 延时10ms
    if(K40) 次判断否
    {
    FM0 蜂鸣器响
    while(K40) 判断否松开键
    FM1 蜂鸣器停止
    }
    else
    {
    goto A 跳转A重新检测
    }
    }
    else
    {
    goto A 跳转A重新检测
    }
    }
    ********************************************************

    *************程序********************
    void main(void)
    {

    unsigned int a
    cmg88()关数码
    delay(400) 启动等等LCM讲入工作状态
    LCMInit() LCM初始化
    delay(5)延时片刻

    DisplayListChar(0 0 Range)
    DisplayListChar(0 1 table)
    TMODTMOD|0x10设T0方式1GATE1
    EA1 开启总中断
    TH10
    TL10
    ET11 允许T0中断
    keyscan() 键扫描



    while(1)
    {
    RX1
    StartModule() 启动模块
    for(a951a>0a)
    {

    if(RX1)
    {
    Timer_Count() 超声波高电脉宽度计算函数
    }
    }
    }
    }













    文档香网(httpswwwxiangdangnet)户传

    《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
    该内容是文档的文本内容,更好的格式请下载文档

    下载文档到电脑,查找使用更方便

    文档的实际排版效果,会与网站的显示效果略有不同!!

    需要 60 香币 [ 分享文档获得香币 ]

    下载文档

    相关文档

    四轮独立驱动小车差速控制器硬件设计

    汽车除了正常的直行与后退,还要转弯。汽车在转弯行驶时,由于车身存在宽度,相同的时间里车子外轮和内轮行驶的距离不同,外轮行驶的距离会大于内轮。为了使汽车在转弯时可以正常转向而不至于打滑,于是差速器...

    3年前   
    1074    0

    小车的运动 教学设计

    18  小车的运动 教材简介         首先由磁铁小车的运动推广到其他小车是靠什么运动起来的;接着研究推拉产生的力也可以使小车运动;然后探究小车运动的快慢变化与载重量的关系;最后分析实际...

    2年前   
    413    0

    《我设计的自行车》教学设计

    《我设计的自行车》教学设计《我设计的自行车》第一课时教学设计一、教学目标:1、知能目标:通过对自行车结构、功能的初步认识,指导学生设计自行车,用画笔描绘或运用各种综合材料创作自行车。2、方法目...

    3年前   
    1014    0

    基于8051的智能小车设计课程设计

    测控电路课程设计题目名称: 智能循迹小车 专业班级: ...

    2年前   
    583    0

    GPS城市控制网设计毕业论文

    梧州市GPS城市控制网设计 目录 梧州市GPS城市控制网设计目录………….. …………… ………1 中文摘要…………………………………………. ……………….3 英文摘要…………………...

    5年前   
    952    0

    无碳小车设计说明书

     第三届XX省大学生工程训练 综合能力竞赛 无碳小车设计说明书 参赛者: 指导老师: 学校:XX工程学院 地点:XX 福州 时间:20...

    5年前   
    1446    0

    基于图像识别的智能小车系统设计

    第1章 绪论1.1 课题背景目前,在企业生产技术不断提高、对自动化技术要求不断加深的环境下,智能车辆以及在智能车辆基础上开发出来的产品已成为自动化物流运输、柔性生产组织等系统的关键设备。世界上...

    8个月前   
    243    0

    全国电子设计大赛智能小车报告

    论文编号:2011年全国大学生电子设计竞赛报告智能小车联系电话: 2011年X月X日摘...

    2年前   
    673    0

    基于单片机的智能小车设计开题报告

    电气与信息学院毕业设计(论文)开题报告 基于单片机的智能小车设计 电子 ...

    5个月前   
    312    0

    基于单片机的智能灭火小车设计

    摘要:当今社会,火灾在现实生活中普遍存在,被称为自然界三大灾害之一。当火灾发后,灭火工作坏境恶劣时,人工不能完成一些灭火任务,此时便可以使用智能灭火小车去完成相应的任务。本文设计了一个以单片机为...

    4年前   
    1496    0

    基于单片机智能小车毕业设计

    毕 业 设 计(论 文)设计(论文)题目: 基于单片机的智能小车 ...

    6个月前   
    201    0

    自行车测速仪的设计毕业论文

    XX大学邮电与信息工程学院毕业设计(论文)自行车测速仪的设计Design of the Bicycle Speedometer学生姓名 *********学 号 ...

    3年前   
    684    0

    GPS在物流中的应用

          GPS在物流中的应用                                               班级:物流11-1                ...

    10年前   
    13426    0

    GPS安装规范

    GPS安装规范 1.      接收上级的安装任务通知后,准时到达现场。 (1)向车主打招呼索要车辆钥匙,并礼貌地规劝客户远离安装现场。 (2)检查车辆安全状况,确认工作场所操作范围。 ...

    11年前   
    11607    0

    GPS测量实习报告

    GPS测量实习报告  一 实习目的与意义  (1)通过实习,熟悉并熟练掌握gps仪器的使用及进行控制测量的基本方法, 巩固课堂所学知识,加深对测量学的基本理论的理解。  (2)了解gps原理以...

    9年前   
    545    0

    GPS存在的问题

    GPS存在的问题   一、答应红区划分,至今未落实到位。 二、针对我部发现车辆出现的问题,GPS公司无法及时正确判断和通知。 三、短信提示不及时,有时没有短信通知,有时突然几十条上百条...

    9年前   
    7876    0

    加强GPS管理规定

    **市三联长途汽车运输公司 关于加强GPS卫星定位监控管理的通知 各车队、调度室: 为落实公司安全生产管理制度,严格遵守贵州省道路旅客运输安全生产“五严禁”、长途客运车辆凌晨2—5点停车...

    9年前   
    7643    0

    无线摄像头监控方案

     现在资源的重要性越来越得到赞许,油气能源更是被称为现代社会的血液,在国内目前的现实情况中,在油田开采、运输、管理的过程中,偷盗原油、破坏开采、传输设施等种种不法行为在各油田多有发生,已经给原油...

    2年前   
    475    0

    基于单片机的彩灯控制器设计毕业设计

     题目: 基于单片机的节日彩灯控制器的设计 作 者 姓 名: 学 号: ...

    3年前   
    563    0

    基于FPGA的多路彩灯控制器的设计课程设计

     FPGA课程设计报告 学院: 信息工程学院班 级: 信息级班姓 名: 学 号: 完成时间: 2015年X月X日 评阅意见: 题目...

    3年前   
    528    0

    文档贡献者

    平***苏

    贡献于2022-01-03

    下载需要 60 香币 [香币充值 ]
    亲,您也可以通过 分享原创文档 来获得香币奖励!
    下载文档

    该用户的其他文档