一款利用普通手持对讲机做测向信号源的控制电路及程序
一款利用普通手持对讲机做测向信号源的控制电路及程序
/*********************************************************************
程序名称:无线电测向信标控制板
程序说明:利用STC 15W104产生1Khz音频送入手台MIC,并控制手台PTT进行发射
引脚说明:P3.4产生1KHz音频,P3.5控制PTT,高电平触发
P3.0~P3.3 => 8421拨码开关IRC频率:6MHz2bit表达1个码 00停止符 01短 10长 11字符间隔 3倍短信标Moser码 1~5号有区别,其他一样
80米 2米
1号台 MOE -- --- · 1 (·----)
2号台 MOI -- --- ·· 2 (··---)
3号台 MOS -- --- ··· 3 (···--)
4号台 MOH -- --- ···· 4 (····-)
5号台 MO5 -- --- ····· 5 (·····)
6号台 6 -····
7号台 7 --···
8号台 8 ---··
9号台 9 ----·
0号台 0 -----
信标台 MO -----
**********************************************************************/#include <STC15F2K60S2.H>
#include <intrins.h>#define AUDIO_PIN P34#define PTT_PIN P33
#define PTT_ON PTT_PIN=1
#define PTT_OFF PTT_PIN=0volatile unsigned char gBeep=0;
volatile unsigned char gBeepMode=0x00; //00 一个周期完毕 01短 10长(3倍短) 11(停止3倍短)
volatile unsigned char gKeepTime=0; //定时器100ms 内调用
volatile unsigned char gRadioNum=0; //电台编号
volatile unsigned char gBeepCount=0; //信标发送次数//电码字典 全部按80米来
code const unsigned long gMoserArray[11]={0xAA800000, //0 0xAEAD0000, //MO10xAEAD4000, //MO20xAEAD5000, //MO30xAEAD5400, //MO40xAEAD5500, //MO50x95400000, //6 0xA5400000, //70xA9400000, //8 0xAA400000, //90xAEA00000//MO
};volatile unsigned long gMoser;//函数声明void Timer0Init();
void Timer2Init();
void pin_init();
void next_moser();
void select_radio_num();
void Delay1000ms() //@6.000MHz
{unsigned char i, j, k;_nop_();_nop_();i = 23;j = 205;k = 120;do{do{while (--k);} while (--j);} while (--i);
}void main(){pin_init();Delay1000ms();select_radio_num();Timer0Init();Timer2Init();EA = 1;//打开全局中断while(1){_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();}}void pin_init(){//01输出 10输入 00准双向 11开漏//P3.0 P3.1 P3.2 P3.3 输入//P3.4 P3.5 输出P3M1 = 0x00;ACC = P3M1;ACC |= (0x01<<0)|(0x01<<1)|(0x01<<2)|(0x01<<3);P3M1 = ACC;P3M0 = 0x00;ACC = P3M0;ACC |= (0x01<<4)|(0x01<<5);P3M0 = ACC;
}void Timer0Init(void) //500微秒@6.000MHz
{AUXR |= 0x80; //定时器时钟1T模式TMOD &= 0xF0; //设置定时器模式TL0 = 0x48; //设置定时初值TH0 = 0xF4; //设置定时初值TF0 = 0; //清除TF0标志TR0 = 1; //定时器0开始计时ET0 = 1; //打开定时器0中断,在寄存器IE中
}//定时器中断回调 500微秒
void timer0() interrupt 1{//500微秒if(gBeep){AUDIO_PIN = ~AUDIO_PIN;}//else{AUDIO_PIN=0;}
}void Timer2Init(void) //100毫秒@6.000MHz
{AUXR &= 0xFB; //定时器时钟12T模式T2L = 0xB0; //设置定时初值T2H = 0x3C; //设置定时初值AUXR |= 0x10; //定时器2开始计时IE2 |= (0x01<<2); //使能定时器2中断 在寄存器IE2中
}//定时器中断回调 100毫秒
void timer2() interrupt 12{select_radio_num(); //实时选台switch(gBeepMode){case 0x00:gBeep=0;if(gBeepCount++ <5 ){gKeepTime=0;gBeepMode=0x05; //一遍发完,停1秒发第2遍 }else{if(gKeepTime++ < 50){PTT_OFF;}else{//进入PTT按下500ms延时gBeepMode = 0x04;gKeepTime=0;gBeepCount=0;}}break;//bit 01,Di 1倍长度并静音1倍长度case 0x01:if(gKeepTime++ < 1){gBeep=1;}else{next_moser();}break;// bit 10, Dat 3倍长度,并静音1倍长度case 0x02:if(gKeepTime++ < 3){gBeep=1;}else{next_moser();}break;//bit 11 字符间隔 静音3倍长度case 0x03:if(gKeepTime++ < 3){gBeep=0;}else{next_moser();}break;//打开PTT后的延时 500mscase 0x04:if(gKeepTime++ < 5){PTT_ON;}else{gMoser=gMoserArray[gRadioNum];gBeepMode = (unsigned char)(gMoser>>30);gKeepTime=0;}break;//一遍发完,停1秒发第2遍,PTT不释放case 0x05:if(++gKeepTime >= 10){//重新装载数据gMoser=gMoserArray[gRadioNum];gKeepTime=0;gBeepMode = (unsigned char)(gMoser>>30);}break;}}void next_moser(){gBeep=0;gKeepTime=0;gBeepMode = (unsigned char)((gMoser<<2)>>30);
}//选择台号
void select_radio_num(){// P3.0 P3.1 P3.2 P3.3static unsigned char num=0;num = P3;num &= 0x0F;num = 15-num;if(num>10){num=10;}if(num == gRadioNum){return;}gRadioNum = num;gMoser = gMoserArray[gRadioNum];gBeep=0;gKeepTime=0;gBeepMode = (unsigned char)(gMoser>>30);}
一款利用普通手持对讲机做测向信号源的控制电路及程序相关推荐
- UOS利用系统安装光盘做本地apt源安装软件包
UOS利用系统安装光盘做本地apt源安装软件包 普通用户可能没有权限执行mount命令,因此建议使用root用户或具有sudo权限的用户执行如下操作. 1.可以使用系统安装光盘,或者系统ISO镜像制作 ...
- matlab实现盖尔圆,一种结合四阶累积量与盖尔圆改进的信号源个数估计方法与流程...
本发明涉及空间谱研究中信号源估计的技术领域,特别涉及一种结合四阶累积量与盖尔圆改进的信号源个数估计方法. 背景技术: 波达方向(DOA)估计算法是目前空间谱研究领域的一个热点问题,然而在实际情形下,波 ...
- 什么是微波通信?微波信号源如何去选择?------TFN TG 115
大家都知道,微波的发展是与无线通信的发展是分不开的. 我们把频率高于300MHz的电磁波称为微波.由于各波段的传播特性各异,因此,可以用于不同的通信系统.例如,中波主要沿地面传播,绕射能力强,适用于广 ...
- 如何利用大数据做金融风控? 原创 2016年11月24日 17:42:03 标签: 大数据 / 金融 / 风控 1594 导语:如何通过海量数据与欺诈风险进行博弈? 随着金融科技、科技金融等概念的
如何利用大数据做金融风控? 原创 2016年11月24日 17:42:03 标签: 大数据 / 金融 / 风控 1594 导语:如何通过海量数据与欺诈风险进行博弈? 随着金融科技.科技金融等概念的热起 ...
- (四十五:2021.08.05)《利用深度学习对ecg信号进行分割》
<Deep Learning for ECG Segmentation><利用深度学习对ecg信号进行分割> 讲在前面 摘要 1. 介绍 2. 算法 2.1 预处理 2.2 神 ...
- 开源情报分析(OSINT)CTF社工类2万字题详细教程,请不要利用本文章做不道德的事,后果概不负责
简介 现在国内外最新的ctf比赛都有这个项目了,列如给你一个照片找地址或者人名,给你一个名字找他的社交账号什么的,考验选手的信息收集与社工能力,这篇文章对这类题型做一个基础的总结,以后遇到这种题型就知 ...
- 蓝牙模块HC-05的调试(利用LED灯来检验信号是否能正常传输)
蓝牙模块HC-05的调试(利用LED灯来检验信号是否能正常传输) by hasyu 我所用到的硬件 BlueTooth HC-05,arduino 2560(uno也行吧) 电脑 手机 硬件的连接 不 ...
- 怎么利用手机App做任务赚钱
废话不多说,怎么利用手机App做任务赚钱,我们来看一下具体操作步骤: 首先我们电脑上下载好Total Control,这是一个电脑多控手机的软件,这类软件很多,但是这款软件是我发掘到的最好用最便宜的一 ...
- 利用dft对连续信号进行频谱分析_利用DFT对连续时间信号进行近似频谱分析过程中,减小栅栏效应的常用方法是_______;通过_______的方法可以提高频率分辨率。()...
利用DFT对连续时间信号进行近似频谱分析过程中,减小栅栏效应的常用方法是_______;通过_______的方法可以提高频率分辨率.() 答:减小采样间隔:提高采样点数 川乌既祛风湿,又能: 答:散寒 ...
最新文章
- mysql sql left right inner join区别及效率比较
- Python3.6+Django2.0+Xadmin2.0学生信息管理系统-2
- oracle存储过程 取时间格式,Oracle存储过程获取YYYY-MM-DD的时间格式
- C# 委托和事件 (三)
- Spring 解耦反射创建对象
- ubuntu16.04安装使用redis入门教程
- 动态规划: 投资分配问题
- 【Maven】阿里云镜像仓库
- python--实现汇率转换
- CSS基础的文字样式
- 全景krpano相关问题解答
- 制造业工厂需要关注的工业物联网解决方案
- 微型计算机系统中存储容量最大的部件,微型计算机中存储容量最大的部件是什么?...
- 有趣的兔子(斐波那契数列)
- Ubuntu磁盘分区和内存查看
- ffmpeg使用记录--解决了压制的视频在安卓不播放的问题
- java回调原理,以及Callable和FutureTask通过回调机制创建可监控的线程
- Python学习笔记05----条件、循环及其他语句
- android定位的速度方向如图所示,在Android中计算罗盘方位/前往位置
- 代码随想录算法训练营第一天
热门文章
- 多回路限流式保护箱在电动汽车充电站的应用-安科瑞耿敏花
- 七年级上册英语书人教版单词表第三单元
- 读《证券市场基础知识》(2012)-2 [通读篇]
- 内网渗透 | 信息收集
- android支付宝余额怎么做,android编程实现类似于支付宝余额快速闪动效果的方法...
- DirectFB的接口详解 .
- Python数据分析指南
- 手机端微信一键登录插件代码分享
- vscode 英伟达tk1_VS Code 有哪些必不可少的设置项?
- 知物由学 | 多级建模方法提升汉语语音识别效果,获ISCSLP大赛认可