云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 基于单片机的迷宫小车论文 有程序电路图

基于单片机的迷宫小车论文 有程序电路图

  • 62 次阅读
  • 3 次下载
  • 2025/12/12 10:27:13

广东海洋大学2013届本科生毕业论文

4.4 避障及停止子程序设计

根据硬件设计部分的规划,单片机的P2.3~P2.7是用作红外避障传感器的检查信息信号的输入端。单片机的P2.0~P2.1是用作终点寻黑线信号的输入端。定义I/0口程序是为初始化单片机,为下面程序模块化编程做好准备。程序片段如下:

单片机通过避障传感器模块得到前方信息,从而驱动电机控制模型车运行状态。迷宫小车的避障子程序流程图,如图4.2

开始 延时 前? Y 直走 显示 N

左? Y

左转 显示 N 右? N 后? N 停? Y

右转 显示 Y

后转 显示 Y

停止 显示 结束 图4.2 避障子程序流程图

//=============避障子程序=========================== //=================================================

#include #include \

#include \#include \#include \

- 30 -

广东海洋大学2013届本科生毕业论文

sbit Tcr0 = P2^0; //左侧光电开关TCR5000输出端 sbit Tcr1 = P2^1; //右侧光电开关TCR5000输出端

sbit zuo = P2^7; //左侧红外输出端 sbit zuoled = P2^6; //左前侧红外输出端 sbit zhong = P2^5; //中间红外输出端 sbit youled = P2^4; //右前侧红外输出端 sbit you = P2^3; //右侧红外输出端

extern void Iread(void) //红外检测处理函数 { if((Tcr0==0)||(Tcr1==0)) //下侧光电传感器有一个检测到黑线 { //则小车停止运行 move_stop(); Set_PWM(0,0); TR0=0; //关定时器0 EX0=0; //关外部中断0 write_com(0x80+5);//第一行第六个位置 lcm_w_word(\停止\ Delay_Ms(5000); } if((zuo == 0)&&(zhong == 1)&&(you == 0)) //直行道行走情况 { move_forward(); Set_PWM(83,84); //PWM控制小车直线行走参数 if((zuoled == 1)&&(youled == 0)) //偏右,右侧电机速度转快 { move_forward(); Set_PWM(83,88); } if((zuoled == 0)&&(youled == 1)) //偏左,左侧电机速度转快 { move_forward(); Set_PWM(88,84); } if((zuoled == 0)&&(youled == 0)) //直接行使速度 { move_forward(); Set_PWM(83,84); } write_com(0x80+5);//第一行第六个位置 lcm_w_word(\直行\ } else if((zuo == 1)&&(zhong == 1)&&(you == 0)) //左转路口行走情况 { move_forward(); Set_PWM(75,76); if((zuoled == 0)&&(youled == 0)&&(zhong == 0)) { move_left(); Set_PWM(85,90); Delay_Ms(400);

- 31 -

广东海洋大学2013届本科生毕业论文

write_com(0x80+5);//第一行第六个位置 lcm_w_word(\左转\ } if(((zuoled == 0)||(youled == 0))&&(zhong == 1)) { move_left(); Set_PWM(85,90); Delay_Ms(400); write_com(0x80+5);//第一行第六个位置 lcm_w_word(\右转\ } }

else if((zuo == 0)&&(zhong == 1)&&(you == 1)) //右转路口行走情况 { move_forward(); Set_PWM(75,77); if((zuoled == 0)&&(youled == 0)&&(zhong == 0)) { move_right(); Set_PWM(88,89); Delay_Ms(450); write_com(0x80+5);//第一行第六个位置 lcm_w_word(\右转\ } }

else if((zuo == 0)&&(zhong == 1)&&(you == 1)) //右转及前行路口行走情况 { Set_PWM(75,77); Delay_Ms(300); if(((zuoled == 0)||(youled == 0))&&(zhong == 1)) { move_forward(); Set_PWM(83,84); write_com(0x80+5);//第一行第六个位置 lcm_w_word(\直行\ } }

else if((zuo == 1)&&(zhong == 1)&&(you == 1)) //T字路和十字路口行走情况 { if((zuoled == 0)||(youled == 0)) { move_left(); Set_PWM(85,90); Delay_Ms(400); write_com(0x80+5);//第一行第六个位置 lcm_w_word(\左转\ Delay_Ms(200); move_forward(); //转完之后由于左右两侧都为1, Set_PWM(80,81);

//要在转完之后加个延时200ms让小车前进一段距离在判断

Delay_Ms(500); }

if((zuoled == 1)&&(youled == 1)) {

- 32 -

广东海洋大学2013届本科生毕业论文

}

}

move_forward(); Delay_Ms(5); Set_PWM(83,84); }

move_forward(); Set_PWM(85,86); Delay_Ms(5);

write_com(0x80+5);//第一行第六个位置 lcm_w_word(\直行\

else if((zuo == 0)&&(zhong == 0)&&(zuoled == 0)&&(youled == 0)&&zhong == 0) //死胡同路,原地右后转180度迅速转弯 { move_right(); Set_PWM(95,96); Delay_Ms(750); write_com(0x80+5);//第一行第六个位置 lcm_w_word(\后转180\ move_stop(); Set_PWM(0,0); Delay_Ms(50); }

4.5 显示子程序设计

液晶显示子程序主要显示的是行车的时间,以及模型车在模式切换时,动态显示按键输入的信息。使用LCD12864需要对该芯片进行初始化,使用了P1.0,P1.1,P1.2分别对它进行读、写,使能控制。该程序如下:

/****************************************************************************** 文件名 : .c

模块名称:并行方式驱动12864液晶驱动 完成日期:2013.05.19

驱动芯片:st7920 SP=0x5f; init_lcd();

******************************************************************************/ #include #include #include #include \#include \

#define DATA P0 //P0接数据口

sbit RS = P1^0; //H=data; L=\sbit RW = P1^1; //H=read; L=\sbit E = P1^2; //input enable;

sbit busy=P0^7; //lcd busy bit

uchar shit,ge; //两位数,拆开为十位,个位

uchar code tab1[]={\当前状态: %uchar code tab2[]={\行驶: 00: 00: 00\

- 33 -

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

广东海洋大学2013届本科生毕业论文 4.4 避障及停止子程序设计 根据硬件设计部分的规划,单片机的P2.3~P2.7是用作红外避障传感器的检查信息信号的输入端。单片机的P2.0~P2.1是用作终点寻黑线信号的输入端。定义I/0口程序是为初始化单片机,为下面程序模块化编程做好准备。程序片段如下: 单片机通过避障传感器模块得到前方信息,从而驱动电机控制模型车运行状态。迷宫小车的避障子程序流程图,如图4.2 开始 延时 前? Y 直走 显示 N 左? Y 左转 显示 N 右? N 后? N 停? Y 右转 显示 Y 后转 显示 Y 停止 显示 结束 图4.

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com