導航:首頁 > 裝置知識 > 51紅外無線通信裝置設計

51紅外無線通信裝置設計

發布時間:2022-07-10 02:16:13

❶ 51單片機無線通信

如果你用分離元件搭的收發電路能正常工作的話,接收端需要加AD將接收到的信號轉化為單片機可識別的數字信號,發射的話,你如果只用一個I/O口的話,需要一個移位寄存器進行串並轉換,將轉換後的數據進行DA轉換,然後輸出到調制器即可。至於頻率的問題,如果你輸出的頻率足夠高的話就沒必要調制,直接放大發射,那麼接收端顯然不用解調,直接接收得了,你輸出的頻率要受DA速度的限制,不會很高。

❷ 急需基於51單片機的紅外遙控開關的設計原理圖和程序(c語言版)

/*------------------------------------------------*/
#include<reg52.h> //包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義

sbit IR=P3^2; //紅外介面標志

#define DataPort P0 //定義數據埠 程序中遇到DataPort 則用P0 替換
sbit DUAN=P2^6;//定義鎖存使能埠 段鎖存
sbit WEI=P2^7;// 位鎖存
/*------------------------------------------------
全局變數聲明
------------------------------------------------*/
unsigned char code dofly_DuanMa[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};// 顯示段碼值0~F
unsigned char code dofly_WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分別對應相應的數碼管點亮,即位碼
unsigned char TempData[8]; //存儲顯示值的全局變數
unsigned char irtime;//紅外用全局變數

bit irpro_ok,irok;
unsigned char IRcord[4];
unsigned char irdata[33];

/*------------------------------------------------
函數聲明
------------------------------------------------*/

void Ir_work(void);
void Ircordpro(void);
/*------------------------------------------------
顯示函數,用於動態掃描數碼管
輸入參數 FirstBit 表示需要顯示的第一位,如賦值2表示從第三個數碼管開始顯示
如輸入0表示從第一個顯示。
Num表示需要顯示的位數,如需要顯示99兩位數值則該值輸入2
------------------------------------------------*/
void Display(unsigned char FirstBit,unsigned char Num)
{
static unsigned char i=0;

DataPort=0; //清空數據,防止有交替重影
DUAN=1; //段鎖存
DUAN=0;

DataPort=dofly_WeiMa[i+FirstBit]; //取位碼
WEI=1; //位鎖存
WEI=0;

DataPort=TempData[i]; //取顯示數據,段碼
DUAN=1; //段鎖存
DUAN=0;

i++;
if(i==Num)
i=0;

}
/*------------------------------------------------
定時器0中斷處理
------------------------------------------------*/

void tim0_isr (void) interrupt 1 using 1
{
irtime++; //用於計數2個下降沿之間的時間
}
/*------------------------------------------------
定時器中斷子程序
------------------------------------------------*/
void Timer1_isr(void) interrupt 3
{

TH1=(65536-2000)/256; //重新賦值 2ms
TL1=(65536-2000)%256;

Display(0,8); // 調用數碼管掃描

}
/*------------------------------------------------
外部中斷0中斷處理
------------------------------------------------*/
void EX0_ISR (void) interrupt 0 //外部中斷0服務函數
{
static unsigned char i; //接收紅外信號處理
static bit startflag; //是否開始處理標志位

if(startflag)
{
if(irtime<63&&irtime>=33)//引導碼 TC9012的頭碼,9ms+4.5ms
i=0;
irdata[i]=irtime;//存儲每個電平的持續時間,用於以後判斷是0還是1
irtime=0;
i++;
if(i==33)
{
irok=1;
i=0;
}
}
else
{
irtime=0;
startflag=1;
}

}

/*------------------------------------------------
定時器0初始化
------------------------------------------------*/
void TIM0init(void)//定時器0初始化
{

TMOD=0x02;//定時器0工作方式2,TH0是重裝值,TL0是初值
TH0=0x00; //重載值
TL0=0x00; //初始化值
ET0=1; //開中斷
TR0=1;
}
/*------------------------------------------------
定時器初始化子程序
------------------------------------------------*/
void Init_Timer1(void)
{
TMOD |= 0x01; //使用模式1,16位定時器,使用"|"符號可以在使用多個定時器時不受影響
//TH1=0x00; //給定初值
//TL1=0x00;
EA=1; //總中斷打開
ET1=1; //定時器中斷打開
TR1=1; //定時器開關打開
}
/*------------------------------------------------
外部中斷0初始化
------------------------------------------------*/
void EX0init(void)
{
IT0 = 1; //指定外部中斷0下降沿觸發,INT0 (P3.2)
EX0 = 1; //使能外部中斷
EA = 1; //開總中斷
}
/*------------------------------------------------
鍵值處理
------------------------------------------------*/

