找回密码
 立即注册

QQ登录

只需一步,快速开始

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

用光碟做的蓝牙控制小车下位机程序里面有红外避障加舵机

[复制链接]
跳转到指定楼层
楼主
ID:79544 发表于 2016-1-8 15:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. /************************************************
  2. //蓝牙控制小车 加舵机 加避障 可以调速 正确的程序
  3.         单片机: STC12C5608AD
  4. //        晶振  :           11.0592M晶振
  5.         作者  :苏义江
  6.         时间  :2016-1-8
  7. ***************************************************/
  8. #include <reg52.h>
  9. #include<intrins.h>
  10. #define uint unsigned int
  11. #define uchar unsigned char
  12. //sfr  T2MOD=0xc9;
  13. sbit in1  =P1^0; //电机1端口
  14. sbit in2  =P1^1;
  15. sbit ina  =P1^2;  //电机PWM-A

  16. sbit in3  =P1^3;//电机2端口
  17. sbit in4  =P1^4;
  18. sbit inb  =P1^5;//电机PWM-B

  19. sbit bz_l =P2^0;  //避障左
  20. sbit bz_r =P2^1;  //避障右

  21. sbit moto_pwm =P3^4;//PWM输出脚控制舵机
  22. sbit yan      =P3^5;//头灯光

  23. sbit landeng =P3^2;//蓝前大灯
  24. sbit hondeng =P3^3;//红前大灯
  25. sbit yinyue  =P3^7;//音乐端口

  26. sbit wela    =P1^6;//位码
  27. sbit dula    =P1^7;//段码
  28. uchar code table[] ={ 0xC0,0xF9,0xA4,0xB0,0x99,0x92,
  29.                                                 0x82,0xF8,0x80,0x90,0xBF,0xff};
  30. uchar code table1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
  31. //uchar disbuff[4] ={ 0,0,0,0,};//数码管全显示 0
  32. uint tt = 0;//变量定义
  33. uint num=0;//变量定义

  34. uchar pwm_lefr=0;//定义 定时器自加1变量
  35. //uchar pwm_lefr1=0;//定义 定时器自加1变量
  36. uchar duojiguizhong=14;//舵机归中1.5ms
  37. uchar duojiguizhong1=14;//舵机归中1.5ms
  38. uchar tmp,w,sudu;

  39. void init() ;
  40. void delay1(uint z)//延时函数
  41. {
  42.         uint x,y;
  43.         for(x=z;x>0;x--)
  44.                 for(y=120;y>1;y--);
  45. }
  46. void delay(uint z)
  47. {
  48.         uint x,y;
  49.         for(x=0;x<z;x++)
  50.         for(y=0;y<1000;y++);
  51.         
  52. }

  53. /*void xianshi(uchar num)//显示
  54. {  
  55.   uchar gw,sw,bw,qianw;
  56.         qianw=num/1000%100;
  57.    bw=num%1000/100;   
  58.    sw=num%100/10;   
  59.    gw=num%10;
  60.             
  61.    P2=0xfe;   
  62.    wela=1;     
  63.    _nop_();_nop_();   
  64.    wela=0;     
  65.    P2=table[qianw];
  66.     dula=1;     
  67.    _nop_();_nop_();   
  68.    dula=0;   
  69.    delay1(2);

  70.    P2=0xfd;
  71.    wela=1;     
  72.    _nop_();
  73.    _nop_();   
  74.    wela=0;     
  75.    P2=table[bw];
  76.     dula=1;     
  77.    _nop_();
  78.    _nop_();   
  79.    dula=0;   
  80.    delay1(2);

  81.         P2=0xfb;   
  82.    wela=1;     
  83.    _nop_();_nop_();   
  84.      wela=0;     
  85.    P2=table[sw];   
  86.    dula=1;     
  87.    _nop_();_nop_();   
  88.    dula=0;
  89.    delay1(2);
  90.                 P2=0xf7;   
  91.    wela=1;     
  92.    _nop_();_nop_();   
  93.      wela=0;     
  94.    P2=table[gw];   
  95.    dula=1;     
  96.    _nop_();_nop_();   
  97.    dula=0;
  98.    delay1(2); //显示个 十 百 千

  99. }  */

  100. void pwmmaic()//产生PWM
  101. {
  102.         if(pwm_lefr<=duojiguizhong)        
  103.                 moto_pwm=1;
  104.                 else
  105.                 moto_pwm=0;
  106.                 if(pwm_lefr>=200)
  107.                 pwm_lefr=0;               
  108. }

  109. void duoji_kz()//舵机控制
  110. {
  111.         yan=0;
  112.         duojiguizhong=9;
  113.         
  114.         delay(800);
  115.         yan=0;
  116.         duojiguizhong=16;
  117.         
  118.         delay(800);
  119.         yan=0;
  120.         duojiguizhong=24;
  121.         
  122.         delay(800);
  123.         yan=0;
  124.         duojiguizhong=16;
  125.         
  126.         delay(800);
  127.         yan=0;
  128.         delay(1500);
  129.         yan=1;        
  130. }
  131. void lankong()        //蓝色LED
  132. {
  133.         landeng=0;
  134.         delay1(80);
  135.         landeng=1;
  136.         delay1(80);
  137. }
  138. void hongkong()        //红色LED
  139. {
  140.         hondeng=0;
  141.         delay1(80);
  142.         hondeng=1;
  143.         delay1(80);
  144. }
  145. void qianjin()
  146. {
  147.         in1=1;in2=0;in3=0;in4=1;
  148.         yan=0;landeng=0;hondeng=0;yinyue=0;        
  149. }   
  150. void houtui()
  151. {
  152.         in1=0;in2=1;in3=1;in4=0;
  153.         yan=1;hondeng=0;yinyue=0;        
  154. }  
  155. void zuozhuan()
  156. {
  157.         in1=1;in2=0;in3=1;in4=0;
  158.         lankong();yinyue=1;
  159. }
  160. void youzhuan()
  161. {
  162.         in1=0;in2=1;in3=0;in4=1;
  163.         hongkong();yinyue=1;
  164. }  
  165. void tingzhi()
  166. {
  167.         in1=0;in2=0;in3=0 ;in4=0;
  168.         hongkong();lankong();yinyue=1;
  169. }
  170. void bizhang()        //避障
  171. {
  172.     if(bz_l==1&&bz_r==1)
  173.          qianjin();
  174.         if(bz_l==0&&bz_r==1)
  175.          zuozhuan();
  176.          if(bz_l==1&&bz_r==0)
  177.          youzhuan();
  178.          if(bz_l==0&&bz_r==0)
  179.          {        
  180.                  tingzhi();
  181.                 delay(100);
  182.                 houtui();
  183.                 delay(500);
  184.                 zuozhuan();
  185.                 delay(200);
  186.                 qianjin();
  187.          }
  188. }
  189. void init()   //串口初始化
  190. {                                                                       //关中断
  191.     SCON =0x50; //串口模式1,允许接收                  
  192.     TMOD =0x20;//定时器1为模式2 8-bit自动装载方式用于产生波特率
  193.     PCON=0x00;//波特率不倍增
  194.         TH1=0xfd;//波特率9600  11.0592M
  195.         TL1=0xfd;
  196.         TH0=0xfd;
  197.         TH0=0xae;
  198.         EA=1;
  199.         ES=1;
  200.         ET0=1; //        T0中断允许
  201.         TR0=1; //        启动T0定时器
  202.         TR1=1; //        启动T1定时器
  203.         duojiguizhong=16;
  204.         duojiguizhong1=16;
  205. }
  206. void ctrl() //接收处理函数
  207. {
  208.    switch(tmp)
  209.    {         
  210.             case 1:qianjin(); break;                                                     
  211.      case 2: houtui();break;                                                                             
  212.      case 3:zuozhuan(); break;
  213.      case 4:youzhuan();break;  
  214.          case 0:tingzhi(); break;
  215.          case 7:duoji_kz();break;        //舵机         C
  216.          case 8: bizhang(); break;        //避障        D
  217.          
  218.    /*case 1:duoji_kz();qianjin(); break;                                                     
  219.      case 2:duoji_kz(); houtui();break;                                                                             
  220.      case 3:zuozhuan(); break;
  221.      case 4:youzhuan();break;  
  222.          case 0:tingzhi(); break;  */
  223.    }
  224. }
  225. void tiaosu () //调速
  226. {
  227.         switch(sudu)
  228.         {
  229.                 case 5: w=40;        break;         //A
  230.                 case 6: w=75; break;         //B               
  231.         }
  232. }
  233. void main()
  234. {
  235.    init();         
  236.    while(1)
  237.    {
  238. //        xianshi( num ); //显示函数  
  239.         ctrl();
  240.         tiaosu();  
  241.    }
  242. }
  243. void time0() interrupt 1
  244. {  
  245.     TH0=0xfd;
  246.     TL0=0xae;
  247.          tt++;
  248.         pwm_lefr++;
  249. //        pwm_lefr1++;
  250.         pwmmaic();
  251.         if(tt<w)
  252.         {
  253.                 ina=1;
  254.                 inb=1;
  255.         }
  256.         else
  257.         {
  258.                 ina=0;
  259.                 inb=0;
  260.         }
  261.         if(tt==100)
  262.         {tt=0;
  263.         
  264.         num++;
  265.         if(num==9999)num=0;        
  266.         }
  267. }
  268. void ckzd() interrupt 4
  269. {
  270.         ES=0;
  271.         RI=0;
  272.         tmp=SBUF;
  273.         sudu=SBUF;
  274.         ES=1;
  275. }
复制代码


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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