欢迎来到天天文库
浏览记录
ID:27852431
大小:408.50 KB
页数:7页
时间:2018-12-06
《初学单片机之51红外遥控小车程序.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、初学单片机之51红外遥控小车程序 51单片机红外遥控小车,十分简单,产生我们先从红外遥控部分开始。网上打一个红外的例程进行改,就成了51单片机红外遥控小车程序了。 51单片机红外遥控小车用单片机最小板是是一块6元钱的最小板(就是哪种直接把IO引出来,加个晶振),电机控制板,与P连接。先在电脑上测试程序,测试好后,再把程序下载到单片机中,这里要说明一下的是红外的信号是间断发出的,所以是按一下就执行某个动作,要停止还得按停止按键。 51单片机红外遥控小车可以用一组电源同时给51单片机最小系统和电机控制板供电。 51单片机程序代码 #include//包含单片机寄存
2、器的头文件 #include//包含_nop_()函数定义的头文件 #defineucharunsignedchar #defineuintunsignedint #definemotorP1 voiddelay(ucharx); sbitIRIN=P3;//红外数据线 ucharIRCOM[7]; main() { IRIN=1;//I/O口初始化 EA=1; EX0=1;//中断0 motor=0xff; while(1){ } } voiddelay(ucharx)//x*0.14MS { uchari; while(x--)
3、{ for(i=0;i } } voidIR_IN()interrupt0using0 { ucharj,k,N=0; EX0=0; delay(15); if(IRIN==1) { EX0=1; return; } //确认IR信号出现 while(!IRIN)//等IR变为高电平,跳过9ms的前导低电平信号。 { delay(1); } for(j=0;j { for(k=0;k { while(IRIN) { delay(1); } while(!IRIN) { delay(1); } while(IRIN)
4、 { delay(1); N++; if(N>=30) { EX0=1; return; } } IRCOM[j]=IRCOM[j]>>1; if(N>=8) { IRCOM[j]=IRCOM[j]
5、0x80; } N=0; } } if(IRCOM[2]!=~IRCOM[3]) { EX0=1; return; } IRCOM[5]=IRCOM[2]&0x0F;//取键码的低四位 IRCOM[6]=IRCOM[2]>>4;//右移4次,高四位变为低四位 if(IRCOM[5]>9) { IRCOM[5]=IRCOM[5]+0
6、x37; } else IRCOM[5]=IRCOM[5]+0x30; if(IRCOM[6]>9) { IRCOM[6]=IRCOM[6]+0x37; } else IRCOM[6]=IRCOM[6]+0x30; if(IRCOM[2]==0x40){//‘+’键 motor=0xf5; }elseif(IRCOM[2]==0x19){//’-’ motor=0xfa; }elseif(IRCOM[2]==0x7){//’ motor=0xf7; }elseif(IRCOM[2]==0x9){//’>>‘ motor=0xfd;
7、 }elseif(IRCOM[2]==0x16){//’0’ motor=0xfe; }elseif(IRCOM[2]==0x0d){//’c’ motor=0xfb; }elseif(IRCOM[2]==0x45){//’off’ motor=0xff; } EX0=1;//退出外部中断 } 总之,这款51单片机红外遥控小车十分简单,非常适合单片机初学者学习仿制。
此文档下载收益归作者所有