void Ir_work(void)//紅外鍵值散轉程序
{

TempData[0]=dofly_DuanMa[IRcord[0]/16];
TempData[1]=dofly_DuanMa[IRcord[0]%16];
TempData[2]=dofly_DuanMa[IRcord[1]/16];
TempData[3]=dofly_DuanMa[IRcord[1]%16];
TempData[4]=dofly_DuanMa[IRcord[2]/16];
TempData[5]=dofly_DuanMa[IRcord[2]%16];
TempData[6]=dofly_DuanMa[IRcord[3]/16];
TempData[7]=dofly_DuanMa[IRcord[3]%16];
//Display(0,8); // 調用數碼管掃描
irpro_ok=0;//處理完成標志

}
/*------------------------------------------------
紅外碼值處理
------------------------------------------------*/
void Ircordpro(void)//紅外碼值處理函數
{
unsigned char i, j, k;
unsigned char cord,value;

k=1;
for(i=0;i<4;i++) //處理4個位元組
{
for(j=1;j<=8;j++) //處理1個位元組8位
{
cord=irdata[k];
if(cord>7)//大於某值為1,這個和晶振有絕對關系,這里使用12M計算,此值可以有一定誤差
value|=0x80;
if(j<8)
{
value>>=1;
}
k++;
}
IRcord[i]=value;
value=0;
}
irpro_ok=1;//處理完畢標志位置1
}

/*------------------------------------------------
主函數
------------------------------------------------*/
void main(void)
{
EX0init(); //初始化外部中斷
TIM0init();//初始化定時器
Init_Timer1();

while(1)//主循環
{
if(irok) //如果接收好了進行紅外處理
{
Ircordpro();
irok=0;
}

if(irpro_ok) //如果處理好後進行工作處理,如按對應的按鍵後顯示對應的數字等
{
Ir_work();
}
}
}

51P3^2是外部中斷,紅外接收管接這個引腳就能接收到數據然後顯示在數碼管上

❸ 51單片機紅外接收端的程序怎麼寫,我想知道寫的方法和原理,最好有一個具體的模版,好讓我參考.

