预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共14页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

基于51单片机蓝牙模块数据传播设计(修订版)摘要本设计以STC89C52单片机为控制核心。经蓝牙模块实现无线连接,发送数据和接受数据,通过LCD1602显示接受数据和编辑发送数据,两个单片机通过内部程序实现实时接受、发送和显示,从而完毕有关规定。1方案设定1-1电路设计框图LCD1602液晶显示模块2LCD1602液晶显示模块1蓝牙收发模块2蓝牙收发模块1STC89C52主控制模块2STC89C52主控制模块1矩阵键盘模块2矩阵键盘模块1无线信号串口串口图4-1注:由于STC89C52芯片串口寄存器容量限制,每次收发只能一种字节。1-2功能论述本作品通过HC-05主从机一体蓝牙模块实现与带蓝牙设备先通过OPP蓝牙合同来实现配对连接,实现连接配对可通过电路板上数字按键来实现输入,经STC89C52单片机解决后通过HC-05蓝牙无线传送到另一方单片机上,通过STC89C52单片机解决后可在LCD1602液晶显示所接受到数据!1-3使用阐明在接通电源前,先把蓝牙模块插到单片机上,紧接着启动电源。观测蓝牙模块批示灯,等待两个单片机之间连接匹配,待批示灯浮现双闪后就匹配连接成功。接下来可依照自己想要发送数据在单片机按键区域(0~9)按下,按下后显示屏便浮现你所要发送数据,确认无误之后就按下单片机上发送按钮即立即发送到另一方单片机上(两个单片机可以互相发送)!2系统硬件设计2-1主控制模块图6-12-2蓝牙收发模块图8-12-3液晶显示模块图9-1LCD1602资料: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<reg52.h>#defineuintunsignedint#defineucharunsignedcharsbitrs=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_com(ucharcom){rs=0;P0=com;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_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);}}voidkeyscan(){P1=0xfe;temp=P1;temp=temp&0xf0;while(temp!=0xf0){delay(2);temp=P1;temp=temp&0xf0;while(temp!=0xf