導航:首頁 > 操作系統 > pic單片機紅外

pic單片機紅外

發布時間:2023-02-06 07:52:36

單片機控制紅外程序

給你一個PIC寫的接收紅外遙控器的程序。

//******************************************************

//mcu: PIC16F883
//author:
//data:
//ver: 1.0
//********************************************************
#include <pic.h>
#include <pic16f887.h>
#include "main.h"

// 函數聲明部份

void interrupt IRQ_TEST(void);
void fun_intset(void);
void set_port(void);
void fun_timerset(void);

void delay_10us(void);
void delay_130us(void);

void test_remote(void);

// 主函數
void main()
{
set_port();
fun_timerset();
fun_intset();
delay_10ms();
ram_ini();
GIE=1;

while(1)
{
asm("clrwd");

test_remote();

}
}

//埠I/O定義子程序
void set_port()
{

ANSEL =0X00; //porta io port
ANSELH=0X00; //portb io port
//TRISX BIT=1, PORTX AS INPUT
TRISA = 0x0F; //RA0-RA3 INPUT ,RA4-RA5 OUTPUT

TRISB = 0x07; //RB0 PASS0, RB1-RB2 INPUT ,RB3-RB6 OUTPUT

TRISC = 0x0F;
// TRISC = 0x03; //RC0-RC1 INPUT,RC5-RC6 OUTPUT , RC3 RC4 EEPROM SCL SDA
PORTC=0;
PORTA=0XFF;
// WPUB=0XFF;
PORTB=0X07;
}

//中斷子程序
void interrupt IRQ_TEST(void)
{
if(T0IF) //Timer0中斷服務子程序
{
TMR0=0xce;
T0IF=0;
timer_100us++; //100us
}

if(INTF==1)
{

INTF=0;
timer_rec=timer_100us;
timer_100us=0;
flag_rec_remote=1;
}
}

//定時器0初始化設置子程序
void fun_timerset()
{
//Timer0初始化設置
PSA=0;//Timer0 使用預分頻器
//Timer0選擇分頻率為1:2
PS0=0;PS1=0;PS2=0;
//內部時鍾定時方式,定時時間:200uS,誤差:0uS
T0CS=0;
// TMR0=0x9b;

TMR0=0xce; //100us
}

/*

//定時器2初始化設置子程序
void fun_timer2set()
{

//Timer2初始化設置
//timer2使用預分頻率1:1
T2CKPS0=0;T2CKPS1=0;
//timer2使用後分頻率1:1
TOUTPS0=0;
TOUTPS1=0;
TOUTPS2=0;
TOUTPS3=0;
//定時器2定時時間為:200uS,誤差:0uS
TMR2=0x38;
TMR2ON=1;
}

*/

//中斷允許設置子程序
void fun_intset()
{
T0IE=1;//Tiemr0中斷允許

INTEDG=0; //RB0 FALLAGE INTERRUPT
INTE=1;
INTF=0;

}

void ram_ini(void)
{

}
//------------------------------------------------------------

//*****************************************************************************

void delay_10us(void)
{
NOP;
NOP;
NOP;
NOP;
NOP;
NOP;
}

void delay_130us(void)
{
uchar i;

for(i=0;i<13;i++)
{
NOP;
NOP;
NOP;
}
}

void delay_10ms(void)
{
unsigned int i;

for(i=0;i<1000;i++)
{
NOP;
NOP;
NOP;
NOP;
NOP;
}
}

