当前位置:   article > 正文

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

app inventor

目录

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

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

( 三) 具体的操作方法

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灯的控制 ( 单片机的相关配合程序下文会详细给出 )下面我们来实现单片机对手机反馈数据 这一流程的操作 ,遵循单片机反向反馈数据的原理 ,和相关知识。我们可以有下面的尝试 
[ 通过显示框找到蓝牙接收到的数据显示出来 ]

 


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

 

  1. #include <reg52.h> //51头文件
  2. sbit LED1 = P2^0; //位定义 LED1硬件接口
  3. void delay(unsigned int z)//毫秒级延时
  4. {
  5.     unsigned int x,y;
  6.     for(x = z; x > 0; x--)
  7.         for(y = 114; y > 0 ; y--);
  8. }    
  9.  /******************************************************************/
  10. /* 串口中断程序*/
  11. /******************************************************************/
  12. void UART_SER () interrupt 4
  13. {
  14.     unsigned int n;     //定义临时变量
  15.     if(RI)         //判断是接收中断产生
  16.     {
  17.         RI=0;     //标志位清零
  18.         n=SBUF; //读入缓冲区的值
  19.         switch(n)
  20.         {
  21.             case 1:    LED1 = 0;    break;    //亮灯
  22.             case 0:    LED1 = 1;    break;    //灭灯
  23.         }
  24.     }
  25. }
  26. //蓝牙初始化
  27. void boothint(void)
  28. {
  29.    
  30.        SCON = 0x50;     // SCON: 模式1, 8-bit UART, 使能接收 
  31.     TMOD |= 0x20;
  32.     TH1=0xfd;         //波特率9600 初值
  33.     TL1=0xfd;
  34.     TR1= 1;
  35.     EA = 1;        //开总中断
  36.     ES= 1;         //打开串口中断
  37. }
  38. //串口初始化
  39. void UartConfigurationInit()
  40. {
  41.     TMOD=0x20;  //设置定时器1工作方式为方式2   
  42.     TH1=0xfd;        //波特率9600
  43.     TL1=0xfd;  
  44.     TR1=1;      //启动定时器1     
  45.     SM0=0;SM1=1;      //串口方式1         
  46.     REN=1;      //允许接收   
  47.     PCON=0x00;  //关倍频   
  48.     ES=1;       //开串口中断   
  49.     EA=1;       //开总中断
  50. }
  51. void main()
  52. {
  53.     boothint();
  54.     while(1)
  55.     {
  56.      
  57.         SBUF=9;   //发送单个字符
  58.         while(!TI);TI=0; //发送完成标志
  59.     }
  60. }

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

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

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

 
 
 
 
 
声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号