找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 14782|回复: 24
收起左侧

315Mhz无线模块单片机软解码接收程序

  [复制链接]
ID:72519 发表于 2015-1-21 18:31 | 显示全部楼层 |阅读模式
# include<reg52.h>
# define uint unsigned int
# define uchar unsigned char

sbit DATA=P3^2;
sbit rs=P2^6;          //1602引脚定义
sbit rw=P2^5;
sbit e=P2^7;
uchar dat,num;

uchar code table[]="0123456789ABCDEF";
uchar code table1[]="Receive:";        //液晶固定部分显示
uchar code table2[]="Re_data:0x";

void write_data (uchar dat);         //1602写数据
void write_com (uchar com);         //1602写命令
unsigned char pow(unsigned char n,unsigned char m);        //n的m次方函数
uchar receive(void);                          //接收处理函数  
void gd();                        //液晶固定部分显示

void delay (uint xms)        //1602延时
{
uint i,j;
for (i = xms; i > 0; i--)
for (j = 110; j > 0; j--);
}

void delay1(unsigned char t)//延时程序
{
unsigned char n;
for(;t>0;t--)
for(n=40;n>0;n--);  
}

unsigned char pow(unsigned char n,unsigned char m)//n的m次方函数
{
unsigned  char t,result=1;
for(t=0;t<m;t++){result=n*result;}
return result;
}

void init_1602()
{
    e = 0;        //1602初始化
write_com (0x38);
    write_com (0x0c);
write_com (0x06);
write_com (0x01);
gd();
}

/*1602液晶代码部分        ------------------------------ */
void write_com (uchar com)        //写命令
{
rs = 0;
rw = 0;
P0 = com;
delay (5);
e = 1;
delay (5);
e = 0;
}

void write_data (uchar dat)         //写数据
{
rs = 1;
rw = 0;
P0 = dat;
delay (5);
e = 1;
delay (5);
e = 0;
}

void gd()        //液晶固定部分显示
{
    write_com(0x80);
for(num=0;num<8;num++)
{
   write_data(table1[num]);
delay(5);
}
write_com(0x80+0x40);
for(num=0;num<10;num++)
{
   write_data(table2[num]);
delay(5);
}
}

uchar receive(void)//接收处理函数
{
unsigned char guid=0,result[12],i,key=0,res=0,t,time=0;
while(1)//捕获前导命令
{
while(DATA==1){t++;if(t>=90){delay1(100);return 0;}}//防止错误数据导致的死循环
if(t>=60&&t<95){t=0;key++;time=0;if(key>3)break;}//获得前导命令跳出循环,清除计时信号
else if(time>100){delay1(100);return 0;}//长0,错误信号返回0
else {t=0;time++;}//计时垒加,清除t
}  
t=0;
time=0;
for(i=1;i<13;)             //校验码及数据的接收共12位数据
{
while(DATA==1){t++;if(t>=95){delay1(100);return 0;}}//防止错误信号导致的死循环
if(t>=60&&t<95){t=0;i=1;time=0;}//去除多余的前导命令
else if(t>=28&&t<60){result[i-1]=1;i++;time=0;}//捕获数据1
else if(t>0&&t<27){result[i-1]=0;i++;time=0;}//捕获数据0
if(time>100)return 0; //消除长0的干扰确保数据正确
t=0;   //清零
time++;//计时       
}
if(result[0]==1&&result[1]==0&&result[2]==1&&result[3]==0)//判断校验码
for(i=0;i<8;i++){res+=pow(2,i)*result[11-i];}//将结果转换为十进制数据
return res;//返回得到的结果
}

void display(uchar dat)        //液晶数据显示
{
    uchar a,b;
a=dat/16;
b=dat%16;
if(a>9)
a=a+0;
if(b>9)
b=b+0;
write_com(0x80+0x4A);
write_data(table[a]);delay(5);
write_data(table[b]);delay(5);
}

void main()
{
init_1602();        //1602初始化
while(1)
{
dat=receive();
if(dat)                                  //显示
{
      write_com(0x80+0x08);
  write_data('O');delay(5);
  write_data('K');delay(5);
  write_data('!');delay(5);
  display(dat);
}
else
{
      write_com(0x80+0x08);
  write_data('N');delay(5);
  write_data('O');delay(5);
  write_data('!');delay(5);
  write_com(0x80+0x4A);
  write_data(' ');delay(5);
  write_data(' ');delay(5);
}
}
}
回复

