MSP430 f149 學習筆記 紅外遙控發射

2021-06-14 13:31:51 字數 1945 閱讀 2517

最近由於專案需求,研究了一下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)

void delay_us(unsigned int us)

void ir_open()

void ir_start()

void ir_next()

void ir_send_byte(unsigned char c)

else

c >>= 1;

}}void ir_end()

void ir_put(unsigned char c)

void ir_close()

void main(void)

while((ifg1&ofifg)); // 等待外部晶振穩定 即暫存器ifgi的ofifg位等於0

bcsctl2|=selm_2; //將mclk配置為xt2

bcsctl2|=sels; //將smclk配置1/2xt2 即4m

_eint();

ir_open();

//ir_close();//關閉紅外函式,這裡不用

while(1)

}#pragma vector=timerb0_vector

__interrupt void timerb_handler()

MSP430 F149 學習筆記 紅外置收

用msp430 f149 做紅外置收比傳送更為簡單,我採用的紅外感測器是hs0038b,這個原件在接收到38k紅外時輸出低電平,否則輸出高電平,因此,我們就可以從這點開始編寫程式了,由於hs0038b的電路圖很多,我這裡就不貼出來了,下面是具體的 include include delay.h st...

msp430f149外中斷問題

msp430的外中斷歸根到底 其實只需要兩個部分的配置就可以了 1.引腳配置 2.中斷函式配置 一 引腳配置 以引腳p2.1為例 p2dir 0x01 配置為輸入 p2ie 0x01 p2ies 0x01 其他暫存器可配置,可不配置。注意引腳功能選擇為一般引腳,不是功能引腳。雖然引腳的配置很簡單,但...

msp430f149的低功耗模式

430的低功耗確實很強啊,雖然和vr微控制器比起來速度慢了好多。在cpu進行工作時,如果沒有什麼事情幹,就得進入低功耗模式啦,lmpx 0 4 這幾種模式的具體事項就是如下的,得記住了。一,執行模式 msp430具有一種活動模式和五種軟體可選的低功耗執行模式。乙個中斷事件可以將晶元從五種低功耗模式中...