這是採用STC12C5A60S2單片機的紅外解碼程序及其說明。
;採用脈寬調制的串列碼,以脈寬為0.565ms、間隔0.56ms、周期為1.125ms的組合表示二進制的"0";
;以脈寬為0.565ms、間隔1.685ms、周期為2.25ms的組合表示二進制的"1
;上述"0"和"1"組成的32位二進制碼經38kHz的載頻進行二次調制以提高發射效率,
;達到降低電源功耗的目的。然後再通過紅外發射二極體產生紅外線向空間發射
;遙控編碼是連續的32位二進制碼組,其中前16位為用戶識別碼,能區別不同的電器設備
;防止不同機種遙控碼互相干擾。該晶元的用戶識別碼固定為十六進制01H
;後16位為8位操作碼(功能碼)及其反碼。
;當一個鍵按下超過36ms,振盪器使晶元激活,將發射一組108ms的編碼脈沖,這108ms發射代碼由一個起始碼(9ms),
;一個結果碼(4.5ms),低8位地址碼(9ms~18ms),高8位地址碼(9ms~18ms),8位數據碼(9ms~18ms)
;和這8位數據的反碼(9ms~18ms)組成。如果鍵按下超過108ms仍未松開,
;接下來發射的代碼(連發代碼)將僅由起始碼(9ms)和結束碼(2.5ms)組成。
;
;解碼的關鍵是如何識別"0"和"1",接收端而言,"0"是0.56ms的高+0.56ms的低。"1"是1.68ms的高+0.56ms的低。
;所以可以根據高電平的寬度區別"0"和"1"。當高電平出現時開始延時,0.56ms以後,若讀到的電平為低,
;說明該位為"0",反之則為"1",為了可靠起見,延時必須比0.56ms長些,但又不能超過1.12ms,否則如果該位為"0",
;讀到的已是下一位的高電平,因此取(1.12ms+0.56ms)/2=0.84ms最為可靠,一般取0.84ms左右均可。
;為了共用引導部分延時程序,這里用0.9ms延時。
;-------------紅外解碼程序---------------------------
EXINT0:
PUSH ACC
PUSH PSW
PUSH 1
PUSH 2
PUSH 6
CLR EA ;暫時關閉中斷請求
MOV R6,#10
EXINT10:
LCALL DELAY09MS ;調用900us延時子程序
JB IRIN,INTOUT1 ;判斷P3.2是否有高電平,如果有就退出解碼程序
DJNZ R6,EXINT10 ;循環10次,檢測在900微妙中是否存在高電平。以上完成對遙控信號的9000微秒的初始低電平信號的識別。
JNB IRIN,$ ;等待高電平避開9毫秒低電平引導脈沖
LCALL DELAY45MS ;延時4.5毫秒
;-------------接受32位代碼--------------------------
MOV R1,#IRUSERL
MOV R2,#04H
EXINT101:
MOV R6,#08H ;每組數據位8位
EXINT102:
JNB IRIN,$ ;等待地址碼第一組數據的高電平信號
LCALL DELAY09MS ;高電平開始後延時判斷信號此時的高/低狀態
MOV C,IRIN ;將P3.2引腳此時的電平狀態0或1存入C中
JNC INT1OUT ;如果為0跳出
LCALL DELAY1MS
INT1OUT:
MOV A,@R1
RRC A ;將C中的數據0/1移入A中最低位
MOV @R1,A ;將A中的數據暫存在R1
DJNZ R6,EXINT102 ;接受完8位代碼
INC R1
DJNZ R2,EXINT101 ;接受完4組32位代碼
;--------------數據碼比較-------------------------------
MOV A,IRDATAL
; LCALL SENDRXDAT
MOV A,IRDATAL
CPL A
CJNE A,IRDATAH,INTOUT1 ;判斷數碼正誤,不等退出
MOV IR_DAT,IRDATAL ;相等則保存正確數據
MOV A,IR_DAT
; LCALL SENDRXDAT
SETB IRBIT
INTOUT1:
LCALL DELAY45MS
SETB EA ;允許中斷
POP 6
POP 2
POP 1
POP PSW
POP ACC
RETI
;;*****************11.0592*900=9953******************
DELAY09MS: ;6
PUSH 4 ;4
PUSH 3 ;4
MOV R4,#20 ;2
DLY900:
MOV R3,#122 ;2
DJNZ R3,$ ;4
DJNZ R4,DLY900 ;4
MOV R4,#11 ;2
DJNZ R4,$ ;4
POP 3 ;3
POP 4 ;3
RET ;4
;TOTAL=9952
;;*****************11.0592*560=6193******************
DELAY056: ;6
PUSH 4 ;4
PUSH 3 ;4
MOV R4,#12 ;2
DLY5600:
MOV R3,#122 ;2
DJNZ R3,$ ;4
DJNZ R4,DLY5600 ;4
MOV R4,#71 ;2
DJNZ R4,$ ;4
POP 3 ;3
POP 4 ;3
RET ;4
;TOTAL=6194
;;*****************11.0592*4500=49766****************
DELAY45MS: ;6
PUSH 4 ;4
PUSH 3 ;4
MOV R4,#52 ;2
DLY45:
MOV R3,#236 ;2
DJNZ R3,$ ;4
DJNZ R4,DLY45 ;4
MOV R4,#85 ;2
DJNZ R4,$ ;4
POP 3 ;3
POP 4 ;3
RET ;4
;;TOTAL=49768
;;*****************11.0592*1000=11059****************
DELAY1MS: ;6
PUSH 4 ;4
PUSH 3 ;4
MOV R4,#20 ;2
DLY1MS:
MOV R3,#136 ;2
DJNZ R3,$ ;4
DJNZ R4,DLY1MS ;4
MOV R4,#8 ;2
DJNZ R4,$ ;4
POP 3 ;3
POP 4 ;3
RET ;4
;TOTAL=11060
;;***************************************************
DELAY100US: ;6
PUSH 4 ;4
MOV R4,#140 ;2
DJNZ R4,$ ;4
MOV R4,#131 ;2
DJNZ R4,$ ;4
POP 4 ;3
RET ;4
;TOTAL=1105
;;***************************************************

❹ 簡易紅外線通信電路的設計製作

簡易紅外線通信電路的設計,首先將需要發射的語音信號調制到載波信號中,然後以紅外反射管發射出去。另一端用光敏電阻或二極體接收,並解調。可以使用555實現調制和解調。

❺ 51單片機怎麼接受紅外線 C語言

單片機本身不能接收,只是控制器,要另加電路才能接受。

❻ 求單片機C51紅外線收發方案(最好有詳細解釋)

紅外線遙控器解碼程序
2007-02-07 18:52 紅外線遙控是目前使用最廣泛的一種通信和遙控手段。由於紅外線遙控裝置具有體積小、功耗低、功能強、成本低等特點,因而,繼彩電、錄像機之後,在錄音機、音響設備、空凋機以及玩具等其它小型電器裝置上也紛紛採用紅外線遙控。現在工業設備中,也已經廣泛在使用。。。。。

