一款利用普通手持对讲机做测向信号源的控制电路及程序

/*********************************************************************
程序名称:无线电测向信标控制板
程序说明:利用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);}

一款利用普通手持对讲机做测向信号源的控制电路及程序相关推荐

  1. UOS利用系统安装光盘做本地apt源安装软件包

    UOS利用系统安装光盘做本地apt源安装软件包 普通用户可能没有权限执行mount命令,因此建议使用root用户或具有sudo权限的用户执行如下操作. 1.可以使用系统安装光盘,或者系统ISO镜像制作 ...

  2. matlab实现盖尔圆,一种结合四阶累积量与盖尔圆改进的信号源个数估计方法与流程...

    本发明涉及空间谱研究中信号源估计的技术领域,特别涉及一种结合四阶累积量与盖尔圆改进的信号源个数估计方法. 背景技术: 波达方向(DOA)估计算法是目前空间谱研究领域的一个热点问题,然而在实际情形下,波 ...

  3. 什么是微波通信?微波信号源如何去选择?------TFN TG 115

    大家都知道,微波的发展是与无线通信的发展是分不开的. 我们把频率高于300MHz的电磁波称为微波.由于各波段的传播特性各异,因此,可以用于不同的通信系统.例如,中波主要沿地面传播,绕射能力强,适用于广 ...

  4. 如何利用大数据做金融风控? 原创 2016年11月24日 17:42:03 标签: 大数据 / 金融 / 风控 1594 导语:如何通过海量数据与欺诈风险进行博弈? 随着金融科技、科技金融等概念的

    如何利用大数据做金融风控? 原创 2016年11月24日 17:42:03 标签: 大数据 / 金融 / 风控 1594 导语:如何通过海量数据与欺诈风险进行博弈? 随着金融科技.科技金融等概念的热起 ...

  5. (四十五:2021.08.05)《利用深度学习对ecg信号进行分割》

    <Deep Learning for ECG Segmentation><利用深度学习对ecg信号进行分割> 讲在前面 摘要 1. 介绍 2. 算法 2.1 预处理 2.2 神 ...

  6. 开源情报分析(OSINT)CTF社工类2万字题详细教程,请不要利用本文章做不道德的事,后果概不负责

    简介 现在国内外最新的ctf比赛都有这个项目了,列如给你一个照片找地址或者人名,给你一个名字找他的社交账号什么的,考验选手的信息收集与社工能力,这篇文章对这类题型做一个基础的总结,以后遇到这种题型就知 ...

  7. 蓝牙模块HC-05的调试(利用LED灯来检验信号是否能正常传输)

    蓝牙模块HC-05的调试(利用LED灯来检验信号是否能正常传输) by hasyu 我所用到的硬件 BlueTooth HC-05,arduino 2560(uno也行吧) 电脑 手机 硬件的连接 不 ...

  8. 怎么利用手机App做任务赚钱

    废话不多说,怎么利用手机App做任务赚钱,我们来看一下具体操作步骤: 首先我们电脑上下载好Total Control,这是一个电脑多控手机的软件,这类软件很多,但是这款软件是我发掘到的最好用最便宜的一 ...

  9. 利用dft对连续信号进行频谱分析_利用DFT对连续时间信号进行近似频谱分析过程中,减小栅栏效应的常用方法是_______;通过_______的方法可以提高频率分辨率。()...

    利用DFT对连续时间信号进行近似频谱分析过程中,减小栅栏效应的常用方法是_______;通过_______的方法可以提高频率分辨率.() 答:减小采样间隔:提高采样点数 川乌既祛风湿,又能: 答:散寒 ...

最新文章

  1. mysql sql left right inner join区别及效率比较
  2. Python3.6+Django2.0+Xadmin2.0学生信息管理系统-2
  3. oracle存储过程 取时间格式,Oracle存储过程获取YYYY-MM-DD的时间格式
  4. C# 委托和事件 (三)
  5. Spring 解耦反射创建对象
  6. ubuntu16.04安装使用redis入门教程
  7. 动态规划: 投资分配问题
  8. 【Maven】阿里云镜像仓库
  9. python--实现汇率转换
  10. CSS基础的文字样式
  11. 全景krpano相关问题解答
  12. 制造业工厂需要关注的工业物联网解决方案
  13. 微型计算机系统中存储容量最大的部件,微型计算机中存储容量最大的部件是什么?...
  14. 有趣的兔子(斐波那契数列)
  15. Ubuntu磁盘分区和内存查看
  16. ffmpeg使用记录--解决了压制的视频在安卓不播放的问题
  17. java回调原理,以及Callable和FutureTask通过回调机制创建可监控的线程
  18. Python学习笔记05----条件、循环及其他语句
  19. android定位的速度方向如图所示,在Android中计算罗盘方位/前往位置
  20. 代码随想录算法训练营第一天

热门文章

  1. 多回路限流式保护箱在电动汽车充电站的应用-安科瑞耿敏花
  2. 七年级上册英语书人教版单词表第三单元
  3. 读《证券市场基础知识》(2012)-2 [通读篇]
  4. 内网渗透 | 信息收集
  5. android支付宝余额怎么做,android编程实现类似于支付宝余额快速闪动效果的方法...
  6. DirectFB的接口详解 .
  7. Python数据分析指南
  8. 手机端微信一键登录插件代码分享
  9. vscode 英伟达tk1_VS Code 有哪些必不可少的设置项?
  10. 知物由学 | 多级建模方法提升汉语语音识别效果,获ISCSLP大赛认可