单片机编码 无线模块发送与接收 程序

模块型号,可在万能的某宝搜索【超再生无线模块】

接收距离:空旷200米[这是卖家说的,有待考验]

接收端在没有收到讯号,会生成间歇性尖状脉冲,data接LED负极,5V接LED正极,可看见闪烁

【科普知识】

无线收发,天线计算公式:

电磁波的速度,30W公里每秒,即3X10^8m/s

频率的单位有MHZ,(兆赫兹),KHZ(千赫兹)HZ(赫兹),相互之间关系是1MHZ=1000KHZ=1000000HZ,

波长=速度/频率

前辈们经验告诉我们,1/4波长的天线是较靠谱的

315M的1/4波长天线计算公式,导线传播高频信号的缩短率在0.98

(300000000/315000000)/4*0.98=0.23333(M)=23.3(cm)

所以:

315M的天线长度选择23cm

433M的天线长度选择17cm

2.4G的模块天线选择3.1cm

5G  的模块天线选择1.5cm

材质:

尽量选用电阻率低的金属,如铜、银,金

本实验使用的433M的发射模块,发送端1.0纯铜天线长度17cm,

天线距离地面高度1.5米,竖直向天

接收端天线长度17cm~42cm可伸缩,竖直

测试环境:

5V供电,空旷环境,25米,无论接收天线再怎么伸缩,效果都不再稳定

再远就接收不到了,可能需要提高收发端电压能改善。

接线:

发送端:模块发射端data接STC12C5A60S2的 P1^1,P0.0接LED负极,LED正极接5V

接收端:数据data接STC12C4052AD的P3^4,P3^7接LED1负极 P1^7接LED2负极 LED正极都接5V

电平定义:

准备就绪:高电平6ms,4ms低电平

逻辑0:高电平1ms,低电平1ms

逻辑1:高电平1ms,低电平2ms

现象:

发射端发射4个数字,0x93,0x94,0x95,0x96,

接收端判断4个数字,0x93,0x94,0x95,0x96,

如果匹配,

0x93,控制LED1亮

0x94,控制LED1灭

0x95,控制LED2亮

0x96,控制LED2灭

发送端循环发送,接收端可以看到2个灯的亮灭,分别受4个数据的控制

【模块的样子】

【发送端】

【接收端】

========================================================================

【演示】

1,发射端没有上电,接收端LED不会闪烁

2,发送端上电

3,接收端,收到匹配的字符,判断对应的字符,开启关闭对应的LED

发送端程序【公开】

/************************************

程序名:    无线模块【发射端】程序

编写人:    春哥

编写时间:  2015年10月31日

硬件支持:  STC12C5A60S2 外部晶体12MHz

接口说明:  P0.0接口发射,发送时LED亮,发送结束LED熄灭

/***********************************/

#include  //单片机头文件

sbit OUT  = P1 ^ 0;

sbit LED  = P0 ^ 0;

