自在自线亚洲а∨天堂在线-中文字幕一区视频播放-扒开双腿猛进入喷水高潮叫声-欧美日本亚洲一区二区-老熟妇高潮偷拍一区二区-国产精品高清一区二区不卡-午夜色福利视频一区二区三区-亚洲国产成人精品福利在线观看-亚洲欧美成人一区二区在线电影

機(jī)電之家資源網(wǎng)
單片機(jī)首頁|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
利用LPC900系列單片機(jī)的UART和CCU模塊實(shí)現(xiàn)紅外通信(C程序)
利用LPC900系列單片機(jī)的UART和CCU模塊實(shí)現(xiàn)紅外通信(C程序)
 更新時(shí)間:2008-7-26 20:29:45  點(diǎn)擊數(shù):2
【字體: 字體顏色

/**********************************************************************
* 文件:     UART_IR_Master.C
* 開發(fā):     WWW.ZLGMCU.COM
* 日期:     2004.03.04
* 功能:     利用LPC900系列單片機(jī)的UART和CCU模塊實(shí)現(xiàn)紅外通信。
*           此程序?yàn)橹鳈C(jī)程序,先發(fā)送16字節(jié)數(shù)據(jù)給從機(jī),從機(jī)再把接收到的
*           數(shù)據(jù)返回給主機(jī),如果返回正確,則蜂鳴器短響一聲,否則長(zhǎng)響一聲。      
************************************************************************/
#include "reg932.h"
#include "intrins.h"

#define uchar unsigned char

// 變量定義
sbit  BEEP=P2^7;
sbit  KEY1=P0^0;

const uchar data BRGR1_DATA=9;      //波特率設(shè)為2400bit/s
const uchar data BRGR0_DATA=0xb4;

//函數(shù)聲明
void CCU_Ini();
void UART_Ini();
void SendData();
void RcvData(uchar *pbuf);
bit  Compare(uchar *pbuf);
void Delay(uchar k);

//主程序開始
void main()
{
    uchar RcvBuf[16];               //接收數(shù)據(jù)用緩沖區(qū)
    P0M1=P0M2=0;
    P1M1=P1M2=0;                    //P0,P1口設(shè)置為準(zhǔn)雙向
    P2M1=P2M2=0xc0;                 //P2.6,P2.7設(shè)置為開漏
    CCU_Ini();                      //CCU模塊初始化,用以產(chǎn)生38KHz調(diào)制信號(hào)
    UART_Ini();
    while(1)
    {  
        while(KEY1);
        SendData();                 //發(fā)送16字節(jié)數(shù)據(jù)
        Delay(1);
        RcvData(RcvBuf);            //接收16字節(jié)數(shù)據(jù)
        if(Compare(RcvBuf)==1)      //比較接收到的數(shù)據(jù)和發(fā)送的數(shù)據(jù)
        {  
            BEEP=0;                 //如果正確則蜂鳴器短響一聲
            Delay(1);
            BEEP=1;
        }
        else
        {
            BEEP=0;                 //如果錯(cuò)誤則蜂鳴器長(zhǎng)響一聲
            Delay(5);
            BEEP=1;
        }
    }  
}

/*********************************************
* 名稱:     SendData()
* 功能:     通過UART連續(xù)發(fā)送16字節(jié)數(shù)據(jù)(0~15)
* 入口參數(shù):無
* 出口參數(shù):無
* 注意:     此程序采用查詢方式發(fā)送。
**********************************************/
void SendData()
{  
    uchar i;
    TI=0;
    for(i=0;i<16;i++)
    {  
        SBUF=i;
        while(!TI);
        TI=0;
    }   
}