1 紅外遙控系統
通用紅外遙控系統由發射和接收兩大部分組成,應用編/解碼專用集成電路晶元來進行控制操作,如圖1所示。發射部分包括鍵盤矩陣、編碼調制、LED紅外發送器;接收部分包括光、電轉換放大器、解調、解碼電路。
2 遙控發射器及其編碼
遙控發射器專用晶元很多,根據編碼格式可以分成脈沖寬度調制和脈沖相位調制兩大類,這里我們以運用比較廣泛,解碼比較容易的脈沖寬度調制來加以說明,現以3310組成發射電路為例說明編碼原理。當發射器按鍵按下後,即有遙控碼發出,所按的鍵不同遙控編碼也不同。這種遙控碼具有以下特徵:
採用脈寬調制的串列碼,以脈寬為0.565ms、間隔0.56ms、周期為1.125ms的組合表示二進制的「0」;以脈寬為0.565ms、間隔1.685ms、周期為2.25ms的組合表示二進制的「1」
上述「0」和「1」組成的42位二進制碼經38kHz的載頻進行二次調制以提高發射效率,達到降低電源功耗的目的。然後再通過紅外發射二極體產生紅外線向空間發射,
3310產生的遙控編碼是連續的42位二進制碼組,其中前26位為用戶識別碼,能區別不同的紅外遙控設備,防止不同機種遙控碼互相干擾。後16位為8位的操作碼和8位的操作反碼用於核對數據是否接收准確。
當遙控器上任意一個按鍵按下超過36ms時,LC7461晶元的振盪器使晶元激活,將發射一個特定的同步碼頭,對於接收端而言就是一個9ms的低電平,和一個4.5ms的高電平,這個同步碼頭可以使程序知道從這個同步碼頭以後可以開始接收數據。
解碼的關鍵是如何識別「0」和「1」,從位的定義我們可以發現「0」、「1」均以0.56ms的低電平開始,不同的是高電平的寬度不同,「0」為0.56ms,「1」為1.68ms,所以必須根據高電平的寬度區別「0」和「1」。如果從0.56ms低電平過後,開始延時,0.56ms以後,若讀到的電平為低,說明該位為「0」,反之則為「1」,為了可靠起見,延時必須比0.56ms長些,但又不能超過1.12ms,否則如果該位為「0」,讀到的已是下一位的高電平,因此取(1.12ms+0.56ms)/2=0.84ms最為可靠,一般取0.84ms左右即可。
根據紅外編碼的格式,程序應該等待9ms的起始碼和4.5ms的結果碼完成後才能讀碼。

接收器及解碼
LT0038是塑封一體化紅外線接收器,它是一種集紅外線接收、放大、整形於一體的集成電路,不需要任何外接元件,就能完成從紅外線接收到輸出與TTL電平信號兼容的所有工作,沒有紅外遙控信號時為高電平,收到紅外信號時為低電平,而體積和普通的塑封三極體大小一樣,它適合於各種紅外線遙控和紅外線數據傳輸。

