智能小车循迹、避障、红外遥控c语言代码_第1页
智能小车循迹、避障、红外遥控c语言代码_第2页
智能小车循迹、避障、红外遥控c语言代码_第3页
智能小车循迹、避障、红外遥控c语言代码_第4页
智能小车循迹、避障、红外遥控c语言代码_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

/智能小车避障、循迹、红外遥控C语言代码/实现功能有超声波避障,红外遥控智能小车,红外传感器实现小车自动循迹,1602显示小车的工作状态,另有三个独立按键分别控制三种状态的转换/注每个小车的引脚配置都不一样,要注意引脚的配置,但是我的代码注释比较多,看起来比较容易一点INCLUDEINCLUDEINCLUDE“LCDH“INCLUDEDEFINEUCHARUNSIGNEDCHARDEFINEUINTUNSIGNEDINTUCHARENCHAR_PUZH18“RUN“/1602显示数组UCHARENCHAR_PUZH28“BACK“UCHARENCHAR_PUZH38“STOP“UCHARENCHAR_PUZH48“LEFT“UCHARENCHAR_PUZH58“RIGHT“UCHARENCHAR_PUZH68“XUNJI“UCHARENCHAR_PUZH78“BIZHANG“UCHARENCHAR_PUZH88“YAOKONG“DEFINEHWP2/红外传感器引脚配置P2K口DEFINEPWMP1/L298N管脚定义/超声波引脚控制/SBITECHOP32/超声波接收引脚定义兼红外遥控按键STATE_TOTAL2SBITTRIGP33/超声波发送引脚定义/红外控制引脚配置SBITKEY2P37/红外接收器数据线兼循迹按键STATE_TOTAL0SBITKEY1P34/独立按键P34控制自动避障STATE_TOTAL1UCHARSTATE_TOTAL3,STATE_20/总状态控制全局变量0为自动循迹模块1为自动避障模块2为红外遥控UCHARSTATE_1,DAT/红外扫描标志位UCHARTIME_10,TIME_20/定时器1中断全局变量TIME_2控制PWM脉冲计数TIME_1控制转弯延时计数也做延时一次0005SUCHARTIME,TIMEH,TIMEL,STATE0/超声波测量缓冲变量STATE为超声波状态检测控制全局变量UINTCOUNT0/1602显示计数/UNSIGNEDCHARIRCOM7/红外接收头接收数据缓存IRCOM2存放的为数据UNSIGNEDCHARNUMBER,DISTANCE4,DATE_DATA80,0,0,0,0,0,0,0/红外接收缓存变量/VOIDIRDELAYCHARX/X014MS红外头专用DELAYVOIDRUNVOIDBACKVOIDSTOPVOIDLEFT_90VOIDLEFT_180VOIDRIGHT_90VOIDDELAYUINTDAT/VOIDINIT_TESTVOIDDELAY_100MSUINTMSVOIDDISPLAYUCHARTEMP/超声波显示驱动VOIDBIZHANG_TESTVOIDXUNJI_TESTVOIDHONGWAI_TESTVOIDDELAY10MSVOIDVOIDINIT_TEST/定时器01外部中断01延时初始化TMOD0X11/设置定时器01工作方式116位初值定时器TH10XFE/装入初值定时一次为00005S2000HZTL10X0CTF00/定时器0方式1计数溢出标志TF10/定时器1方式1计数溢出标志ET01/允许定时器0中断溢出ET11/允许定时器1中断溢出EA1/开总中断IFSTATE_TOTAL1/为超声波模块时初始化TRIG0/发射引脚低电平ECHO0/接收引脚低电平EX00/关闭外部中断IT01/由高电平变低电平,触发外部中断0IFSTATE_TOTAL2/红外遥控初始化IT11/外部中断1为负跳变触发EX11/允许外部中断1TRIG1/33为高电平I/O口初始化DELAY60/等待硬件操作VOIDMAINUINTIDELAY50INIT_TESTTR11/开启定时器1LCD1602_INITDELAY50WHILESTATE_20IFKEY10/检测按键S1是否按下DELAY10MS/消除抖动IFKEY10STATE_TOTAL0/总状态定义0为自动循迹模块1为自动避障模块2为红外遥控WHILEI30EX11RETURN/014MS计数过长自动离开。/高电平计数完毕IRCOMJIRCOMJ1/数据最高位补“0”IFN8IRCOMJIRCOMJ|0X80/数据最高位补“1”N0/ENDFORK/ENDFORJIFIRCOM2IRCOM3/判断数据码与数据反码是否正确真确返回EX11RETURNEX11VOIDTIME1_SUSPEND1VOIDINTERRUPT3/3为定时器1的中断号1定时器0的中断号0外部中断12外部中断04串口中断TH10XEC/装入初值定时一次为00005S2000HZTL10X78TIME_2/控制PWM脉冲计数IFSTATE_TOTAL3/判断进入按键是否按下进入状态1避障或者0循迹STATE_21/退出按键判断/IFTIME_2100TIME_20ELSEIFTIME_20CFORB38B0BFORA130A0AVOIDDELAYUINTDAT/延时函数用于初始化UINTIFORIDATI0I_NOP_VOIDDELAY_100MSUINTMS/延时函数用于超声波UINTI,JFORIMSI0IFORJ200J0J_NOP_NOP_NOP_NOP_NOP_/小车前进VOIDRUNVOIDPWM0X56/小车后退VOIDBACKVOIDPWM0XA9TR11TIME_20WHILETIME_22/小于15厘米小车后退再左转BACKLEFT_180IFCOUNT20BAITEMP/100/1602显示数据DATE_DATA5BAISHITEMP100/10DATE_DATA6SHIGETEMP10010DATE_DATA7GEFORI0IDISTANCE1ELSEDISTANCE0DISTANCE1IFDISTANCE0DISTANCE2ELSEDISTANCE0DISTANCE2IFDISTANCE0DISTANCE3ELSEDISTANCE0DISTANCE3DISTANCE_DATDISTANCE0J0DISPLAYDISTANCE_DATCOUNTVOIDXUNJI_TESTINTIDELAY50FORI0I8ILCD1602_WRITECOM0X80ILCD1602_WRITEDATAENCHAR_PUZH6IWHILE1/DELAY10STATE_1HWDATSTATE_1/判断低4位的状态每隔5MS检测一次SWITCHDATCASE0X00RUNBREAKCASE0X01RIGHT_120BREAKCASE0X02RIGHT_90BREAKCASE0X04LEFT_90BREAKCASE0X06RUNBREAKCASE0X03RIGHT_120BREAKCASE0X08LEFT_120BREAKCASE0X0CLEFT_120BREAKDEFAULTRUNBREAKVOIDHONGWAI_TESTINTIDELAY60FORI0I8ILCD1602_WRITECOM0X80ILCD1602_WRITEDATAENCHAR_PUZH8I/TR11WHILE1NUMBERIRCOM2SWITCHNUMBERCASE0X18PWM0X56/前进FORI0I8ILCD1602_WRITECOM0X80ILCD1602_WRITEDATAENCHAR_PUZH1IBREAKCASE0X08PWM0X50/右两轮正转左转FORI0I8ILCD1602_WRITECOM0X80ILCD1602_WRITEDATAENCHAR_PUZH4IBREAKCASE0X1CPWM0X00FORI0I8ILCD1602_WRITECOM0X80ILCD1602_WRITEDATAENCHAR_PUZH3IBREAKCASE0X5APWM0X06/左两轮正转右转FO

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论