基于51单片机的蓝牙传输.docx
《基于51单片机的蓝牙传输.docx》由会员分享,可在线阅读,更多相关《基于51单片机的蓝牙传输.docx(19页珍藏版)》请在冰豆网上搜索。
基于51单片机的蓝牙传输
简易无线数据收发设计
赛项报告
小组成员:
指导老师:
日期:
二〇一五年五月三十一日
摘要
本设计以STC89C52单片机为控制核心。
经蓝牙模块实现无线连接,发送数据和接收数据,通过LCD1602显示接收的数据和编辑发送的数据,两个单片机通过内部程序实现实时接收、发送和显示,从而完成相关要求。
关键字:
控制;无线连接;接收;发送;显示
1方案设定4
1-1电路设计框图4
1-2功能描述4
1-3使用说明5
2系统硬件设计6
2-1主控制模块6
2-2蓝牙收发模块8
2-3液晶显示模块9
2-4矩阵键盘模块10
3系统软件设计11
3-1源程序11
4系统性能分析16
4-1优缺点16
4-2改进方向16
1方案设定
1-1电路设计框图
无线信号
串口串口
图4-1
注:
由于STC89C52芯片串口寄存器的容量限制,每次收发只能一个字节。
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口线,看门狗定时器,内置4KBEEPROM,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.工作频率X围:
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路,下降沿中断或低电平触发电路,PowerDown模式可由外部中断低电平触发中断方式唤醒
11.通用异步串行口(UART),还可用定时器软件实现多个UART
12.工作温度X围:
-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
#defineuintunsignedint
#defineucharunsignedchar
sbitrs=P2^6;
sbiten=P2^7;
sbitrw=P2^5;
sbitKey=P2^4;
ucharcodetable_Receive[]={"Receive:
"};
ucharcodetable_Send[]={"Send:
"};
ucharcodetable[]={'0','1','2','3','4','5','6','7','8','9'};
ucharnum,temp,temp2,a,flag,add;
ucharn,m;
voiddelay(uintz)
{
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
voidwrite_lcd_(uchar){
rs=0;
P0=;
delay(5);
en=1;
delay(5);
en=0;
}
voidwrite_data(uchardate){
rs=1;
P0=date;
delay(5);
en=
(1);
delay(5);
en=0;
}
voidlcdinit(){
en=0;
write_lcd_(0x38);
write_lcd_(0x0c);
write_lcd_(0x06);
write_lcd_(0x01);
for(m=0;m<8;m++)
{
write_data(table_Receive[m]);
delay
(1);
}
write_lcd_(0x80+0x40);
for(n=0;n<8;n++)
{
write_data(table_Send[n]);
delay
(1);
}
}
voidkeyscan()
{
P1=0xfe;
temp=P1;
temp=temp&0xf0;
while(temp!
=0xf0)
{
delay
(2);
temp=P1;
temp=temp&0xf0;
while(temp!
=0xf0)
{
temp=P1;
switch(temp)
{
case0xee:
num=1;break;
case0xde:
num=2;break;
case0xbe:
num=3;break;
case0x7e:
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)
{
case0xed:
num=5;break;
case0xdd:
num=6;break;
case0xbd:
num=7;break;
case0x7d:
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)
{
case0xeb:
num=9;break;
case0xdb:
num=10;break;
}
while(temp!
=0xf0)
{
temp=P1;
temp=temp&0xf0;
}
num=num-1;
}
}
}
voidKey1()
{
if(Key==0)
{
delay
(2);
if(Key==0)
{
switch(num)
{case0:
SBUF=0x00;while(!
TI);TI=0;break;
case1:
SBUF=0x01;while(!
TI);TI=0;break;
case2:
SBUF=0x02;while(!
TI);TI=0;break;
case3:
SBUF=0x03;while(!
TI);TI=0;break;
case4:
SBUF=0x04;while(!
TI);TI=0;break;
case5:
SBUF=0x05;while(!
TI);TI=0;break;
case6:
SBUF=0x06;while(!
TI);TI=0;break;
case7:
SBUF=0x07;while(!
TI);TI=0;break;
case8:
SBUF=0x08;while(!
TI);TI=0;break;
case9:
SBUF=0x09;while(!
TI);TI=0;break;
}
while(!
Key);
}
}
}
voidget()
{
if(RI==1)
{
RI=0;
switch(SBUF)
{
case0x00:
temp2=0;break;
case0x01:
temp2=1;break;
case0x02:
temp2=2;break;
case0x03:
temp2=3;break;
case0x04:
temp2=4;break;
case0x05:
temp2=5;break;
case0x06:
temp2=6;break;
case0x07:
temp2=7;break;
case0x08:
temp2=8;break;
case0x09:
temp2=9;break;
}
write_lcd_(0x80+add);
write_data(table[temp2]);
add++;
}
}
voidmain()
{
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_(0x80+0x40+8);
write_data(table[num]);
get();
Key1();
}
}
4系统性能分析
4-1优缺点
缺点:
由于基于STC89C52单片机处理,串口信号的寄存器只有2个字节(接收1个字节,发送1个字节),所以只能一次发送或者接收一个字节的数据。
单片机控制:
优点,经济实惠,成本相对较低;缺点,用单片机制作的主控板受制版工艺、布局结构、器件质量等因素的影响导致抗干扰能力差,故障率高,不易扩展,对环境依赖性强,开发周期长。
一个采用单片机制作的主控板不经过很长时间的实际验证很难形成一个真正的产品。
蓝牙技术:
优点,蓝牙(Bluetooth)为一短距离无线传输的通信界面,基本型通讯距离约10米,支援一对多资料传输及语音通讯,大部分的蓝牙无线设备它不需要设置发射机,蓝牙耳机XX性佳,这点是有2.4G的频率特性所决定的,它意味着不容易造成跳频、谐波而被窃听,且双向传播,抗干扰性强,耗电少的优点。
缺点,就是它的传输数据量小,仅能达到每秒1M左右。
4-2改进方向
1,更换更高级的处理芯片可实现多字节发送和接收。
2,如果使用WIFI模块的话,传输距离可以更远。
3,接线需要优化,电路布局可以更加简单。
以上为所有内容。
2015年5月31日