骆驼调频

Camel's FM Blog

BH1415F 500mW调频发射机制作

By 骆驼 • 2 8th, 2008 • Category: FMRSS 2.0 Trackback

骆驼: 本文是对wang1jin(老友:小色爱)为EDNCHINA.COM设计的RF调频发射板作进一步分析,供朋友们制作参考.此PCB板可在EDNCHINA免费申请.需要的朋友可参考相关网站了解详情.

(网站程序原因,图片看不清楚可另存到本地查看)

bh1415 500mW调频发射机制作
BH1415调频发射机系统方框图,由STC2052+LCD1602+M62429+BH1415+MIC+键盘红外和高频放大部分组成. 

bh1415 500mW调频发射机制作
本调频发射机电源部分,输入需12V1A,IN4007为电源极性保护,当电源接反时不至于烧坏发射机元件,12V电源经LM7805整流后向发射机提供+5V工作电压.

bh1415 500mW调频发射机制作
发射机音频控制部分由M62429完成,M62429为一音量控制IC,音量从0DB-83DB可调,可通过单片机对音量进行控制.

bh1415 500mW调频发射机制作
MIC话筒部分,S7为一跳线,当采用驻极体话筒时短接为驻极体话筒提供工作电压,断开时可以直接使用动圈话筒,S8为话筒信号输出跳线,短接时将信号输出到BH1415F与音频信号混合进行信号调制.

bh1415 500mW调频发射机制作
BH1415调频发射机MCU单片机控制电路,由STC12C2052完成控制,复位电路可以不装,不装复位电路时STC12C2052的第一脚需接地.上图第一部分为复位电路,第二部分为晶振电路,第三部分为STC12C2052,第四部分为RS232接口,用于与电脑进行连接用相关程序进行控制,可以不用此部分.

bh1415 500mW调频发射机制作
LCD显示部分,LCD1602与SSHT1621LCD只选用一部分,视自己制作方便了.LCD1602 采用的是四位总线方式.后一部分为电子电源开关,由单片机进行控制.

bh1415 500mW调频发射机制作
控制键盘,红外接收头电路,红外电路实现遥控来代替手动操作的功能(可不用)(需要程序支持),键盘电路是采用四个按键的方式来完成操作,注意键盘和LCD 的IO口是复用的方式.

bh1415 500mW调频发射机制作
BH1415F锁相环调频发射IC及外围元件电路图,由本电路完成对音频信号的调制,电路输出的已经是调频信号了,不用后级放大电路BH1415也能发射几十米远了.

bh1415 500mW调频发射机制作
发射机功率放大电路,由BH1415F输出的信号经2SC9018,2SC3355,2SC2053放大后信号可达到500mW以上,调整得好能达到更大的功率.经实测采用拉杆天线在开阔地可发射800米以上.采用外接天线会发射得更远.注意,在安装调试时2053需要接上假负载,否则很容易烧坏2053,业余制作可用50欧2W电阻代替.安装调试时,三级电路可逐级安装调试.

bh1415 500mW调频发射机制作
阻抗匹配及滤波电路,2053后级放大电路采用的是D类放大电路,去除失真的波型,使输出到天线的信号波型为正弦波.

bh1415 500mW调频发射机制作

发射机测试电路,可以用来驱动直流电压表,可以直接接数字万用表直流电压档.接到每一放大输出级调试到显示电压最大.

bh1415-1.jpg
装好的发射板成品图

bm1415-2.jpg

LCD1602四位总线驱动程序,供大家参考,已在STC2052,晶振11.0592MHZ测试通过.

#include<at89x52.h><br />
#define uchar unsigned char<br />
#define uint unsigned intsbit LCD_RS = P3^3;<br />
sbit LCD_RW = P3^4;<br />
sbit LCD_EN = P3^5;</p>
<p>#define LCD_DATA P1</p>
<p>void LCD_Initial(void);<br />
void Read_Busb(void);<br />
void Write_Instruction(uchar In_data);<br />
void Write_Data(uchar In_data);<br />
void Delay(uint Time);<br />
void Display_OneText(uchar x,y,In_data);</p>
<p>void main()<br />
{<br />
Delay(10000);<br />
LCD_Initial();<br />
Display_OneText(0,1,'w');<br />
Display_OneText(1,1,'a');<br />
Display_OneText(2,1,'n');<br />
Display_OneText(3,1,'g');<br />
Display_OneText(4,1,'1');<br />
Display_OneText(5,1,'j');<br />
Display_OneText(6,1,'i');<br />
Display_OneText(7,1,'n');<br />
Display_OneText(8,1,'@');<br />
Display_OneText(9,1,'1');<br />
Display_OneText(10,1,'6');<br />
Display_OneText(11,1,'3');<br />
Display_OneText(12,1,'.');<br />
Display_OneText(13,1,'c');<br />
Display_OneText(14,1,'o');<br />
Display_OneText(15,1,'m');<br />
while(1);<br />
}<br />
void LCD_Initial(void)<br />
{<br />
Delay(10000);<br />
Write_Instruction(0x32);//这个和LCD有关...有人用22 有人用28...看个人了...<br />
Write_Instruction(0x06);<br />
Write_Instruction(0x0c);<br />
}</p>
<p>//读忙;<br />
void Read_Busb(void)<br />
{<br />
LCD_RS=0;<br />
LCD_RW=1;<br />
LCD_EN=0;<br />
LCD_EN=1;<br />
LCD_DATA&=0x0f;<br />
while(LCD_DATA&0x08);<br />
}</p>
<p>//写指令;<br />
void Write_Instruction(uchar In_data)<br />
{<br />
uchar i;<br />
Read_Busb();<br />
i="In"_data&gt;&gt;4;<br />
LCD_EN=0;<br />
LCD_RS=0;<br />
LCD_RW=0;<br />
LCD_EN=1;<br />
LCD_DATA=i;<br />
Delay(100);<br />
LCD_EN=0;<br />
i="In"_data;<br />
LCD_EN=1;<br />
LCD_DATA=i;<br />
Delay(100);<br />
LCD_EN=0;<br />
}</p>
<p>//写数据;<br />
void Write_Data(uchar In_data)<br />
{<br />
uchar i;<br />
Read_Busb();<br />
i="In"_data&gt;&gt;4;<br />
LCD_EN=0;<br />
LCD_RS=1;<br />
LCD_RW=0;<br />
LCD_EN=1;<br />
LCD_DATA=i;<br />
Delay(100);<br />
LCD_EN=0;<br />
i="In"_data;<br />
LCD_EN=1;<br />
LCD_DATA=i;<br />
Delay(100);<br />
LCD_EN=0;<br />
}</p>
<p>//在某一指定地址显示一个字符;<br />
void Display_OneText(uchar x,y,In_data)<br />
{<br />
y&=0x01;<br />
x&=0x0f;<br />
if(y)<br />
{<br />
x|=0x40;<br />
}<br />
x|=0x80;<br />
Write_Instruction(x);<br />
Write_Data(In_data);<br />
}</p>
<p>//延时;<br />
void Delay(uint Time)<br />
{<br />
uint a;<br />
for(a=0;a<time;a++);<br />
</time;a++);<br />
}</p>
<p>

Leave a Reply