找回密码
 立即注册

QQ登录

只需一步,快速开始

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

求51单片机眼蓝牙模块HC05与手机相连控制一盏LED灯的亮灭的程序

[复制链接]
跳转到指定楼层
楼主
ID:212242 发表于 2017-6-18 13:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求51单片机眼蓝牙模块HC05与手机相连控制一盏LED灯的亮灭的程序
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:207585 发表于 2017-6-20 16:45 | 只看该作者
#include <ioCC2540.h>  #include <reg52.h>  #include <intrins.h>   unsigned char tmp;  unsigned int c=0;     sbit led1=P2^0;               //指示灯0  sbit led2=P2^1;               //指示灯1  sbit led7=P2^6;               //指示灯  sbit led3=P2^2;                                 //指示灯3    void init();   //串口初始化   void send(unsigned char a);     //单字节发送函数  void ctrl(); //接收处理函数     void main()  {                 init();                while(1)                {                                     if(RI==1)       //是否有数据到来                   {                                RI = 0;                                tmp = SBUF;  //暂存接收到的数据                               ctrl();                            }                        } }      void init()        //串口初始化   {                 ES=0;      //关中断                 SCON = 0x50;          // REN=1允许串行接受状态,串口工作模式1,10                            //位UART(1位起始位,8位数据位,1位停止位,                                      //无奇偶校验),波特可变                 TMOD = 0x20;         //定时器1工作于方式2,8位自动重载模式,用                            //于产生波特率                 TH1=TL1=0xFD;         //波特率9600 (本次测试采用晶振为11.0592)         PCON &= 0x7f;         //波特率不倍增                 TR1 = 1;              //定时器1开始工作,产生波特率                             //发送标志位置1                TI=0;                 //接收标志位置0                RI=0;                EA=0;                ES=1;                 led1=0;               //初始化设置3个指示灯全亮                led2=0;                led3=0;  }     void send(unsigned char a)      //单字节数据发送   {    //注意:若单片机TXD(P3.1)无上拉能力,必须在P3.1端接上拉电阻。本次测试需要接上拉电阻                  TI=0;                         SBUF=a;                while(TI==0);                     TI=0;                        if(c%2)          //发送指示灯标志,每接收一次,此灯亮灭交替                          led7=1;                       else                           led7=0;                           c++;   }      void ctrl()                  //接收处理函数  {             switch(tmp)            {                case 1:            tmp=0x01;                led1=1;                           //收到字符1,指示灯0灭           led2=0;         led3=0;                send(tmp);         break;                                                            case 2:           tmp=0x02;                        //收到字符2,指示灯1灭                  led2=1;          led1=0;         led3=0;                 send(tmp);         break;         case 3:           tmp=0x03;                        //收到字符3,指示灯0、1亮            led1=0;                  led2=0;                  send(tmp);          break;               case 4:          tmp=0x04;                         //收到字符4,指示灯0、1灭                  led1=1;                  led2=1;                  send(tmp);         break;                case 5:          tmp=0x05;                         //收到字符5,指示灯3亮                  led3=0;                   send(tmp);         break;               default:                        //其他,灯全灭                  led1=1;                  led2=1;                  led3=1;                  send(tmp);             }   }
回复

使用道具 举报

板凳
ID:222772 发表于 2017-8-14 09:37 | 只看该作者
  1. #include <ioCC2540.h>  #include <reg52.h>  #include <intrins.h>   unsigned char tmp;  unsigned int c=0;     sbit led1=P2^0;               //指示灯0  sbit led2=P2^1;               //指示灯1  sbit led7=P2^6;               //指示灯  sbit led3=P2^2;                                 //指示灯3    void init();   //串口初始化   void send(unsigned char a);     //单字节发送函数  void ctrl(); //接收处理函数     void main()  {                 init();                while(1)                {                                     if(RI==1)       //是否有数据到来                   {                                RI = 0;                                tmp = SBUF;  //暂存接收到的数据                               ctrl();                            }                        } }      void init()        //串口初始化   {                 ES=0;      //关中断                 SCON = 0x50;          // REN=1允许串行接受状态,串口工作模式1,10                            //位UART(1位起始位,8位数据位,1位停止位,                                      //无奇偶校验),波特可变                 TMOD = 0x20;         //定时器1工作于方式2,8位自动重载模式,用                            //于产生波特率                 TH1=TL1=0xFD;         //波特率9600 (本次测试采用晶振为11.0592)         PCON &= 0x7f;         //波特率不倍增                 TR1 = 1;              //定时器1开始工作,产生波特率                             //发送标志位置1                TI=0;                 //接收标志位置0                RI=0;                EA=0;                ES=1;                 led1=0;               //初始化设置3个指示灯全亮                led2=0;                led3=0;  }     void send(unsigned char a)      //单字节数据发送   {    //注意:若单片机TXD(P3.1)无上拉能力,必须在P3.1端接上拉电阻。本次测试需要接上拉电阻                  TI=0;                         SBUF=a;                while(TI==0);                     TI=0;                        if(c%2)          //发送指示灯标志,每接收一次,此灯亮灭交替                          led7=1;                       else                           led7=0;                           c++;   }      void ctrl()                  //接收处理函数  {             switch(tmp)            {                case 1:            tmp=0x01;                led1=1;                           //收到字符1,指示灯0灭           led2=0;         led3=0;                send(tmp);         break;                                                            case 2:           tmp=0x02;                        //收到字符2,指示灯1灭                  led2=1;          led1=0;         led3=0;                 send(tmp);         break;         case 3:           tmp=0x03;                        //收到字符3,指示灯0、1亮            led1=0;                  led2=0;                  send(tmp);          break;               case 4:          tmp=0x04;                         //收到字符4,指示灯0、1灭                  led1=1;                  led2=1;                  send(tmp);         break;                case 5:          tmp=0x05;                         //收到字符5,指示灯3亮                  led3=0;                   send(tmp);         break;               default:                        //其他,灯全灭                  led1=1;                  led2=1;                  led3=1;                  send(tmp);             }   }
复制代码
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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