at89c52串口通信c语言程序,基于AT89C52单片机的智能小车c语言程序.docx

基于AT89C52单片机的智能小车c语言程序

#include#define uchar unsigned char#define uint unsigned intucharpro_left=35,pro_right=35,i,j; //左右占空比标志 sbit left1=P2^1;//定义端口sbit left2=P2^0;sbit right1=P2^3;sbit right2=P2^2;sbitpleft=P2^7;sbitpright=P2^6; sbit en1=P1^0; sbit en2=P1^1; //循迹口 三个红外传感器sbitleft_red=P1^2; //白线位置sbitright_red=P1^4; //白线位置void delay(uint z){uchari;while(z--) {for(i=0;i<121;i++);}}voidinit(){left_red=0; //白线位置right_red=0;TMOD=0X01;TH0=(65536-100)/256;TL0=(65536-100)%256;EA=1;ET0=1;TR0=1;en1=1;en2=1;}void time0(void)interrupt 1//定时中断{i++;j++;if(i<=pro_right) {en1=1;} else en1=0;if(i==40) {en1=~en1;i=0;}if(j<=pro_left) {en2=1;}else en2=0;if(j==40) {en2=~en2;j=0;}TH0=(65536-100)/256;TL0=(65536-100)%256;}void straight() //走直线函数{pro_right=20;pro_left=20;left1=1;left2=0;right1=1;right2=0;}void turn_left() //左转弯函数{pro_right=0;pro_left=20;left1=1;left2=0;right1=1;right2=0; }void turn_right() //右转弯函数{pro_right=40;pro_left=0;left1=1;left2=0;right1=1;right2=0;}void turn_back() //后退(反转)函数{left1=0;left2=1;right1=0;right2=1; pro_right=20;pro_left=20;}void infrared() //循迹和避障{ uchar flag;if((pright==1)||(pleft==1)){if((left_red==1)&(right_red==0)) {flag=1;} elseif((right_red==1)&(left_red==0)) {flag=2;}elseif((left_red==0)&(right_red==0)) {flag=3;}else {flag=0;}}else if((pright==0)&(pleft==1)) {flag=4;}else if((pright==1)&(pleft==0)) {flag=5;}else if((pright==0)&(pleft==0)) {flag=6;}else {flag=0;}switch (flag) {case 0:straight();break;case 1:turn_right();delay(1000);break;case 2:turn_left();delay(1000); break;case 3:straight();delay(1000);break;case 4:turn_back();delay(1000);turn_left();delay(1000);break;case 5:turn_back();delay(1000);turn_right();delay(1000);break;case 6:turn_back();delay(1000);turn_left();delay(1000);break; default:break; }}main (){init();delay(1);while(1) {infrared(); }}

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值