使用keil,proteus,虚拟串口,完成蓝牙通信

这篇具有很好参考价值的文章主要介绍了使用keil,proteus,虚拟串口,完成蓝牙通信。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目的:

通过HC-06的蓝牙芯片,AT89C51的51单片机,借助keil,proteus,通过虚拟串口,在电脑上实现蓝牙串口通信,控制LED的开和关。

存在的问题:

单片机和蓝牙不能联动,暂未找出问题的原因

如何让keil和protus联动,参考文章:

使用Proteus和keil实现单片机的第一个程序_stanleyrain的博客-CSDN博客

步骤1 使用proteus绘制电路图

使用keil,proteus,虚拟串口,完成蓝牙通信

注意:

1. proteus本身并不支持蓝牙仿真,需要下载蓝牙模块,并将模块拷贝到proteus库中

(1)蓝牙模块下载网址:

Download Bluetooth Library for Proteus rar

(2)解压缩

使用keil,proteus,虚拟串口,完成蓝牙通信

(3)将解压缩的文件,拷贝到proteus库文件夹

使用keil,proteus,虚拟串口,完成蓝牙通信

步骤2 使用keil编写程序

使用keil,proteus,虚拟串口,完成蓝牙通信

程序源代码如下:

#include<reg51.h>
#include <stdio.h>
#define uint unsigned int;
#define uchar unsigned char;

sbit LED0 = P1^0;
sbit LED1 = P1^1;
sbit LED2 = P1^2;
sbit LED3 = P1^3;

sbit P2_0 = P2^0;
sbit P2_1 = P2^1;
sbit P2_2 = P2^2;

uchar rev = 0;  //bluetooth receive
bit rok = 0;    //is the receive ok?

void Com_Init();   //initial serial port
void id_signal();  //judge the received signal and execute the sub-process

void main()
{
	P1 = 0x00;  //close all lights
	P2_0 = 0;
	P2_1 = 0;
	P2_2 = 0;
	
	Com_Init();
	
	while(1)
	{
		if(rok)
		{
			P2_1 = ~P2_1;
			id_signal();
		}
	}
}


void Com_Init()
{
	SCON = 0x50;   //serial port works on 1, allow receiving
	TMOD = 0x20;   //Timer works on 2
	
	PCON &= 0x7f;   //set SMOD = 0, make sure the correct baud rate
	
	
	TH1 = 0xFD;    //set baud rate is 9600
	TL1 = 0xFD;
	
	TR1 = 1;    //start baud rate generator
	ES = 1;     //open serial port interruption
	EA = 1;     //open general interruption
	
	REN = 1;    // allow receive
		
}

void id_signal()
{
	if(rev == 0x30)
		P2_2 = !P2_2;
		
	switch(rev)
	{
		case 0x30: LED0 = ~LED0; break;
		case 0x31: LED1 = ~LED1; break;
		case 0x32: LED2 = ~LED2; break;
		case 0x33: LED3 = ~LED3; break;
		default: break;
	}
	
	rok = 0;
	REN = 1;
}

void Com_Int() interrupt 4
{
	ES = 0;
	
	P2_0 = ~P2_0;
	
	if(RI)
	{
		rev = SBUF;
		RI = 0;
		rok = 1;
	}
	ES = 1;
}

 步骤3 安装虚拟串口软件

具体可以参加文章:

工具 | 虚拟串口软件的使用分享_51CTO博客_虚拟串口工具

下载地址:

Virtual Serial Port Driver - create and emulate virtual COM port

安装好后,创建一个虚拟串口对

使用keil,proteus,虚拟串口,完成蓝牙通信

在设备管理器中,检查虚拟串口存在

使用keil,proteus,虚拟串口,完成蓝牙通信

步骤4 使用串口助手发生串口信息给Proteus

下载一个串口助手软件,如:友善串口调试助手,下载地址:

友善串口调试助手_串口调试工具最新版官方下载-华军软件园

 安装好软件后,打开软件,进行串口设置,如图所示

使用keil,proteus,虚拟串口,完成蓝牙通信

在Proteus中,配置蓝牙模块

使用keil,proteus,虚拟串口,完成蓝牙通信

 注意:串口要配对

运行proteus,测试结果如下:

使用keil,proteus,虚拟串口,完成蓝牙通信

 使用keil,proteus,虚拟串口,完成蓝牙通信

 文章来源地址https://www.toymoban.com/news/detail-404981.html

问题及其说明

 1. 在proteus上无法仿真串口的控制效果,虚拟串口的工具也换了好几种,问题应该出在电路侧,因为代码已经在keil的仿真器里面调试过,具体的调试方法说明如下:

(1)点击Options for Target,选中Debug选项,勾选Use Simulator

 

使用keil,proteus,虚拟串口,完成蓝牙通信

使用keil,proteus,虚拟串口,完成蓝牙通信

 (2)开始Debug

使用keil,proteus,虚拟串口,完成蓝牙通信

 (3)在命令行处,输入如下命令,图片处高亮位置。其作用是将模拟器的端口绑定到com1口

使用keil,proteus,虚拟串口,完成蓝牙通信

 

mode com1 9600,0,8,1
assign com1 <sin >sout

