西南交大电脑鼠课程设计.docx

上传人:飞猪 文档编号:550310 上传时间:2025-07-30 格式:DOCX 页数:29 大小:342.96KB
下载 相关 举报
西南交大电脑鼠课程设计.docx_第1页
第1页 / 共29页
西南交大电脑鼠课程设计.docx_第2页
第2页 / 共29页
西南交大电脑鼠课程设计.docx_第3页
第3页 / 共29页
西南交大电脑鼠课程设计.docx_第4页
第4页 / 共29页
西南交大电脑鼠课程设计.docx_第5页
第5页 / 共29页
点击查看更多>>
资源描述

1、后者文遗大孝电子技术课程设计报告学院:专业:年级:姓名:学号:指导老师:第一章课程设计任务和总体设计1.1 课程设计任务该课程设计以两人组队的形式,制作寻线型电脑鼠。要求能够在8X8的迷宫中搜索路径并计算出最短路径。其中迷宫由25mm宽的黑线组成。电脑鼠第一次进入迷宫和返回迷宫时,可以循着黑线走到终点并记录迷宫信息,第二次进入迷宫时,根据第一次所记录的迷宫信息选择最短路径冲刺到终点。1.2 总体设计思路和步骤寻线型电脑鼠不同于以前的走迷宫,是利用红外传感器进行路线探测并选择前进方向的小型智能机器人。其设计步骤包括:系统设计、利用AltiUmDeSigner软件绘制原理图和PCB图,电脑鼠硬件焊

2、接组装、软件代码书写调试和总体调试。硬件局部主要由传感器,单片机,电机驱动组成。传感器采用红外传感器,由发射管和接收管组成,可探测黑线迷宫。单片机采用IAPI5W413AS芯片,用于编写和实现程序。电机驱动由单片机产生的PWM以及L9110芯片进行驱动。软件局部主要由产生PWM函数,搜寻路径法那么,记录信息,测速盘组成。此课程设计中电脑鼠按照左手法那么进行路线搜索,根据测速盘的计数得到迷宫坐标并储存。第一次排除迷宫中的死路,第二次便可沿迷宫中最短路径走出迷宫。第二章硬件设计2.1 硬件设计步骤硬件设计步骤如图1所示。设计原理图、生成PCB板之后进行手动布线,再根据PCB板将原件、轮子、轴承、电

3、机、齿轮等器件进行组装,调整传感器角度使之能够到达良好的接受效果。最后进行电路测试,测试方式在软件设计局部说明。2.2 主控模块(单片机)包括单片机图2)和电脑下载局部图3)。单片机采用了STC15W4K32S4芯片,其原理图为:MCU模块PWML一1I.VlXRKF-5VMotortYJC-MtJDJOtnSU1?QUIWP2.*CF13P2.7ACCP23Pl.CtfADCWicxrPlPl.1,AOCI/OCPOP1.2AUC2SSECM-MFOPLWADeVMOaPl.4AlMl4USOPtPADCSZSiCLKI1fr421KUJ31IiM丁ItMMCKeVX?f*3SUC1M-14

4、T1P3ZZO_M.LZTxlV2PXoZRXtVIZT-WTiCLKOP2.2/MZP2.1/SCLKP2JWRSrU1J-P3.7NIVxO-2CP2L_2CXpIVCCMCUVVC寻线型由脑鼠电机驱动PCB板制作红外传感器电机等组兀器件焊调试检测管脚图:JlVCCVCCMCUCcPL3P2.6ICCP2JP2.7ICePuADCaPLoICCPOADC11.1ICMPOECISSADC21.2MOSIADC3P1.3MISOADC41.4SCLKADC51.5I_2XTAL2RxD_3/ADC6Pl.6XlALLTXD_3/ADC7,P1.7CNIP-MCLKO.RST/P5.4VccC

