标题: app实现蓝牙控制单片机开关例程(E4A+keil程序) [打印本页]

作者: LightningEVE    时间: 2021-4-7 13:19
标题: app实现蓝牙控制单片机开关例程(E4A+keil程序)
最近在为一个公司做实物,涉及到关于app做上位机控制单片机的要求,于是想起了在校期间专门跟着一位教授学习了E4A(易安卓)手机app编译软件的开发。因为E4A是全中文界面,所以上手很快,所以就算隔了好几年了,还是很快就学习了一遍,用几个小时的时间编写了一个用于控制单片机两个led灯的亮灭,并且可以将状态显示在app上,因为是第一个app所以就先用蓝牙编写了,而且用的是51单片机,后期我会用stm32加wifi来实现。
=============================================================
本时钟配置清单如下:
-------------------------------------------------------------
主控:51单片机,可用AT89S52,也可用STC89C52
被控设备:LED小灯
通信接口:let蓝牙(16位传输)
客户端软件:keil4、E4A
单片机用到的串口:p2^1、txd、rxd
=============================================================
E4A设计部分(上位机): 蓝牙开关.zip (514.91 KB, 下载次数: 170)

c51单片机设计部分(下位机): 单片机程序.zip (10.42 KB, 下载次数: 81)
  1. /*********************************************************************************************
  2. 程序名:    蓝牙开关
  3. 编写人:     
  4. 编写时间:  
  5. 硬件支持:  外部11.0592MHZ晶振
  6. 接口说明:  
  7. 修改日志:  
  8.   NO.1- 
  9. /*********************************************************************************************
  10. 说明:


  11. /*********************************************************************************************/

  12. #include <reg52.h> //包含头文件
  13. sbit LED=P2^1;
  14. unsigned char UART_data; //定义串口接收数据变量

  15. /*********************************************************************************************
  16. 函数名:UART串口初始化函数
  17. 调  用:UART_init();
  18. 参  数:无
  19. 返回值:无
  20. 结  果:启动UART串口接收中断,允许串口接收,启动T/C1产生波特率(占用)
  21. 备  注:振荡晶体为12MHz,PC串口端设置 [ 4800,8,无,1,无 ]
  22. /**********************************************************************************************/
  23. void UART_init ( )
  24. {
  25.         
  26.         EA = 1; //允许总中断(如不使用中断,可用//屏蔽)
  27.         ES = 1; //允许UART串口的中断

  28.         TMOD = 0x20;        //定时器T/C1工作方式2
  29.         SCON = 0x50;        //串口工作方式1,允许串口接收(SCON = 0x40 时禁止串口接收)
  30.         TH1 = 0xFa;        //定时器初值高8位设置   //12MHZ晶振,波特率为4800 0xf3
  31.         TL1 = 0xFa;        //定时器初值低8位设置   //11.0592MHZ晶振,波特率为4800 0xf4   9600  0xfa   19200  0xfd
  32.         PCON = 0x80;        //波特率倍频(屏蔽本句波特率为2400)
  33.         TR1 = 1;        //定时器启动   
  34. }
  35. void main( ) //主函数
  36. {
  37.     UART_init();
  38.     LED=1;
  39.         while(1)
  40.         {
  41.        if(UART_data==0x31){LED=0; }//开
  42.            if(UART_data==0x32){LED=1;}//关


  43.       
  44.         }
  45. }
  46. /*********************************************************************************************
  47. 函数名:UART串口接收中断处理函数
  48. 调  用:[SBUF收到数据后中断处理]
  49. 参  数:无
  50. 返回值:无
  51. 结  果:UART串口接收到数据时产生中断,用户对数据进行处理(并发送回去)
  52. 备  注:过长的处理程序会影响后面数据的接收
  53. /**********************************************************************************************/
  54. void UART_R ( ) interrupt 4  using 1  //切换寄存器组到1
  55. {
  56.         
  57.         RI = 0;                        //令接收中断标志位为0(软件清零)
  58.         UART_data = SBUF;        //将接收到的数据送入变量 UART_data
  59.         
  60.         //用户函数内容(用户可使用UART_data做数据处理)
  61.         
  62.         SBUF = UART_data;        //将接收的数据发送回去(删除//即生效)
  63.         while(TI == 0);        //检查发送中断标志位
  64.         TI = 0;                //令发送中断标志位为0(软件清零)
  65. }
  66. /*****************************************************************************/

  67. /*****************************************************************************/
复制代码
=============================================================
因为是第一次在51黑论坛上发表,所以文章不是很精美,但是所有的文件都上传了,大家可自行下载查看,相信大家查看代码后很快就能懂,如果有什么疑问可以在下方留言询问,或者来我博客留周嘉浩的博客zhoujiahao点top;也欢迎大家来我的店查看我们最新设计的电子设备:



作者: 喜欢喝绿茶的鱼    时间: 2021-4-9 11:56
采用的是什么型号的蓝牙模块呢
作者: 3486635230    时间: 2021-4-10 07:57
新的一天,从学习单片机开始
作者: oosheoo    时间: 2021-4-10 08:35
牛啊,初学者表示看不懂
作者: LightningEVE    时间: 2021-4-10 20:11
喜欢喝绿茶的鱼 发表于 2021-4-9 11:56
采用的是什么型号的蓝牙模块呢

就常见的都可以,不同的可以根据商家给的资料该串口
作者: Clode哥哥    时间: 2021-4-16 22:42
好的,谢谢楼主啦
作者: LightningEVE    时间: 2021-7-18 10:45
喜欢喝绿茶的鱼 发表于 2021-4-9 11:56
采用的是什么型号的蓝牙模块呢

esp8266-01s/esp8266-01

作者: heikeji2021    时间: 2024-7-9 17:38
不错,我也下载了看看,谢谢




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1