void test_remote(void)
{
uchar rec_ok,i;

if(flag_rec_remote==1)
{
flag_rec_remote=0;

// remote_buf[rec_byte]=timer_rec; //test use
// rec_byte++; //test use
// return; //test use

if(flag_rec_head==0)
{
if(timer_rec>=90&&timer_rec<=140) //135
{
flag_rec_head=1;
rec_byte=0;
rec_bit=0;
rec_buf=0;
return;
}
}
else
{
if(timer_rec>=8&&timer_rec<=12) //11.2
{
rec_buf=(rec_buf>>1);
rec_buf=rec_buf&0x7f;

}

else if(timer_rec>=18&&timer_rec<=22) //22
{
rec_buf=(rec_buf>>1);
rec_buf=rec_buf|0x80;
}
else if(timer_rec>=90&&timer_rec<=140)
{
flag_rec_head=1;
rec_byte=0;
rec_bit=0;
rec_buf=0;
return;
}
else
{
flag_rec_head=0;
rec_byte=0;
rec_bit=0;
rec_buf=0;
return;
}

}

if(flag_rec_head==1)
{

rec_bit++;
if(rec_bit==8)
{
remote_buf[rec_byte]=rec_buf;
rec_byte++;
rec_bit=0;
if(rec_byte==4)
{
NOP;
NOP;
NOP;
NOP;
rec_byte=0;
rec_bit=0;
rec_buf=0;
flag_rec_head=0;

}
}

}
}

}

㈡ 紅外感測器和單片機之間怎麼連接

紅外感測器和單片機之間的連接方法:

紅外感測器絕大部分都是通過測引腳電壓換算成距離。所以一般紅外都有三根引腳,VCC和GND肯定會接噻,然後信號線接到你開啟單片機的ADC通道對應的引腳,讀該引腳的電平換算成距離。

紅外感測器如果是數據信號,有幾個腳,就用單片機幾個腳連接,然後根據輸出信號的時序寫程序讀。如果是模擬信號,就得用到A/D轉換電路。

(2)pic單片機紅外擴展閱讀:

紅外感測器的相關要求規定:

1、紅外線感測器利用遠紅外線范圍的感度做為人體檢出用,紅外線的波長比可見光長而比電波短。紅外線只由熱的物體放射出來,凡是存在於自然界的物體,如人類、火、冰等等全部都會射出紅外線,只是其波長因其物體的溫度而有差異而已。

2、利用紅外輻射的熱效應,探測器的敏感元件吸收輻射能後引起溫度升高,進而使某些有關物理參數發生變化,通過測量物理參數的變化來確定探測器所吸收的紅外輻射。

3、紅外感測器已經在現代化的生產實踐中發揮著它的巨大作用,隨著探測設備和其他部分的技術的提高,紅外感測器能夠擁有更多的性能和更好的靈敏度。

㈢ 求紅外接收頭的單片機程序

我給你貼個現成的,開發板上的例子,版權注釋部分本站過濾問題弄不上
慧凈電子:1天入門、8天學會、28天精通PIC單片機與C語言視頻教程配套程序源碼
#include<pic.h>
__CONFIG(0xFF32);
//晶元配置字,看門狗關,上電延時開,掉電檢測關,低壓編程關,加密,4M晶體HS振盪

#define uchar unsigned char
#define uint unsigned int

#define bitset(var,bitno)((var)|=1<<(bitno))
#define bitclr(var,bitno)((var)&=~(1<<(bitno)))

//下面這段程序用的是結構體的位域,方便進行位操作
//看不懂的可要補一補C語言了
union {
struct
{
unsigned b0: 1;
unsigned b1: 1;
unsigned b2: 1;
unsigned b3: 1;
unsigned b4: 1;
unsigned b5: 1;
unsigned b6: 1;
unsigned b7: 1;
}
oneBit;
unsigned char allBits;
} myFlag;
#define CNT2_1 myFlag.oneBit.b1
#define CNT2_2 myFlag.oneBit.b2
#define CNT2_3 myFlag.oneBit.b3
#define CNT2 myFlag .allBits

static bit FLAGS ;
static bit Bitin;

union Csr
{ unsigned long i;
unsigned char Csra[4];
}myCsra;

