找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2282|回复: 4
收起左侧

单片机+HC-05蓝牙模块控制SG90舵机源程序

[复制链接]
ID:687726 发表于 2021-12-1 10:42 | 显示全部楼层 |阅读模式
HC-05蓝牙模块图片:
51hei.png

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

引脚连接:棕色-->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. }
复制代码

评分

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

查看全部评分

回复

使用道具 举报

ID:95059 发表于 2022-5-16 10:06 | 显示全部楼层
兄弟,您的手机端控制软件贴在哪了?没看见啊
回复

使用道具 举报

ID:95059 发表于 2022-5-16 10:07 | 显示全部楼层
还有具体连线图呢,参考一下您的杰作,看看原理图分析一下
回复

使用道具 举报

ID:95059 发表于 2022-5-16 10:09 | 显示全部楼层
程序代码中没有体现:STATE-->P2.6    —---请问它是用来干嘛的呢?
回复

使用道具 举报

ID:917430 发表于 2022-8-1 21:14 | 显示全部楼层
lanxichang 发表于 2022-5-16 10:09
程序代码中没有体现:STATE-->P2.6    —---请问它是用来干嘛的呢?

通讯模块使能
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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