基于51单片机蓝牙模块传输数据毕业设计作品Word文档下载推荐.docx
《基于51单片机蓝牙模块传输数据毕业设计作品Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于51单片机蓝牙模块传输数据毕业设计作品Word文档下载推荐.docx(14页珍藏版)》请在冰豆网上搜索。
![基于51单片机蓝牙模块传输数据毕业设计作品Word文档下载推荐.docx](https://file1.bdocx.com/fileroot1/2022-10/8/f34d011e-dd6d-4eb0-96f4-ea8a66a5dcbd/f34d011e-dd6d-4eb0-96f4-ea8a66a5dcbd1.gif)
图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<
reg52.h>
#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>
y--);
}
voidwrite_lcd_(uchar){
rs=0;
P0=;
delay(5);
en=1;
en=0;
voidwrite_data(uchardate){
rs=1;
P0=date;
en=
(1);
voidlcdinit(){
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<
n++)
write_data(table_Send[n]);
voidkeyscan()
P1=0xfe;
temp=P1;
temp=temp&
0xf0;
while(temp!
=0xf0)
{
delay
(2);
temp=P1;
temp=temp&
while(temp!
{
temp=P1;
switch(temp)
{
case0xee:
num=1;
break;
case0xde:
num=2;
case0xbe:
num=3;
case0x7e:
num=4;
}
temp=P1;
temp=temp&
num=num-1;
}
}
P1=0xfd;
case0xed:
num=5;
case0xdd:
num=6;
case0xbd:
num=7;
case0x7d:
num=8;
P1=0xfb;
case0xeb:
num=9;
case0xdb:
num=10;
voidKey1()
if(Key==0)
{
delay
(2);
if(Key==0)
{
switch(num)
{case0:
SBUF=0x00;
while(!
TI);
TI=0;
case1:
SBUF=0x01;
case2:
SBUF=0x02;
case3:
SBUF=0x03;
case4:
SBUF=0x04;
case5:
SBUF=0x05;
case6:
SBUF=0x06;
case7:
SBUF=0x07;
case8:
SBUF=0x08;
case9:
SBUF=0x09;
}
while(!
Key);
voidget()
if(RI==1)
RI=0;
switch(SBUF)
case0x00:
temp2=0;
case0x01:
temp2=1;
case0x02:
temp2=2;
case0x03:
temp2=3;
case0x04:
temp2=4;
case0x05:
temp2=5;
case0x06:
temp2=6;
case0x07:
temp2=7;
case0x08:
temp2=8;
case0x09:
temp2=9;
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();
}
(以上为所有容)