#define RMT RE2 // ;遙控接收輸入腳位地址(RA。1)
#define BITIN 7 //遙控接收數據位位標志
uchar CNT0, CNT3, CNT4; //用戶臨時寄存器1--4
uint CNT1;
uchar TABADD; //數碼管顯示碼取碼用寄存器
uchar CSR0; //;遙控鍵碼反碼寄存器
uchar CSR1; //;遙控器鍵碼寄存器
uchar CSR2; //;遙控器用戶碼高8位寄存器
uchar CSR3; //;遙控器用戶碼低8位寄存器
uchar FLAGS2; //;臨時寄存器
uchar CSR2A ; //遙控接收32位數據暫存寄存器

const unsigned char table[] = {0x3f, 0x6, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x7, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71};

// 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f,

/****************************************************************************
* 名 稱:initial
* 功 能:系統初始化子程序
* 入口參數:
* 出口參數:
* 說 明:
* 備 註:慧凈電子網 www.HLMCU.COM 慧凈空間 http://hi..com/hlmcu
****************************************************************************/
void initial (void)
{
PORTA = 0;
ADCON1 = 7; // 設置RA口全部為普通數字IO口
TRISA = 0x00;
TRISE2 = 1; // 將RMT設置為輸入,其它所有IO口設置為輸出
TRISD = 0; // ;RC口全部為輸出
PORTD = 0xFF; //先讓數碼管全部不顯示
TRISC = 0xf0;
PORTC = 0x11;

}

/****************************************************************************
* 名 稱:RCV()
* 功 能:紅外掃描解碼
* 入口參數:
* 出口參數:
* 說 明:
* 備 註:慧凈電子網 www.HLMCU.COM 慧凈空間 http://hi..com/hlmcu
****************************************************************************/
void RCV()
{
if (!RMT)
{
CNT1 = 640; //4*256*10us 640*16=10。24ms
CNT2 = 0;
//RCV1
do
{ // ;先檢測引導碼的9MS低電平_____┏┓
// ;每一個循環16US
if (RMT)
CNT2 = CNT2++;
if (!RMT)
CNT2 = 0;
if (CNT2_2) //高電平大於8*10US=80US則為有效高電平,
break; //否則是一些干擾信號16*4=64us
}
while (CNT1--); //低電平大於4*256*10US=10.24MS則是錯誤脈沖

//RCV2
if (CNT2_2 && (0 < CNT1) && (CNT1 < 320)) //;低電平小於2*256*10US=5.12MS┏┒____
{ //320*16=5。12ms則是錯誤脈沖
CNT1 = 480; //;3*256*10us 480*16=7.68
CNT2 = 0;

//RCV3 //;每一個循環16US

do
{
if (!RMT)
CNT2 = CNT2++;
if (RMT)
CNT2 = 0;
if (CNT2_2) // 低電平大於8*10US=80US則為有效低電平,否則是一些干擾信號
break; //RCV4,否則是一些干擾信號16*4=64us
// 高電平大於3*256*10US=7.68MS則是錯誤的
}
while (CNT1--);

//RCV4

if (CNT2_2 && (0 < CNT1) && (CNT1 < 320)) //高電平小於1*256*10US=2.56MS則是錯誤的
{ //480-320=160 *16= 2.56ms
CNT3 = 32; //接收數據共32位,16位用戶碼,8位控制碼加8位控制碼的反碼
//RCV5
do
{
CNT2 = 0;
CNT0 = 86; //低電平大於256-170=86*10US=860US錯誤 86*10 __┌┐
CNT4 = 200; //高電平大於256-56=200*10US=2MS錯誤 200*10
//RCV5_HI
do
{ //;每一個循環10US
if (RMT)
CNT2 = CNT2++;
if (!RMT)
CNT2 = 0;
if (CNT2_3) //;高電平大於8*10US=80US則為有效高電平
break; //RCV6否則是一些干擾信號16*4=64us

//;低電平大於860US則是錯誤的
}
while (CNT0--);
//CV6
if ((CNT0 == 0) || (CNT2_3 == 0)) break;

CNT2 = 0;
//RCV6_LO
do
{ //┌┐__
if (!RMT)
CNT2 = CNT2++;
if (RMT)
CNT2 = 0;
if (CNT2_3) //低電平大於10*8US=80US則是有效低電平
break ; // COMPARE 否則是一些干擾信號16*4=64us
}
while (CNT4--); //高電平大於256-56=200*10US=2MS錯誤

if ((CNT4 == 0) || (CNT2_3 == 0)) break;

//OMPARE
CNT0 = (86 - CNT0) + (200 - CNT4) ;
//;減CNT0的值 等於實際低電平計數值
// ;減CNT4的值 等於實際高電平計數值
// ;將高低電平的計數加在一起並存入CNT0,通過比較高低電平總的時間來確定是1還是0
// ;總的值大於255(即時間大於255*10US=2.55MS)則錯誤 255*10=2.55
// ;總的時間小於70*10US=700US則是錯誤的 70*10=700
if (( (70 < CNT0) && (CNT0 < 130)) || ((160 < CNT0) && (CNT0 < 230) ) ) // ;130*10=1.3MS
{
if ((70 < CNT0) && (CNT0 < 130))
//COMPARE_H // ;時間大於1.3MS轉去確定是否1

Bitin = 0; //;時間在700US-1.3MS之間則是0
else // if (160<CNT0<230) //;小於160*10US=1.6MS,則錯誤
//;大於230*10US=2.3MS,則錯誤
Bitin = 1; // ;時間在1.6MS-2.3MS之間則是1
myCsra.i = myCsra.i >> 1; //;將每一位移入相應寄存器
if (Bitin)
bitset ( myCsra. Csra[3], 7);
else bitclr ( myCsra. Csra[3], 7);
}

else break;

}
while (CNT3--); //;是否接收完32位
CSR3 = myCsra. Csra[0];
CSR2 = myCsra. Csra[1];
CSR1 = myCsra. Csra[2];
CSR0 = myCsra. Csra[3];
CSR2A = ~CSR0; //;比較鍵碼的反碼取反後是否等於鍵碼
//;不等於則接收到的是錯誤的信息
// 將鍵碼送顯示
}

}

}

}