void DELAY_MS (unsigned int a){

unsigned int i;

while( a-- != 0){

for(i = 0; i

}

}

void ST (void){//开始码

OUT = 1; //

DELAY_MS (6);

OUT = 0; //

DELAY_MS (4);

}

void BT (bit s){//数据位码

OUT = 1;

DELAY_MS (1);

OUT = 0;

DELAY_MS (1);

if(s){

DELAY_MS (1);

}

}

void MT (unsigned char a){  //8位的数据发送

unsigned char i,n;

for(i=0;i<8;i++){

n = a & 0x80;

a = a <

if(n == 0x80){

BT(1);

}else{

BT(0);

}

}

}

void END (void){//开始码

MT(0xFF);

}

void main (void){

while(1){

LED=0; // 开始发送 LDE灯亮

ST();

MT(0x93);

MT(0x94);

MT(0x95);

MT(0x96);

END();

LED=1;  // 发送结束,LED熄灭

DELAY_MS (1000);

}

}

接收端程序【公开】

/************************************

程序名:    无线模块【接收】程序

编写人:    春哥

编写时间:  2015年10月31日

硬件支持:  STC12C4052AD 外部晶体12MHz

接口说明:  P3.4接口 接无线data

***************************************/

#include  //单片机头文件

sbit IN =P3^4;

sbit LED1=P3^7;

sbit LED2=P1^7;

unsigned char Ir_Buf[4]; //用于保存4个8位的解码结果

void DELAY_MS (unsigned int a){

unsigned int i;

while( a-- != 0){

for(i = 0; i

}

}

unsigned int Ir_Get_Low()

{

TL1=0;

TH1=0;

TR1=1;

// 如果是0就循环,不能超过32.768ms

while(!IN && (TH1&0x80)==0);

TR1=0;

return TH1*256+TL1;

}

unsigned int Ir_Get_High()

{

TL1=0;

TH1=0;

TR1=1;

// 如果是1就循环,不能超过32.768ms

while(IN && (TH1&0x80)==0);

TR1=0;

return TH1*256+TL1;

}

void main(void){

unsigned int temp;

unsigned char i,j;

TMOD=0x10; // 使用定时器1,设定16位的定时/计数器

while(1){

restart:

while(!IN);

// 检查发送准备就绪,去除杂波干扰

temp=Ir_Get_High(); //循环发送4个8位的 6毫秒高电平  标记判断

if(temp<5000 || temp>8000){goto restart;}

temp=Ir_Get_Low();  //循环发送4个8位的 4毫秒低电平  标记判断

if(temp<3000 || temp>6000){goto restart;}

// 只有上面的两个标记都通过了,说明发送端 准备好了

for(i=0;i<4;i++){    //接收4个字节

for(j=0;j<8;j++){  //每个字节8位

// 检验数据开始的高电平长度

temp=Ir_Get_High();

if(temp<500 || temp>1500){ goto restart;}

// 检验低电平长度

temp=Ir_Get_Low();

if(temp<500 || temp>2500){ goto restart;}

Ir_Buf[i]<<=1;  // 第一位默认写零

if(temp>1500) { Ir_Buf[i]|=0x01; } // 比较是0还是1 或运算1

}

}

if(Ir_Buf[0]==0x93) LED1=0; // 如果接收到0x93,LED1亮1000MS

DELAY_MS (1000);

if(Ir_Buf[1]==0x94) LED1=1; // 如果接收到0x94,LED1灭500MS

DELAY_MS (500);

if(Ir_Buf[2]==0x95) LED2=0; // 如果接收到0x95,LED2亮1000MS

DELAY_MS (1000);

if(Ir_Buf[3]==0x96) LED2=1; // 如果接收到0x96,LED2灭500MS

DELAY_MS (500);

}

}

要思考的问题:

怎么才能使我的电报不能有误码,即使被别人截获也无法读取

关于数据校验:

奇偶校验

源码校验

反码校验

CRC校验

MD5校验

求和校验

传输加密:

异或,

单片机无线模块编码和解码c语言,单片机编码 无线模块发送与接收 程序相关推荐

  1. 无线发射器c语言程序代码,单片机编码 无线模块发送与接收 程序

    单片机编码 无线模块发送与接收 程序 模块型号,可在万能的某宝搜索[超再生无线模块] 接收距离:空旷200米[这是卖家说的,有待考验] 接收端在没有收到讯号,会生成间歇性尖状脉冲,data接LED负极 ...

  2. python3编码和解码_python3的url编码和解码,自定义gbk、utf-8的例子

    因为很多时候要涉及到url的编码和解码工作,所以自己制作了一个类,废话不多说 码上见! # coding:utf-8 import urllib.parse class Urlchuli(): &qu ...

  3. python编码和解码_Python中的编码与解码(转)

    Python中的字符编码与解码困扰了我很久了,一直没有认真整理过,这次下静下心来整理了一下我对方面知识的理解. 文章中对有些知识没有做深入的探讨,一是我自己也没有去深入的了解,例如各种编码方案的实现方 ...

  4. 费诺编码实验报告c语言,信息论编码实验报告费诺编码附源代码..doc

    信息论编码实验报告费诺编码附源代码. 中南大学 信息论与编码实验报告 选 题: 费诺编码 学生姓名: 学 号: 专业班级: 通信工程 指导老师: 学 院: 信息科学与工程学院 时 间: 2015 目录 ...

  5. URL编码和解码 C++类URL编码和解码使用技巧

    想了解C++类URL编码和解码使用技巧的相关内容吗,在本文为您仔细讲解URL编码和解码的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:URL编码,解码,下面大家一起来学习吧. 在项目开发过 ...

  6. btoa java_javascript atob()函数和 btoa()函数-Base64的编码与解码-Go语言中文社区

    在 JavaScript 中,有两个函数被分别用来处理解码和编码 base64 字符串: atob() //ASCII to Base64 btoa() //Base64 to ASCII atob( ...

  7. python文件编码与解码_Python读取文件编码解码问题

    原博文 2018-04-19 12:51 − #### 用chardet检测编码 ``` import chardet raw = open("model.json", 'rb') ...

  8. 单片机音乐播放器课程设计C语言,单片机课程设计简易音乐播放器

    单片机课程设计简易音乐播放器 论文题目:简易音乐播放器所属系部:电子工程系 指导教师: 学生姓名: 学 号: 专 业: 电子信息工程技术 题目: 简易音乐播放器任务与要求:本设计以 MCS-51 系列 ...

  9. js 编码、解码与asp.net 编码、解码

    js对URL提供:escape,encodeURI,encodeURIComponent 的编码方法encodeURIComponent:推荐使用,它是将中文.韩文等特殊字符转换成utf-8格式的ur ...

最新文章

  1. 【牛腩新闻发布系统】整合前台04
  2. 【自然框架】之“元数据”的威力
  3. Jmeter使用基础笔记-写一个http请求
  4. 神经网络的分类行为怎么就不能是一种力的行为?
  5. 要买东西,要买好的,提高效率,经常用的
  6. 后台服务系统之dubbo架构
  7. 如何优化 .NET Core 中的 lambda 查询表达式 ?
  8. 英语常见介词错误用法,你有犯过吗?
  9. 输入一批整数,输出最大最小值,输入0结束
  10. 十分钟,我搞定了一个人物检测模型
  11. 10月31 安装redis报错
  12. 2021-08-08 mysql索引
  13. BZOJ4456 ZJOI2016旅行者(分治+最短路)
  14. JavaScript培训
  15. oracle11g数据库导入导出方法教程
  16. java工作一年面试题_一年java工作经验的面试题总结(持续更新中)
  17. [宝塔]配置ssl证书,提示错误:证书错误,请粘贴正确的PEM格式证书
  18. android 带刻度的滑动条_Android自定义滑动刻度尺
  19. 用户故事地图(User Story Mapping)之初体验
  20. python表白代码,照片隐藏表白话语

热门文章

  1. 七日杀服务器文件翻译,七日杀items文件翻译 | 手游网游页游攻略大全
  2. 使用html+js实现视频播放器
  3. ( 一. 信息技术与计算机文化基本概念)
  4. 同人文学研究的粗略数据
  5. java生成微信二维码,带页面跳转功能
  6. 可画在线编辑工具怎么调整海报设计元素的位置
  7. 电脑管家急救箱linux,电脑管家系统急救箱怎么卸载,开机有电脑管家急救箱选项...
  8. 傲游linux32bit,傲游浏览器32位下载
  9. 前端跳转失败,例如返回按钮,js跳转失败的踩坑原因之一
  10. windowslinux服务器之间的文件传输方法汇总