(4)使用串口助手,发送命令给模拟器

使用keil,proteus,虚拟串口,完成蓝牙通信

注意,此时代码停留在断点 if(rev == 0x30)处,表明软件被中断触发,代码可以正常执行。

 

到了这里,关于使用keil,proteus,虚拟串口,完成蓝牙通信的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Proteus仿真】【Arduino单片机】HC05蓝牙通信

    本项目使用Proteus8仿真Arduino单片机控制器,使用PCF8574、LCD1602液晶、HC05蓝牙传感器等。 主要功能: 系统运行后,LCD1602显示蓝牙接收数据。 B站演示视频:https://space.bilibili.com/444388619 视频地址:https://space.bilibili.com/444388619/video 专注于51单片机、STM32、国产32、DSP、Proteus、ardu

    2024年04月16日
    浏览(50)
  • 【PROTEUS-51单片机串口通信仿真】

    本次实验对51单片机的串口进行了双机通信的仿真,实现了51单片机的简单双机通信;现对本次仿真的结构及实现的功能做简要的介绍, 本次仿真主要构成:主机U1-MASTER、从机U2-SLAVE、以及LED显示部分(第一部分显示主机接收到的信息、第二部分显示从机接收到的信号); 实

    2024年01月15日
    浏览(72)
  • Proteus仿真实验---USART串口通信实验

    一、概要         本次实验使用51单片机的串口与Proteus的Virtual Terminal(虚拟终端)进行一个简单的串口通信,实现的功能是让Virtual Terminal通过串口向单片机发送数据,单片机接收到数据后经串口将数据发送到Virtual Terminal上显示。         Virtual Terminal:如下图,在使用前根

    2023年04月09日
    浏览(34)
  • 【Python】串口通信-与FPGA、蓝牙模块实现串口通信(Python+FPGA)

    🎉欢迎来到Python专栏~与FPGA、蓝牙模块实现串口通信 ☆* o(≧▽≦)o *☆ 嗨 ~我是 小夏与酒 🍹 ✨ 博客主页: 小夏与酒的博客 🎈该系列 文章专栏: Python学习专栏 文章作者技术和水平有限,如果文中出现错误,希望大家能指正🙏 📜 欢迎大家关注! ❤️ Python与FPGA串口通信

    2024年02月15日
    浏览(43)
  • 51单片机(串口通信、蓝牙)

    串行接口简称串口,也称 串行通信接口 或串行通讯接口(通常指COM接口),是采用串行通信方 式的扩展接口。串行接口(Serial Interface)是指 数据一位一位地顺序传送。 其特点是通信线路简 单,只要一对传输线就可以实现 双向通信( 可以直接利用电话线作为传输线),从

    2024年02月15日
    浏览(41)
  • 【51单片机系列】proteus仿真单片机的串口通信

    本文参考:https://zhuanlan.zhihu.com/p/425809292。 在proteus之外使用串口软件和单片机通信。通过在proteus设计一个单片机接收PC发送的数据,并将接收的数据发送出去,利用软件【Configure Virtual Serial Port Driver】创建一对虚拟串口,利用软件【串口助手】向单片机发送数据。 proteus仿真

    2024年01月17日
    浏览(49)
  • C# Modbus通信从入门到精通(1)——虚拟串口调试工具的使用

    由于我们在开发程序时经常是没有硬件给我们测试的,所以我们在开发ModbusRTU以及ModbusASCII程序时,可以使用虚拟串口调试工具来虚拟出来一对串口方便我们进行测试,订阅本专栏后,加入vip专属的qq群,在群资料里面就能找到虚拟串口工具 第1步、双击vspd.exe安装 第2步、 打

    2024年02月06日
    浏览(63)
  • ESP32用作经典蓝牙串口透传模块与手机进行串口通信

    ESP32-WROOM-32模组集成了双模蓝牙包括传统蓝牙(BR/EDR)、低功耗蓝牙(BLE)和 Wi-Fi,具有广泛的用途:Wi-Fi 支持极大范围的通信连接,也支持通过路由器直接连接互联网;而蓝牙可以让用户连接手机或者广播 Bluetooth LE Beacon 以便于信号检测。 蓝牙特性: • 支持标准 Class-1、

    2024年02月09日
    浏览(40)
  • STM32F4 基于USART串口的蓝牙通信

    目录 一、硬件资源 连接方案 其他配置 二、实验原理 基本定义 USART介绍 USART工作原理 数据发送 数据接收 蓝牙HM-10配置 三、代码部分 usart.c usart.h Serial.c Serial.h main.c 结语 STM32F401,OLED,蓝牙hm10 连接方案 设备1的TX与设备2的RX连接,这样设备1发送的数据可以被设备2接收到。

    2024年01月17日
    浏览(46)
  • c51单片机串口通信(中断方式接收数据)(单片机--单片机通信)示例代码 附proteus图

         单片机一般采用中断方式接受数据,这样便于及时处理 其中发送数据段采用的是查询方式,接收端采用了中断方式, 要注意的地方有: 在中断处理函数int_0()内,处理数据前要先关闭中断,否则中断可能会不断传过来, EA=0; 然后退出中断处理函数前恢复中断处理能力:

    2024年02月13日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包