/****************************************************************************
* 名 稱:display()
* 功 能:數碼管顯示
* 入口參數:
* 出口參數:
* 說 明:
* 備 註:慧凈電子網 www.HLMCU.COM 慧凈空間 http://hi..com/hlmcu
****************************************************************************/
void display()
{

int i, j; //定義查表變數
i = CSR3 & 0x0f;
PORTD = table[i]; //送D口顯示
PORTA = 0x1;
for (j = 0;j < 50;j++); //延長一段時間,保證亮度

i = CSR3 & 0xf0;
i = i >> 4; //右移4位
PORTD = table[i]; //送D口顯示
PORTA = 0x2;
for (j = 0;j < 50;j++); //延長一段時間,保證亮度

i = CSR2 & 0x0f;
PORTD = table[i]; //送D口顯示,並顯示小數點
PORTA = 0x4;
for (j = 0;j < 50;j++); //延長一段時間,保證亮度

i = CSR2 & 0xf0;
i = i >> 4;
PORTD = table[i]; //送D口顯示
PORTA = 0x6;
for (j = 0;j < 50;j++); //延長一段時間,保證亮度

i = CSR1 & 0x0f;
PORTD = table[i]; //送D口顯示,並加上小數點
PORTA = 0x8;
NOP(); //延長一段時間,保證亮度
for (j = 0;j < 50;j++);
i = CSR1 & 0xf0;
i = i >> 4;
PORTD = table[i]; //送D口顯示
PORTA = 0x0A;
NOP(); //延長一段時間,保證亮度
for (j = 0;j < 50;j++);

}

/****************************************************************************
* 名 稱:main
* 功 能:主程序
* 入口參數:
* 出口參數:
* 說 明:
* 備 註:慧凈電子網 www.HLMCU.COM 慧凈空間 http://hi..com/hlmcu
****************************************************************************/
void main(void)
{
initial (); //系統初始化子程序
while (1)
{
RCV(); //遙控接收程序
display(); //解碼顯示程序
}
}