下面是一個對51ISP編程實驗開發板配套的紅外線遙控器的解碼程序,它可以把紅外遙控器每一個按鍵的鍵值讀出來,並且通過實驗板上P1口的8個LED顯示出來,在解碼成功的同時並且能發出「嘀嘀嘀」的提示音。
ORG 0000H
AJMP MAIN;轉入主程序
ORG 0003H ;外部中斷P3.2腳INT0入口地址
AJMP INT ;轉入外部中斷服務子程序(解碼程序)
;以下為主程序進行CPU中斷方式設置
MAIN:SETB EA ;打開CPU總中斷請求
SETB IT0 ;設定INT0的觸發方式為脈沖負邊沿觸發
SETB EX0 ;打開INT0中斷請求
;以下對單片機的所有引腳進行初始化,全部設置成高電平
MOV P2,#11111111B
AJMP $
;以下為進入P3.2腳外部中斷子程序,也就是解碼程序
INT: CLR EA ;暫時關閉CPU的所有中斷請求
MOV R6,#10
SB: ACALL YS1;調用882微秒延時子程序
JB P3.2,EXIT;延時882微秒後判斷P3.2腳是否出現高電平如果有就退出解碼程序
DJNZ R6, SB;重復10次,目的是檢測在8820微秒內如果出現高電平就退出解碼程序
;以上完成對遙控信號的9000微秒的初始低電平信號的識別。
JNB P3.2, $ ;等待高電平避開9毫秒低電平引導脈沖
ACALL YS2 ;延時4.74毫秒避開4.5毫秒的結果碼
MOV R7,#26;忽略前26位系統識別碼
JJJJA:JNB P3.2,$;等待地址碼第一位的高電平信號
LCALL YS1;高電平開始後用882微秒的時間尺去判斷信號此時的高低電平狀態
MOV C,P3.2;將P3.2引腳此時的電平狀態0或1存入C中
JNC UUUA;如果為0就跳轉到UUUA
LCALL YS3;檢測到高電平1的話延時1毫秒等待脈沖高電平結束
UUUA: DJNZ R7,JJJJA
MOV R1,#1AH ;設定1AH為起始RAM區
MOV R2,#2;接收從1AH到1BH的2個內存,用於存放操作碼和操作反碼
PP: MOV R3,#8;每組數據為8位
JJJJ: JNB P3.2,$;等待地址碼第一位的高電平信號
LCALL YS1;高電平開始後用882微秒的時間尺去判斷信號此時的高低電平狀態
MOV C,P3.2;將P3.2引腳此時的電平狀態0或1存入C中
JNC UUU;如果為0就跳轉到UUU
LCALL YS3;檢測到高電平1的話延時1毫秒等待脈沖高電平結束
UUU: MOV A,@R1;將R1中地址的給A
RRC A;將C中的值0或1移入A中的最低位
MOV @R1,A;將A中的數暫時存放在R1數值的內存中
DJNZ R3,JJJJ;接收滿8位換一個內存
INC R1;對R1中的值加1,換下一個RAM
DJNZ R2,PP ;接收完8位數據碼和8位數據反碼,存放在1AH/1BH中
MOV A,1AH
CPL A;對1AH取反後和1BH比較
CJNE A,1BH,EXIT;如果不等表示接收數據發生錯誤,放棄
MOV P1,1AH;將按鍵的鍵值通過P1口的8個LED顯示出來!
CLR P2.0;蜂鳴器鳴響-嘀嘀嘀-的聲音,表示解碼成功
LCALL YS2
LCALL YS2
LCALL YS2
SETB P2.0;蜂鳴器停止(使用時可以將J2的YINYUE腳用跳線接J4 的XS1腳才可以使用蜂鳴器)可以看原理圖
EXIT: SETB EA ;允許中斷
RETI ;退出解碼子程序
YS1: MOV R4,#20 ;延時子程序1,精確延時882微秒
D1: MOV R5,#20
DJNZ R5,$
DJNZ R4,D1
RET
YS2: MOV R4,#10 ;延時子程序2,精確延時4740微秒
D2: MOV R5,#235
DJNZ R5,$
DJNZ R4,D2
RET
YS3: MOV R4,#2;延時程序3,精確延時1000微秒
D3:MOV R5,#248
DJNZ R5,$
DJNZ R4,D3
RET
END
以上程序緊供參考。

0A 01
11 12 13 14
15 16 17 18
19 10 1A 1B
0E 02 03 1C
06 04 05 0C
0D 08 09 1D
00 1F 1E 0B
07 0F
這是按照紅外遙控器按鍵的實際位置給出的32個按鍵的鍵值(16進制)

❼ 51單片機雙機紅外通信問題

一般來說肯定要調整到38K載波上,不然發射管你到哪裡去找去,至於協議嘛?如果不用其他設備接收的話,你自己定就可以了,不一定非得按標准紅外收發通訊協議來做。

❽ 基於單片機的紅外遙控收發系統的設計與實現

低頻信號發生器的設計
摘 要:
直接數字合成(DDS)是一種重要的頻率合成技術,具有解析度高、頻率變換快優點,在雷達及通信等領域有著廣泛的應用前景。文中介紹了一種高性能DDS晶元AD9850的基本原理和工作特點,闡述了如何利用此晶元設計一種頻率在0—50
kHz內變化、相位正交的信號源,給出了AD9850晶元和MCS51單片機的硬體介面和軟體流程。

關鍵詞:直接數字頻率合成 信號源 AD9850晶元
概述:
隨著數字技術的飛速發展,高精度大動態范圍數字/模擬(D,A)轉換器的出現和廣泛應用,用數字控制方法從一個標准參考頻率源產生多個頻率信號的技術,即直接數字合成(DDS)異軍突起。其主要優點有:(1)頻率轉換快:DDS頻率轉換時間短,一般在納秒級;(2)解析度高:大多數DDS可提供的頻率解析度在1 Hz數量級,許多可達0.001 Hz;(3)頻率合成范圍寬;(4)相位雜訊低,信號純度高;(5)可控制相位:DDS可方便地控制輸出信號的相位,在頻率變換時也能保持相位聯系;(6)生成的正弦/餘弦信號正交特性好等。因此,利用DDS技術特別容易產生頻率快速轉換、解析度高、相位可控的信號,這在電子測量、雷達系統、
調頻通信、電子對抗等領域具有十分廣泛的應用前景。
1. 低頻信號發生器的組成
圖2.7為低頻信號發生器組成框圖。它主要包括主振器、電壓放大器、輸出衰減器、功率放大器、阻抗變換器和指示電壓表等。

