标题: 单片机+HC-05蓝牙模块控制SG90舵机源程序 [打印本页]

作者: 3.3.3.    时间: 2021-12-1 10:42
标题: 单片机+HC-05蓝牙模块控制SG90舵机源程序
HC-05蓝牙模块图片:


引脚连接:STATE-->P2.6
  RXD-->TXD
  TXD-->RXD
  GND-->GND
  VCC-->5V
  EN-->P2.5
SG90舵机图片:


引脚连接:棕色-->GND
红色-->VCC
橙色-->P1.0

刚学习完了舵机,想着做一个远程控制舵机的,选来选取还是用蓝牙模块,因为不耽误联WIFI上网。源码我贴在下面,具体连线方法在最后,包括手机端控制软件。

单片机源码如下:

  1. #include "reg52.h"   

  2. typedef unsigned int u16;         
  3. typedef unsigned char u8;

  4. sbit pwm =P1^0 ;
  5. sbit led1=P2^0;           
  6. sbit led2=P2^1;
  7. sbit beep=P2^4;        
  8. sbit STA=P2^5;

  9. #define USART_MAX_RECV_LEN        40
  10. u8 USART_RX_BUF[USART_MAX_RECV_LEN];
  11. u16 USART_RX_STA=0;

  12. unsigned char jd;
  13. unsigned char count;

  14. void delay(unsigned char i)
  15. {
  16.   unsigned char j,k;
  17.   for(j=i;j>0;j--)
  18.     for(k=125;k>0;k--);
  19. }

  20. void UsartInit()
  21. {
  22.         SCON=0X50;                        
  23.         TMOD=0X21;                        
  24.         PCON=0X80;                        
  25.         TH1=0XFa;                        
  26.         TL1=0XFa;
  27.         TH0  = 0xfe;
  28.         TL0  = 0x33;
  29.         IE   = 0x82;
  30.         TR0=1;
  31.         ES=1;                                                
  32.         EA=1;                                       
  33.         TR1=1;                                          
  34.         
  35. }

  36. void USART_SendData(u8 datbuf[])
  37. {
  38.         u8 i=0;
  39.         for(i=0;i<1;i++)
  40.         {
  41.                 SBUF=datbuf[i];
  42.                 while(!TI);
  43.                 TI=0;
  44.         }
  45. }

  46. void main()
  47. {
  48.         u8 i=0,j=0;
  49.         STA=0;
  50.         led1=led2=1;
  51.         UsartInit();  
  52.         while(1)
  53.         {        
  54.                 if(USART_RX_BUF[0]==0x11)
  55.                 {
  56.                         led1=0;
  57.                         led2=1;
  58.                         jd=2;                 
  59.       delay(200);
  60.                         jd=3;
  61.                 }
  62.                 else if(USART_RX_BUF[0]==0x10)
  63.                 {
  64.                         led1=1;
  65.                         led2=0;
  66.                         jd=4;                 
  67.       delay(200);
  68.                          jd=3;
  69.                 }
  70.                
  71.         }               
  72. }

  73. void Usart() interrupt 4
  74. {
  75.         u8 res;
  76.         res=SBUF;
  77.         USART_RX_BUF[0]=res;
  78.         TH0  = 0xfe;            
  79.         TL0  = 0x33;
  80.         RI = 0;               

  81.     if(count< jd)            
  82.       pwm=1;                  
  83.     else
  84.       pwm=0;                 
  85.     count=(count+1);         
  86.     count=count%40;         
  87. }
复制代码


作者: lanxichang    时间: 2022-5-16 10:06
兄弟,您的手机端控制软件贴在哪了?没看见啊
作者: lanxichang    时间: 2022-5-16 10:07
还有具体连线图呢,参考一下您的杰作,看看原理图分析一下
作者: lanxichang    时间: 2022-5-16 10:09
程序代码中没有体现:STATE-->P2.6    —---请问它是用来干嘛的呢?
作者: 不忘初心♀    时间: 2022-8-1 21:14
lanxichang 发表于 2022-5-16 10:09
程序代码中没有体现:STATE-->P2.6    —---请问它是用来干嘛的呢?

通讯模块使能




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1