找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3270|回复: 0
打印 上一主题 下一主题
收起左侧

蓝牙控制小车单片机源代码

[复制链接]
跳转到指定楼层
楼主
ID:210293 发表于 2017-7-30 09:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
蓝牙控制小车,通过手机上的蓝牙助手,再搭建一辆车模,配上蓝牙即可使用!共享资源

单片机源程序如下:
  1. //T0产生双路PWM信号,L298N为直流电机调速,接L298N时相应的管脚上最好接上10K的上拉电阻。
  2. /* 晶振采用12M,产生的PWM的频率约为100Hz */
  3. #include<reg51.h>
  4. #include<math.h>
  5. #define uchar unsigned char
  6. #define uint unsigned int
  7. #define N 40
  8. #define M 40
  9. sbit en1=P1^0; /* L298的Enable A */
  10. sbit s1=P1^1; /* L298的Input 1 */
  11. sbit s2=P1^2; /* L298的Input 2 */
  12. sbit s3=P1^3; /* L298的Input 3 */
  13. sbit s4=P1^4; /* L298的Input 4 */
  14. sbit en2=P1^5; /* L298的Enable B */
  15. uchar t=0; /* 中断计数器 */
  16. uchar m1=0; /* 电机1速度值 */
  17. uchar m2=0; /* 电机2速度值 */
  18. uchar tmp1,tmp2; /* 电机当前速度值 */
  19. uchar KAI=1;
  20. /* 电机控制函数 index-电机号(1,2); speed-电机速度(0-100) */

  21. void Back(void)
  22. {
  23.         s1=0;
  24.         s2=1;
  25.         s3=0;
  26.         s4=1;
  27. }
  28. void GO(void)

  29. {
  30.         s1=1;
  31.         s2=0;
  32.         s3=1;
  33.         s4=0;
  34. }
  35. void TL(void)
  36. {
  37.         s1=1;
  38.         s2=0;
  39.         s3=0;
  40.         s4=1;
  41. }
  42. void TR(void)
  43. {
  44.         s1=0;
  45.         s2=1;
  46.         s3=1;
  47.         s4=0;
  48. }

  49. void Stop(void)
  50. {
  51.         s1=1;
  52.         s2=1;
  53.         s3=1;
  54.         s4=1;

  55. }

  56. void delay(uint j) /* 简易延时函数 */
  57. {
  58.         for(j;j>0;j--);
  59. }
  60. void main()
  61. {
  62.         uchar i=0,j=0,SHOU,ii=0,jj=0;
  63.         uchar flag=0;
  64.         SCON=0X50;
  65.         TMOD=0x22; /* 设定T0的工作模式为2 ,8位自动重置定时器,没过几个机器周期,计数器加一*/
  66.         TH0=0x9B; /* 装入定时器的初值,计数100次溢出 */
  67.         TL0=0x9B; /*装入时间常数*/
  68.         EA=1; /* 开中断 */
  69.         ET0=1; /* 定时器0允许中断 */
  70.         TR0=1; /* 启动定时器0 */
  71.         PCON=0X00;
  72.         TH1=0XFd;
  73.         TL1=0XFd;
  74.         TR1=1;
  75.         m1=50;
  76.         m2=50;
  77.         while(1)
  78.         {        
  79.         if(RI==1)
  80.          {
  81.                  SHOU=SBUF;
  82.                 RI=0;
  83.                 if(SHOU>6) SHOU=0;
  84.          }

  85.         switch(SHOU)
  86.                 {
  87.                         case 0:
  88.                             Stop();break;
  89.                         case 1:
  90.                                 GO();break;
  91.                         case 2:
  92.                                 TR();delay(5000);SHOU=0; break;
  93.                         case 3:
  94.                                 TL();delay(5000);SHOU=0; break;
  95.                         case 4:
  96.                                 Back();break;
  97.                         case 5:
  98.                                 GO();delay(5000);SHOU=0; break;
  99.                         case 6:
  100.                                 Back();delay(5000);SHOU=0;
  101.                 }
  102.                         
  103.         }
  104. }

  105. void timer0() interrupt 1 /* T0中断服务程序 */
  106. {
  107.         if(t==0) /* 1个PWM周期完成后才会接受新数值 */
  108.         {
  109.                 tmp1=m1;
  110.                 tmp2=m2;
  111.         }
  112.         if(t<tmp1) en1=1; else en1=0; /* 产生电机1的PWM信号 */
  113.         if(t<tmp2) en2=1; else en2=0; /* 产生电机2的PWM信号 */
  114.         t++;
  115.         if(t>=100) t=0; /* 1个PWM信号由100次中断产生 */
  116. }

  117. ……………………

  118. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
蓝牙小车.zip (26.23 KB, 下载次数: 14)



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

Powered by 单片机教程网

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