(1)主振器
RC文氏橋式振盪器具有輸出波形失真小、振幅穩定、頻率調節方便和頻率可調范圍寬等特點,故被普遍應用於低頻信號發生器主振器中。主振器產生與低頻信號發生器頻率一致的低頻正弦信號。
文氏橋式振盪器每個波段的頻率覆蓋系數(即最高頻率與最低頻率之比)為10,因此,要覆蓋1Hz~1MHz的頻率范圍,至少需要五個波段。為了在不分波段的情況下得到很寬的頻率覆蓋范圍,有時採用差頻式低頻振盪器,圖2.8為其組成框圖。假設f2=3.4MHz,f1可調范圍為3.3997MHz~5.1MHz,則振盪器輸出差頻信號頻率范圍為300Hz (3.4MHz-3.3997MHz)~1.7MHz(5.1 MHz-3.4 MHz)。

差頻式振盪器的缺點是對兩個振盪器的頻率穩定性要求很高,兩個振盪器應遠離整流管、功率管等發熱元件,彼此分開,並良好屏蔽。
(2)電壓放大器
電壓放大器兼有緩沖與電壓放大的作用。緩沖是為了使後級電路不影響主振器的工作,一般採用射極跟隨器或運放組成的電壓跟隨器。放大是為了使信號發生器的輸出電壓達到預定技術指標。為了使主振輸出調節電位器的阻值變化不影響電壓放大倍數,要求電壓放大器的輸入阻抗較高。為了在調節輸出衰減器時,不影響電壓放大器,要求電壓放大器的輸出阻抗低,有一定的帶負載能力。為了適應信號發生器寬頻帶等的要求,電壓放大器應具有寬的頻帶、小的諧波失真和穩定的工作性能。
(3)輸出衰減器
輸出衰減器用於改變信號發生器的輸出電壓或功率,分為連續調節和步進調節。連續調節由電位器實現,步進調節由步進衰減器實現。圖2.9為常用輸出衰減器原理圖,圖中電位器RP為連續調節器(細調),電阻R1~R8與開關S構成步進衰減器,開關S為步進調節器(粗調)。調節RP或變換開關S的擋
(4) 功率放大器及阻抗變換器功率放大器用來對衰減器輸出的電壓信號進行功率放大,使信號發生器達到額定功率輸出。為了能實現與不同負載匹配,功率放大器之後與阻抗變換器相接,這樣可以得到失真小的波形和最大的功率輸出。
阻抗變換器只有在要求功率輸出時才使用,電壓輸出時只需衰減器。阻抗變換器即匹配輸出變壓器,輸出頻率為5Hz~5kHz時使用低頻匹配變壓器,以減少低頻損耗,輸出頻率為5kHz~1MHz時使用高頻匹配變壓器。輸出阻抗利用波段開關改變輸出變壓器次級圈數來改變。
2. 工作原理及結構
函數信號發生器產生信號的方法有三種:一種是由施密特電路產生方波,然後經變換得到三角波和正弦波形;第二種是先產生正弦波再得到方波和三角波;第三種是先產生三角波再變換為方波和正弦波。在此主要介紹第一種方法,即脈沖式函數信號發生器

