红外检测
单片机源程序如下:
- //注意程序只做参考之用,要达到最理想的效果,还需要同学们细心调试。
- //控制板跳线帽接法
- //J6-1 P1.0至P1.7 IO口处跳线帽全部接上
- //如果程序中有PWM功能,需要把J6-2 下排焊针用杜邦线接到 P0.0 P0.1 P0.2 P0.3 IO口上--详细看课件说明
- #include<AT89X52.H> //包含51单片机头文件,内部有各种寄存器定义
- #include<HJ-4WD_PWM.H> //包含HJ-4WD蓝牙智能小车驱动IO口定义等函数
- #include<XIANSHI.H>
- #define uchar unsigned char
- unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
- unsigned char xianshi[4]={0xff,0xff,0xff,0xff};
- unsigned char a=0;
- unsigned int cnt=0;
- unsigned long sec=0;
-
-
-
- //主函数
- void main(void)
- {
-
- unsigned char i;
- P1=0X00; //小车停止
- TMOD=11;
-
- TH1=0XFC;
- TL1=0X67;
- TH0=0XFc; //1Ms定时
- TL0=0X18;
- TR0=1;
- ET0=1;
- TR1=1;
- ET1=1;
- EA = 1;
-
- while(1) //无限循环
- {
-
- //有信号为0 没有信号为1
-
-
-
-
- if(TF1==1)
- {
- TF1=0;
- TH1=0XFC;
- TL1=0X67;
- cnt++;
- if(cnt>=8000)
- {
- cnt=0;
- sec++;
- xianshi[0]=table[sec%10];
- xianshi[1]=table[sec/10%10];
- xianshi[2]=table[sec/100%10];
- xianshi[3]=table[sec/1000%10];
-
- }
- if(i==0){P2=0xf7;i++;P0=xianshi[0];}
- else if(i==1){P2=0xfb;i++;P0=xianshi[1];}
- else if(i==2){P2=0xfd;i++;P0=xianshi[2];}
- else if(i==3){P2=0xfe;i=0;P0=xianshi[3];}
- }
- if(Left_X_led==0&&Right_X_led==0) //白线
- run();
- else
- {
- if(Left_X_led==0&&Right_X_led==1) //左边检测到红外
- {
-
- Left_moto_go; //左边两个电机正转
- Right_moto_Stop;
-
- }
-
- if(Right_X_led==0&&Left_X_led==1) //右边检测到红外
- {
-
- Right_moto_go; //右边两个电机正转
- Left_moto_Stop;
- }
- }
- }
-
-
-
-
- }
复制代码
所有资料51hei提供下载:
小车.zip
(31.99 KB, 下载次数: 8)
|