娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年03月16日(星期日)

正在發生

2020年03月16日 | MSP430(f149)學習筆記——紅外遙控發射

發布者:Coboro 來源: eefocus關鍵字:MSP430(f149)  紅外遙控  發射 手機看文章 掃描二維碼
隨時隨地手機看文章

最近由于項目需求,研究了一下MSP430,總體感覺MSP430還是非常不錯的單片機,不虧是TI的產品。項目中用MSP430實現了紅外遙控功能,下面我們先來分析一下紅外的發送原理。


紅外發送原理

紅外發送實際上是按照一定的時間間隔,斷斷續續的發送紅外射線來進行數據傳輸,為了提高數據傳輸的準確定和降低功耗,紅外一般是采用38K的紅外調制信號,其中,38K允許上下浮動1K以內的誤差。紅外發送的開頭需要一個引導位,引導位是發送9ms,然后停止4.5ms,如果發送完一個數據之后還需要再發數據的話還需要連發碼,連發碼是先發送9ms,然后停止4.5ms。引導碼和連發碼的波形如下:

引導碼和連發碼之后是32位數據位,這32位數據位實際上是一個字節,其中,前16位是用戶自定義地址碼,用來區分紅外是發給誰的,比如,電視的紅外遙控是不能操作冰箱或空調的,剩下的16位是傳輸的數據,其中前8位是要傳送的一個字節,后8位是這個字節的反碼,用來校驗數據傳輸的是否正確的,數據位無非就是0或1,其中0是先發送560us紅外,然后停止565us,1是先發送560us然后停止1685us,0和1的波形如下:

每次傳輸實際上就是一個引導碼加32位數據位或者一個連發碼加32位數據位,整體的波形如下:

注意,你上所有的波形都是接收時的波形,由于紅外接收頭,如HS0038B,在采集到38K紅外線時輸出低電平,在采集不到38K紅外線時輸出高電平,所以,當發送紅外線時在波形中為低電平,停止發送時反而為高電平。


實現電路

熟習了原理以后,再來設計電路圖就非常簡單了,用兩個三極管停止串聯,其中一個的基極(無論是PNP還是NPN,都是旁邊那個腳)接到38K方波上,另一個的基極接到發送控制引腳上,我這里沒有自己來繪制原理圖,采用了一個網上的原理圖,具體如下:

代碼設計

下面的原理部分都理通了,下面,我們用MSP430來實現設計,其中P2.3口是MSP430的PWM輸出引腳,這里是輸出38K方波,P2.2口為發送停止控制引腳。具體代碼如下:


#include 

 

static unsigned int cnt = 0;

 

void delay_ms(unsigned int ms){

  cnt = ms;

  

  TBCCR0 = 1000;

  TBCTL = CNTL_0 + TASSEL_2 + MC_1 + ID_3;

  TBCCTL0 = CCIE;

  

  while(cnt != 0);

  

  TBCTL = MC_0;

}

 

void delay_us(unsigned int us){

  cnt = 1;

  

  TBCCR0 = us;

  TBCTL = CNTL_0 + TASSEL_2 + MC_1 + ID_3;

  TBCCTL0 = CCIE;

  

  while(cnt != 0);

  

  TBCTL = MC_0;

}

 

void ir_open(){

  P2DIR |= BIT2 | BIT3;//P2.2, P2.3輸出

  P2SEL |= BIT3; //P2.2:IO P2.3:TA0

  P2OUT &= ~(BIT2 | BIT3);

  

  //38K->P2.3

  CCR0 = (int)(26.3*8 + 0.5);

  CCTL1 = OUTMOD_6;

  CCR1 = (int)(13.15*8 + 0.5);

 

  TACTL = TASSEL_2 + MC_1;

}

 

void ir_start(){

  P2OUT |= BIT2;

  delay_us(9000);

  

  P2OUT &= ~BIT2;

  delay_us(4500);

}

 

void ir_next(){

  P2OUT |= BIT2;

  delay_us(9000);

  

  P2OUT &= ~BIT2;

  delay_us(2250);

}

 

