智能寻迹小车设计论文(编辑修改稿)内容摘要:

//定义 S1按键端口 S2 BIT。 //定义 S2按键端口。 *************完成按键端口的定义 *************/ LEFTLED BIT。 //定义前方左侧指示灯端口 RIGHTLED BIT。 //定义前方右侧指示灯端口。 *************完成前 方指示灯端口定义 *********/ LEFTIR BIT。 //定义前方左侧红外探头 RIGHTIR BIT。 //定义前主右侧红外探头 FONTIR BIT。 //定义正前方红外探头。 *************完成红外探头端口定义 ***********/ M1A BIT。 //定义电机 1正向端口 M1B BIT。 //定义电机 1反向端口 M2A BIT。 //定义电机 2正向端口 M2B BIT。 //定义电机 2反向端口。 *************完成电机端口定义 ***************/ B1 BIT。 //定义话筒传感器端口 RL1 BIT。 //定义光敏电阻端口 SB1 BIT。 //定义蜂鸣端口。 *********完成话筒 ,光敏电阻 ,蜂鸣器 .端 口定义 **/ IR1 BIT。 //定义红外接收端口。 *********完成红外接收端口的定义 *************/ SHOWSM EQU P2 DLY1 EQU 41H DLY2 EQU 42H DLY3 EQU 43H ORG 0000H SJMP START ORG 0003H LJMP S1ZD ORG 000BH RETI START: MOV P0,0FFH MOV P1,0FFH MOV P2,0FFH MOV P3,0FFH SETB EA SETB EX0 SETB IT0 SETB ES SETB EX1。 //同意开启外部中断 1 SETB IT1。 //设定外部中断 1为低边缘触发类型 SETB ET0。 SETB EA。 //总中断开启 MOV DPTR,SMDATA MOV A,01H MOVC A,@A+DPTR MOV SHOWSM,A LOOP:LCALL CARGO JNB FONTIR,CARDO JB LEFTIR,CARDO JB RIGHTIR,CARDO JB B1,LOOP LCALL CARSTOP JB B1,$ SJMP LOOP CARDO:MOV A,02 MOVC A,@A+DPTR MOV SHOWSM,A LCALL CARBACK MOV R1,8 LOP1: LCALL DELAY CPL SB1 DJNZ R1,LOP1 MOV A,03 MOVC A,@A+DPTR MOV SHOWSM,A LCALL CARLEFT MOV R1,8 LOP2: LCALL DELAY CPL SB1 DJNZ R1,LOP2 SETB SB1 MOV A,01 MOVC A,@A+DPTR MOV SHOWSM,A LJMP LOOP S1ZD:LCALL CARSTOP JB S2,$ RETI CARGO:SETB M1A。 //将电机 1正向端口置高 SETB M2A。 //将电机 2正向端口置高 CLR M1B CLR M2B SETB RUNFLAG MOV A,01H MOVC A,@A+DPTR MOV SHOWSM,A。 //数码管显示前进状态 CLR RIGHTLED。 //将前方右侧指示灯置低 (亮 ) CLR LEFTLED。 //将前方左侧指示灯置低 (亮 ) RET CARBACK:SETB M1B。 //将电机 1反向端口置高 SETB M2B。 //将电机 2反向端口置高 CLR M1A CLR M2A MOV A,02H MOVC A,@A+DPTR MOV SHOWSM,A。 //数码管显示前进状态。 //数码管显示后退状态 SETB RIGHTLED。 //将前方右侧指示灯置高 (灭 ) SETB LEFTLED。 //将前方左侧指示灯置高 (灭 ) RET CARLEFT:SETB M1B。 //将电机 1反向端口置高 SETB M2A。 //将电机 2反向端口置高 CLR M1A CLR M2B MOV A,03H MOVC A,@A+DPTR MOV SHOWSM,A。 //数码管显示前进状态。 //数码管显示后退状态 CLR RIGHTLED。 //将前方右侧指示灯置低 (亮 ) SETB LEFTLED。 //将前方左侧指示灯置高 (灭 ) RET CARRIGHT:SETB M1A。 //将电机 1反向端口置高 SETB M2B。 //将电机 2反向端口置高 CLR M2A CLR M1B MOV A,04H MOVC A,@A+DPTR MOV SHOWSM,A。 //数码管显示前进状态。 //数码管显示后退状态 SETB RIGHTLED。 //将前方右侧指示灯置高 (灭 ) CLR LEFTLED。 //将前方左侧指示灯置低 (亮 ) RET CARSTOP:CLR M1A CLR M2A CLR M1B CLR M2B CLR RUNFLAG MOV A,00H MOVC A,@A+DPTR MOV SHOWSM,A。 //数码管显示前进状态。 //数码管显示后退状态 SETB RIGHTLED。 //将前方右侧指示 灯置高 (灭 ) SETB LEFTLED。 //将前方左侧指示灯置高 (灭 ) RET DELAY: MOV DLY1,10 DLYLOP2:MOV DLY2,100 DLYLOP3:MOV DLY3,100 DJNZ DLY3,$ DJNZ DLY2,DLYLOP3 DJNZ DLY1,DLYLOP2 RET SMDATA: DB 03H,9FH,25H,0DH,99H,49H,41H,1FH,01H,19H。 //0,1,2,3,4,5,6,7,8,9 END 四、 运行效果: 程序效果 : 打开本机电源开关 , 机器人开始向前运行 ( 这要看当时的条件 ), 在运动的过程中 ,如果前方有障碍物 , 机器人则开始向后后退一段时间后 , 向左运动 , 在向左运行一段时间 后。 再开始向前运行。 在整个调向的过程中 , 蜂鸣器闪响。 并且在机器人前进的过程中 , 你可 以通过拍手来控制机器人的停止和运行。 实验九 红外遥控器解码程序演示 一、 实 验简介 : 本程序主要将现在比较常用 M50462 遥控器进行解码 , 将解码后的数据通过 P2 端口的数码 管显示出来 , 为了更好的看到运行过程 , 特加了三个指示灯用来指示当前运行状态。 P10 闪亮 , 表示程序正在运行 ; P11 闪亮 , 表示接收到数据 ; P12 闪亮 , 表示触发内部的定时器操作 ; P13 闪亮 , 表示正确接收完一个数据。 二、 实验原理图 : 三、 实现代码 : include //包含 51单 片机相关的 头 文件 DEFINE UINT UNSIGNED INT //重定 义 无符号整数 类 型 DEFINE UCHAR UNSIGNED CHAR //重定 义 无符号字符 类 型 UCHAR CODE LEDSHOWDATA[]={0X03,0X9F,0X25,0X0D,0X99, //定 义 数 码 管 显 示数据 0X49,0X41,0X1F,0X01,0X19}。 //0,1,2,3,4,5,6,7,8,9 UCHAR C。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。