3. 低頻信號發生器的主要工作特性
目前,低頻信號發生器的主要工作特性如下:
①頻率范圍 一般為20Hz~1MHz,且連續可調。
②頻率准確度 ±(1~3)%。
③頻率穩定度 一般為(0.1~0.4)%/小時。
④輸出電壓 0~10V連續可調。
⑤輸出功率 0.5~5W連續可調。
⑥非線性失真范圍 (0.1~1)%。
⑦輸出阻抗 50Ω、75Ω、150Ω、600Ω、5kΩ等幾種。
⑧輸出形式 平衡輸出與不平衡輸出。
4. 低頻信號發生器的使用
低頻信號發生器型號很多,但它們的使用方法基本類似
(1)了解面板結構
使用儀器之前,應結合面板文字元號及技術說明書對各開關旋鈕的功能及使用方法進行耐心細致的分析了解,切忌盲目猜測。信號發生器面板上有關部分通常按其功能分區布置,一般包括:波形選擇開關、輸出頻率調諧部分(包括波段、粗調、微調等)、幅度調節旋鈕(包括粗調、細調)、阻抗變換開關、指示電壓表及其量程選擇、電源開關及電源指示、輸出接線柱等。
5. AD9850 晶元介紹
AD9850是AD公司生產的最高時鍾為125 MHz、採用先進的CMOS技術的直接頻率合成器,主要由可編程DDS系統、高性能模數變換器(DAC)和高速比較器3部分構成,能實現全數字編程式控制制的頻率合成,並具有時鍾產生功能。AD9850的DDS系統包括相位累加器和正弦查找表,其中相位累加器由一個加法器和一個32位相位寄存器組成,相位寄存器的輸出與外部相位控制字(5位)相加後作為正弦查找表的地址。正弦查找表實際上是一個相位/幅度轉換表,它包含一個正弦波周期的數字幅度信息,每一個地址對應正弦波中0。一360。范圍的一個相位點。查找表把輸入地址的相位信息映射成正弦波幅度信號,然後驅動10bit的DA變換器,輸出2個互補的電流,其幅度可通過外接電阻進行調節。AD9850還包括—個高速比較器,將DA變換器的輸出經外部低通濾波器後接到此比較器上即可產生一個抖動很小的方波,這使得AD9850可以方便地用作時鍾發生器。AD9850包含40位頻率/相位控制字,可通過並行或串列方式送人器件:並行方式指連續輸入5次,每次同時輸入8位(1個位元組);串列方式則是在—個管腳完成40位串列數據流的輸入。這40位控制字中有32位用於頻率控制,5位用於相位控制,1位用於掉電(powerdown)控制,2位用於選擇工作方式。在並行輸入方式下,通過8位匯流排D0一D7將外部控制字輸入到寄存器,在W—CLK(字輸入時鍾)的上升沿裝入第一個位元組,並把指針指向下一個輸入寄存器,連續5個W—CLK的上升沿讀入5個位元組數據到輸入寄存器後,W—CLK的邊沿就不再起作用。然後在rQ—UD(頻率更新時鍾)上升沿到來時將這40位數據從輸入寄存器裝入到頻率/相位寄存器,這時DDS輸出頻率和相位更新一次,同時把地址指針復位到第一個輸入寄存器以等待下一次的頻率/相位控制字輸入。
6 硬體設計
要產生兩路相位正交、頻率可由外部控制的正弦信號,必須通過單片機編程來完成外部輸入的頻率數據(3個位元組)與DDS38晶元(AD9850)內部頻率相位控制字(5個位元組)間的轉換。單片機8051與AD9850晶元的介面既可採用並行方式,也可採用串列方式,本設計採用的是8位並行介面方式。由於需要產生VQ兩路正弦信號,因此使用了2片AD9850晶元,這兩路的頻率相同,相位差90。。單片機8051的P1口(P1.0一P1.7腳)用作外部控制字輸入,通過中斷1和中斷0讀入外部頻率數據,連續讀3次,對應頻率值的二進制數;單片機的P0口(P0.0一P0.7腳)用作頻率/相位控制字輸出,通過8位緩沖器74LS244作數據緩沖後加到2片AD9850晶元的8位控制字輸入端(DO—D7腳),同時產生相應的DDS時序控制信號(一路復位reset1、二路復位reset2、一路字輸入時鍾W1、二路字輸入時鍾W2、一路頻率更新時鍾FU1、二路頻率更新時鍾FU2)加到AD9850晶元的對應管腳。AD9850的外部參考時鍾信號(dk4Om)頻率為40 MHz,由晶體振盪器產生。單片機8051的復位信號(reset)、中斷0和中斷1控制信號(intO、int1)由外部控制系統給出,從而實現兩路相位正交、頻率可控的正弦信號。該DDS信號源的硬體介面電路如圖1所
圖1 DDS信號源硬體介面電路
7. 軟體控制
此程序的功能就是要將外部輸入的頻率數據按照一定協議和演算法變換成DDS晶元(AD9850)所能接受的格式,並送出相應的頻率相位控制信號,從而使AD9850能產生兩路相位正交、頻率可控的正弦信號。下面給出程序設計輸入、輸出、變換演算法。
(1) 輸入
數據同步:上升沿時讀人1個位元組的頻率數據,作為intl中斷輸入;
數據寫入:上升沿時頻率更新1次,作為intO中斷輸入;
8位數據:輸入的頻率位元組。分3次輸入,如圖2所示。

