单片机教程网

电脑版
提示:原网页已由神马搜索转码, 内容由www.51hei.com提供.
查看:4079|回复:1
打印上一主题下一主题

急求 基于51单片机的远程控制智能小车的系统设计 蓝牙控制

[复制链接]
沙发
ID:261276发表于 2017-12-17 13:39|只看该作者
#include<reg51.h>  #include<math.h>  #define uchar unsigned char  #define uint unsigned int  #define N 40 #define M 40 sbit en1=P1^0; /* L298的Enable A */  sbit s1=P1^1; /* L298的Input 1 */  sbit s2=P1^2; /* L298的Input 2 */  sbit s3=P1^3; /* L298的Input 3 */  sbit s4=P1^4; /* L298的Input 4 */ sbit en2=P1^5; /* L298的Enable B */  uchar t=0; /* 中断计数器 */  uchar m1=0; /* 电机1速度值 */  uchar m2=0; /* 电机2速度值 */  uchar tmp1,tmp2; /* 电机当前速度值 */  uchar KAI=1; /* 电机控制函数 index-电机号(1,2); speed-电机速度(0-100) */   void Back(void) {     s1=0;     s2=1;     s3=1;     s4=0; } void GO(void)  {     s1=1;     s2=0;     s3=1;     s4=0; } void TL(void) {     s1=1;     s2=0;     s3=0;     s4=1; } void TR(void) {     s1=0;     s2=1;     s3=1;     s4=0; }  void Stop(void) {     s1=1;     s2=1;     s3=1;     s4=1;  }  void delay(uint j) /* 简易延时函数 */  {       for(j;j>0;j--);  } void main()  {       uchar i=0,j=0,SHOU,ii=0,jj=0;       uchar flag=0;     SCON=0X50;     TMOD=0x22; /* 设定T0的工作模式为2 ,8位自动重置定时器,没过几个机器周期,计数器加一*/       TH0=0x9B; /* 装入定时器的初值,计数100次溢出 */       TL0=0x9B; /*装入时间常数*/     EA=1; /* 开中断 */       ET0=1; /* 定时器0允许中断 */       TR0=1; /* 启动定时器0 */     PCON=0X00;     TH1=0XFd;     TL1=0XFd;     TR1=1;     m1=50;     m2=50;     while(1)     {           if(RI==1)       {           SHOU=SBUF;         RI=0;         if(SHOU>6) SHOU=0;       }       switch(SHOU)         {             case 0:                 Stop();break;             case 1:                 GO();break;             case 2:                 TR();delay(5000);SHOU=0; break;             case 3:                 TL();delay(5000);SHOU=0; break;             case 4:                 Back();break;             case 5:                 GO();delay(5000);SHOU=0; break;             case 6:                 Back();delay(5000);SHOU=0;         }                   }  }                                                         void timer0() interrupt 1 /* T0中断服务程序 */  {       if(t==0) /* 1个PWM周期完成后才会接受新数值 */       {           tmp1=m1;           tmp2=m2;       }       if(t<tmp1) en1=1; else en1=0; /* 产生电机1的PWM信号 */       if(t<tmp2) en2=1; else en2=0; /* 产生电机2的PWM信号 */       t++;       if(t>=100) t=0; /* 1个PWM信号由100次中断产生 */  }

手机版|小黑屋|51黑电子论坛|51黑电子论坛6群QQ管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网