导航:首页 > 操作系统 > 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单片机红外相关的资料

热点内容
玩具解压神器怎么做 浏览:298
安卓手机如何共存歌曲 浏览:425
简单的游戏代码源码 浏览:345
金蝶服务器怎么改 浏览:594
h y p 6.vip 浏览:709
韩国战争电影十大巅峰之作 浏览:425
大尺度百合剧 浏览:112
为什么要叫毒app 浏览:492
编程类校赛 浏览:994
五十五度灰 浏览:351
android入门到精通pdf明日科技 浏览:491
解压缩文件怎么老重启 浏览:213
儿童智能关怀app苹果为什么不能用 浏览:707
tcpdump抓包命令 浏览:793
各大主播在用什么app看电影 浏览:421
泰国恐怖片 和尚 浏览:219
宁夏品质压缩机市场 浏览:186
日立螺杆压缩机维修 浏览:427
识别英语单词哪个app比较好 浏览:188