目录

(一)前期软件准备和硬件准备

( 二 ) 实现的思路和操作原理

( 三) 具体的操作方法

MIT Appinventor 是编程领域较为受欢迎且适用的编程软件 ,因其操作流程和使用方法简单,一直深受广大编程人员的喜爱,所以今天为大家介绍一个实例——手机APP开发之MIT Appinventor详细实战教程(一),利用通过蓝牙控制单片机,以及实现单片机与android设备之间的串口通信。 
  

(一)前期软件准备和硬件准备

 软件准备主要是keil uvision,stc-isp-15xx-v6.85
 硬件准备主要是有一个蓝牙模块 、一个便宜的单片机 、一个蓝牙可以正常使用的手机和编程电脑 ;  蓝牙模块需要和单片机连接,具体的操作方法:VCC接VCC,GND接GND,TXD接P30,RXD接P31
  


( 二 ) 实现的思路和操作原理

 我们知道手机和单片机是两个互不相连的事物 ,所以要实现他们之间的通信,我们需要一个信使来充当中间媒介的作用 。而那个信使就是上面提到的蓝牙模块 。 这个蓝牙模块一方面可以接收到手机APP发送的数据并将它传达给单片机 ,另一方面单片机也可以将反馈数据通过蓝牙模块进而发送到手机App上 。这就实现了单片机和手机之间的交互通信 。 

( 三) 具体的操作方法


 首先我们需要  MIT Appinventor 制作一个简单的组件页面 ,具体情况如下图所示  :
 这个布局还有待优化 ,实现最基本的功能也足够了 


 接下来是逻辑层面的设计 
 [ 这个可以用来实现手机APP对蓝牙的选择连接 ]
 列表选择框(选择蓝牙)的启用为真,按钮(断开)的启用为假。选择蓝牙时将蓝牙客户端的地址及名称显示出来供用户选择。、
 
 蓝牙所发送的数据相关设置也必不可少 ,本文让蓝牙发送的数据为1或0 ,你来传递给单片机,进而控制LED灯的亮灭。
 ![ 较为简单的逻辑设计 ,这只是一个简单的框架,主要设计的是通过按钮的开关来控制灯的亮灭 ]
 然后是通过发送零或一来使单片机Led灯发亮或暗 的控制的控制逻辑
 [ 在文本框输入1或0,点击确认发送即可完成相应功能 ]
  上面的一系列操作完成后,我们已经可以实现手机单方面对单片机进行控制。 在这里我们可以把手机形象化的比喻为命令的发出者 ,发出者通过蓝牙模块将数据传达给单片机 ,单片机又根据内部的程序,从而实现对LED灯的控制 ( 单片机的相关配合程序下文会详细给出 )下面我们来实现单片机对手机反馈数据 这一流程的操作 ,遵循单片机反向反馈数据的原理 ,和相关知识。我们可以有下面的尝试 
[ 通过显示框找到蓝牙接收到的数据显示出来 ]

 


  **另大一部分便是单片机的配合程序了** 

 

#include <reg52.h> //51头文件

sbit LED1 = P2^0; //位定义 LED1硬件接口
void delay(unsigned int z)//毫秒级延时
{
    unsigned int x,y;
    for(x = z; x > 0; x--)
        for(y = 114; y > 0 ; y--);
}    


 /******************************************************************/
/* 串口中断程序*/
/******************************************************************/
void UART_SER () interrupt 4
{
    unsigned int n;     //定义临时变量

    if(RI)         //判断是接收中断产生
    {
        RI=0;     //标志位清零
        n=SBUF; //读入缓冲区的值

        switch(n)
        {
            case 1:    LED1 = 0;    break;    //亮灯
            case 0:    LED1 = 1;    break;    //灭灯
        }
    }

}

//蓝牙初始化
void boothint(void)
{
   
       SCON = 0x50;     // SCON: 模式1, 8-bit UART, 使能接收 
    TMOD |= 0x20;
    TH1=0xfd;         //波特率9600 初值
    TL1=0xfd;
    TR1= 1;
    EA = 1;        //开总中断
    ES= 1;         //打开串口中断


}
//串口初始化
void UartConfigurationInit()
{
    TMOD=0x20;  //设置定时器1工作方式为方式2   
    TH1=0xfd;        //波特率9600
    TL1=0xfd;  
    TR1=1;      //启动定时器1     
    SM0=0;SM1=1;      //串口方式1         
    REN=1;      //允许接收   
    PCON=0x00;  //关倍频   
    ES=1;       //开串口中断   
    EA=1;       //开总中断
}
void main()
{
    boothint();
    while(1)
    {
     
        SBUF=9;   //发送单个字符
        while(!TI);TI=0; //发送完成标志
    }
}

到目前为止,软件设计和单片机内部程序的设计的所有细节已经全部讲到 ,然后就是软件下载或者是调试的过程了 ,在整个界面的上面有一个连接(Connect)选项,推荐使用AI侣,这要求手机下载一个Appinventor的app,然后让手机和电脑在同一个局域网下,通过扫描二维码就可以在线调试看效果了,是不是有点小激动呀!  

特别注意:测试蓝牙通讯的单片机不要用51单片机!!!会出现乱码,具体原因可以看我的这篇博客,帮你完美实现蓝牙的双向通信功能。

https://blog.csdn/weixin_42619971/article/details/107298406

           

更多推荐

手机APP开发之MIT Appinventor详细实战教程(一),利用通过蓝牙控制单片机,以及实现单片机与android设备之间的串口通信