基于单片机的蓝牙传输(终审稿)
基于单片机的蓝牙传输文稿归稿存档编号:[KKUY-KKIO69-OTM243-OLUI129-G00I-FDQS58-
简易无线数据收发设计
赛项报告
小组成员:
指导老师:
日期:二〇一五年五月三十一日
摘要
本设计以STC89C52单片机为控制核心。经蓝牙模块实现无线连接,发送数据和接收数据,通过LCD1602显示接收的数据和编辑发送的数据,两个单片机通过内部程序实现实时接收、发送和显示,从而完成相关要求。
关键字:控制;无线连接;接收;发送;显示
目录
1方案设定
1-1电路设计框图
1-2功能叙述
本作品通过HC-05主从机一体蓝牙模块实现与带蓝牙的设备先通过OPP 蓝牙协议来实现配对连接,实现连接配对可通过电路板上的数字按键来实现输入,经STC89C52单片机处理后通过HC-05蓝牙无线传送到另一方单片机上,通过STC89C52单片机处理后可在LCD1602液晶显示所接受到的数据!
1-3使用说明
在接通电源前,先把蓝牙模块插到单片机上,紧接着启动电源。观察蓝牙模块的指示灯,等待两个单片机之间的连接匹配,待指示灯出现双闪后就匹配连接成功。接下来可根据自己想要发送数据在单片机的按键区域(0~9)按下,按下后显示屏便出现你所要发送的数据,确认无误之后就按下单片机上的发送按钮即马上发送到另一方单片机上(两个单片机可以互相发送)!
使用前:使用时:
2系统硬件设计
2-1主控制模块
图6-1
STC89C52资料:
STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
具有以下标准功能: 8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,3个16 位定时器/
计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。另外 STC89C52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM 内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。
参数:
1. 增强型8051单片机,6 时钟/机器周期和12 时钟/机器周期可以任意选择,指令代码完全兼容传统8051.[2]
2. 工作电压:5.5V~
3.3V(5V单片机)/3.8V~2.0V(3V 单片机)
3.工作频率范围:0~40MHz,相当于普通8051 的0~80MHz,实际工作频率可达48MHz
4. 用户应用程序空间为8K字节
5. 片上集成512 字节RAM
6. 通用I/O 口(32 个),复位后为:P0/P1/P2/P3 是准双向口/弱上拉, P0 口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为 I/O 口用时,需加上拉电阻。
7. ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程
序,数秒即可完成一片
8. 具有EEPROM 功能
9. 共3 个16 位定时器/计数器。即定时器T0、T1、T2
10.外部中断4 路,下降沿中断或低电平触发电路,Power Down 模式可由外部中断低电平触发中断方式唤醒
11. 通用异步串行口(UART),还可用定时器软件实现多个UART
12. 工作温度范围:-40~+85℃(工业级)/0~75℃(商业级)
13. PDIP封装
2-2蓝牙收发模块
图8-1
AT 指令集
HC-05 嵌入式蓝牙串口通讯模块(以下简称模块)具有两种工作模式:命令响应工作模式和自动连接工作模式,在自动连接工作模式下模块又可分为主(Master)、从(Slave)和回环(Loopback)三种工作角色。当模块处于自动连接工作模式时,将自动根据事先设定的方式连接的数据传输;当模块处于命令响应工作模式时能执行下述所有 AT 命令,用户可向模块发送各种 AT 指令,为模块设定控制参数或发布控制命令。通过控制模块外部引脚(PIO11)输入电平,可以实现模块工作状态的动态转换。
串口模块用到的引脚定义:
1、PIO8 连接 LED,指示模块工作状态,模块上电后闪烁,不同的状态闪烁间隔不同。
2、PIO9 连接 LED,指示模块连接成功,蓝牙串口匹配连接成功后,LED 长亮。
3、PIO11 模块状态切换脚,高电平-->AT 命令响应工作状态,低电平或悬空-->蓝牙常规工作状态。
4、模块上已带有复位电路,重新上电即完成复位。
设置为主模块的步骤:
1、PIO11 置高。
2、上电,模块进入 AT 命令响应状态。
3、超级终端或其他串口工具,设置波特率 38400,数据位 8 位,停止位 1 位,无校验位,无流控制。
4、串口发送字符“AT+ROLE=1\r\n”,成功返回“OK\r\n”,其中
\r\n 为回车换行。
5、PIO 置低,重新上电,模块为主模块,自动搜索从模块,建立连接。2-3液晶显示模块
图9-1
LCD1602资料:
1602采用标准的16脚接口,其中:
第1脚:GND为电源地
第2脚:VCC接5V电源正极
第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。
第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。
第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。
第6脚:E(或EN)端为使能(enable)端,高电平(1)时读取信息,负跳变时执行指令。
第7~14脚:D0~D7为8位双向数据端。第15~16脚:空脚或背灯电源。
15脚背光正极。
16脚背光负极。
特性:
3.3V或5V工作电压,对比度可调内含复位电路提供各种控制命令,如:清屏、字符闪烁、光标闪烁、显示移位等多种功能有80字节显示数据存储器DDRAM
内建有192个5X7点阵的字型的字符发生器CGROM8个可由用户自定义的5X7的字符发生器CGRAM特征应用微功耗、体积小、显示内容丰富、超薄轻巧,常用在袖珍式仪表和低功耗应用系统中。操作控制
注:关于E=H脉冲——开始时初始化E为0,然后置E为1。
2-4矩阵键盘模块
图10-1
注:键盘输入部分使用矩阵键盘的设计原理。
3系统软件设计
3-1源程序
#include
#define uint unsigned int
#define uchar unsigned char
sbit rs=P2^6;
sbit en=P2^7;
sbit rw=P2^5;
sbit Key=P2^4;
uchar code table_Receive[]={"Receive:"};
uchar code table_Send[]={" Send:"};
uchar code table[]={'0','1','2','3','4','5','6','7','8','9'}; uchar num,temp,temp2,a,flag,add;
uchar n,m;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void write_lcd_com(uchar com){
rs=0;
P0=com;
delay(5);
en=1;
delay(5);
en=0;
}
void write_data(uchar date){ rs=1;
P0=date;
delay(5);
en=(1);
delay(5);
en=0;
}
void lcdinit(){
en=0;
write_lcd_com(0x38);
write_lcd_com(0x0c);
write_lcd_com(0x06);
write_lcd_com(0x01);
for(m=0;m<8;m++)
{
write_data(table_Receive[m]);
delay(1);
}
write_lcd_com(0x80+0x40);
for(n=0;n<8;n++)
{
write_data(table_Send[n]);
delay(1);
}
}
void keyscan()
{
P1=0xfe;
temp=P1;
temp=temp&0xf0;
while(temp!=0xf0)
{
delay(2);
temp=P1;
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=P1;
switch(temp)
{
case 0xee:num=1;break;
case 0xde:num=2;break;
case 0xbe:num=3;break;
case 0x7e:num=4;break;
}
while(temp!=0xf0)
{
temp=P1;
temp=temp&0xf0;
}
num=num-1;
}
}
P1=0xfd;
temp=P1;
temp=temp&0xf0;
while(temp!=0xf0)
{
delay(2);
temp=P1;
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=P1;
switch(temp)
{
case 0xed:num=5;break;
case 0xdd:num=6;break;
case 0xbd:num=7;break;
case 0x7d:num=8;break;
}
while(temp!=0xf0)
{
temp=P1;
temp=temp&0xf0;
}
num=num-1;
}
}
P1=0xfb;
temp=P1;
temp=temp&0xf0;
while(temp!=0xf0)
{
delay(2);
temp=P1;
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=P1;
switch(temp)
{
case 0xeb:num=9;break;
case 0xdb:num=10;break;
}
while(temp!=0xf0)
{
temp=P1;
temp=temp&0xf0;
}
num=num-1;
}
}
}
void Key1()
{
if(Key==0)
{
delay(2);
if(Key==0)
{
switch(num)
{ case 0:SBUF=0x00; while(!TI); T I=0;break;
case 1:SBUF=0x01; while(!TI); T I=0;break;
case 2:SBUF=0x02; while(!TI); T I=0;break;
case 3:SBUF=0x03; while(!TI); T I=0;break;
case 4:SBUF=0x04; while(!TI); T I=0;break;
case 5:SBUF=0x05; while(!TI); T I=0;break;
case 6:SBUF=0x06; while(!TI); T I=0;break;
case 7:SBUF=0x07; while(!TI); T I=0;break;
case 8:SBUF=0x08; while(!TI); T I=0;break;
case 9:SBUF=0x09; while(!TI); T I=0;break;
}
while(!Key);
}
}
}
void get()
{
if(RI==1)
{
RI=0;
switch(SBUF)
{
case 0x00:temp2=0;break;
case 0x01:temp2=1;break;
case 0x02:temp2=2;break;
case 0x03:temp2=3;break;
case 0x04:temp2=4;break;
case 0x05:temp2=5;break;
case 0x06:temp2=6;break;
case 0x07:temp2=7;break;
case 0x08:temp2=8;break;
case 0x09:temp2=9;break;
}
write_lcd_com(0x80+add);
write_data(table[temp2]);
add++;
}
}
void main()
{
SCON = 0x50;
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
REN=1;
SM0=0;
SM1=1;
add=8;
Key=1;
rw=0;
lcdinit();
while(1)
{
keyscan();
write_lcd_com(0x80+0x40+8);
write_data(table[num]);
get();
Key1();
}
}
4系统性能分析
4-1优缺点
缺点:
由于基于STC89C52单片机处理,串口信号的寄存器只有2个字节(接收1个字节,发送1个字节),所以只能一次发送或者接收一个字节的数据。
单片机控制:
优点,经济实惠,成本相对较低;缺点,用单片机制作的主控板受制版工艺、布局结构、器件质量等因素的影响导致抗干扰能力差,故障率高,不易扩展,对环境依赖性强,开发周期长。一个采用单片机制作的主控板不经过很长时间的实际验证很难形成一个真正的产品。
蓝牙技术:
优点,蓝牙(Bluetooth)为一短距离无线传输的通信界面,基本型通讯距离约10米,支援一对多资料传输及语音通讯,大部分的蓝牙无线设备它不需要设置发射机,蓝牙耳机保密性佳,这点是有2.4G的频率特性
所决定的,它意味着不容易造成跳频、谐波而被窃听,且双向传播,抗干扰性强,耗电少的优点。缺点,就是它的传输数据量小,仅能达到每秒1M左右。
4-2改进方向
1,更换更高级的处理芯片可实现多字节发送和接收。
2,如果使用WIFI模块的话,传输距离可以更远。
3,接线需要优化,电路布局可以更加简单。
以上为所有内容。
2015年5月31日