void ir_send_byte(unsigned char c){

  unsigned char i;

  

  for(i = 0; i != 8; ++i){

    P2OUT |= BIT2;

    delay_us(560);

    

    P2OUT &= ~BIT2;

    if(c&0x01){

      delay_us(1685);

    }

    else{

      delay_us(565);

    }

    

    c >>= 1;

  }

}

 

void ir_end(){

  P2OUT |= BIT2;

  delay_us(300);

  P2OUT &= ~BIT2;

}

 

void ir_put(unsigned char c){

  ir_start();

  ir_send_byte(0x00);

  ir_send_byte(0xff);

  ir_send_byte(c);

  ir_send_byte(~c);

  ir_end();

}

 

void ir_close(){

  P2SEL &- ~BIT3;

  P2DIR |= BIT3;

  P2OUT &= ~BIT3;

  TACTL = TACLR;

}

 

void main(void)

{

  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT

  

  BCSCTL1&=~XT2OFF;  //使能XT2

  do

  {

    IFG1&=~OFIFG;        //清除XT2標志

    _NOP();    

  } 

  while((IFG1&OFIFG));   // 等待外部晶振穩定  即寄存器IFGI的OFIFG位等于0

  BCSCTL2|=SELM_2;       //將MCLK配置為XT2

  BCSCTL2|=SELS;  //將SMCLK配置1/2XT2 即4M 

  

  _EINT();

         

  ir_open();

  //ir_close();//關閉紅外函數,這里不用

  

  while(1){

    delay_ms(1000);

    //P2OUT ^= BIT2;

    ir_put(0x83);

  }

}

 

#pragma vector=TIMERB0_VECTOR

__interrupt void timerb_handler(){

  --cnt;

}

關鍵字:MSP430(f149)  紅外遙控  發射 引用地址:MSP430(f149)學習筆記——紅外遙控發射

上一篇:MSP430G2553 WDT的NMI中斷例子
下一篇:msp430寄存器地址與宏定義位置

0

推薦閱讀

人工智能技術的進步驅動了科技的發展和工業4.0時代的到來,隨之而來的是智能經濟的蓬勃發展,AI開始從簡單的抽象概念落實到現實生活中去,滲透在生活的方方面面。機器人作為搭載AI的最佳載體,從復雜的機械堆砌開始逐步向著類人類方向發展,在提高人類的生活質量發揮著越來越重要的作用。可對于服務機器人來說,在哪些領域它已率先進入市場,服務機器人究...
當有一個“虛擬行人”突然在盲點處出現時,沃爾沃汽車駕駛座上的工程師并沒有畏縮,而是讓汽車軟件進行躲避操作。據外媒報道,汽車行業高管們表示,由于沃爾沃(Volvo)等汽車制造商在公共道路上測試自動駕駛汽車遭受挫折之后,瑞典公司AstaZero等擁有的私人試車跑道就變得越來越重要。汽車制造商和科技公司都致力于在2022年前將自動駕駛汽車投入商用,但...
PICC中函數,由于堆棧資源的原因,在PICC中的函數不支持函數的遞歸調用。1、帶返回值的函數2、無返回值的函數在PICC中,我們直接使用寄存器的名字和位名,這些都歸功于相關的頭文件。還有一些宏定義也在這些頭文件中。’PIC.H‘文件是PICC編譯必需的頭文件。根據用戶所選用的單片機芯片型號自動包含相應的頭文件。定義常用的嵌入匯編宏定義。配置位定義、E...
USB作為這個地球上大概普及的接口標準,在版本劃分上一度是很清楚的。但是進入USB 3.x時代之后,標準制定組織USB-IF似乎不按套路出牌了。以前,USB 0.9/1.0/1.1版都有個Full Speed(全速)的別名,USB 2.0版則還叫做High Speed(高速)。USB 2.0誕生八年半之后,2008年1月份,USB 3.0正式發布,傳輸速度從480Mbps大幅升至5Gbps,帶來了全新飛躍,同時也...

史海拾趣

問答坊 | AI 解惑

介紹DSP外部電路設計的經典著作

