找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3817|回复: 1
收起左侧

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

[复制链接]
ID:213258 发表于 2017-6-21 11:30 | 显示全部楼层 |阅读模式
蓝牙控制 单片机为AT89C52 直流电机
回复

使用道具 举报

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 单片机教程网

快速回复 返回顶部 返回列表