5、MPP5.5EZGndl28272625242322212019180161526UOSOP28HSSOP28、SKDIP28012341234567S911111ZZJP2.5/CCP0_3P24/ECI_3/SS_2P2.3MOSI2P22MISO2P2ISCLK2IP2.0.RSTQUTLOWP37,PTOTxD2CCP2CCP22P36P112D2CCP12P3.5.TOCLKOCCPO2P34T0.1ECI2P33INT1P3.2INT0P3lTxDT2P3O/RxD,而T2CLK0SOP28SKDIP282.3传感器模块传感器模块运用了5对发光二极管白)+红外光敏三极管黑)的组合如

6、图7),成一条直线置于电脑鼠前端用于探测赛道。其中左前与右前的探测器用于纠正电脑鼠直线行走时由于2个电机转动不一致导致的轨道偏离。左、前和右方的三个探测器用于探测距离电脑鼠特定距离内的左右和前方有无线路。用于提供红外信号的30kHz多的信号可以由STCI5W4K32S4单片机的时钟输出口输出,占空比固定为50%o当发射的光线集中于白色地区时,光线会被反射,黑色的接收管就会将其吸收;反之,发射光线集中的地方是黑色的时候,光线会被吸收而没有反射。单个的传感器模块如图5GND发光二极管电路图如图6.红外接收光微三极管IO-IlONM值94OnIB实物图见图7.长脚E极,短脚C极2.4电机驱动模块电脑

7、鼠的前进、拐弯和旋转等动作必须依靠两个电机的转动来控制。具体为:直行:两个电机同方向转动;转弯:两个电机一个转一个不转或者一个正转一个反转。要使电机转动,需要一定的电压,以电压控制电机的运转。而为了获得一个较为适宜的电压值,往往需要调节电阻。通过不断重复地开、关操作,实现我们需要的“脉冲宽度调制”简称PWm调制)。当PWm信号与电机相连时,电机的旋转速度就可以根据我们的程序设定来工作。电机正、反转以及刹车的控制是通过两个L9110芯片来控制的。图8为L9110的应用电路图。VGNDVCCMotor丁VCCMotorsPwMLR-4.7KWvPWMRR39L4.7KVvL9110GND除L911