(2)輸出
單片機控製程序將產生下述輸出信號加到DDS晶元(AD9850)的對應腳:
reset1:一路DDS復位(一路AD9850第22腳);
reset7.:二路DDS復位(-路AD9850第22腳);
w1:一路數據同步(一路AD9850第7腳);
w2:二路數據同步(二路AD9850第7腳);
ful:一路數據寫入(一路AD9850第8腳);
fu2:二路數據寫入(二路AD9850第8腳);
P0口(P0.0一P0.7):8位頻率/相位數據輸出(AD9850的DO—D7腳)。
(3)演算法:程序中單片機輸入頻率數據F(3個位元組)與輸出頻
率數據△P(4個位元組)間的變換演算法見式(2)
其中CLKIN為外部參考時鍾(40 M Hz)。
(4)程序流程:整個程序由主程序、中斷0子程序、中斷1子
程序三部分構成。流程圖略。
8 結論
對設計的信號源在不同頻率下的輸出波形進行了測試,結果完全能達到所要求的性能指標。而且AD9850工作可靠,對參考時鍾波形要求不高,輸出信號穩定且信噪比高,是一種性價比很高的晶元,正廣泛應用於電子測量、跳頻通信、雷達系統等領域。
9 致謝
通過對低頻信號發生器的設計,我深刻認識到了「理論聯系實際」的這句話的重要性與真實性。而且通過對此課程的設計,我不但知道了以前不知道的理論知識,而且也鞏固了以前知道的知識。最重要的是在實踐中理解了書本上的知識,明白了學以致用的真諦。也明白老師為什麼要求我們做好這個課程設計的原因。他是為了教會我們如何運用所學的知識去解決實際的問題,提高我們的動手能力。在整個設計到電路的焊接以及調試過程中,我個人感覺調試部分是最難的,因為你理論計算的值在實際當中並不一定是最佳參數,我們必須通過觀察效果來改變參數的數值以期達到最好。而參數的調試是一個經驗的積累過程,沒有經驗是不可能在短時間內將其完成的,而這個可能也是老師要求我們加以提高的一個重要方面吧
參考文獻:
【1】高衛東.等.AD9850 DDS晶元信號源的研製【J】.實驗室研究與探
索,2000,(5).
【2】石雄.等.DDS晶元AD9850的工作原理及其與單片機的介面【J】.國
外電子元器件,2001。(5).
(上

❾ 基於紅外技術的多點集中通信的設計

我來試試。
採用現在電視機用的940nm紅外發光管,接收也用這個頻率的接收管,這樣有發也有接了。接收管如果用TSOP1738之類的紅外一體接收器,就不帶38K解調了。這樣,一個發射管,一個TSOP1738就構成了一對發射/接收。主機和各個終端都要有這樣的一對才行。
接下來就是通訊協議了。類似於I2C,發送有地址,有指令(數據)。接收方都要有解析才行。是自己的地址,就應答,不是自己的地址,就不回答。
發射管的發射控制:用CPU定時器產生的38KH方波,與串口輸出數據信號「與」一下。程序里編一下也行。就不能用串口輸出數據了,就得用口線模擬了。
38K的調制,允許的通訊波特率不能太高,在2400bps左右。
從TSOP1738出來的TTL電平,直接接到RXD上即可。

再高速的通訊,就要用手機上或電腦上用的紅外發射接收專用「對管」了,可以支持更高的頻率。如HSL7001等器件,它可以實現115K的UART,但調制頻率不用我們管。只需連到串口就可以通訊。

閱讀全文

與51紅外無線通信裝置設計相關的資料

熱點內容
為什麼現代化學儀器需要玻璃吹制 瀏覽:566
空調三通閥門壞有什麼症狀 瀏覽:468
材料和設備應當如何存儲 瀏覽:170
鎮海森林城堡兒童游樂設備哪個好 瀏覽:6
寶馬閥門排氣有什麼用 瀏覽:296
天語sx4儀表盤燈不亮怎麼回事 瀏覽:802
超達維修閥門廠 瀏覽:964
王牌戰爭封設備如何解封 瀏覽:485
粗食鹽提純需要什麼儀器 瀏覽:229
蔚領機械鑰匙怎麼開門視頻 瀏覽:249
面盆水龍頭閥門漏水怎麼辦 瀏覽:363
什麼情況下選擇鑄造生產零件 瀏覽:713
機床剛性攻絲有什麼參數 瀏覽:670
蒸汽閥門上用什麼填料 瀏覽:309
如何天正快速連接設備與水管 瀏覽:263
如何安裝儀表小燈 瀏覽:317
水閥門脫口怎麼辦 瀏覽:449
汽車製冷機啟動沒有反應什麼故障 瀏覽:623
bestdon機械表怎麼上發條 瀏覽:94
清河市五金機電城 瀏覽:544