欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 單片機紅外收發(fā)實驗 [打印本頁]

作者: 不小心    時間: 2018-5-21 08:09
標題: 單片機紅外收發(fā)實驗
紅外收發(fā)實驗
  實驗目的
了解紅外通信知識,能夠應用紅外線模塊進行無線控制設計。
  實驗設備及器材
PC                                   1
DP-51PROC單片機綜合仿真實驗儀       1
  實驗內(nèi)容
使用單片機的串口發(fā)送并接收數(shù)據(jù),TXD接到紅外發(fā)射管,RXD接到紅外接收頭,實現(xiàn)無線通訊。
  紅外收發(fā)原理
紅外通信是利用950nm近紅外波段的紅外線作為傳遞信息的媒體。發(fā)送端將二進制信號調(diào)制為一系列的脈沖串信號,通過紅外發(fā)射管發(fā)射紅外信號。接收端將接收到的光脈沖轉(zhuǎn)換成電信號,再經(jīng)過放大,濾波等處理后送到解調(diào)電路進行解調(diào),還原為二進制數(shù)字信號后輸出。簡而言之,紅外通信的實質(zhì)就是對二進制數(shù)字信號進行調(diào)制與解調(diào),以便利用紅外信道進行傳輸。
本實驗的紅外收發(fā)示意圖如圖4-30所示,通過硬件電路完成了對輸入數(shù)據(jù)的調(diào)制,將調(diào)制的信號轉(zhuǎn)換為光信號通過紅外發(fā)射管發(fā)送數(shù)據(jù),由紅外接收頭接收數(shù)據(jù)并完成對數(shù)據(jù)的調(diào)解。解調(diào)后的數(shù)據(jù)由單片機進行處理。實驗儀B2區(qū)的1/512頻率輸出端輸出用于信號調(diào)制的約為38kHz的時鐘信號。
一般紅外接收模塊的解調(diào)頻率為38kHz。當它接收到38kHz左右的紅外信號時,將輸出低電平,但連續(xù)輸出低電平的時間是有限制的,也就是說,發(fā)送數(shù)據(jù)低電平寬度是有限制的。注意發(fā)射管應與接收頭平齊,否則接收頭可能接收不到來自發(fā)射管的反射光。


  實驗原理圖
  由于Proteus元件庫中無紅外發(fā)射和接收的仿真元件,所以該實驗無法在Proteus軟件中仿真調(diào)試,可搭試電路直接在實物板調(diào)試。紅外收發(fā)的電路設計原理圖4-31所示。

     

4-31  紅外收發(fā)電路設計原理圖

          紅外接收頭模塊
  實驗步驟
  實驗儀D3區(qū)紅外收發(fā)電路原理圖如圖4-32所示。實驗步驟如下:
  1B2區(qū)X2插入20MHz的晶振,接上B2區(qū)的JP20號跳線。
  2)將B2區(qū)的1/512頻率輸出端接到D3區(qū)的DCLK(約為38kHz,用于信號調(diào)制)。
  3)將A2區(qū)的RXDTXD分別連接到D3區(qū)的DRECDSEND
  4)用短路線將D3區(qū)JP9短接(D3區(qū)電路供電電源)。
  5)將A2區(qū)的P10連接到D1區(qū)的LED1
  6)斷開A1區(qū)JP15的跳線232RXD232TXD
  7)下載程序并運行,使用較厚的白紙擋住紅外發(fā)射管發(fā)射信號,使其反射到接收頭,觀察LED1是否點亮。




  實驗參考程序
1.匯編語言參考程序清單
   LED_CON   BIT      P1.0
    COUTE     DATA    40H
    ORG       0000H
    LJMP      MAIN
    ORG       0100H
MAIN:
    MOV      SP,#60H
    MOV      SCON,0X50
    MOV      TMOD,#0x20
    MOV      TH1,0xFA
    SETB      TR1
MAINLOOP:
    MOV      COUTE,#0
    MOV      R7,#50
LOOP1:
MOV     SUBF,#0x5A
JNB       TI,$
CLR       TI
NOP
NOP
JB        R2,LOOP2
SJMP      LOOP3
LOOP2:
    CLR       RI
    MOV      A,SUBF
    CJNE      A,#05AH,LOOP3
    INC       COUTE
LOOP3:
    DJNZ      R7,LOOP1
    MOV      A,COUTE
    SETB      C
    SUBB      A,#30
    JC        CLR_LED
    CLR       LED_CON
    SJMP      DELAY
CLR_LED:
    SETB      LED_CON
DELAY:
    MOV      R6,#200
DELAY1:
    MOV      R5,#200
    DJNZ      R5,$
    DJNZ      R6,DELAY1
    SJMP      MAINLOOP
END     
2.C語言參考程序清單
#include<reg51.h>
#define uint8 unsigned char
#define uint16 unsigned int
sbit LED_CON P1^0;                //定義LED控制口
//************向串口發(fā)送一字節(jié)數(shù)據(jù)*************//
// 人口參數(shù):dat要發(fā)送的數(shù)據(jù)
//********************************************//
void UART_SendByte(uint8 dat)
{  SBUF=dat;                          //發(fā)送數(shù)據(jù)
   while(0==TI);                   //等待發(fā)送完畢
      TI=0;                        //清零TI標志
}
//************接收一字節(jié)串口數(shù)據(jù)************//
//入口參數(shù):dat接受變量的地址指針
//出口參數(shù):返回0表示沒有數(shù)據(jù),返回1表示接收到數(shù)據(jù)
//*****************************************//
uint8 UART_RcvByte(uint8 *dat)
{
   if(0==RI) return(0);       //若沒有接收到數(shù)據(jù)則返回0
      *dat=SUBF;                   //取得接受的數(shù)據(jù)
   RI=0;                              //清除RI標志
   return(1);
}
//************串口初始化***********************//
//模式為1位起始位,8位數(shù)據(jù)位,1位停止位,波特率為9600
//晶振為11.0592MHz,使用T1作為波特率發(fā)生器
//********************************************//
void UART_Tnit(void)
{
   SCON=0x50;
   TMOD=0x20;
   TH1=0xFA;
   TR1=1;
}
//**************主函數(shù)************************//
//初始化串口后不斷地發(fā)送及接收數(shù)據(jù),若接收到所發(fā)送的數(shù)據(jù)則點亮LED
//*******************************************//
int main(void)
{
   uint8 i;
   uint16 j;
   uint8 rcv_dat;
   uint8 count;
UART_Tnit();
   while(1)
   { count=0;                    // 計數(shù)變量清零
      for(i=0;i<50;i++)       //發(fā)送及接收50個數(shù)據(jù)
      { UART_SendByte(0x5A);
if(UART_RcvBYTE(&rcv_dat)!=0)
{
if(0x5A==rcv_dat) count++;   //若接收的數(shù)據(jù)為0x5A





歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1