8、0之外,该模块还使用了74HeOO芯片参与PWm控制。原理图如图10逻辑关系:2. 5测速模块电脑鼠设计使用直流电机,一方面通过对电机的转速加以运算可获得电脑鼠所在方位,记忆当前迷宫情况;一方面在编程时,了解电机转速对电脑鼠行走速度可以进行更好地控制,使其能够在尽量短的时间内遍历迷宫且走到终点。采用红外发射二极管和红外光敏三极管组成一对对射管实现对两个电机转速进行测量,需要分别在两个电机的一端添加码盘。其实物图如图11.侧面接收光敏三极管30-120OnJnE值94011(112.6电源电脑鼠的电源为5号铁锂电池和7号铁锂电池各一节,分别为单片机和电机供电,提供电压约为3.2V左右。电源原理图

9、如图12所示。VCCMotorVCCMOtof=图12至此,电脑鼠的硬件设计根本完成,完整的原理图、PCB图见附录。焊接PCB板成品图如图13.第三章软件设计3.1程序流程图(图14)MCU各状态字初始化/检测到终点中断红外检测,读取传感器的值最短路径冲刺第四章最终结果课程设计结果:电脑鼠可完成寻线并到达终点,有时候也能顺利返回起点。在焊接过程中,因为有光立方比赛的经验,焊接工作比拟顺利,除了中途有一次不小心将一个芯片的两个引脚焊在了一起,然后我们及时的用仪器解决了这一问题。而软件局部,虽然用的原代码是同学间分享流传的,但是也是通过自己的调试,修改才完成的。另外,在学长的指导下,也对右手算法程

10、序中左转优先级不高这一缺点进行了完善。第五章总结及体会这知府呈设计让我受益匪浅,无论从知识上还是其他的各个方面。上课的时候的学习从来没有见过真正的单片机,只是从理论的角度去理解枯燥乏味。但在实习中见过甚至使用了单片机及其系统,能够理论联系实际的学习,开阔了眼界,提高了单片机知识的理解和水平。在这次课程设计中又让我体会到了合作与团结的力量,当遇到不会或是设计不出来的地方,我们就会在QQ群里讨论或者是同学之间相互帮助。团结就是力量,无论在现在的学习中还是在以后的工作中,团结都是至关重要的,有了团结会有更多的理念、更多的思维、更多的情感。单片机是很重要的一门课程,老师曾说过,如果学好一门单片机,就凭

11、这个技术这门手艺找一个好工作也不成问题。尽管我们在课堂学到的内容很有限,但在以后的学习中单片机还需要好好的深入研究和学习,学好了单片机也就多了一项生存的本钱。最后感谢老师、学长们对我们的精心指导和帮助,感谢同学们对我的帮助。附录1:原理图附录2:PCB图#includestdio.hdo#includeaction.h,/电机驱动头文件#includebmp_pixel.hWheeLCOntrOl(LEFlL32);include,NOKIA_5110.hWheeLCOntrOl(RlGHTO,45);#includeconfiguration.hwhile(Pl&0xf8=0xd8|Pl&0

12、xf8=二0x98IIPl&0xf8=0xc8);ul6gzl=0;voidStop_On_Going()Wheel_Control(LEF-Cl,255);:L表示正向转,data越大,转速越小voidGo_straight()直走的具体实现WheeLCOntrol(RlGH1,255);WheeLCOmrOl(LEFlL42);WheeLCOmrOl(RlGH工工,55);)voidTurn_Right()右转的具体实现voidTurn_Left()do(WheeLCOmrOl(LEF口52);WheeLContrOl(RlGHCL65);while(Left_Detector=l);在左

13、转之前,先走一段距离,直到最左边的灯走出黑线为实现直走左转)if(Middle_Detector=0)(Go_straight();else(do(WheeLeOntrOI(LEFTo,32);左齿轮反转,右齿轮正转WheeLCOntrOl(RlGHTl,45);while(Pl&0xf8=0xd8|Pl&0xf8=0x98IIPl&0xf8=0xc8);)voidTurn_back()调头的具体实现XXX.(do(WheeLContrOl(LEF0,42);WheeLContrOl(RlGH1,55);while(Pl&0xf8=0xd8);)voidLeft_Adjust()左偏-向右微调

14、的具体实现doWheeLCOntrOI(LEF0,72);左轮子转速快一点就可以解决左偏问题WheeLCOntrOl(RlGH1,55);while(Pl&0xf8=0xd8|Pl&0xf8=0xc8I|Pl&0xf8=0xe8|Pl&0xf8=0xf0);voidRight_Adjust()右偏向-左微调的具体实现UART_config();串口do(Wheel_Control(LEFT,l,62);Wheel_Control(RIGH-C0,75);while(Pl&0xf8=0xd8|Pl&0xf8=0x98IIPl&0xf8=0xb8|Pl&0xf8=0x78);)voidFind_g

15、z();voidmain()(ul6mode=0;u8sensor=0;功能模块初始化/GPIO_config();/STC15W4K32S4PWM复用口由高阻初始化为双向口EXTI_config();外部中断测速Timer_config();定时ADC_config();/AD电压检测液晶屏初始化LCDJnitO;LCD_clear();LCD_draw_bmp_pixel(15,0,BMB48,56);delay_ms(250);delay_ms(250);delay_ms(250);delay_ms(250);LCD_clear();LCD_write_english_string(2,

16、0,WelcomeTo);LCD_write_english_string(2,l,SWJTU);LCD_write_english_string(2,2,DNSVER2.1);LCD_write_english_string(2,3,Nokia5110LCD),);LCD_write_chinese_string(l,4,12,6,0,2);/waitforthestartkeydown/while(Start_Key);/延时启动(start按键按下,等待n秒后启动)delay_ms(250);PCA_config();/PWMdelay_ms(250);delay_ms(250);cas

17、e0x08:/00001000delay_ms(250);case0x18:mode=1;delay_ms(250);break;/00011000左转/delay_ms(250);算法表达,先从左遍历图delay_ms(250);/00010000/delay_ms(250);/delay_ms(250);caseOxaO:/10100000/delay_ms(250);caseOxdO:/delay_ms(250);/11010000/case0x88:LCD_clear();/10001000开总中断caseOxd8:mode=2;break;/11011000直走SET_EA();*a

18、ddyourprogramhere!.*/case0x80:/10000000while(l)case0x00:(/00000000Pl=Oxff;caseOxcO:mode=3;break;/11000000右转sensor=Pl&0xf8;if(gzl=O)(case0xf8:mode=4;switch(sensor)break;/11111000掉头(case0x10caseOxeO:/01001000case1:Turn_Left();break;case0x78:/01111000case0x38:/00111000case0xb8:/10111000case0x98:mode=10

19、break;/10011000头右偏,后续调整case0x90:youzhuanyichangchuIicaseOxe8:/11101000case0xc8:/11001000caseOxfO:mode=11;break;/11110000头偏左,后续调整default:mode=5;break;其他情况,执行右转)case 2 :Go_straight();break;case 3 :Turn_Right();break;case 4 :Turn_back();break;case 5 :Find_gz();break;case 10 :Left_Adjust();break;case 1

20、1 :Right_Adjust();break;default:Go_straight();break;)voidFind_gz()switch(mode)gzl=1;if(Left_Detector&Left_midclle_Detector=0)/*(*WheeLCOmrol(LEF0,72);Wheel_Control(RIGHTl,85);*functionname:voidWheel_Control(bitside,u8data_CCAPnH)elseif(Right_middle_DetectorRight_Detector=O)&*param:side=LEFTorRIGHTdi

21、r=WHEEL_FRONTorWHEEL_BACKdata_CCAPnH为输入CCAPnH的8bit数据(*returnvalue:noneWheeLCOmrol(LEFTI,62);WheeLCOntrOl(RlGH0,75);*description:ContrOltheleftorrightwheelsrunning)*/while(Pl&0xf8=0xd8);gzl=O;)voidWheel_Control(bitside,bitdir,u8data_CCAPnH)(if(dir=WHEEL_FRONT)/选择的轮子前进*功能说明(If(Side=RIGHT)(本文件为电机控制程序Mo

22、tor_Right_Control=1;*PWMn_Update(PCAO,data_CCAPnH);*I)do#includeAction.hMotor_Left_ControI=1;PWMnJJpdate(PCALdataJXAPnH);)elseif(dir=WHEEL_BACK)(if(side=RIGHT)(Motor_Right_Control=O;PWMn_Update(PCAO,data_CCAPnH);elseif(side=LEFT)(Motor_Left_Control=O;PWMnJJpdate(PCALdataJXAPnH);)*functionname:voidTu

23、rnRight()*returnvalue:none*description:控制电脑鼠向右转#ifIN_PLACEvoidTurnRight()(u8flg=l;TXl_write2buff(0xDD);left_count=right_count=0;WheeljZontroI(LEFTWHEELFRC)NTSPEEDJNT.LEFT);Wheel_Control(RIGHTWHEEL_FRONTSPEED_lNIT_RIGHT);while(flg=l)if(right_count=601left_count=60)WheeLControI(LEFCWHEEL_FRONTSPEED_IN

24、lT_RIGHT);Wheel_Control(RIGHTWHEEL_BACK,SPEED_INIT_LEFT);if(left_count=1251right_count=125)WheeLcontroI(LEF-CWHEEL-FRONTOXff);左轮停止WheeLControl(RlGHTWHEEL-BAC(OXff);left_count=0;right_count=0;fg=0;)#elsevoidTurnRight()(u8flg=l;left_count=right_count=0;Wheel_Control(LEF-CWHEEL_FRONTSPEED_INT.LEFT);Whe

25、eLcontroI(RIGHTWHEEL-FRON-COXFF);while(flg=l)(if(left_count=901right_count=90)(WheeLcontroI(LEF-CWHEEL-FRONTOXff);左轮停止left_count=0;right_count=0;fg=O;)#endif*functionname:voidTurnRight()*param:none*returnvalue:none*description:控制电脑鼠向左转#ifIN_PLACEvoidTur11Left()(u8flg=l;TXl_write2buff(0xEE);left_coun

26、t=right_count=0;Wheel_Control(RIGHTWHEEL_FRONTSPEED_lNIT_RIGHT);Wheel_Control(LEF-CWHEEL_FRONTSPEED_INT.LEFT);while(flg=l)(if(right_count=601left_count=60)(Wheel_Control(RIGH-CWHEEL_FRONTSPEED_INIT_RIGHT);Wheel_Control(LEF-CWHEEL_BACK,SPEEDJNIT_LEFT);)if(right_count=1251left_count=125)WheeLcontroI(R

27、IGH-CWHEEL-FRONTOXff);右轮停止Wheel_Control(LEFTWHEEL_BACK,OXff);left_count=0;right_count=0;fg=0;)#elsevoidTurnLeftO(u8flg=l;left_count=right_count=0;Wheel_Control(RIGHTWHEEL_FRONTSPEED_lNIT_RIGHT);WheeLcontroI(LEFTWHEEL-FRON-COxff);while(flg=l)(if(right_count=901left_count=90)(Wheel_Control(RIGHTWHEEL_

28、FRONTOXff);右轮停止left_count=0;right_count=0;fg=O;)#endif*functionname:voidTurnBack()*param:nonefg=O;*returnvalue:none*description:控制电脑鼠向后转voidTurnBack()(u8flg=l;TXl_write2buff(0xFF);left_count=right_count=0;Wheel_Control(RIGHTWHEEL_BACK,SPEEDJNIT_RIGHT);右轮后退Wheel_Control(LEF-CWHEEL_FRONTSPEED_INIT_LEF

29、T);左轮前进while(flg=l)(if(left_count=1151left_count=115)(WheeLContrOl(RlGHCWHEEL_BACK,OXff);/关闭右轮WheeLcontroI(LEF-CWHEEL-FRONTOXff);/关闭左轮left_count=0;right_count=0;*functionname:voidStopOngoingO*param:none*returnvalue:none*description:控制电脑鼠停止前进voidStopOngoingO(u8flg=l;right_count=left_count=0;Wheel_Con

30、trol(RIGHTWHEEL_BACK,SPEEDJNrLRlGHT);右轮后退Wheel_Control(LEF-CWHEEL_BACK,SPEEDJNIT_LEFT);左轮后退while(flg=l)(if(right_count=21left_count=2)WheeLCOntrOl(RlGHCWHEEL_BACK,OXff);/关闭右轮Wheel_Control(LEFTWHEEL_BACK,OXff);关闭左轮left_count=0;right_count=0;fg=0;)*functionname:voidGoGrid()*param:none*returnvalue:none

31、description:前进一格后停止*voidGoGrid()前进一格后停止Nrr);右轮前进Wheel_Control(LEF-CWHEEL_FRONTSPEED_INIT);左轮前进while(flg=l)(if(right_count=351left_count=35)(Wheel_Control(RIGHTWHEEL_BACK,OXff);/关闭右轮Wheel_Control(LEFTWHEEL_BACK,OXff);关闭左轮left_count=0;right_count=0;fg=O;)*/u8flg=l;left_count=right_count=0;WheeLControl(RIGH-CWHEEL-FRONTSPEEDJ

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 工学

宁ICP备18001539号-1