电动智能小车毕业设计论文(编辑修改稿)内容摘要:
钟引脚 sbit sen1ld = P3^4。 // 74165 锁存引脚 17 // 循迹传感器输出 sbit sen2dat = P3^2。 // 74165 数据引脚 sbit sen2clk = P3^3。 // 74165 时钟引脚 sbit sen2ld = P3^5。 // 74165 锁存引脚 // 左侧电机 sbit IN1 = P1^2。 sbit IN2 = P1^3。 sbit PWM0 = P1^6。 // 右侧电机 sbit IN3 = P1^4。 sbit IN4 = P1^5。 sbit PWM1 = P1^7。 // 声光提示 sbit beep = P1^7。 // 声音提示 sbit led = P1^6。 // 发光提示 /*********************变量定义 **********************/ bit OutFlag=0。 bit h0,h1,h2,h3,h4,h5。 // 障碍物检测标志位 uchar hped,xped。 uchar MeaTime=0。 uchar MeaMs=0。 uchar disbuffer[2]。 uint time1=20200,time2=20200。 //8254 计数器 0、计数器 1初值 uchar code DispTAB[] = {0123456789ABCDEF }。 //显示代码 uchar code Tab1[] = {Position:}。 uchar code Tab2[] = {Time:}。 uchar code Tab3[] = {AB}。 uchar code Tab4[] = {BC}。 /*********************函数声明 **********************/ uchar Sen1In(void)。 // 避障传感器信号 uchar Sen2In(void)。 // 循迹传感器信号 void initPWM(void)。 // 初始化 PWM占空比 void Delay1ms(uint i)。 // 延时程序 void Leftself(void)。 // 原地左转 void Rightself(void)。 // 原地右转 18 void Left(void)。 // 左转 void Right(void)。 // 右转 void Forward(void)。 // 前进 void Brake(void)。 // 停车 void Track(void)。 // 循迹程序 void Avoidance(void)。 // 避障程序 void init_T0(void)。 // 初始化 T0 void init_T1(void)。 // 初始化 T1 void initdisp(void)。 进入系统主程序后,首先对定时器 T0, T1进行初始化设置,然后初始化 LCD1602并显示初始信息,启动智能车前进,在循环程序中将调用传感器检测程序调整小车运行状态。 void main(void) { init_T0()。 init_T1()。 Inlt_LCD1602()。 initdisp()。 Forward()。 Delay1ms(5000)。 while (1) { Avoidance()。 Delay1ms(200)。 } } 智能车运动控制程序主要实现控制小车原地右转,左转,右转,前进,停止等动作。 该部分程序由以下程序构成,如表 115 所示。 19 表 115 智能车运动控制程序及功能表 序号 函数名 功能 序号 函数名 功能 1 Leftself() 原地左转程序 4 Right() 右转程序 2 Rightself() 原地右转程序 5 Forward() 前进程序 3 Left() 左转程序 6 Brake() 停止程序 下面对这几个程序加以详细介绍。 ( 1) Leftself():原地左转程序 通过调用 Leftself()程序控制智能车实现原地左转,该过程中智能车的左右两侧电动机会实现同转速反向运动。 void Leftself(void) { IN1 = 1。 IN2 = 0。 IN3 = 0。 IN4 = 1。 } ( 2) Rightself():原地右转程序 通过调用 Rightself()程序控制智能车实现原地右转,本过程中智能车的左右两侧电动机也会实现同转速反向运动。 void Rightself(void) { IN1 = 0。 IN2 = 1。 IN3 = 1。 IN4 = 0。 } ( 3) Left():左转程序 通过调用 Left()程序控制智能车实现左转,本过程中智能车的右侧电动机转动,而左侧电动机停转。 void Left(void) { IN1 = 0。 IN2 = 0。 IN3 = 1。 20 IN4 = 0。 } ( 4) Right():右转程序 通过调用 Right()程序控制智能车实现右转,本过程中智能车的左侧电动机转动,而右侧电动机停转。 void Left(void) { IN1 = 0。 IN2 = 0。 IN3 = 1。 IN4 = 0。 } ( 5) Forward():前进程序 通过调用 Forward()程序控制智能车前进,两侧电动机以同速度运行。 void Forward(void) { IN1 = 1。 IN2 = 0。 IN3 = 1。 IN4 = 0。 } ( 5) Brake():停止程序 通过调用 Brake()程序控制智能车停止,两侧电动机停止运行。 void Brake(void) { IN1 = 1。 IN2 = 1。 IN3 = 1。 IN4 = 1。 } 智能车传感器检测程序主要实现避障传感器的检测,循迹传感器的检测,避障调整程序,循迹调整程序等动作。 该部分程序由以下程序构成,如表 116所示 21 表 116 传感器检测子程序及功能 序号 函数名 功能 序号 函数名 功能 1 Sen1In(): 避障传感器检测程序 3 Track(): 循迹调整程序 2 Sen2In(): 循迹传感器检测程序 4 Avoidance(): 避障调整程序 下面对这几个程序加以详细介绍。 ( 1) Sen1In():避障传感器检测程序 通过 74LS165 将 6 个避障传感器的状态转为串行输出信号送入 51单片机,再由单片机程序屏蔽没用到的前两位,返回检测状态值。 uchar Sen1In(void) { uchar i,temp。 //载入数据 sen1ld=0。 _nop_()。 _nop_()。 sen1ld=1。 //移出数据 for(i=0。 i8。 i++) { temp=1。 sen1clk=0。 if(sen1dat)temp=temp|0x01。 sen1clk=1。 } sen2clk=0。 temp=tempamp。 0x3f。 return(temp)。 } ( 2) Sen2In():循迹传感器检测程序 通过 74LS165 将 8 个避障传感器的状态转为串行输出信号送入 51单片机,该函数返回检测状态值。 uchar Sen2In(void) { uchar i,temp。 22 //载入数据 sen2ld=0。 _nop_()。 _nop_()。 sen2ld=1。 //移出数据 for(i=0。 i8。 i++) { temp=1。 sen2clk=0。 if(sen2dat)temp=temp|0x01。 sen2clk=1。 } sen2clk=0。 return(temp)。 } ( 3) Track():循迹调整程序 读取循迹传感器状态,然后根据该状态判断车体相对于黑线循迹线的位置,判断并调整智能车,使得车体中线沿着轨迹线前进。 void Track(void) { xped=Sen2In()。 switch (~xped) { case 0x80: Leftself()。 for(。 0x18!=~Sen2In()。 )。 Forward()。 break。 case 0xc0: Right()。 for(。 xped==Sen2In()。 )。 Forward()。 break。 case 0x60: 23 Right()。 for(。 xped==Sen2In()。 )。 Forward()。 break。 case 0x40: Right()。 for(。 xped==Sen2In()。 )。 Forward()。 break。 case 0x30: Right()。 for(。 xped==Sen2In()。 )。 Forward()。 break。 case 0x20: Right()。 for(。 xped==Sen2In()。 )。 Forward()。 break。 case 0x18: Forward()。 break。 case 0x0c: Left()。 for(。 xped==Sen2In()。 )。 Forward()。 break。 case 0x08: Left()。 for(。 xped==Sen2In()。 )。 Forward()。 break。 case 0x06: Left()。 for(。 xped==Sen2In()。 )。 24 Forward()。 break。 case 0x04: Left()。 for(。 xped==Sen2In()。 )。 Forward()。 break。 case 0x02: Left()。 for(。 xped==Sen2In()。 )。 Forward()。 break。 case 0x03: Left()。 for(。 xped==Sen2In()。 )。 Forward()。 break。 case 0x01: Rightself()。 for(。 0x18!=~Sen2In()。 )。 Forward()。 break。 case 0x00: Delay1ms(100)。 if(Sen2In()==0xff) { Brake()。 } break。 } } ( 3) Avoidance():循迹调整程序 读取避障传感器状态,然后根据该状态判断车体在迷宫内的位置,判断并调整智能车,使得车体在迷宫内前进。 25 void Avoidance(void) { hped = Sen1In()。 h0 = hpedamp。 0x01。 h1 = hpedamp。 0x02。 h2 = hpedamp。 0x04。 // 右侧标志位 测不到物体时 , 向右转 90 度 h3 = hpedamp。 0x08。电动智能小车毕业设计论文(编辑修改稿)
相关推荐
十年代中后期开始在汽车上配置 ABS。 1999 年我国制定的国家强制性标准 GB126761999《汽车制动系统结构、性能和试验方法》中已把装用 ABS 作为强制性法规,此后一汽大众、东风富康、上海大众、重庆长安、上海通用等均开始采用 ABS 技术。 国内研究 ABS的主要有东风汽车公司、交通部重庆公路研究所、济南捷特汽车电子研究所、清华大学、西安交通大学、吉林大学、华南理工大学
代。 美国学者进行了慕名的铁锹铲没作业的实验研究,从人机 工程学的角度找出了铁锹的最优设计及铲运松散颗粒材料是每一铲最适宜的重量。 以电子技术的广泛应用为标志为主要标志的第三次产业革命开始以来,随着工业技术的发展,工程技术设计中与人的因素有关的问题越来越多,人机协调问题显得越来越中药,从而促进人机工程学的研究和应用得到广泛而迅速发展。 人机工程学强调产品的“宜人性”,强调适合人的解剖、心理
30一 40倍;并且增加了休眠功能及低功率、非挥发的 CMOS工艺,一般耗电在 1~ 2. 5mA,典型功耗情况, WDT关闭时为 100hA,其功耗远低于 M51单片机,更适用于电池供电的应用设备。 12 (3)工业级产品。 具有大电流输出可直接驱动 SSR和继电器,内有看门狗定时器,防止程序跑飞,从而提高了产品的抗干扰能力。 工作电压范围宽 (2. 76. ov),电源抗干扰性强。 I/
计算的许用接 触应力 1lim1 ][ HH =639MPa 2lim2 ][ HH =522MPa Ad 值 由表 得, Ad =85 初步计算小轮直径 3 211 1][ uuHdd TAd = 取 d1 =15mm 初步尺宽 ddb 1=15mm 2.校核计算 圆周速度 100060 11 ndv =精度等级 由表 得,选 8 级精度
法在 t 时刻预测出 t+2 时刻的谐波电流与其理想值的偏差值,通过选择 t+1 时刻的控制策略,利用加权最小二乘法使得在 t+2 时刻该偏差值为最小,从而实现了 2 步预测的无差拍控制。 将中心点的空间距离作为一个拟合参数引入预测过程,提高了预测精度和消噪能力,它具有原理简单和实时性好等特点。 这些成果的取得无疑促进了有源电力滤波技术的发展,特别是进入 80 年代以后
1 0 0 3 5 0 9 . 5 4 5 5VV SX SV ( 11) 同理三台变压器可等效为一台,此时 XT= 线路并联电容的处理 ∏ 型等值电路里,线路两端存在并联电容,即与负荷等值阻抗并联。 网络变换时,先将这些并联电容消去。 对于 节点 2,负荷 ZL2=+,其中 B12= , B23= , B24= 2 1 2 2 3 2 42112LY B B