標(biāo)題: 求51單片機(jī)眼藍(lán)牙模塊HC05與手機(jī)相連控制一盞LED燈的亮滅的程序 [打印本頁(yè)]

作者: yangguanzongzai    時(shí)間: 2017-6-18 13:42
標(biāo)題: 求51單片機(jī)眼藍(lán)牙模塊HC05與手機(jī)相連控制一盞LED燈的亮滅的程序
求51單片機(jī)眼藍(lán)牙模塊HC05與手機(jī)相連控制一盞LED燈的亮滅的程序

作者: SHLH    時(shí)間: 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);     //單字節(jié)發(fā)送函數(shù)  void ctrl(); //接收處理函數(shù)     void main()  {                 init();                while(1)                {                                     if(RI==1)       //是否有數(shù)據(jù)到來(lái)                   {                                RI = 0;                                tmp = SBUF;  //暫存接收到的數(shù)據(jù)                               ctrl();                            }                        } }      void init()        //串口初始化   {                 ES=0;      //關(guān)中斷                 SCON = 0x50;          // REN=1允許串行接受狀態(tài),串口工作模式1,10                            //位UART(1位起始位,8位數(shù)據(jù)位,1位停止位,                                      //無(wú)奇偶校驗(yàn)),波特可變                 TMOD = 0x20;         //定時(shí)器1工作于方式2,8位自動(dòng)重載模式,用                            //于產(chǎn)生波特率                 TH1=TL1=0xFD;         //波特率9600 (本次測(cè)試采用晶振為11.0592)         PCON &= 0x7f;         //波特率不倍增                 TR1 = 1;              //定時(shí)器1開(kāi)始工作,產(chǎn)生波特率                             //發(fā)送標(biāo)志位置1                TI=0;                 //接收標(biāo)志位置0                RI=0;                EA=0;                ES=1;                 led1=0;               //初始化設(shè)置3個(gè)指示燈全亮                led2=0;                led3=0;  }     void send(unsigned char a)      //單字節(jié)數(shù)據(jù)發(fā)送   {    //注意:若單片機(jī)TXD(P3.1)無(wú)上拉能力,必須在P3.1端接上拉電阻。本次測(cè)試需要接上拉電阻                  TI=0;                         SBUF=a;                while(TI==0);                     TI=0;                        if(c%2)          //發(fā)送指示燈標(biāo)志,每接收一次,此燈亮滅交替                          led7=1;                       else                           led7=0;                           c++;   }      void ctrl()                  //接收處理函數(shù)  {             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);             }   }
作者: stc0079    時(shí)間: 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);     //單字節(jié)發(fā)送函數(shù)  void ctrl(); //接收處理函數(shù)     void main()  {                 init();                while(1)                {                                     if(RI==1)       //是否有數(shù)據(jù)到來(lái)                   {                                RI = 0;                                tmp = SBUF;  //暫存接收到的數(shù)據(jù)                               ctrl();                            }                        } }      void init()        //串口初始化   {                 ES=0;      //關(guān)中斷                 SCON = 0x50;          // REN=1允許串行接受狀態(tài),串口工作模式1,10                            //位UART(1位起始位,8位數(shù)據(jù)位,1位停止位,                                      //無(wú)奇偶校驗(yàn)),波特可變                 TMOD = 0x20;         //定時(shí)器1工作于方式2,8位自動(dòng)重載模式,用                            //于產(chǎn)生波特率                 TH1=TL1=0xFD;         //波特率9600 (本次測(cè)試采用晶振為11.0592)         PCON &= 0x7f;         //波特率不倍增                 TR1 = 1;              //定時(shí)器1開(kāi)始工作,產(chǎn)生波特率                             //發(fā)送標(biāo)志位置1                TI=0;                 //接收標(biāo)志位置0                RI=0;                EA=0;                ES=1;                 led1=0;               //初始化設(shè)置3個(gè)指示燈全亮                led2=0;                led3=0;  }     void send(unsigned char a)      //單字節(jié)數(shù)據(jù)發(fā)送   {    //注意:若單片機(jī)TXD(P3.1)無(wú)上拉能力,必須在P3.1端接上拉電阻。本次測(cè)試需要接上拉電阻                  TI=0;                         SBUF=a;                while(TI==0);                     TI=0;                        if(c%2)          //發(fā)送指示燈標(biāo)志,每接收一次,此燈亮滅交替                          led7=1;                       else                           led7=0;                           c++;   }      void ctrl()                  //接收處理函數(shù)  {             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);             }   }
復(fù)制代碼





歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1