使用道具 举报

ID:54731 发表于 2015-1-23 15:10 | 显示全部楼层
315Mhz无线模块单片机软解码接收程序:程序下载来看看,希望有人。
回复

使用道具 举报

ID:72950 发表于 2015-1-29 09:35 | 显示全部楼层
呵呵,先收藏了,马上要弄这个,屯资料!
回复

使用道具 举报

ID:54731 发表于 2015-1-31 17:24 | 显示全部楼层
315Mhz无线模块单片机软解码接收程序:我下载了,经过试验好像不行哦,
回复

使用道具 举报

ID:66871 发表于 2015-4-11 23:09 | 显示全部楼层
请问楼主接受灵敏度如何,怎么样保证远距离接收的可靠性
回复

使用道具 举报

ID:66287 发表于 2015-5-28 16:02 | 显示全部楼层
程序写的相当不错,赞一个
回复

使用道具 举报

ID:84912 发表于 2015-7-6 16:16 | 显示全部楼层
呵呵,先收藏了,马上要弄这个,屯资料!
回复

使用道具 举报

ID:84912 发表于 2015-7-6 16:16 | 显示全部楼层
程序写的相当不错,赞一个
回复

使用道具 举报

ID:86689 发表于 2015-7-27 23:00 来自手机 | 显示全部楼层
hjjleon 发表于 2015-7-6 16:16
呵呵,先收藏了,马上要弄这个,屯资料!

哥们,你做315m发射接收了吗?资料给我一份呗,我也要弄这个,有些不大懂,452634017@qq.com麻烦了
回复

使用道具 举报

ID:88560 发表于 2015-8-18 22:51 | 显示全部楼层
我也想做一个,先下载下来。
回复

使用道具 举报

ID:91418 发表于 2015-10-1 23:44 | 显示全部楼层
我有一个牛人搞的很不错的   不过不是C   是编译后的烧录软件   很牛的

评分

参与人数 1黑币 +35 收起 理由
admin + 35 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:91418 发表于 2015-10-1 23:44 | 显示全部楼层
我有个很牛的   谁要
回复

使用道具 举报

ID:91531 发表于 2016-1-2 08:31 来自手机 | 显示全部楼层
美丽人生美 发表于 2015-10-1 23:44
我有个很牛的   谁要

我想要,加我Q838284304
回复

使用道具 举报

ID:84495 发表于 2016-1-12 12:09 | 显示全部楼层
1602显示正常,就是收不到数据,我买的315和433的接收模块咋一模一样,发射用的2262,匹配电阻需要改动吗
回复

使用道具 举报

ID:84495 发表于 2016-1-12 12:11 | 显示全部楼层
还有这个晶振多少,12和11.0592都没反应
回复

使用道具 举报

ID:91418 发表于 2016-4-1 13:31 | 显示全部楼层
没用定时器和外中断吗,听说别人编这个程序是要用的   
回复

使用道具 举报

ID:116105 发表于 2016-4-23 12:23 | 显示全部楼层
美丽人生美 发表于 2015-10-1 23:44
我有个很牛的   谁要

多牛,我要
回复

使用道具 举报

ID:85941 发表于 2016-6-13 10:36 | 显示全部楼层
有没有配套的电路图?
回复

使用道具 举报

ID:130180 发表于 2016-7-14 15:40 | 显示全部楼层
看的不是太懂的
回复

使用道具 举报

ID:143016 发表于 2016-11-28 18:03 | 显示全部楼层
美丽人生美 发表于 2015-10-1 23:44
我有个很牛的   谁要

实现无线传输了吗
回复

使用道具 举报

ID:130231 发表于 2017-3-19 19:49 | 显示全部楼层
不错的资料,感谢楼主的分享。
回复

使用道具 举报

ID:112693 发表于 2017-6-1 20:42 | 显示全部楼层
楼主威武!!!
回复

使用道具 举报

ID:389488 发表于 2020-10-7 14:10 | 显示全部楼层
楼主出来解释一下啊  定时器和中断没有开 这个程序用不了吧
回复

使用道具 举报

ID:72088 发表于 2020-10-11 21:05 | 显示全部楼层
uestchina 发表于 2015-7-11 08:11
这个不是自适应的。LZ又没有告知解码晶体,发射的电阻。实际应用还要好好研究研究。

我写的程序是自适应震荡电阻的解码程序
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表