/********************************************************************
* 名稱:     RcvData()
* 功能:     通過UART連續(xù)接收16字節(jié)數(shù)據(jù)
* 入口參數(shù): pbuf--用于接收數(shù)據(jù)的緩沖區(qū)首地址
* 出口參數(shù): 接收到的16字節(jié)數(shù)據(jù)位于接收緩沖區(qū)
* 注意:     此程序采用查詢方式進(jìn)行接收。由于采取半雙工通信,所以接收
*           數(shù)據(jù)之前要打開接收允許,接收完畢之后要關(guān)閉接收允許。
*********************************************************************/
void RcvData(uchar *pbuf)
{  
    uchar i;
    REN=1;
    FE=0;
    RI=0;
    for(i=0;i<16;i++)
    {  
        while(!RI);
        RI=0;
        pbuf[i]=SBUF;
    }
    REN=0;
}

/******************************************
* 名稱:     Compare()
* 功能:     比較緩沖區(qū)中的內(nèi)容是否為0~15
* 入口參數(shù): pbuf--需要比較的緩沖區(qū)首地址
* 出口參數(shù): 比較正確則返回1,否則返回0。
******************************************/
bit Compare(uchar *pbuf)
{  
    uchar i;
    for(i=0;i<16;i++)
    {  
        if(pbuf[i]!=i)
        {  
            return(0);
        }
    }
    return(1);
}

/*********************************************************************
* 名稱:     CCU_Ini()
* 功能:     CCU模塊初始化,使OCA(P2.7)輸出38KHz,50%占空比的PWM波,
*           作為紅外線的載波
*           使用6MHz晶振時(shí),CCU頻率=((6000000/2)/6)*32=16MHz
*           定時(shí)器重裝值=CCU頻率/紅外線載頻=16000000/38000=421=0x1a5
**********************************************************************/
void CCU_Ini()
{  
    TOR2H=0x01;                     //定時(shí)器重裝值
    TOR2L=0xa5;
    OCRAH=0x00;                     //(OCRAH:OCRAL)=(TOR2H:TOR2L)/2,PWM的占空比為50%
    OCRAL=0xd2;
    TCR21=0x85;                     //PLL預(yù)分頻為5+1
    CCCRA=1;                        //非反相的PWM,

    TCR20=0;
    PLEEN=1;
    while(!PLEEN);
    TCR20|=3;                       //啟動(dòng)定時(shí)器,非對(duì)稱PWM模式
}

/***************************************
* 名稱:     UART_Ini()
* 功能:     UART初始化,波特率2400bit/s  
****************************************/
void UART_Ini()
{  
    PCON=0;
    SSTAT=0;                        //雙緩沖禁止,中斷禁止,采用查詢方式發(fā)送和接收 
    SCON=0x40;                      //串口模式1,接收禁止
    PCON|=0x40;                     //SMOD0=1,SCON的位7作為FE
    BRGCON=0;
    BRGR1=BRGR1_DATA;
    BRGR0=BRGR0_DATA;    
    BRGCON=3;                       //啟動(dòng)UART的波特率發(fā)生器
}

/*****************************************************
* 名稱:     Delay()
* 功能:     延時(shí)0.1*k秒(振蕩器為6MHz)
* 入口參數(shù):k--延時(shí)時(shí)間
* 出口參數(shù):無
* 注意:    如果入口參數(shù)k等于0,則不延時(shí)而直接返回。
******************************************************/
void Delay(uchar k)

    uchar i,j;
    if(k==0)
    {  
        return;
    }
 for(;k;k--)
 { 
        for(j=200;j;j--)            //延時(shí)0.1S
  { 
            for(i=250;i;i--)
   { 
                _nop_();
    _nop_();
    _nop_();
    _nop_();
   }
  }
 }
}

  • 上一篇: 利用LPC900系列單片機(jī)的UART和CCU模塊實(shí)現(xiàn)紅外通信(匯編)
  • 下一篇: 利用LPC900系列單片機(jī)的UART和CCU模塊實(shí)現(xiàn)紅外通信(匯編)
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評(píng)論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對(duì)此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請(qǐng)聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1