智能小车速度控制程序

合集下载

基于ROS系统智能小车控制与监控方法

基于ROS系统智能小车控制与监控方法

通过以上实验结果分析,我们可以得出基于ROS系统的智能小车在路径规划方 面具有很高的应用价值。这种智能小车能够适应各种复杂环境,自主寻找最优 路径,并避开障碍物,大大提高了车辆的行驶效率和使用安全性。未来,基于 ROS系统的智能小车将在无人驾驶汽车、自动巡航、灾难救援等领域发挥更大 的作用。
总之,基于ROS系统的智能小车是一种具有重要应用前景的机器人技术。本次 演示介绍了智能小车的控制模块、ROS系统和路径规划等方面的内容,并通过 实验验证了基于ROS系统的智能小车路径规划的有效性和可行性。未来,我们 将继续深入研究智能小车的相关技术,为实际应用提供更多有价值的参考。
1、研究更高效的远程控制和视频传输技术,以减少网络延迟,提高系统的实 时性。
2、加强数据安全保护,防止数据泄露和非法访问,确保系统的稳定性。
3、探索AI和机器学习技术在智能小车远程控制和视频监控系统中的应用,以 提高系统的自主性和智能化水平。
谢谢观看
参考内容
智能小车的发展及其在ROS系统 中的应用
随着科技的迅速发展,智能小车已经成为了机器人领域的一个研究热点。作为 一种能够自主或半自主运行的机器人,智能小车在许多领域都有着广泛的应用, 如无人驾驶汽车、自动巡航、灾难救援等。本次演示将重点介绍基于ROS系统 的智能小车,并对其控制模块、路径规划及实验结果进行分析。
在实现智能小车的监控方面,ROS系统也提供了丰富的工具和方法。例如,可 以使用ROS的RViz可视化工具,实时监控小车的位姿、传感器数据等信息。还 可以通过ROS系统的日志功能,记录小车的运行状态和异常信息,方便后期分 析和排错。
针对智能小车的避障问题,ROS系统可以结合多种传感器和算法实现。例如, 可以利用激光雷达或摄像头等传感器获取环境信息,再通过相应的避障算法, 如基于图像处理的避障算法或基于路径规划的避障算法等,来自动规避前进道 路上的障碍物。此外,还可以通过机械臂等执行器来实现避障,例如在遇到障 碍物时,机械臂可以自动抓取、搬运或推开障碍物,以帮助小车继续前进。

智能小车速度测量控制系统设计

智能小车速度测量控制系统设计

智能小车速度测量控制系统设计1.引言在现代工业和交通领域,智能小车被广泛应用于自动化物流、智能仓储以及移动机器人等场景。

为了保证智能小车的正常运行和安全性,速度测量和控制是至关重要的一环。

本文将重点介绍智能小车速度测量控制系统的设计原则和实现方法。

2.设计原则2.1精度和稳定性智能小车速度的精确测量和控制是保证小车运行安全和稳定的基础。

因此,在设计速度测量控制系统时,应优先考虑精度和稳定性的要求。

为了提高精度,可以采用高精度的传感器来测量小车的实时速度;为了提高稳定性,可以采用滤波算法对速度信号进行平滑处理。

2.2实时性和响应性智能小车的速度测量和控制必须具备良好的实时性和响应性。

实时性是指系统能够及时获得小车的速度信息,响应性是指系统能够迅速对速度变化作出调整。

在设计时,可以采用高频率的采样和控制周期来提高实时性和响应性。

2.3可扩展性和灵活性智能小车的需求和环境可能发生变化,因此,速度测量控制系统必须具备良好的可扩展性和灵活性。

可扩展性是指系统能够方便地扩展和添加新的功能;灵活性是指系统能够适应不同的小车和场景。

在设计时,可以采用模块化和接口化的设计方法,并使用可编程的控制器,以便系统可以方便地进行功能升级和扩展。

3.系统组成3.1速度传感器智能小车的速度测量需要使用速度传感器。

常用的速度传感器包括编码器和激光测距仪。

编码器可以通过检测轮轴的旋转来测量速度,激光测距仪可以通过测量激光到达和返回的时间来计算速度。