㈣ 想做紅外遙控的風扇,請問風扇怎麼跟PIC單片機連接風扇驅動和單片機怎麼加進去

單片機控制 具體怎麼樣 我也不知道...

㈤ 基於pic單片機的紅外通信模塊的設計與實現

pic單片機的紅外通信模塊的設計與實現
這個開發平台你怎樣選擇,我才好安排,你懂我意思的

㈥ 用紅外遙控器怎麼實現調節功放的音量大小,用單片機嗎

紅外遙控的音頻功放設計與製作

1.引言

本項目以單片機為核心,開發設計了具有紅外線遙控功能的功率放大器,整個系統構思巧妙,設計合理,實用性強。

2.發射電路原理

要使紅外線接收器能夠接收到的紅外線信號,我們必須紅外線發射時具有一定的信號特徵。

常用的區分指令信號的特徵是頻率特徵和碼組特徵,即用不同的頻率或不同編碼的電信號代表不同的指令。我們這里用到的是碼組特徵。碼分制紅外遙控電路就是指令信號產生電路以不同的脈沖編碼(不同的脈沖數目及組合)代表不同的指令。對於圖1來講,當不同的指令鍵被按下時,單片機編碼電路產生不同脈沖編碼的指令信號,也就是進行編碼,然後經調制電路調制,變為編碼脈沖調制信號,再由驅動電路驅動紅外發射器件發射紅外光信號。

本文用到的碼分制紅外線遙控系統的發射部分原理(如圖1)。

在發射部分電路中由於關鍵的編碼部分電路功能本文使用了美國公司Microchip生產的PIC16F84A單片機來實現,因而電路顯得非常簡潔。使用PIC16F84A單片機的好處還在於我們只要改變單片機里的程序就可以改變電路功能同時也可以實現一個遙控器控制多種機器。

發射部分的原理圖(見圖2)。

這個電路很簡潔,下面我們來簡單介紹一下。它一共有K1、K2、K3、K4四個按鍵。當按下按鍵K1時單片機PIC16F84A的第六個引腳RB0接地,表示給RB0一個低電平的有效信號。單片機PIC16F84A的6、7、8、9引腳都是它的信號輸入端,這4個輸入端都是低電平有效,高電平無效的,具體情況將在下一節介紹。單片機PIC16F84A收的K1發來的低電平信號後按照程序的設定在17引腳RA0輸出一串二進制碼10000000。該信號還很微小不能用來直接推動紅外線發光二極體,因此需要放大器放大。

在這里我們用三極體Q1來做放大器,它的型號是C1815,一個NPN型三極體。二進制碼信號經過放大後就可以推動紅外線發光二極體了。紅外線發光二極體D1負責把電信號轉換成紅外線信號並發射出去。

K2、K3、K4的功效和K1差不多,只是按下K2、K3、K4後,單片機PIC16F84A根據不同的引腳收到的有效信號後在17引腳RA0輸出的二進制碼不同。接收部分的電路就是根據二進制碼的不同來辨別用戶到底是按下哪個按鍵。

電路中的4MHz晶體振盪器和兩個22pF的電容是用來為單片機PIC16F84A提供基準頻率的。該電路使用4.5V的直流電源,由三節干電池提供。

電阻R1、R2、R3、R4的作用是在按鍵按下前連接單片機PIC16F84A的輸入引腳和電源,使引腳輸入高電平。當按鍵K按下時電阻起分壓作用,保證單片機PIC16F84A引腳有低電平輸入。

3.接收電路

紅外遙控的接收就是由紅外接收器件光電二極體或光電三極體接收下來,再把紅外光信號轉換成電信號。紅外遙控接收器由紅外線接收器件、前置放大電路、解調電路、指令信號檢出電路、記憶及驅動電路、執行電路組成。當紅外接收器件收到發射器的紅外指令信號時,它將紅外光信號變為電信號並送入前置故大器進行放大,再經解調器後,由指令信號檢出電路將指令信號檢出,最後記憶及驅動電路驅動執行電路,實現各種操作。

