基于51单片机的蓝牙传输

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

简易无线数据收发设计

赛项报告

小组成员:

指导老师:

日期:二〇一五年五月三十一日

3系统软件设计 (11)

3-1源程序 (11)

4系统性能分析 (16)

4-1优缺点 (16)

4-2改进方向 (16)

1方案设定

1-1电路设计框图

HC-05

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.工作频率范围:0~40MHz,相当于普通8051的0~80MHz,实际工作频率可达48MHz

4.

5.

6.通用

7.ISP

8.具有

9.共3

10.

11.

12.

13.PDIP

2-2

AT

HC-05

的动态转换。

串口模块用到的引脚定义:

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

第3

第4

第5

第6

第7~

源。

15

16

特性:

3.3V

内建有CGRAM 作控制

2-4

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)

{

}

}

}

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=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;

相关文档
最新文档