2022年ATc智能小车编程[归 .pdf
《2022年ATc智能小车编程[归 .pdf》由会员分享,可在线阅读,更多相关《2022年ATc智能小车编程[归 .pdf(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、#include /包含 51 相关的头文件typedef unsigned char uchar; /重定义 char 数据类型typedef unsigned int uint; /重定义 int 数据类型#define ShowPort P2 /定义数码管显示端口uchar code LedShowData=0 x03,0 x9F,0 x25,0 x0D,0 x99, /定义数码管显示数据0 x49,0 x41,0 x1F,0 x01,0 x19;/0,1,2,3,4,5,6,7,8,9 static unsigned int RecvData; /定义接收红外数据变量static un
2、signed char CountData; /定义红外个数计数变量static unsigned char AddData; /定义自增变量static unsigned int LedFlash; /定义闪动频率计数变量unsigned char HeardData; /定义接收到数据的高位变量bit RunFlag=0; /定义运行标志位bit EnableLight=0; /定义指示灯使能位/*完成基本数据变量定义*/ sbit S1State=P10; /定义 S1 状态标志位sbit S2State=P11; /定义 S2 状态标志位sbit B1State=P12; /定义 B1
3、 状态标志位sbit IRState=P13; /定义 IR 状态标志位sbit RunStopState=P14; /定义运行停止标志位sbit FontIRState=P15; /定义 FontIR 状态标志位sbit LeftIRState=P16; /定义 LeftIR 状态标志位sbit RightIRState=P17; /定义 RightIRState 状态标志位/*完成状态指示灯定义*/ sbit S1=P32; /定义 S1 按键端口sbit S2=P34; /定义 S2 按键端口/*完成按键端口的定义*/ sbit LeftLed=P20; /定义前方左侧指示灯端口sbit
4、 RightLed=P07; /定义前方右侧指示灯端口/*完成前方指示灯端口定义*/ sbit LeftIR=P35; /定义前方左侧红外探头sbit RightIR=P36; /定义前主右侧红外探头sbit FontIR=P37; /定义正前方红外探头/*完成红外探头端口定义*/ sbit M1A=P00; /定义电机1 正向端口sbit M1B=P01; /定义电机1 反向端口sbit M2A=P02; /定义电机2 正向端口sbit M2B=P03; /定义电机2 反向端口/*完成电机端口定义*/ sbit B1=P04; /定义话筒传感器端口sbit RL1=P05; /定义光敏电阻端
5、口sbit SB1=P06; /定义蜂鸣端口/*完成话筒 ,光敏电阻 ,蜂鸣器 .端口定义 */ sbit IR1=P33; /定义红外接收端口/*完成红外接收端口的定义*/ void Delay() /定义延时子程序 uint DelayTime=30000; /定义延时时间变量while(DelayTime-); /开始进行延时循环return; /子程序返回 void ControlCar(uchar CarType) /定义小车控制子程序名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - -
6、 - 第 1 页,共 7 页 - - - - - - - - - M1A=0; /将电机 1 正向电平置低M1B=0; /将电机 1 反向电平置低M2A=0; /将电机 2 正向电平置低M2B=0; /将电机 2 反向电平置低LeftLed=1; /关闭前方左侧指示灯RightLed=1; /关闭前方右侧指示灯Delay(); /将此状态延时一段时间switch(CarType) /判断小车控制指令类型 case 1: /前进/判断是否是前进 M1A=1; /将电机 1 正向端口置高M2A=1; /将电机 2 正向端口置高ShowPort=LedShowData1; /数码管显示前进状态bre
7、ak; /退出判断 case 2: /后退/判断是否是后退 M1B=1; /将电机 1 反向端口置高M2B=1; /将电机 2 反向端口置高ShowPort=LedShowData2; /数码管显示后退状态RightLed=0; /将前方右侧指示灯置低(亮) LeftLed=0; /将前方左侧指示灯置低(亮) break; /退出判断 case 3: /左转/判断是否是左转 M1B=1; /将电机 1 反向端口置高M2A=1; /将电机 2 正向端口置高ShowPort=LedShowData3; /数码管显示左转状态LeftLed=0; /将前方左侧指示灯置低(亮) break; / 退出判
8、断 case 4: /右转/判断是否是右转 M1A=1; /将电机 1 正向端口置高M2B=1; /将电机 2 反向端口置高ShowPort=LedShowData4; /数码管显示右转状态RightLed=0; /将前方右侧指示灯置低(亮) break; / 退出判断 default: /默认情况下的判断 break; / 直接退出判断 void Timer0_IR1() interrupt 1 using 3 /定义红外定时器子程序 TH0=0 xFF; /向定时器定时间寄存器填入高八位值TL0=0 x19; /向定时器定时间寄存器填入低八位值AddData+; /自增变量加1 名师资料总
9、结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 7 页 - - - - - - - - - void Int1_IR1() interrupt 2 /定义红外接收中断子程序 TR1=0; /将定时 /计数器 1 关闭IRState=!IRState; /将红外接收指示灯状态取反if(4=AddData) /0 /判断接收到的数据是0 RecvData=RecvData | 0; /判断到 0 就将当前位写0 RecvData=RecvData 1; /将当前位向左移动1 位 els
10、e if(8=AddData)/1 /判断接收到的数据是1 RecvData=RecvData | 1; /将当前位写1 RecvData=RecvData 1; /将当前位向左移动1 位 CountData+; /将红外接收位计数器加1 if(CountData=8) /判断是否接收到8 位数据 HeardData=RecvData; /是 8 位数据时 ,则将数据暂存到高位变量中 else if(CountData=16) /判断是否接收到16 位数据 ET0=0; /关闭红外定时器0 EX1=0; /关闭红外外部中断1 TR1=1; /打开定时 /计数器 1 AddData=0; /定时
11、时间间隔变量清零if(HeardData=226 | HeardData=112) /判断用户码是否正确 HeardData=RecvData; /取出接收到的低八位数据switch(HeardData) /判断低八位数据的值下列那一位 case 32: /电源/说明按下了电源键 / 在这里填写你自己的代码/根据你的功能自己写ControlCar(8); /将小车停止RunFlag=1; /将运行标志位置1 break; /返回 case 46: /TV/AV /说明按下了TV/AV键 / 在这里填写你自己的代码/根据你的功能自己写break; /返回 case 0: /1 /说明按下数字1
12、键ShowPort= LedShowData1; /数码管显示数字1 ControlCar(1); /将小车置于前进状态break; /返回 case 8: /2 /说明按下了数字2 键ShowPort= LedShowData2; /数码管显示数字2 ControlCar(2); /将小车置于后退状态break; /返回 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 7 页 - - - - - - - - - case 4: /3 /说明按下了数字3 键ShowPor
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年ATc智能小车编程归 2022 ATc 智能 小车 编程
限制150内