最近在为一个公司做实物,涉及到关于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)
- /*********************************************************************************************
- 程序名: 蓝牙开关
- 编写人:
- 编写时间:
- 硬件支持: 外部11.0592MHZ晶振
- 接口说明:
- 修改日志:
- NO.1-
- /*********************************************************************************************
- 说明:
- /*********************************************************************************************/
-
- #include <reg52.h> //包含头文件
- sbit LED=P2^1;
- unsigned char UART_data; //定义串口接收数据变量
- /*********************************************************************************************
- 函数名:UART串口初始化函数
- 调 用:UART_init();
- 参 数:无
- 返回值:无
- 结 果:启动UART串口接收中断,允许串口接收,启动T/C1产生波特率(占用)
- 备 注:振荡晶体为12MHz,PC串口端设置 [ 4800,8,无,1,无 ]
- /**********************************************************************************************/
- void UART_init ( )
- {
-
- EA = 1; //允许总中断(如不使用中断,可用//屏蔽)
- ES = 1; //允许UART串口的中断
- TMOD = 0x20; //定时器T/C1工作方式2
- SCON = 0x50; //串口工作方式1,允许串口接收(SCON = 0x40 时禁止串口接收)
- TH1 = 0xFa; //定时器初值高8位设置 //12MHZ晶振,波特率为4800 0xf3
- TL1 = 0xFa; //定时器初值低8位设置 //11.0592MHZ晶振,波特率为4800 0xf4 9600 0xfa 19200 0xfd
- PCON = 0x80; //波特率倍频(屏蔽本句波特率为2400)
- TR1 = 1; //定时器启动
- }
- void main( ) //主函数
- {
- UART_init();
- LED=1;
- while(1)
- {
- if(UART_data==0x31){LED=0; }//开
- if(UART_data==0x32){LED=1;}//关
-
-
- }
- }
- /*********************************************************************************************
- 函数名:UART串口接收中断处理函数
- 调 用:[SBUF收到数据后中断处理]
- 参 数:无
- 返回值:无
- 结 果:UART串口接收到数据时产生中断,用户对数据进行处理(并发送回去)
- 备 注:过长的处理程序会影响后面数据的接收
- /**********************************************************************************************/
- void UART_R ( ) interrupt 4 using 1 //切换寄存器组到1
- {
-
- RI = 0; //令接收中断标志位为0(软件清零)
- UART_data = SBUF; //将接收到的数据送入变量 UART_data
-
- //用户函数内容(用户可使用UART_data做数据处理)
-
- SBUF = UART_data; //将接收的数据发送回去(删除//即生效)
- while(TI == 0); //检查发送中断标志位
- TI = 0; //令发送中断标志位为0(软件清零)
- }
- /*****************************************************************************/
- /*****************************************************************************/
复制代码 =============================================================
因为是第一次在51黑论坛上发表,所以文章不是很精美,但是所有的文件都上传了,大家可自行下载查看,相信大家查看代码后很快就能懂,如果有什么疑问可以在下方留言询问,或者来我博客留周嘉浩的博客zhoujiahao点top;也欢迎大家来我的店查看我们最新设计的电子设备:游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
|