紅外遙控的接收部分的原理方框圖(如圖3)。

接收部分電路主要包括直流穩壓電源提供電路、紅外線接收電路、放大電路、顯示電路、

音頻功放電路。這個電路顯然比上一章的紅外線發射電路復雜多了,在這里我們先看一下接收部分的電路圖再慢慢分析它的原理。

接收部分的電路圖(見圖4)。

接收部分電路的顯示,音頻功放等功能需要較大的功率和電壓。因此我們不能用電池做電源,而是要用220V的交流生活用電源。可是220V的電源對於PIC16F84A單片機、DAC0830等晶元來說太高了,而且它們需要的是直流電源。所以我們需要把220V交流電變成幾伏的直流電源,這個工作是由直流穩壓電源電路完成的。這部分電路由兩個部分組成:1.降壓整流電路;2.穩壓電路、降壓整流電路由一個變壓器和4個整流二極體組成。如圖4.2所示,220V交流電通過變壓器T01後從220V的交流電壓變成15V左右的交流電壓,15V的交流電壓經過4個整流二極體整流後,轉換成有部分交流成分的直流電壓。在這部分電路的製作時要注意兩點:

1.變壓器初級必須接在220V交流電一端,次級接在電路板上。如果接錯輕則燒壞電路板,重則可能傷害到人生安全。初、次級的區分可以通過測變壓器的內阻辨別——內阻大的是初級,內阻小的是次級。

2.整流二極體的排列方向必須正確。整流二極體排列錯誤就會燒壞電容,也有可能會燒壞後面的晶元。

穩壓電路由一些電阻電容和穩壓晶元7805、7809組成。這部分電路的功能是對上一級電路提供的直流電壓進一步整流、穩壓、降壓,最後產生後面電路需要的5V直流電源和9V直流電壓。

如圖4.2,R01、R02、R18的作用是分壓、限流,它們使電壓進一步下降和當後面電路出現短路等毛病時可以限制電路過大保護電路。電容C01、C02、C03等電容的作用的濾波,使電壓的波形

更加平穩。這部分電路的關鍵功能是由穩壓晶元7805和7809實現。7805可以把前面的不穩定電壓

轉換成穩定的5V直流電源,輸出給晶元PIC16F84A和CD4511使用。7809可以把前面的不穩定電壓轉換成穩定的9V直流電源輸出給晶元DAC0830使用。

紅外接收電路由光電三極體Q03PIC16F84單片機等組成。光電三極體能夠把發射部分電路的紅外線發光二極體發射出來的紅外線信號接收下來,然後轉換成相應的電信號輸入到單片機PIC16F84A的6號引腳RB0中。

單片機PIC16F84A是接收部分電路的核心部件。它負責對接收到的信號解碼、識別,再根據接收到的信號輸出控制信號,控制下面電路的驅動電路和顯示電路。電容C06、C07、晶體振盪器X01可以產生4MHz的振盪時鍾信號為單片機PIC16F84A提供和發射部分的單片機一樣的時鍾信號,使它們可以同步工作。

放大電路由三極體Q01、Q02和一些電阻電容組成。它們的工作是對單片機PIC16F84A輸出的控制信號放大,推動下一級電路工作。

顯示電路由晶元CD4511和LED顯示管組成。它們的工作是顯示單片機輸出的信號是否符合設定的程序,方便電路的檢測與調試。參考圖4晶元CD4511接收的到單片機PIC16F84A發出的信號後就在相應的引腳發出高電平由LED顯示管顯示出來。

音頻功率放大器的類型很多,根據使用器件的不同,可分為純電子管、晶體管、集成電路、場效應管功率放大器。本項目的音頻功放電路選用晶元LM4756,由0AC0830進行D/A變換,控制功率放大器音量大小。

