AT89C52单片机实现短距离无线传输的设计

在一些特殊的应用场合,单片机通信不能采用有线数据传输方式,而需要采用短距离的无线数据传输方式。短距离的无线传输具有抗干扰能力强、可靠性高、安全性好、受地理条件限制少、安装灵活等优点,可以利用单片机和专用无线传输芯片实现简单的短距离无线传输方案,硬件部分包括单片机端和pc机端,实现单片机和pc机间的数据传输。
主要器件:
1、单片机端:at89c52单片机芯片,用于控制无线模块的发射和接受;ptr2000无线数据传输模块,使用了433mhz igm频段,是真正的单片uhf无线收发一体芯片,可以和单片机的串口直接相连。
2、 pc端:ptr2000无线数据传输模块;ttl电平转换rs-232电平芯片max202。
试验流程图:
试验电路图:
单片机端:
pc端:
试验程序代码:
//wireless.h程序
#ifndef _wireless_h // 防止wireless.h被重复引用
#define _wireless_h
#include // 引用标准库的头文件
#include
#define uchar unsigned char
#define uint unsigned int
#define req_send 0x33
#define req_resend 0x66
#define send_over 0x99
//为简化起见,假设了7位固定的采集数据
#define data0 0x10
#define data1 0x20
#define data2 0x30
#define data3 0x40
#define data4 0x50
#define data5 0x60
#define data6 0x70
sbit txen = p2^0;
sbit cs = p2^1;
sbit pwr = p2^2;
void cleart_buf(); // 清除t_buf函数
void clearr_buf(); // 清除r_buf函数
void delay5ms(); // 延时5ms
void getdata(); // 采集数据
void send(); // 采集并发送函数
void sendover(); // 通知pc机发送结束函数
xdata uchar flag_startrec = 0 ; //开始接受数据标志位
xdata uchar flag_reqsend = 0 ; //请求发送标志位
xdata uchar flag_reqresend = 0 ; //请求重发标志位
xdata uchar flag_delay5ms = 1 ; //延时5ms标志
xdata uchar data[7]; //采集的7个字节数据
xdata uchar tcount = 0 ;
xdata uchar t_buf[11]; // 1开始字节$,1长度字节len,
// 7字节数据,1校验和字节,
// 1 结束字节*
xdata uchar rcount = 0 ;
xdata uchar r_buf[5]; // 1开始字节$,1长度字节len,
// 1字节指令,1校验和字节,
// 1 结束字节*
#endif
//wireless.c程序
#include wireless.h
/* 定时器0中断服务子程序 */
void timer() interrupt 1 using 2
{
flag_delay5ms = 0;
th0 = -5000/256;
tl0 = -5000%256;
}
void main(void)
{
cleart_buf();
clearr_buf();
txen = 0; //初始为接收状态
pwr = 1; //正常工作模式
cs = 0; //选择频道0
ea=0;
/* 11.0592mhz下,设置串行口9600波特率,工作方式1
8位数据位,1位停止位,无奇偶校验,*/
tmod = 0x21; //定时器1工作模式1,定时器0工作模式2
scon = 0x50; //串行口工作方式1,ren=1
pcon = 0x00; //smod=0
tl1 = 0xfd;
th1 = 0xfd;
tr1=1; //定时器1开始计时
pt0 = 1; //定时器0高优先级
th0 = -5000/256; //5ms
tl0 = -5000%256;
ie = 0x90; //ea=1,es=1:打开串口中断
while (1)
{
if (flag_reqsend) //收到“请求发送”指令
{
txen = 1; //改变为发射状态
delay5ms(); //延时5ms
getdata(); //采集数据
send(); //发送
flag_reqsend = 0;
sendover(); //通知pc机发送结束
txen = 0; //重设为接收状态
}
else if (flag_reqresend) //收到“请求重发”指令
{
txen = 1; //改变为发射状态
delay5ms(); //延时5ms
send(); //重发
flag_reqresend = 0;
sendover(); //通知pc机发送结束
txen = 0; //重设为接收状态
}
}
}
接上篇程序:
/* 串口中断服务子程序 */
void serial ( ) interrupt 4 using 1
{
ri = 0 ;
/* 判断是否收到字符'$',其数值为0x24,置开始接收标志位*/
if ((!flag_startrec) && (sbuf == 0x24))
{
flag_startrec = 1;
}
if (flag_startrec)
{
if (rcount<5)
{
r_buf[rcount] = sbuf;
rcount ++;
}
/* 判断是否收到字符'*',其数值为0x2a,根据接收的指令设置相应标志位*/
if ((r_buf[rcount -1] == 0x2a)||(rcount == 5))
{
rcount = 0;
flag_startrec = 0;
if (r_buf[2] == req_send) //收到“请求发送”指令
{
flag_reqsend = 1;
}
if (r_buf[2] == req_resend) //收到“请求重发”指令
{
flag_reqresend = 1;
}
}
else
clearr_buf();
}
}
void cleart_buf(void)
{
uchar xdata k ;
for (k=0;k++;k<11)
{
t_buf[k] = 0;
}
}
void clearr_buf(void)
{
uchar xdata k ;
for (k=0;k++;k<5)
{
r_buf[k] = 0;
}
}
void delay5ms(void)
{
tr0=1;
et0=1;
while( flag_delay5ms);
et0 = 0;
tr0 = 0;
flag_delay5ms = 1;
}
//采集数据函数经过简化处理,取固定的7个字节数据
void getdata(void)
{
data[0]=data0;
data[1]=data1;
data[2]=data2;
data[3]=data3;
data[4]=data4;
data[5]=data5;
data[6]=data6;
}
//单片机端发送数据函数
void send(void)
{
uchar xdata j = 0;
uchar xdata len = 0;
uchar xdata checksum = 0 ;
t_buf[0]=0x24; //起始位
t_buf[1]=0x07; //7个数据字节
len=t_buf[1];
checksum = checksum + len;
for ( j=0;j++;j
{
t_buf[j+2] = data[j];
checksum = checksum + t_buf[j+2];
}
t_buf[9] = checksum; //校验和字节
t_buf[10] = 0x2a; //停止位
for (j=0;j++;j<11)
{
ti =0 ;
sbuf = t_buf[j];
while ( ti ==0 );
ti =0 ;
}
}
//通知pc机端发送结束函数
void sendover(void)
{
ti =0 ;
sbuf = 0x24;
while ( ti ==0 );
ti =0 ;
sbuf = 0x01;
while ( ti ==0 );
ti =0 ;
sbuf = send_over; //通知pc机端“发送结束”
while ( ti ==0 );
ti =0 ;
sbuf = 0x99; //校验和字节
while ( ti ==0 );
ti =0 ;
sbuf = 0x2a;
while ( ti ==0 );
ti =0 ;
}


苹果16英寸MacBook Pro已开始量产,部分配置已曝光
笔记本电脑电池的维护方法有哪些?
看激光视盘机电路图的基本任务和要求
江波龙企业级存储正式量产一周年,交出亮眼“成绩单”
2017P&E佳能展台看点一览:强力出击 霸气全场
AT89C52单片机实现短距离无线传输的设计
直播预告 | @12/8 车用功能一把罩-NXP S32E/Z与您携手定义未来
数显糖度计的应用领域以及使用效果的详解
WT2605C-32N音频录音蓝牙芯片的详细介绍
DFRobot工程笔记本-黑色介绍
电流检测测量在汽车系统中的应用
一起来学802.11物理层测试标准(11a的OFDM调制)
如何分辨测试治具和测试座
自驱动柔性生物医学传感器的定义
变频器选型攻略
韩国半导体受疫情一下,中国半导体迎新发展机遇
2010年法兰克福春季国际消费品贸易博览会
直观了解智能家居网关
浅谈人工智能的过去、现在和未来
LED照明ic CY3783A实现优秀的恒流线性调整率