在选择速度传感器时,需要根据具体的应用场景和要求来确定。

3.2控制器智能小车的速度控制可以使用PID控制器或者模糊控制器。

PID控制器是一种经典的控制方法,通过调节比例、积分和微分参数来实现控制;模糊控制器则是一种基于模糊逻辑的控制方法,通过对输入和输出之间的关系进行模糊化和解模糊化来实现控制。

在选择控制器时,需要根据系统要求和控制效果来确定。

3.3控制算法智能小车的速度控制需要使用合适的控制算法。

基于51单片机智能小车(电路+程序+论文)

基于51单片机智能小车(电路+程序+论文)

基于单片机的多功能智能小车设计论文(摘要(关键词:智能车单片机金属感应器霍尔元件 1602LCD)智能作为现代的新发明,是以后的发展方向,他可以按照预先设定的模式在一个环境里自动的运作,不需要人为的管理,可应用于科学勘探等等的用途。

智能电动车就是其中的一个体现。

本次设计的简易智能电动车,采用AT89S52单片机作为小车的检测和控制核心;采用金属感应器TL-Q5MC来检测路上感应到的铁片,从而把反馈到的信号送单片机,使单片机按照预定的工作模式控制小车在各区域按预定的速度行驶,并且单片机选择的工作模式不同也可控制小车顺着S形铁片行驶;采用霍尔元件A44E检测小车行驶速度;采用1602LCD实时显示小车行驶的时间,小车停止行驶后,轮流显示小车行驶时间、行驶距离、平均速度以及各速度区行驶的时间。

本设计结构简单,较容易实现,但具有高度的智能化、人性化,一定程度体现了智能。

目录1 设计任务 (3)1.1 要求 (3)2 方案比较与选择 (4)2.1路面检测模块 (4)2.2 LCD显示模块 (5)2.3测速模块 (5)2.4控速模块 (6)2.5模式选择模块 (7)3 程序框图 (7)4 系统的具体设计与实现 (9)4.1路面检测模块 (9)4.2 LCD显示模块 (9)4.3测速模块 (9)4.4控速模块 (9)4.5复位电路模块 (9)4.6模式选择模块 (9)5 最小系统图 (10)6 最终PCB板图 (12)7 系统程序 (13)8 致谢 (46)9 参考文献 (47)10 附录 (48)1. 设计任务:设计并制作了一个智能电动车,其行驶路线满足所需的要求。

1.1 要求:1.1.1 基本要求:(1)分区控制:如(图1)所示:(图1)车辆从起跑线出发(出发前,车体不得超出起跑线)。

在第一个路程C~D区(3~6米)以低速行驶,通过时间不低于10s;第二个路程D~E区(2米)以高速行驶,通过时间不得多于4秒;第三个路程E~F区(3~6米)以低速行驶,通过时间不低于10s。

智能寻迹小车控制系统设计及其速度控制

智能寻迹小车控制系统设计及其速度控制

电机驱动控制单元 组成 .系统 以 MC 9 S 1 2 X S 1 2 8为 控制 核 心 ,以激光 传感 器 监测 路 面黑 线 ,并 采用 C语言 和 C o d e Wa r r i o r I D E进行 编程 与调试 ,采用 P I D算法对小 车速 度进行 闭环 控制.调试结 果验证 了该算法能很 好 的控
制智能寻迹小车 的速度 ,使系统在快速性和稳定性方 面都 达到了比较好 的效果. 关键词 :智能寻迹 ;激光传感 器 ;调试 ;P I D算法 中图分类号 : T P 2 7 3 文献标识码 :A
Co n t r o l S y s t e m De s i g n a n d i t s S p e e d Co n t r o l o f a n I n t e l l i g e n t Tr a c i n g Ca r
Ab s t r a c t :T h e c o n t r o l s y s t e m o f a n i n t e l l i g e n t t r a c i n g c a r c o n s i s t s o f a mi c r o c o n t r o l l e r ,a p o w e r
d e b u g g i n g r e s u l t s v e if r y t h a t t h i s a l g o it r hm c a n c o n t r o l t h e c a r s p e e d we l l ,a c h i e v i ng s o me b e t t e r r e s u l t s i n r a p i d i t y a n d s t a b i l i t y o f t he s y s t e m r e s po n s e s .

智能小车控制系统设计实现

智能小车控制系统设计实现

关键词:智能小车;控制系统;设计和实现1智能小车控制系统概述智能小车控制系统是一个综合、复杂的系统,其既有多种技术,也含有嵌入式的软件设备和硬件设备、图像识别、自动控制和电力传动、机械结构等技术知识,智能小车的控制系统主要是围绕嵌入式控制系统进行的,将其作为操控的中心,并借助计算机系统,最终完成自动造作和控制的过程[1]。

智能小车的控制系统流程图见图1所示。

2智能小车的设计和实现2.1智能小车的硬件设计硬件设计是保证智能小车平稳运行的必要条件,它关系着控制系统的精度和稳定性,因此在设计时需要用在模块化设计思想,该研究是通过采取硬件系统K60芯片作为核心控制器,并通过图像采集模块和电机、舵机驱动模块、测速模块、电源模块等组成硬件设计系统图,见图2。

首先,电源电路设计,该设计时智能小车的动力来源,为小车运行提供不断的电力,一般采取7.3V、容量为2000mAh的可充电型的镍铬电池作为电源,但是其不能直接为控制器传输电力,需要在转变电路后才可以进行传输。

转变电路可以保证控制器直接对电池内的电压进行调节,保证不同模块可以正常工作和运行,智能小车主要是依靠控制电力和电机驱动进行转变的。

其次是K60最小系统板,在设计时需要将K60的管脚部分做成最小系统的单独电路板,这样可以简化电路板的设计,促使调试更加顺利,K60系统板主要由K60芯片、复位电路、时钟电路、JTAG下载电路、电源滤波电路组成。

再其次是电机驱动电路,该电路是在集成芯片的驱动下进行的,可以为控制器更其他模块提供较大的电流最终集成电机驱动芯片,但是要特别注意这部分因为在电机驱动过程中有较大的分功率,会导致小车在进行调试时因为过大的电流导致小车电路发生堵塞现象,而使小车电路被烧毁,因此需要设计者避免这种现象,可以将驱动电路做成驱动板[2]。

最后是舵机接口电路。

在智能小车设计中,舵机主要保证小车可以顺利转向,因此舵机的运行电压、转向动作、转向速度都是需要考虑的因素,一般选择舵机时主要选择Futaba3010,选择供电电压为6V。

智能小车循迹、避障、红外遥控C语言代码

智能小车循迹、避障、红外遥控C语言代码

//智能小车避障、循迹、红外遥控 C 语言代码// 实现功能有超声波避障, 红外遥控智能小车, 红外传感器实现小车自动循迹, 1602 显示小 车的工作状态,另有三个独立按键分别控制三种状态的转换 // 注:每个小车的引脚配置都不一样,要注意引脚的配置,但是我的代码注释比较多,看起 来比较容易一点 #include <> #include <> #include"" #include <> #define uchar unsigned char #define uint unsigned int uchar ENCHAR_PuZh1[8]=" uchar ENCHAR_PuZh2[8]=" uchar ENCHAR_PuZh3[8]=" ucharENCHAR_PuZh4[8]=" uchar ENCHAR_PuZh5[8]=" run back stop left right "; ";//1602 显示数组 H. H. H. uchar ENCHAR_PuZh6[8]=" xunji "; uchar ENCHAR_PuZh7[8]=" bizhang"; uchar ENCHAR_PuZh8[8]=" yaokong"; #define HW P2 #define PWM /****************************** P1 //红外传感器引脚配置 P2k 口 /* L298N 管脚定义 */ 超声波引脚控制 ******************************/ sbit ECHO=P3A2; sbit TRIG=P3A3;///// 红外控制引脚配置 sbit sbituchar KEY2=P3A7; KEY 仁 P3M;state_total=3,state_2=0;// 2 为红外遥控 ucharuchar time_1 uchar 局变量 // 超声波接收引脚定义 // 超声波发送引脚定义// 红外接收器数据线 // 独立按键控制 总状态控制全局变量 state_1,DAT; // 红外扫描标志位time_1=0,time_2=0;// 定时器 1 中断全局变量 控制转弯延时计数也做延时一次 time,timeH,timeL,state=0;// 超声波测量缓冲变量 count=0;//1602 显示计数 兼红外遥控按键 state_total =2 兼循迹按键 state_total= 0 自动避障 state_total=10 为自动循迹模块 1 为自动避障模块 time_ 2 控制 PWM 脉冲计数 state 为超声波状态检测控制全 uint /**************************/ unsigned char IRC0M[7]; // 红外接收头接收数据缓存 unsigned char Number,distance[4],date_data[8]={0,0,0,0,0,0,0,0}; /********* voidvoid voidIRC0M[2 ]存放的为数据 // 红外接收缓存变量 **/ IRdelay(char x); //x* 红外头专用 delay run(); back();void stop(); void left_90(); void left_180(); void right_90(); void delay(uint dat); //void init_test();void delay_100ms(uint ms) ;void display(uchar temp); void bizhang_test(); void xunji_test(); void hongwai_test();void Delay10ms(void);void init_test()// 定时器 0{ 1 外部中断 // 超声波显示 驱动 0 1 延时初始化 TMOD=0x11; TH1=0Xfe; TL1=0x0c; TF0=0; TF1=0; ET0=1; ET1=1; EA=1;// 设置定时器 0 1 // 装入初值定时一次为工作方式 1 16 位初值定时器2000hz// 定时器 // 定时器 // 允许定时器// 允许定时器 0 方式 1 计数溢出标志 1 方式 1 计数溢出标志 0 中断溢出 1 中断溢出//开总中断 if(state_total==1)// 为超声波模块时初始化 {TRIG=0; ECHO=0; EX0=0; IT0=1;}if(state_total==2)// 发射引脚低电平 // 接收引脚低电平 // 关闭外部中断// 由高电平变低电平,触发外部中断 0// 红外遥控初始化{ IT1=1; EX1=1;TRIG=1;}del ay(60);} void main(){ uint i; delay(50); init_test(); TR1=1; LCD1602_Init() ; delay(50); while(state_2==0)// 外部中断 1 为负跳变触发 // 允许外部中断 1 // 为高电平 I/O 口初始化// 等待硬件操作// 开启定时器 1{if(KEY1==0){Delay10ms(); // 消除抖动 if(KEY1==0) {state_total=0; // 总状态定义 0 为自动循迹模块 1 为自动避障模块2 为红外遥控while((i<30)&&(KEY1==0))// 检测按键是否松开{Delay10ms(); i++;}i=0;}}if(TRIG==0){while((i<30)&&(TRIG==0))// 检测按键是否松开{Delay10ms(); i++;}i=0;}if(KEY2==0){while((i<30)&&(KEY2==0))// 检测按键是否松开{Delay10ms(); i++; }i=0;// 检测按键 s1 是否按下//检测按键s2是否按下障模块Delay10ms(); // 消除抖动 if(TRIG==0) {state_total=1; 2 为红外遥控//总状态定义 0 为自动循迹模块 1 为自动避// 检测按键 s3 是否按下障模块Delay10ms(); // 消除抖动 if(KEY2==0) {state_total=2; 2 为红外遥控// 总状态定义 0 为自动循迹模块1 为自动避}}} init_test();delay(50); // 等待硬件操作50us TR1=0; // 关闭定时器 1 if(state_total==1) {//SPEED=90; bizhang_test();} if(state_total==0) {// SPEED=98; 电平// 自动循迹速度控制// 自动循迹速度控制高电平持续次数占空比为10 的低电平高电平持续次数占空比为40 的低xunji_test(); }if(state_total== 2){//SPEED=98; // 自动循迹速度控制高电平持续次数占空比为40 的低电平hongwai_test(); }void 断号init0_suspend(void)2 外部中断0 4 串口中断外部中断 1timeH=TH0;timeL=TL0;state=1;EX0=0;}void 断号0{if(state_total==1) { TH0=0X00;TL0=0x00;}if(state_total==0) { TH0=0Xec;TL0=0x78;time_1++;interrupt 0 //3 为定时器 1 的中断号 1 定时器0 的中// 记录高电平次数//// 标志状态为// 关闭外部中断1,表示已接收到返回信号//3 为定时器 1 的中断号2 外部中断0 4 串口中断time0_suspend0(void) interrupt 1外部中断 1// 自动避障初值装入// 装入初值// 自动循迹初值装入// 装入初值定时一次200hz// 控制转弯延时计数1 定时器0 的中}}void IR_IN(void){unsigned char j,k,N=0;EX1 = 0; IRdelay(5); if (TRIG==1) { EX1 =1; return;}//确认IR 信号出现//等IR 变为高电平,跳过 9ms 的前导低电平信号。

单片机智能小车 (带完整程序)

单片机智能小车 (带完整程序)

广东职业技术学院毕业综合实践报告题目:单片机智能小车类型:设计类专业:应用电子技术(LED新型电光源)班级:xxx学生姓名:xxx指导教师:xxx完成时间:2016年6月摘要智能作为现代的新技术,是以后的发展方向,它可以按照预先设定的模式在一个环境里自动的运作,不需要人为的管理,可应用于科学勘探等等的用途。

智能小车就是其中的一个体现。

智能小车,也称为轮式机器人,是一种以汽车电子为背景,涵盖智能控制、模式识别、传感技术、计算机、机械等多学科的科技创意性设计。

一般主要由路径识别、速度采集以及车速控制等模块组成。

本次设计的简易智能小车,采用STC89C51单片机作为小车的检测和主控芯片,充分利用了自动检测技术、单片机最小系统、液晶显示模块电路、串口无线通信,以及声光信号的控制、电机的驱动电路。

通过keil C软件编程,不断调试,最终实现小车的无线控制,壁障等功能。

关键词:智能小车,单片机,无线控制,壁障目录一引言 (3)1.1国外智能车辆研究现状 (3)1.2单片机智能小车发张前景 (3)二主控系统及驱动系统 (5)2.1系统架构 (5)2.2主控芯片的选择 (5)2.3驱动系统设计分析 (6)2.3.1电机及驱动芯片的选择 (6)2.3.2电机驱动模块 (7)2.4小结 (8)三无线控制系统 (8)3.1无线模块设计 (8)3.2通讯模块设计 (9)3.2.1蓝牙模块 (9)3.2.2接受发送数据子程序 (10)四壁障系统 (11)4.1壁障模块 (11)4.1.1超声波模块 (11)4.1.2红外传感器 (12)4.1.3壁障实现过程 (12)五温度传感系统 (14)5.1温度传感器简介 (14)5.2读温度子程序 (15)六液晶显示系统 (17)6.1LCD1602液晶显示屏简介 (17)6.1.1LCD1602引脚说明 (17)6.2LCD1602操作 (18)6.3LCD1602显示子程序 (19)七小车速度控制系统分析与设计 (21)7.1车速控制原理 (21)7.2车速控制子程序 (21)八智能小车流程图 (1923)8.1流程图 (23)九调试与总结 (24)致谢 (25)参考文献 (26)附录 (267)一引言1.1国外智能车辆研究现状国外智能车辆的研究历史较长,始于上世纪50年代。

基于单片机的智能小车速度控制设计

基于单片机的智能小车速度控制设计

3.速度控制简介速度控制主要是指对智能小车的行驶速度进行控制,使其能 够按照预定的速度行驶,或者根据外界环境变化做出相应的速度调整。速度控制 的好坏直接影响到智能小车的性能和安全性。
二、设计思路
1.关键问题基于单片机的智能小车速度控制设计主要面临两个关键问题:一 是如何获取小车的实时速度;二是如何根据获取的速度信息来调整小车的行驶速 度。
在硬件设计方面,本次演示选用了一种常见的单片机,即STM32F103C8T6。 该单片机具有处理速度快、集成度高、外设接口丰富等特点,能够满足智能物料 搬运小车的控制需求。同时,为了实现小车的自动识别、定位和抓取功能,还选 用了以下硬件设备:
1、传感器部分:采用红外传感器和光电编码器相结合的方式,实现小车对 物料和位置的识别与检测。
analogWrite(motorPin2, 60);
上述代码中,我们通过编码器读取小车的实时速度,并根据速度阈值来判断 小车的速度状态。根据不同的速度状态,我们通过调节PWM信号的占空比来控制 电机的转速,从而实现对小车速度的控制。
三、实验结果
我们在实验中使用了基于Arduino单片机的智能小车速度控制设计,并对其 进行了多项测试。实验结果表明,该设计能够有效地控制小车的行驶速度,并具 有较高的稳定性。下表为实验数据记录:表1实验数据记录表在实验过程中,我 们发现该设计的最大优点在于其简单易行且稳定性高。
四、系统测试与结论
在完成硬件和软件的设计后,对整个系统进行了测试。测试结果显示,基于 单片机控制的智能循迹小车系统能够有效地实现自主循迹和避障功能,具有较高 的稳定性和可靠性。通过本设计的实践,可以得出单片机在自动化控制中具有广 泛的应用前景和发展潜力。
引言
随着科技的快速发展,智能化成为当今社会的关键词。智能小车作为一种智 能化的代表,具有广泛的应用前景。本次演示旨在研究基于STM32单片机的智能 小车控制,通过软硬件结合的方式实现小车的速度、循迹和刹车等控制功能,提 高小车的稳定性和灵活性。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

************************************************************************简单寻迹程序:接法EN1 EN2 PWM 输入端,本程序不输入PWM ,直接使插上跳线帽,使能输出,这样就能全速运行接上测速模块测速模块电源+5V GND 取自于单片机板靠近液晶调节对比度的电源输出接口把测速模块输出OUT1 OUT2 接入单片机P3。

2 P3。

3时左上电机正转左上电机接P1_0 P1_1 接IN1 IN2 当P1_0=1,P1_1=0;驱动板子输出端(蓝色端OUT1 OUT2 )子P1_0 P1_1 接IN1 IN2 当P1_0=0,P1_1=1; 时左上电机反转P1_0 P1_1 接IN1 IN2 当P1_0=0,P1_1=0; 时左上电机停转时左下电机正转左下电机接P1_2 P1_3 接IN3 IN4 当P1_2=1,P1_3=0;驱动板子输出端(蓝色端OUT3 OUT4 )子P1_2 P1_3 接IN3 IN4 当P1_2=0,P1_3=1; 时左下电机反转P1_2 P1_3 接IN3 IN4 当P1_2=0,P1_3=0; 时左下电机停转时右上电机正转右上电机接P1_4 P1_5 接IN5 IN6 当P1_4=1,P1_5=0;驱动板子输出端(蓝色端子OUT5 OUT6 )P1_4 P1_5 接IN5 IN6 当P1_4=0,P1_5=0; 时右上电机停转时右下电机正转右下电机接P1_6 P1_7 接IN7 IN8 当P1_6=1,P1_7=0;驱动板子输出端(蓝色端OUT7 OUT8 )子P1_6 P1_7 接IN7 IN8 当P1_6=0,P1_7=1; 时右下电机反转P1_6 P1_7 接IN7 IN8 当P1_6=0,P1_7=0; 时右下电机停转P3_2 接四路寻迹模块接口第一路输出信号即中控板上面标记为OUT1P3_3 接四路寻迹模块接口第二路输出信号即中控板上面标记为OUT2P3_4 接四路寻迹模块接口第三路输出信号即中控板上面标记为OUT3P3_5 接四路寻迹模块接口第四路输出信号即中控板上面标记为OUT4四路寻迹传感器有信号(白线)为0 没有信号(黑线)为 1 四路寻迹传感器电源+5V GND 取自于单片机板靠近液晶调节对比度的电源输出接口关于单片机电源:本店驱动模块内带LDO 稳压芯片,当电池输入6V 时时候可以输出稳定的5V分别在针脚标+5 与GND 。

这个输出电源可以作为单片机系统的供电电源。

****************************************************************************/#include<AT89x51.H>#define Left_1_led P3_4 //P3_2 接四路寻迹模块接口第一路输出信号即中控板上面标记为OUT1#define Left_2_led P3_5 //P3_3接四路寻迹模块接口第二路输出信号即中控板上面标记为OUT2#define Right_1_led P3_6 //P3_4接四路寻迹模块接口第三路输出信号即中控板上面标记为OUT3#define Right_2_led P3_7 //P3_5接四路寻迹模块接口第四路输出信号即中控板上面标记为OUT4#define Left_moto_go {P1_0=1,P1_1=0,P1_2=1,P1_3=0;} // 左边两个电机向前走#define Left_moto_back {P1_0=0,P1_1=1,P1_2=0,P1_3=1;} // 左边两个电机向后转#define Left_moto_Stop {P1_0=0,P1_1=0,P1_2=0,P1_3=0;}// 左边两个电机停转#define Right_moto_go {P1_4=1,P1_5=0,P1_6=1,P1_7=0;} //右边两个电机向前走#define Right_moto_back {P1_4=0,P1_5=1,P1_6=0,P1_7=1;} // 右边两个电机向前走#define Right_moto_Stop {P1_4=0,P1_5=0,P1_6=0,P1_7=0;} // 右边两个电机停转sbit ledl =P2A0;sbit Ied2=卩2人1;sbit led3 =P2A2;sbit led4 =P2A3;unsigned code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};// 数码管断码unsigned code dis[] ={0xfe,0xfd,0xfb,0xf7};// 扫描数码管客值unsigned char disbuff[5]={0};unsigned char time=0;// 显示缓存unsigned char i =0;// 定义扫描数码管字数unsigned int count1=0; // 计左电机码盘脉冲值unsigned int V=0;// 定义其速度***************************************************** ***************unsigned int x,y; for(x=0;x<k;x++) for(y=0;y<2000;y++);}/********************************************************************** // 显示数码管字程序void Display_SMG(void){if(++i>=4)i=0; P0=table[disbuff[i]]; P2=dis[i];}void timer0()interrupt 1 using 2 {TH0=(65536-2000)/256; //2MS 定时TL0=(65536-2000)%256;time++; Display_SMG();********************************************************************///*TIMER0 中断服务子函数产生2MS 定时扫描数码管与产生0。

5S*/约 =1cm// 更新显示***********************************************time=0; V=count1*2;// 计数公式:轮子直径 *3.14/20 格码盘 =6.5Cm*3.14/20即一个脉冲走 1CM 距离 ((count1*1))/0.5S=(count1*2)CM/Scount1=0;// 清计数disbuff[0]=V/1000;disbuff[1]=V%1000/100; disbuff[2]=V%1000%100/10; disbuff[3]=V %1000%100%10;}}// 外部 0 中断用于计算左轮的脉冲 void intersvr1(void) interrupt 0 using 1{count1++;}/**********************************************************************Left_moto_go ; // 左电机往前走 Right_moto_go ;// 右电机往前走// 前速后退void backrun(void){Left_moto_back ; // 左电机往前走Right_moto_back ; // 右电机往前走}// 左转void leftrun(void){Left_moto_back ; // 左电机往前走Right_moto_go ; // 右电机往前走}Left_moto_go ; // 左电机往前走Right_moto_back ; // 右电机往前走}// 停转void stoprun(void){Left_moto_Stop ; // 左电机往前走Right_moto_Stop ; // 右电机往前走}/******************************************************************* /*-- 主函数--*/void main(void){TMOD=0X01;TH0=(65536-2000)/256; //2MS 定时TL0=(65536-2000)%256;TR0= 1;ET0= 1;IT0=1;// 下降沿有效// 右边检测到黑线// 左边两个电机正转 // 右边两个电机反转// 左边检测到黑线Right_moto_go;IE0=0; EA = 1; run();while(1){// 有信号为 0 没有信号为 1 if(Left_2_led==0&&Right_1_led==0) run();else{if(Right_1_led==1&&Left_2_led==0){Left_moto_go; Right_moto_back;}if(Left_2_led==1&&Right_1_led==0)// 右边两个电机正转Left_moto_back; // 左边两个电机反式开始转}}}。

相关文档
最新文档