目录

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

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

( 三) 具体的操作方法

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;        //波特率9600TL1=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.net/weixin_42619971/article/details/107298406

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

  1. 手机APP开发之MIT Appinventor详细实战教程(十一),地图API的调用与学习,第一部分

    一.什么是API 这周我们来了解一下API的学习和使用. 应用程序接口(API),又称为应用编程接口,是软件系统不同组成部分衔接的约定.良好的接口设计可以降低系统各部分的相互依赖,提高组成单元的内聚性 ...

  2. 手机APP开发之MIT Appinventor详细实战教程(六),蓝牙与单片机进行多数据交互,通信蓝牙控制APP的研发与设计。 以及相关问题的思考。

    目录 一.App的简单介绍 二.蓝牙逻辑连接的实现 三.数据比较逻辑结构的实现 四.数据显示遇到的问题和思考 五.解决方法和尝试 六.问题分析与寻求帮助 七.总结 一.App的简单介绍 首先APP的功 ...

  3. 手机APP开发之MIT Appinventor详细实战教程(九),工具箱的设计和MIT的基础知识讲解

    (一)APP功能介绍 这次我给大家介绍一个关于工具箱的App ,这个APP在逻辑方面较为简单.但是他的设计过程中包含了很多相关的知识,通过这篇文章,可以让大家很具体有直观的了解到这个编程软件的使用方法 ...

  4. 手机APP开发之MIT Appinventor详细实战教程(十),标准登陆界面的逻辑设计和数据库的有效使用

    目录 (一)APP功能介绍 (二)设计流程 (三)知识点 (四)问题 (五)总结 (一)APP功能介绍 今天我们来学习设计一个登录界面的APP,虽然界面有些简陋,但其内在的逻辑设计却并不简单.我们首先 ...

  5. 手机APP开发之MIT Appinventor详细实战教程(十三),云服务器的数据遇到的问题和解决的方法,以及网页客户端的详细使用方法,WIFI通信,数据获取在one net平台的相关应用

    目录 一.案例介绍 二.云服务器规则 三.APP的设计和配置 这期我们介绍APP如何来获取云服务器的数据,本次教程是建立在云服务器已经有数据的情况下,APP方如何进行数据的获取. 一.案例介绍 物联网 ...

  6. Android 系统(55)---Android App开发之ANR异常的原因分析及处理总结

    Android App开发之ANR异常的原因分析及处理总结 Android App开发之ANR异常的原因分析及处理总结 ANR的全称是application not responding,根据它的意思 ...

  7. 我的App开发之路:从零开始到上线赚钱

    我的App开发之路:从零开始到上线赚钱 背景介绍 本人从第一次写代码赚钱开始,到现在已经12年了,使用过多种操作系统.编程语言. 现在作为一名个人开发者,开发一些小应用. 本文就应用软件开发做个简单总 ...

  8. android qt 串口通信,Qt串口通信开发之QSerialPort模块详细使用方法与实例

    Qt串口通信开发之QSerialPort模块详细使用方法与实例 发布时间:2020-10-23 12:19:05 来源:脚本之家 阅读:111 作者:沧海一笑-dj Qt串口通信基础及名词说明 串口通 ...

  9. Hbuilder app开发之app启动图片

    hbuilder app开发之app启动图片: http://jingyan.baidu.com/article/19020a0a163e73529d284200.html  注意:也可以打包的时候生 ...

最新文章

  1. 超级实用且不花哨的js代码大全
  2. 如何处理VMware启动虚拟机时的错误信息Failed to lock the file
  3. SparkException: Python worker failed to connect back
  4. DDR3 IP设计说明
  5. Redis ZSet 的几种使用场景
  6. matlab常用数学函数实验,实验二-MATLAB的数学运算基础.ppt
  7. Verilog 锁存器 触发器 寄存器区别
  8. 大学生mysql实训心得_大学生实训心得与收获
  9. 食品生产设备用什么清洗消毒效果比较好?
  10. 使用Github和PicGO搭建免费图床
  11. 如何用迅捷PDF转换器获取PDF文件中的图片
  12. 怎么用matlab保存音频文件,Matlab用图片和音频藏文件(续)
  13. c语言windows头文件包含,不包含windows.h和window.h内的任何头文件,弹框 “Hello, world!”...
  14. 如何提高程序的可移植性
  15. 铅华洗尽的Windows XP
  16. oracle11g与oracle10g字符集子集与超集的对应关系表
  17. 家乐福计算机管理与控制系统,家乐福的订货部门是整个家乐福物流系统的核心,控制整个企业的物流运转。在家乐福..._考试资料网...
  18. 深富策略:周期股反弹有限 新能源是主基调
  19. 爬虫-requests库(二)get请求参数的使用 —搜狗搜索后爬取搜索结果
  20. Zynq的启动过程及加密

热门文章

  1. Go进阶:Go语言最热门的开源Web开发框架总结
  2. matlab多元变量最优解,模拟退火算法确定多个变量的最优解
  3. 美团王兴---我在努力成为恒星
  4. 使用CStdioFile操作文件和filetxt.cpp报错和filecore.cpp报错
  5. MySQL中DATE_FORMAT()函数的说明和简介
  6. 2D变形:平移、旋转、缩放、倾斜
  7. Linux Snap 命令
  8. 算法思想之递归分治回溯
  9. 那些有趣又实用的开源人工智能项目 Top 10
  10. iOS小技巧11-Xcode中相对路径和绝对路径的使用