手机APP开发之MIT Appinventor详细实战教程(一),利用通过蓝牙控制单片机,以及实现单片机与android设备之间的串口通信
目录
(一)前期软件准备和硬件准备
( 二 ) 实现的思路和操作原理
( 三) 具体的操作方法
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设备之间的串口通信相关推荐
- 手机APP开发之MIT Appinventor详细实战教程(十一),地图API的调用与学习,第一部分
一.什么是API 这周我们来了解一下API的学习和使用. 应用程序接口(API),又称为应用编程接口,是软件系统不同组成部分衔接的约定.良好的接口设计可以降低系统各部分的相互依赖,提高组成单元的内聚性 ...
- 手机APP开发之MIT Appinventor详细实战教程(六),蓝牙与单片机进行多数据交互,通信蓝牙控制APP的研发与设计。 以及相关问题的思考。
目录 一.App的简单介绍 二.蓝牙逻辑连接的实现 三.数据比较逻辑结构的实现 四.数据显示遇到的问题和思考 五.解决方法和尝试 六.问题分析与寻求帮助 七.总结 一.App的简单介绍 首先APP的功 ...
- 手机APP开发之MIT Appinventor详细实战教程(九),工具箱的设计和MIT的基础知识讲解
(一)APP功能介绍 这次我给大家介绍一个关于工具箱的App ,这个APP在逻辑方面较为简单.但是他的设计过程中包含了很多相关的知识,通过这篇文章,可以让大家很具体有直观的了解到这个编程软件的使用方法 ...
- 手机APP开发之MIT Appinventor详细实战教程(十),标准登陆界面的逻辑设计和数据库的有效使用
目录 (一)APP功能介绍 (二)设计流程 (三)知识点 (四)问题 (五)总结 (一)APP功能介绍 今天我们来学习设计一个登录界面的APP,虽然界面有些简陋,但其内在的逻辑设计却并不简单.我们首先 ...
- 手机APP开发之MIT Appinventor详细实战教程(十三),云服务器的数据遇到的问题和解决的方法,以及网页客户端的详细使用方法,WIFI通信,数据获取在one net平台的相关应用
目录 一.案例介绍 二.云服务器规则 三.APP的设计和配置 这期我们介绍APP如何来获取云服务器的数据,本次教程是建立在云服务器已经有数据的情况下,APP方如何进行数据的获取. 一.案例介绍 物联网 ...
- Android 系统(55)---Android App开发之ANR异常的原因分析及处理总结
Android App开发之ANR异常的原因分析及处理总结 Android App开发之ANR异常的原因分析及处理总结 ANR的全称是application not responding,根据它的意思 ...
- 我的App开发之路:从零开始到上线赚钱
我的App开发之路:从零开始到上线赚钱 背景介绍 本人从第一次写代码赚钱开始,到现在已经12年了,使用过多种操作系统.编程语言. 现在作为一名个人开发者,开发一些小应用. 本文就应用软件开发做个简单总 ...
- android qt 串口通信,Qt串口通信开发之QSerialPort模块详细使用方法与实例
Qt串口通信开发之QSerialPort模块详细使用方法与实例 发布时间:2020-10-23 12:19:05 来源:脚本之家 阅读:111 作者:沧海一笑-dj Qt串口通信基础及名词说明 串口通 ...
- Hbuilder app开发之app启动图片
hbuilder app开发之app启动图片: http://jingyan.baidu.com/article/19020a0a163e73529d284200.html 注意:也可以打包的时候生 ...
最新文章
- 超级实用且不花哨的js代码大全
- 如何处理VMware启动虚拟机时的错误信息Failed to lock the file
- SparkException: Python worker failed to connect back
- DDR3 IP设计说明
- Redis ZSet 的几种使用场景
- matlab常用数学函数实验,实验二-MATLAB的数学运算基础.ppt
- Verilog 锁存器 触发器 寄存器区别
- 大学生mysql实训心得_大学生实训心得与收获
- 食品生产设备用什么清洗消毒效果比较好?
- 使用Github和PicGO搭建免费图床
- 如何用迅捷PDF转换器获取PDF文件中的图片
- 怎么用matlab保存音频文件,Matlab用图片和音频藏文件(续)
- c语言windows头文件包含,不包含windows.h和window.h内的任何头文件,弹框 “Hello, world!”...
- 如何提高程序的可移植性
- 铅华洗尽的Windows XP
- oracle11g与oracle10g字符集子集与超集的对应关系表
- 家乐福计算机管理与控制系统,家乐福的订货部门是整个家乐福物流系统的核心,控制整个企业的物流运转。在家乐福..._考试资料网...
- 深富策略:周期股反弹有限 新能源是主基调
- 爬虫-requests库(二)get请求参数的使用 —搜狗搜索后爬取搜索结果
- Zynq的启动过程及加密