系統介紹DSP外圍電路設計的經典著作,包括AD\\DA(抗混疊、過采樣)、數字上\\下變頻設計方法以及存儲器管理 等,愿意和同行分享。…

查看全部問答∨

開關電路

本帖最后由 paulhyde 于 2014-9-15 09:23 編輯 請問一下各位大俠開關電路是用半橋好還是用全橋好哦。。。我們是做逆變交流電  …

查看全部問答∨

ccs3.3(3.2)安裝問題及其解決&安裝目錄說明

ccs3.3(3.2)安裝問題及其解決&安裝目錄說明 最近開始學習DSP,首先已TI公司的C54系列來進行練習,采用TI公司的CCSSTDIO V3.3的集成開發環境(IDE),來熟悉DSP的開發的軟件設計,在安裝CCS3.3和CCS3.2時都出現了一些組件無法注冊的問題,會彈出 ...…

查看全部問答∨

WinCE 5.0 USB Mass Storage疑問

大家好,我的WinCE 5.0系統使用Usb Mass Storage功能,把Pocket Mory1作為存儲設備開放時,從PC端拷貝數據到Pocket Mory1時,點擊觸摸屏進行操作,系統沒有任何反應;把SD卡作為存儲設備開放時,從PC端拷貝數據到SD卡時,點擊觸摸屏操作系統,操作 ...…

查看全部問答∨

用VS2003和drivestudio編輯VdwLibs.dsw這文件時報源文件不存在這個錯

前面的安裝工作都裝好了的, vs2003 ddk2003 drivestudio3.2 裝好后 編譯DriverStudio安裝目錄DriverStudio\\DriverWorks\\source\\VdwLibs.dsw,以得到vdw_wdm.lib這個庫文件 的時候,選用drivestudio build的時候, 就報源文件不存在這個錯誤.  ...…

查看全部問答∨

不顯示刪除回復顯示所有回復顯示星級回復顯示得分回復 一道計算機通信題目,大家一起討論

CAN總線的通信特點為:廣播。每個節點往外發消息,所有其他節點都會收到這個消息,然后過濾決定這個消息是否對自己重要。 本題附加要求為: 1. CAN總線上連接有多個控制器,一個觸摸屏   1.1 控制器:各控制器運行特定的程序,并且需 ...…

查看全部問答∨

關于WINCE下USB與ActiveSync的連接問題

關于WINCE下USB與ActiveSync的連接問題 我用的是YLE2440的核心板,仿照底板畫的底板,去掉了一些模塊。USB部分與原板畫的一模一樣。USB在BOOT部分工作正常,能夠下載內核并很穩定,但是進入WINCE后,無法與ActiveSync建立聯接,驅動部分用的是板子 ...…

查看全部問答∨

做嵌入式產品開發,如何確定產品方向?

     本人做了很多年嵌入式產品軟件開發了?也在幾個公司工作過!     共同的問題是:     (1)方向的問題,就是做什么的問題。       公司總是每年在問 ...…

查看全部問答∨

用Rlink燒寫st72324J6的問題

由于第一次用ST的單片機,我把ICCDATA和ICCCLK直接接入ICC10接口處,RESET接入并接4.7K上拉,單片機用的是外部晶振,沒有和ICC10接口的9角相連;結果寫時出現寫時出現下列錯誤:wrong device detectedmismatch of PIDPID& ...…

查看全部問答∨
小廣播
添点儿料...
无论热点新闻、行业分析、技术干货……
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 寿光市| 定南县| 连平县| 隆子县| 来安县| 遵义市| 龙井市| 亳州市| 大宁县| 黑河市| 静乐县| 江达县| 盐山县| 平舆县| 罗平县| 全南县| 尉氏县| 华蓥市| 西贡区| 定结县| 阿瓦提县| 东阿县| 苍溪县| 天津市| 桦川县| 江西省| 磐石市| 武义县| 日照市| 南木林县| 新闻| 贵德县| 基隆市| 沙雅县| 昔阳县| 临江市| 土默特右旗| 沧源| 丰台区| 达尔| 永福县|