在發射電路中由於關鍵的編碼部分電路功能本設計使用了美國公司Microchip生產的PIC16F84A單片機來實現,因而電路顯得非常的簡潔。接收電路中也用到PIC16F84A,它負責把接收的信號解碼,輸出信號來控制音頻功放電路和顯示電路。使用PIC16F84A單片機的好處還在於我們只要改變單片機里的程序就可以實現電路功能的改變,同時也可以實現一個遙控器控制多種機器。

4.PCB設計與製作

根據電路原理圖,運用了Protel99軟體對電路進行了PCB設計,包括元器件的布局與布線,最後成功製作PCB板。這是該畢業設計的主要內容之一。

(1)元件的布局:手工布局,一般是遵循相關的元件放在一起的原則,有特殊要求的元件特別處理;例如開關、跳線、去耦電容等。

(2)PCB布線:布線的宗旨是能使線布到最合理最密集,而干擾最小。本設計採用手工布線與自動布線相結合的手段。先對有特殊要求的走線進行預布,例如電源線、地線和信號線等。

然後按照設定的規則自動布線;最後對完成的布線進行逐一的檢測。盡量減少過孔,使走線最短,最合理。

設計的PCB布線圖(見圖5)。

5.測試結果

在接收電路的電源功能上通過調試後在IC117805的輸出端輸出+5V的直流電壓供晶元

PIC16F84A和CD4511使用;在晶元IC127809的輸出端輸出穩定的+9V的直流電壓。電路實現的功能如下:

(1)實現了較遠距離的紅外線遙控。最遠遙控距離為十米左右。

(2)實現了音頻功放,最大輸出功率高達35W。

㈦ 單片機的紅外遙控的原理

1、發送端由單片機和紅外發光二極體組成。
單片機控制紅外發光二極體發射38KHz左右的紅外光,這個紅外光就可能起到傳遞信號的作用。你可以在你的程序中規定發射紅外線時表示二進制的一個位『1』無紅外線時表示二進制的『0』。這樣你就可以發出一系列由『1』和『0』所級成的信號。
2、接收端是由紅外接收二極體和單片機組成。
前面我們讓發射端發出信號,現在接收頭就開始收信號。

㈧ 單片機C語言程序設計實訓100例:基於PIC+Proteus模擬的內容簡介

《單片機C語言程序設計實訓100例:基於PIC+Proteus模擬》基礎設計類案例涵蓋PIC單片機最基本的埠編程、定時/計數器應用、中斷程序設計、A/D轉換、CCP程序設計、EEPROM、Flash、USART及看門狗程序設計等;硬體應用類案例涉及單片機存儲器外展、介面擴展、解碼、編碼、驅動、光電、機電、感測器、I2C及SPI介面器件、MMC、紅外等器件;綜合設計類案例涉及消費類電子產品、儀器儀表及智能控制設備相關技術,相關案例涉及RS-485/Modbus/CAN/Ethernet等技術應用。

㈨ 如何在pic單片機io口實現紅外發射與接收!單片機沒有pwm功能的!

利用定時器產生38KHz的方波,然後再將你需要的數據載入在載波上。

閱讀全文

與pic單片機紅外相關的資料

熱點內容
銷售女王韓國 瀏覽:432
出軌的電影歐美 瀏覽:463
女生適合學編程 瀏覽:942
cad中的移動命令 瀏覽:684
0855影視在線看 瀏覽:11
求小仙兒有聲小說資源 瀏覽:993
老版皮特電影 瀏覽:634
韓國19禁 中文字幕 瀏覽:201
女性露點電影原罪 瀏覽:358
亞馬遜雲自建ssr伺服器教程 瀏覽:570
泰國流產嬰兒復仇的電影 瀏覽:200
我常在周末去看電影英語 瀏覽:418
男孩熟女電影 瀏覽:912
centos開機啟動命令 瀏覽:669
直播完整源碼java 瀏覽:543
二戰蘇日電影 瀏覽:37
台灣販賣婦女的電影 瀏覽:66
監控網頁端監控源碼 瀏覽:888
蘋果m1晶元前端開發編程問題 瀏覽:578
無法訪問共享文件夾找不到路徑 瀏覽:244