当前位置:文档之家› 基于51单片机的红外遥控

基于51单片机的红外遥控

基于51单片机的红外遥控
基于51单片机的红外遥控

基于51单片机的红外遥控

红外遥控就是无线遥控的一种方式,本文讲述的红外遥控,采用STC89C52单片机,1838红外接收头与38k红外遥控器。

1838红外接收头:

红外遥控器:

原理:

红外接收的原理我不赘述,百度文库上不少,我推荐个网址,这篇文章写得比较清楚,也比较全面,

我主要讲下程序的具体意思,在了解原理的基础上,我们知道,当我们在遥控器上每按下一个键,遥控器上的红外发射头都会发出一个32位的编码(32位编码分成4组8位二进制编码,前16位为用户码与用户反码,后16位为数据码与数据反码,用户码表示遥控器类型,数据码表示按键编码),不同的键对应不同的编码,红外接收头接收到这个编码后,发送给单片机,再进行相关操作。

源程序1:(这个程序的功能就是将用户码与用户反码,数据码与数据反码显示在1602液晶上,因为遥控器买回来就是不会说明按键对应什么码值,所以先自己测试,确定每个按

键的码值)

#include

#include

#include

#define uint unsigned int

#define uchar unsigned char

#define _Nop() _nop_()

#define TURE 1

#define FALSE 0

/*端口定义*/

sbit lcd_rs_port = P3^5; /*定义LCD控制端口*/

sbit lcd_rw_port = P3^6;

sbit lcd_en_port = P3^4;

#define lcd_data_port P0

///////////////////////////////////

void delay1 (void)//关闭数码管延时程序

{

int k;

for (k=0; k<1000; k++);

}

////////////////////////////////////

uchar code line0[16]={" user: "};

uchar code line1[16]={" data: "};

uchar code lcd_mun_to_char[16]={"0123456789ABCDEF"};

unsigned char irtime;//红外用全局变量

bit irpro_ok,irok;

unsigned char IRcord[4];//用来存放用户码、用户反码、数据码、数据反码unsigned char irdata[33];//用来存放32位码值

void ShowString (unsigned char line,char *ptr);

//////////////////////////////////////////////

void Delay(unsigned char mS);

void Ir_work(void);

void Ircordpro(void);

void tim0_isr (void) interrupt 1 using 1//定时器0中断服务函数

{

irtime++;

}

void ex0_isr (void) interrupt 0 using 0//外部中断0服务函数

{

static unsigned char i;

static bit startflag;

if(startflag){

if(irtime<63&&irtime>=33)//引导码TC9012的头码

i=0;

irdata[i]=irtime;

irtime=0;

i++;

if(i==33){

irok=1;

i=0;

}

}

else{

irtime=0;

startflag=1;

}

}

void TIM0init(void)//定时器0初始化

{

TMOD=0x02;//定时器0工作方式2,TH0就是重装值,TL0就是初值

TH0=0x00;//reload value

TL0=0x00;//initial value

ET0=1;//开中断

TR0=1;

}

void EX0init(void)

{

IT0 = 1; // Configure interrupt 0 for falling edge on /INT0 (P3、2)

EX0 = 1; // Enable EX0 Interrupt

EA = 1;

}

void Ircordpro(void)//红外码值处理函数(关键函数)

{

unsigned char i, j, k=1;

unsigned char cord,value;

for(i=0;i<4;i++){//处理4个字节

for(j=1;j<=8;j++){ //处理1个字节8位

cord=irdata[k];

value=value>>1;

if(cord>7) value=value|0x80; //大于某值为1

k++;

}

IRcord[i]=value;

value=0;

}

irpro_ok=1;//处理完毕标志位置1

}

///////////////////////////////////////////

void lcd_delay(uchar ms) /*LCD1602 延时*/

{

uchar j;

while(ms--){

for(j=0;j<250;j++)

{;}

}

}

//////////////////////////////////////////////

void lcd_busy_wait() /*LCD1602 忙等待*/

{

lcd_rs_port = 0;

lcd_rw_port = 1;

lcd_en_port = 1;

lcd_data_port = 0xff;

_Nop();

_Nop();

_Nop();

_Nop();

while (lcd_data_port&0x80);

lcd_en_port = 0;

}

///////////////////////////////////////////////

void lcd_command_write(uchar command) /*LCD1602 命令字写入*/ {

lcd_busy_wait();

lcd_rs_port = 0;

lcd_rw_port = 0;

lcd_en_port = 0;

lcd_data_port = command;

_Nop();

_Nop();

_Nop();

_Nop();

_Nop();

_Nop();

lcd_en_port = 1;

_Nop();

_Nop();

_Nop();

_Nop();

_Nop();

_Nop();

lcd_en_port = 0;

}

/////////////////////////////////////////

void lcd_system_reset() /*LCD1602 初始化*/

{

lcd_delay(20);

lcd_command_write(0x38);

lcd_delay(100);

lcd_command_write(0x38);

lcd_delay(50);

lcd_command_write(0x38);

lcd_delay(10);

lcd_command_write(0x08);

lcd_command_write(0x01);

lcd_command_write(0x06);

lcd_command_write(0x0c);

}

//////////////////////////////////////////////////

void lcd_char_write(uchar x_pos,y_pos,lcd_dat) /*LCD1602 字符写入*/ {

x_pos &= 0x0f; /* X位置范围0~15 */

y_pos &= 0x01; /* Y位置范围0~ 1 */

if(y_pos==1) x_pos += 0x40;

x_pos += 0x80;

lcd_command_write(x_pos);

lcd_busy_wait();

lcd_rs_port = 1;

lcd_rw_port = 0;

lcd_en_port = 0;

lcd_data_port = lcd_dat;

_Nop();

_Nop();

_Nop();

_Nop();

_Nop();

_Nop();

lcd_en_port = 1;

_Nop();

_Nop();

_Nop();

_Nop();

_Nop();

_Nop();

lcd_en_port = 0;

}

void main(void)

{

uchar i;

lcd_system_reset(); /* 初始化LCD1602 */

lcd_data_port = 0xff;

for(i=0;i<16;i++) lcd_char_write(i,0,line0[i]);

for(i=0;i<16;i++) lcd_char_write(i,1,line1[i]);

EX0init(); // Enable Global Interrupt Flag

TIM0init();

while(1){//主循环

if(irok){

Ircordpro();

irok=0;

}

if(irpro_ok){ /*遥控成功接收*/

lcd_char_write(8,0,lcd_mun_to_char[IRcord[0]/0x10]);

lcd_char_write(9,0,lcd_mun_to_char[IRcord[0]%0x10]);

lcd_char_write(11,0,lcd_mun_to_char[IRcord[1]/0x10]);

lcd_char_write(12,0,lcd_mun_to_char[IRcord[1]%0x10]);

lcd_char_write(8,1,lcd_mun_to_char[IRcord[2]/0x10]);

lcd_char_write(9,1,lcd_mun_to_char[IRcord[2]%0x10]);

lcd_char_write(11,1,lcd_mun_to_char[IRcord[3]/0x10]);

lcd_char_write(12,1,lcd_mun_to_char[IRcord[3]%0x10]);

}//将码值显示在液晶上

}

}

源程序2:(在知道了按键编码的基础上,我们便可以加入判断,判断哪个键被按下,进而执行相关操作)

我只修改main函数,其她与源程序1相同

sbit led1=P1^0;

sbit led2=P1^1;

sbit led3=P1^2;

sbit led4=P1^3;

sbit led5=P1^4;//发光二极管控制端定义

void main(void)

{

uchar i;

lcd_system_reset(); /* 初始化LCD1602 */

lcd_data_port = 0xff;

for(i=0;i<16;i++) lcd_char_write(i,0,line0[i]);

for(i=0;i<16;i++) lcd_char_write(i,1,line1[i]);

EX0init(); // Enable Global Interrupt Flag

TIM0init();

while(1){//主循环

if(irok){

Ircordpro();

irok=0;

}

if(irpro_ok){ /*遥控成功接收*/

switch(IRcord[2])//为什么判断IRcord[2],因为这个里面存放的就是数据码

{

case 0x0c: led1=0;//按0键,灯1亮

break;

case 0x18: led2=0; //按1键,灯2亮

break;

case 0x5e: led3=0; //按2键,灯3亮

break;

case 0x08: led4=0; //按3键,灯4亮

break;

case 0x1c: led5=0; //按4键,灯5亮

break;

}

}

}

}

附连接图

单片机的红外遥控器解码设计

第1章红外解码系统分析 第1节设计要求 整个控制系统的设计要求:被控设备的控制实时反应,从接收信号到信号处理及对设备控制反映时间应小于1s;整个系统的抗干扰能力强,防止误动作;整个系统的安装、操作简单,维护方便;成本低。 红外载波、编码电路设计要求:单片机定时器精确产生38KHz红外载波;根据控制系统要求能对红外控制指令信号精确编码并迅速发送。 红外解码电路设计要求:精确接收红外信号,并对所接收信号进行解码、放大、整形、解调等处理,最后输出TTL电平信号;对非红外光及边缘红外光抗干扰能力强。 设备扩展模块设计要求:直流控制交流;抗干扰能力强;反应迅速不产生误动作;能承受大电流冲击。 第2节总体设计方案 2.1方案论证 驱动与开关 方案一:采用晶闸管直接驱动。 其优点是体积小,电路简单,外围元件少。但控制电流小,大电流晶闸管成本高,并且隔离性能差。 方案二:采用三极管驱动继电器。 其体积大,外围元件多。优点是控制电流大,隔离性能好。 根据实际情况,拟采用方案二。 2.2总体设计框图 经过上述方案的分析选择,得出系统硬件由以下几部分组成:电视红外遥控器,51单片机最小系统,接收放大于一体集成红外接收头,1602液晶显示驱动电路。 整体设计思路为:根据扫描到不同的按键值转至相对应的ROM表读取数据。确认设备及菜单选择键后AT89S2将从ROM读取出来的值,按照数据处理要求从P2.5输出控制脉冲与T0产生的38KHz的载波(周期是26.3μs)进行调制,经NPN三极管对信号放大驱动红外发光管将控制信号发送出去。红外数据接收则是采用HS0038一体化红外接收头,内部集成红外接收、数据采集、解码的功能,只要在接收端INT0检测头信号低电平的到来,就可完成对整个串行的信号进行分析得出当前控制指令的功能。然后根据所得的指令去操作相应的用电器件工作,如图1-1所示。

基于单片机的红外遥控智能小车设计报告

基于单片机的红外遥控智能小车设计报告

毕业设计(论文)题目:基于单片机的红外遥控智能小车

西安邮电学院 毕业设计(论文)任务书 学生姓名指导教师职称工程师学院电子工程学院系部光电子技术 专业光电信息工程 题目基于单片机的红外遥控智能小车 任务与要求 任务:以51单片机为控制核心,实现具有自动避障、加速、减速等功能的红外遥控智能小车。 要求:1 搜集资料,熟悉单片机开发流程;熟悉红外传感器等相关器件; 掌握单片机接口和外围电路应用;具备一定的单片机开发经 验。 2 学会电路设计、仿真等相关软件的使用; 3 具备一定的硬件调试技能。 4 学会查阅资料; 5 学会撰写科技论文。 开始日期2010年3月22日完成日期2010年6月27日主管院长(签字) 年月日

西安邮电学院 毕业设计 (论文) 工作计划 学生姓名赵美英指导教师崔利平职称工程师学院电子工程学院系部光电子技术 专业光电信息工程 题目基于单片机的红外遥控智能小车 工作进程

主要参考书目(资料) 1、何立民,单片机应用系统设计,北京:航天航空大学出版社; 2、李广弟,单片机基础,北京:北京航空航天大学出版社,2001; 3、何立民,MCS-51系列单片机应用系统设计系统配置与接口技术,北 京航空航天大学出版社,1990.01; 4、赵负图,传感器集成电路手册,第一版,化学工业出版社,2004; 5、Atmel.AT89S51数据手册.https://www.doczj.com/doc/3b3405190.html, 主要仪器设备及材料 1.普通计算机一台,单片机开发环境; 2.电路安装与调试用相关仪器和工具。 (如示波器、万用表、电烙铁、镊子、钳子等)。 论文(设计)过程中教师的指导安排 每周四进行交流与总结;其余时间灵活安排,及时解决学生问题。 对计划的说明 依学生实际情况,适当调整工作进度。

基于51单片机的红外遥控

基于51单片机的红外遥控 红外遥控是无线遥控的一种方式,本文讲述的红外遥控,采用STC89C52单片机,1838红外接收头和38k红外遥控器。 1838红外接收头: 红外遥控器: 原理: 红外接收的原理我不赘述,百度文库上不少,我推荐个网址,这篇文章写得比较清楚,也比较全面,https://www.doczj.com/doc/3b3405190.html,/view/c353e8360b4c2e3f57276349.html 我主要讲下程序的具体意思,在了解原理的基础上,我们知道,当我们在遥控器上每按下一个键,遥控器上的红外发射头都会发出一个32位的编码(32位编码分成4组8位二进制编码,前16位为用户码和用户反码,后16位为数据码和数据反码,用户码表示遥控器类型,数据码表示按键编码),不同的键对应不同的编码,红外接收头接收到这个编码后,发送给单片机,再进行相关操作。 源程序1:(这个程序的功能是将用户码和用户反码,数据码和数据反码显示在1602液晶上,因为遥控器买回来是不会说明按键对应什么码值,所以先自己测试,确定每个 按键的码值) #include #include #include #define uint unsigned int #define uchar unsigned char #define _Nop() _nop_() #define TURE 1 #define FALSE 0

/*端口定义*/ sbit lcd_rs_port = P3^5; /*定义LCD控制端口*/ sbit lcd_rw_port = P3^6; sbit lcd_en_port = P3^4; #define lcd_data_port P0 /////////////////////////////////// void delay1 (void)//关闭数码管延时程序 { int k; for (k=0; k<1000; k++); } //////////////////////////////////// uchar code line0[16]={" user: "}; uchar code line1[16]={" data: "}; uchar code lcd_mun_to_char[16]={"0123456789ABCDEF"}; unsigned char irtime;//红外用全局变量 bit irpro_ok,irok; unsigned char IRcord[4];//用来存放用户码、用户反码、数据码、数据反码unsigned char irdata[33];//用来存放32位码值 void ShowString (unsigned char line,char *ptr); ////////////////////////////////////////////// void Delay(unsigned char mS); void Ir_work(void); void Ircordpro(void); void tim0_isr (void) interrupt 1 using 1//定时器0中断服务函数 { irtime++; } void ex0_isr (void) interrupt 0 using 0//外部中断0服务函数 { static unsigned char i; static bit startflag; if(startflag){ if(irtime<63&&irtime>=33)//引导码TC9012的头码 i=0; irdata[i]=irtime; irtime=0; i++; if(i==33){ irok=1; i=0; }

基于单片机的红外遥控系统设计

课程设计 基于单片机的红外遥控系统设计 学院:计算机与通信工程学院 专业:通信工程 班级:通信11-3班 姓名: 学号:

天津理工大学 摘要 本设计采用51单片机作为遥控发射接收芯片,HS003B作为红外一体化接收发射管,在此基础上设计了一个简易的智能红外遥控系统。系统包括接收和发射两大部分,发射部分有16个按键,接收部分含有8盏彩色LED灯、一片二位数码管和蜂鸣器系统。发射部分通过键盘扫描判断哪个键被按下,经过单片机编码程序进行编码,控制红外发射电路发送信号。接收部分解码信号,实现相应的输出。本设计方案结合红外遥控设计简单、作方便、成本低廉等特点。 关键字:红外遥控信号调制编码解码

天津理工大学 目录 摘要................................................................................................................................................... I I 1.绪论 (1) 1.1课题目的和意义 (1) 1.2红外线简介 (1) 1.3红外遥控系统简介 (1) 2 课题方案和设计思路 (2) 2.1总体方案 (2) 2.2红外发射器设计 (3) 2.2.1红外发射器原理 (3) 2.2.2红外编码 (3) 2.3红外接收端设计 (4) 3硬件结构设计与介绍 (5) 3.1AT89C51系列单片机功能特点 (5) 3.1.1主要特性 (5) 3.1.2管脚说明 (5) 3.1.3基本电路 (7) 3.2红外发射电路 (8) 3.3红外接收电路设计 (9) 3.3.1红外接收模块 (9) 3.3.2数码管 (9) 3.3.3彩灯系统 (10) 3.3.4蜂鸣器系统 (11) 3.3.5红外接收端电路图 (12) 4 软件设计 (12) 4.1定时/计数器功能简介 (12) 4.2遥控码的发射 (13) 4.3红外接收 (14) 5.课程设计总结和心得 (15) 参考文献 (16) 附录 (17) 附录1P ROTEUS仿真图 (17) 附录2发射程序 (17) 附录3接收程序 (20)

基于51单片机的红外遥控小车设计和制作

基于51单片机的红外遥控小车设计和制作 论文关键字:AT89C51单片机直流电机红外线遥控循迹 L298 论文摘要:本文介绍一款红外线遥控小车,以AT89S51单片机为核心控制器,用L289驱动直流电机工作,控制小车的运行。本款小车具有红外线遥控手动驾驶、自动驾驶、寻迹前进等功能。本系统采用模块化设计,软件用C语言编写。 一、设计任务和要求 以AT98C51单片机为核心,制作一款红外遥控小车,小车具有自动驾驶,手动驾驶和循迹前进等功能。自动驾驶时,前进过程中可以避障。手动驾驶时,遥控控制小车前进、后退、左转、右转、加速等操作。寻迹前进时小车还可以按照预先设计好的轨迹前进。 二、系统组成及工作原理 本系统由硬件和软件两部分组成。硬件部分主要完成红外编码信号的发射和接受、障碍物检测、轨迹检测、直流电机运行的发生等功能。软件主要完成信号的检测和处理、设备的驱动及控制等功能。AT89S51单片机查询红外信号并解码,查询各个检测部分输入的信号,并进行相应处理,包括电机的正反转,判断是否遇到障碍物,判断是否小车其那金中有出轨等。系统结构框图如图1所示。 图1 系统结构框图 三、主要硬件电路 1、遥控发射器电路 该电路的主要控制器件为遥控器芯片HT6221,如图2所示。HT6221将红外码调制成38KHZ的脉冲信号通过红外发射二极管发出红外编码。图2中D1是红外发射二极管,D2是按键指示灯,当有按键按下时D2点亮。 HT6221的编码规则是:当一个键按下超过36ms,振荡器使芯片激活,如果这个按键按下且延迟大约108ms,这108ms发射代码由一个起始码(9ms),一个结果码(4.5ms),低8位地址码(9ms~18ms),高8位地址码(9~18ms),8位数据码(9~18ms)和这8位数据码的反码(9~18ms)组成,如果按键按下超过108ms仍未松开,接下来发射的代码将仅由起始码(9ms)和结束码(2.5ms)组成。按照上图的接法,K1~K8的数据码分别为:0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07。 图2 遥控发射器电路原理图 2、红外线接收模块 该模块使用一体化红外接收头1838,其电路如图3所示。瓷片电容104为去耦电容,DOUT即是解调信号的输出端,直接与单片机的P3.2口相连。有红外编码信号发射时,输出为检波整形后的方波信号,并直接提供给单片机。 图3 红外接收原理图 3、电机驱动模块 该模块主要由芯片L298控制两个电机的正反转,以及改变电机的转速,其电路如图4所示。L298 芯片是一种高压、大电流双全桥式驱动器。其中SENSEA、SENSEB分别为两个H桥的电流反馈脚,不用时可以直接接地。VCC,VS是接电源引脚,电压范围分别是4.5~7V、2.5~46V,设计中VCC端与单片机电源端共用5V工作电源,VS端独立接9V电

c51、c52单片机红外线遥控接收解码c程序(可直接使用)

/ 亲,此程序以经过测试,可直接使用!!!/ #include #define uchar unsigned char #define uint unsigned int void delay(uchar x); sbit IRIN = P3^2; uchar IRCOM[4]; void main() { IE = 0x81; TCON = 0x01; IRIN=1; /* 此处可以根据按键码自由编写程序 /以下为3*7遥控按键码/ /(也可以应用与其他类型遥控,本程序只以3*7遥控为例)/ / 0x45 0x46 0x47 / / 0x44 0x40 0x43 / / 0x07 0x15 0x09 / / 0x16 0x19 0x0d / / 0x0c 0x18 0x5e / / 0x08 0x1c 0x5a / / 0x42 0x52 0x4a / 例如: while(1) {switch(IRCOM[2]) {case 0x45: P2=0x7f; break; case 0x44: P2=0xbf; break; case 0x07: P2=0xdf; break; case 0x16: P2=0xef; break; case 0x0c: P2=0xf7; break; case 0x08: P2=0xfb; break; case 0x42: P2=0xfd; break; case 0x52: P2=0xfe; break; case 0x4a: P2=0xff; break; case 0x5a: P2=0x00; break;} } */ while(1); } //end main /**********************************************************/ void IR_IN(void) interrupt 0 //外部中断服务程序 {unsigned char j,k,N=0; EX0 = 0; delay(15); if (IRIN==1) { EX0 =1;

基于单片机的红外遥控小车设计

单片机系统设计实例 红外遥控小车 专业:信息对抗技术 姓名:吴志飞 学号:1411050121 指导教师:张东阳

目录 1 绪论 (1) 2 系统分析 (2) 2.1系统框架 (2) 2.2电机驱动模块 (3) 2.3 LCD显示模块 (4) 3 系统硬件设计 (5) 3.1主控模块的电路设计 (6) 3.1.1AT89C51单片机的简介 (8) 3.1.2AT89C51管脚功能 (8) 3.2红外遥控模块的电路设计 (9) 3.2.1红外遥控的实现原理 (10) 3.2.2红外发射器 (11) 3.2.3红外接收器 (12) 3.3电机驱动模块的电路设计 (12) 3.4显示模块的电路设计 (13) 4 系统软件设计 (14) 4.1程序代码 (14) 4.2软件流程图 (17) 5 调试与仿真 (18) 5.1在keil中进行调试 (18) 5.2在Proteus中进行仿真 (19) 6 总结 (21) 参考文献 (22) I

沈阳理工大学课程设计说明书 1 绪论 随着计算机、微电子、信息技术的快速进步,智能化技术的开发速度越来越快,,智能化程度越来越高,应用范围也越来越广,包括海洋开发、宇宙探测、工农业生产、军事、社会服务、娱乐等各个领域。智能电动小车系统以迅猛发展的汽车电子为背景,涵盖了控制、模式识别、传感技术、电子、电气、计算机、机械等多个学科。主要由路径识别、角度控制及车速控制等功能模块组成。同时,当今机器人技术发展的如火如荼,其在国防等众多领域的应用广泛开展。神五、神六升天、无人飞船等等无不得益于机器人技术的迅速发展。一些发达国家已把机器人制作比赛作为创新教育的战略性手段,参加者多数为学生,目的在于通过大赛全面培养学生的动手能力、创造能力、合作能力和进取精神,同时也普及智能机器人的知识。从某种意义上来说,机器人技术反映了一个国家综合技术实力的高低,而智能电动小车是机器人的雏形,它的控制系统的研制将有助于推动智能机器人控制系统的发展,同时为智能机器人的研制提供更有利的手段。 本次课设设计的红外遥控智能小车可以分为四大组成部分:红外遥控部分、显示部分、执行部分、控制部分。智能小车可以实现按遥控指示前行,后退,左转和右转。该设计主要通过对系统硬件电路的设计,软件设计和程序的编写,然后通过后期软硬件调试达到设计初衷。 1

基于51单片机的红外遥控器设计

天津职业大学 二○一五~二○一六学年第1学期 电子信息工程学院 通信系统综合实训报告书 课程名称:通信系统综合实训 班级:通信技术(5)班 学号:1304045640 1304045641 1304045646姓名:韩美红季圆圆陈真真指导教师:崔雁松 2015年11月17日

一、任务要求 利用C51单片机设计开发一套红外线收发、显示系统。 具体要求: ●编写相关程序(汇编、C语言均可); ●用Proteus绘制电路图并仿真实现基本功能; ●制作出实物 二、需求分析(系统的应用场景、环境条件、参数等) 现在各种红外线技术已经源源不断进入我们的生活中,在很多场合发挥着作用。 机场、宾馆、商场等的自动门,会在人进出时自动地开启和关闭。原来,在自动门的一侧有一个红外线光源,发射的红外线照射到另一侧的光电管上,红外线是人体察觉不到的。当人走到大门口,身体挡住红外线,电管接收不到红外线了。根据设计好的指令,触发相应开关,就把门打开了。等人进去后,光电管又可以接到红外线,恢复原来的线路,门又会自动关闭。因此这种光电管被称为“电眼”,在许多自动控制设备中大显身手。 在家庭中,许多电子设备如彩色电视、空调、冰箱和音响等,都使用了各种“红外线遥控器”。利用它我们可以非常方便的转换电视频道或设定空调的温度档次。 三、概要设计(系统结构框图/系统工作说明流程图) 红外线收发、显示系统硬件由以下几部分组成:红外遥控器,51单片机最小系统,接收放大器一体集成红外接收头,LED灯显示电路。 红外线接收是把遥控器发送的数据(已调信号)转换成一定格式的控制指令脉冲(调制信号、基带信号),是完成红外线的接收、放大、解调,还原成发射格式(高、低电位刚好相反)的脉冲信号。这些工作通常由一体化的接收头来完成,输出TTL兼容电平。最后通过解码把脉冲信号转换成数据,从而实现数据的传输。 红外遥控系统电路框图

红外遥控解码单片机课程设计报告

单片机课程设计报告 ——————————红外遥控解码 学校:东莞理工学院 院系:电子工程学院 作者:官炎钦 同组人员:陈帅、林志鹏、洪楚明

目录: 一、前言 ------------------------------------------- 1 二、设计原理 --------------------------------------- 1 1、红外通信原理 -------------------------------------------------- 1 2、红外编码原理 -------------------------------------------------- 3 三、硬件电路设计 ----------------------------------- 5 1、总体电路图 ----------------------------------------------- 5 2、数码管与LED显示电路图 ---------------------------------------6 四、软件设计 --------------------------------------- 7 1、程序框图 ----------------------------------------------------- 8 2、程序清单 ----------------------------------------------------- 8 3、总结与心得 --------------------------------- 14

一、前言 随着科学技术的发展,单片机因其该可靠性和高性价比,在智能化家用电器仪表仪器等恒多领域得到极为广泛的应用。在很多实际单片机系统中,常常使用非电信号,如光信号,超声波信号等,来传播信息,以实现遥控和遥测的功能,其中红外遥控是目前最广泛的一种通信和控制手段。由于红外遥控使用方便、功耗低、成本低廉、功能强、抗干扰强等特点,因而,继彩电、录像机之后,在录音机、音响备、空凋机以及玩具等其它小型电器装置上也纷纷采用红外线遥控。 本设计以STC89C52单片机作为控制中心,综合应用了单片机内部结构及中断系统等知识,应用红外光的优点,实现对红外遥控器的解码和通信。 二、设计原理 1、红外通信原理 红外通信,即以红外线作为通信载体,通过红外光在空中的传播来传输数据的通信方式,它有发射红外线的电路和接收端来完成。在发射端,发送的数字信号经过适当的调制编码后,送入电光变换电路,经红外发射管转变为红外光脉冲发射到空中;在接收端,红外接收器对接收到的红外光脉冲进行光电变换,解调,再经单片机处理,便可以恢复出原数据信号。 红外通信原理图 2、红外编码原理 常用的红外线信号传输协议有ITT 协议、NEC 协议、Nokia NRC 协议、Sharp 协议、Philips RC-5 协议、Philips RC-6协议,Philips RECS-80协议,以及Sony SIRC 协议等。 1)协议组成:一般由引导码,用户码,数据码,重复码或数据码的反码和结束码构成。2)载波:常用的有33K,36K,36.6K,38K,40K,56K,无载波 3)占空比:常用的有1/3,1/2,不常用1/4 4)调制方式:脉宽调制,相位调制,脉冲位置调制 本次设计红外发射端选用的是NEC协议编码的,由38K载波调制的红外编码的红外遥控器。 (1)0和1的编码 遥控器发射的信号由一串0和1的二进制代码组成。不同芯片对0和1的编码有所不同。通常有曼彻斯特编码和脉冲宽度编码。TC9012的0和1采用PWM方法编码,即脉冲宽度调制。以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”,如下图所示:

基于单片机的红外遥控智能小车毕业设计报告

毕业设计(论文)题目:基于单片机的红外遥控智能小车

西安邮电学院 毕业设计(论文)任务书 学生姓名指导教师职称工程师学院电子工程学院系部光电子技术 专业光电信息工程 题目基于单片机的红外遥控智能小车 任务与要求 任务:以51单片机为控制核心,实现具有自动避障、加速、减速等功能的红外遥控智能小车。 要求:1 搜集资料,熟悉单片机开发流程;熟悉红外传感器等相关器件; 掌握单片机接口和外围电路应用;具备一定的单片机开发经验。 2 学会电路设计、仿真等相关软件的使用; 3 具备一定的硬件调试技能。 4 学会查阅资料; 5 学会撰写科技论文。 开始日期2010年3月22日完成日期2010年6月27日主管院长(签字) 年月日

西安邮电学院 毕业设计 (论文) 工作计划 学生姓名赵美英指导教师崔利平职称工程师学院电子工程学院系部光电子技术 专业光电信息工程 题目基于单片机的红外遥控智能小车 工作进程

主要参考书目(资料) 1、何立民,单片机应用系统设计,北京:航天航空大学出版社; 2、李广弟,单片机基础,北京:北京航空航天大学出版社,2001; 3、何立民,MCS-51系列单片机应用系统设计系统配置与接口技术,北京航 空航天大学出版社,1990.01; 4、赵负图,传感器集成电路手册,第一版,化学工业出版社,2004; 5、Atmel.AT89S51数据手册.https://www.doczj.com/doc/3b3405190.html, 主要仪器设备及材料 1.普通计算机一台,单片机开发环境; 2.电路安装与调试用相关仪器和工具。 (如示波器、万用表、电烙铁、镊子、钳子等)。 论文(设计)过程中教师的指导安排 每周四进行交流与总结;其余时间灵活安排,及时解决学生问题。 对计划的说明 依学生实际情况,适当调整工作进度。

单片机如何通过捕获来实现对红外遥控器解码

单片机如何通过捕获来实现对红外遥控器解码 一、内容提要 上讲介绍并应用了单片机动态扫描驱动数码管,并给出了实例。这一讲将重点介绍单片机如何通过捕获来实现对红外遥控器解码。通过该讲,读者可以掌握红外遥控器的编码原理以及如何通过单片机对遥控器进行解码。 二、原理简介 随着家用电器、视听产品的普及,红外线遥控器已被广泛使用在各种类型的家电产品上(如遥控开关、智能开关等)。其具有体积小、抗干扰能力强、功耗低、功能强、成本低等特点,在工业设备中也得到广泛应用。 一般而言,一个通用的红外遥控系统由发射和接收两大部分组成,如图1 所示: 图1 红外遥控系统框图 其中发射部分主要包括键盘矩阵、编码调制、红外发射管;接收部分包括光、电信号的转换以及放大、解调、解码电路。举例来说,通常我们家电遥控器信号的发射,就是将相应按键所对应的控制指令和系统码(由0 和1 组成的序列),调制在32~56kHz 范围内的载波上,然后经放大、驱动红外发射管将信号发射出去。此外,现在流行的控制方法是应用编/ 解码专用集成电路芯片来实现(如下文提到的SAA3010 红外编码芯片和HS0038 红外接收头)。 不同公司的遥控芯片,采用的遥控码格式也不一样。在此介绍目前广泛使用较普遍的两种,一种是NEC Protocol 的PWM(脉冲宽度调制)标准,一种是Philips RC-5 Protocol 的PPM(脉冲位置调制)标准。 NEC 标准:遥控载波的频率为38kHz(占空比为1:3);当某个按键按下时,系统首先发射一个完整的全码,然后经延时再发射一系列简码,直到按键松开即停止发射。简码重复为延时108ms,即两个引导脉冲上升沿之间的间隔都是108ms。一个完整的全码如图2所示。

单片机红外电视遥控器C51程序代码单片机程序

单片机红外电视遥控器C51程序代码单片机程序 //************************************************************** //名称:单片机红外电视遥控器C51程序代码() /*-------------------------------------------------------------- 描述: 一般红外电视遥控器的输出都是用编码后串行数据对38~40kHz的方波进行 脉冲幅度调制而产生的.当发射器按键按下后,即有遥控码发出,所按的键 不同遥控编码也不同。这种遥控码具有以下特征: 采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms 的组合表示二进制的“1”。上述“0”和“1”组成的32位二进制码经38kHz 的载频进行二次调制,然后再通过红外发射二极管产生红外线向空间发射。 一般电视遥控器的遥控编码是连续的32位二进制码组,其中前16位为用户识别码,能区别不同的红外遥控设备,防止不同机种遥控码互相干扰。后16位 为8位的操作码和8位的操作反码,用于核对数据是否接收准确。 根据红外编码的格式,发送数据前需要先发送9ms的起始码和4.5ms的结果码。接收方一般使用TL0038一体化红外线接收器进行接收解码,当TL0038接收到38kHz红外信号时,输出端输出低电平,否则为高电平。 所以红外遥控器发送红外信号时,参考上面遥控串行数据编码波形图,在低 电平处发送38kHz红外信号,高电平处则不发送红外信号。 ----------------------------------------------------------------*/ //编辑: //日期: //**************************************************************** #define uchar unsigned char //定义一下方便使用 #define uint unsigned int #define ulong unsigned long #include //包括一个51标准内核的头文件 static bit OP; //红外发射管的亮灭 static unsigned int count; //延时计数器 static unsigned int endcount; //终止延时计数 static unsigned char flag; //红外发送标志 char iraddr1; //十六位地址的第一个字节 char iraddr2; //十六位地址的第二个字节 void SendIRdata(char p_irdata); void delay(); //************************************************************** void main(void) {

红外遥控编码原理及C程序,51单片机红外遥控

红外遥控解解码程序 #include #include #define uchar unsigned char #define uint unsigned int sbit lcden=P1^0; sbit rs=P1^2; sbit ir=P3^2; sbit led=P1^3; sbit led2=P3^7; unsigned int LowTime,HighTime,x; unsigned char a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u; unsigned char flag;//中断进入标志位 uchar z[4]; uchar code table[]={"husidonghahahah"}; uchar code table1[]={"User Code:"}; void delay(uint x) { uint i,j; for(i=x;i>0;i--) //i=xms即延时约xms毫秒for(j=100;j>0;j--); } void write_com(uchar com) {//写液晶命令函数 rs=0; lcden=0; P2=com; delay(3); lcden=1; delay(3); lcden=0; } void write_date(uchar date) {//写液晶数据函数 rs=1; lcden=0; P2=date; delay(3); lcden=1;

delay(3); lcden=0; } void init_anjian() //初始化按键 { a=0;b=0;c=0;d=0; e=0;f=0;g=0;h=0; i=0;j=0;k=0;l=0; m=0;n=0;o=0;p=0; q=0;r=0;s=0;t=0; u=0; } void init_1602() {//初始化函数 uchar num; lcden=0; rs=0; write_com(0x38);//1602液晶初始化 write_com(0x0c); write_com(0x06); write_com(0x01); write_com(0x80); for(num=0;num<14;num++)//写入液晶固定部分显示{ write_date(table[num]); delay(3); } write_com(0x80+0x40); for(num=0;num<9;num++) { write_date(table1[num]); delay(3); } } void write_dianya(uchar add,char date) {//1602液晶刷新时分秒函数4为时,7为分,10为秒char shi,ge; shi=date%100/10; ge=date%10; write_com(0x80+0x40+add); write_date(0x30+shi); write_date(0x30+ge); }

用单片机解码红外遥控器

用单片机解码红外遥控器 遥控器使用方便,功能多.目前已广泛应用在电视机、VCD、DVD、空调等各种家用电器中,且价格便宜,市场上非常容易买到。如果能将遥控器上许多的按键解码出来.用作单片机系统的输入.则解决了常规矩阵键盘线路板过大、布线复杂、占用I/O口过多的弊病。而且通过使用遥控器,操作时可实现人与设备的分离,从而更加方便使用。下面以TC9012编码芯片的遥控器为例。谈谈如何用常用的51系统单片机进行遥控的解码。 一、编码格式 1、0和1的编码 遥控器发射的信号由一串O和1的二进制代码组成.不同的芯片对0和1的编码有所不同。通常有曼彻斯特编码和脉冲宽度编码。TC9012的O和1采用PWM方法编码,即脉冲宽度调制,其O码和1码如图1所示(以遥控接收输出的波形为例)。O码由O.56ms低电平和0.56ms高电平组合而成.脉冲宽度为1.12ms.1码由0.56ms低电平和1.69ms高电平组合而成.脉冲宽度为2.25ms。在编写解码程序时.通过判断脉冲的宽度,即可得到0或1。 2、按键的编码

当我们按下遥控器的按键时,遥控器将发出如图2的一串二进制代码,我们称它为一帧数据。根据各部分的功能。可将它们分为5部分,分别为引导码、地址码、地址码、数据码、数据反码。遥控器发射代码时.均是低位在前。高位在后。由图2分析可以得到.引导码高电平为4.5ms,低电平为4.5ms。当 接收到此码时.表示一帧数据的开始。单片机可以准备接收下面的数据。地址码由8位二进制组成,共256种.图中地址码重发了一次。主要是加强遥控器的可靠性.如果两次地址码不相同.则说明本帧数据有错.应丢弃。不同的设备可以拥有不同的地址码.因此。同种编码的遥控器只要设置地址码不同,也不会相互干扰。图中的地址码为十六进制的0EH(注意低位在前)。在同一个遥控器中.所有按键发出的地址码都是相同的。数据码为8位,可编码256种状态,代表实际所按下的键。数据反码是数据码的各位求反,通过比较数据码与数据反码.可判断接收到的数据是否正确。如果数据码与数据反码之间的关系不满足相反的关系.则本次遥控接收有误.数据应丢弃。在同一个遥控器上.所有按键的数据码均不相同。在图2中,数据码为十六进制的0CH,数据反码为十六进制的0F3H(注意低位在前).两者之和应为0FFH。 二、单片机遥控接收电路

基于51单片机的无线遥控小车

本科生产实习报告(2013 —2014学年第二学期) 姓名: 学号: 年级: 专业:电子信息技术及仪器 系室:测控技术与仪器系 2014年7月6日

目录 目录 (2) 1 生产实习计划安排 (3) 2 电路板制作 (3) 2.1实习目的 (3) 2.2所需器件介绍 (3) 2.3制作过程 (5) 2.4成果展示 (7) 3 小车控制系统软硬件设计 (7) 3.1实习目的 (7) 3.2所需器件介绍 (7) 3.3制作过程 (9) 3.4功能演示 (11) 4新飞电器公司实习 (11) 4.1优秀毕业设计讲解 (11) 4.2新飞公司 (13) 5、生产实习心得体会 (18) 附录:单片机C语言程序 (20)

1 生产实习计划安排 2 电路板制作 2.1实习目的 能够熟练使用一些常用软件进行基本的程序编写(keil)、制板(Altium Designer等);进一步了解电子产品开发、生产、测试等内容,培养自身的动手能力,并通过组队让我们了解团队合作的重要性,并为做一些实际的项目积累经验。 2.2 所需器件介绍

①Altium Designer Winter 09 :电路原理图、PCB图绘制软件 ②打印机、转印纸:将设计完成的PCB图打印在转印纸光面上 ③覆铜板、砂纸、热转印机:将转印纸上的电路图热转印到铜板上 ④腐蚀液:将铜板上墨迹以外的部分腐蚀掉 ⑤打孔机:将铜板上需要留孔的地方进行打孔 ⑥电烙铁、锡丝等:将元器件焊接在制作的铜板上 图1利用Altium Designer 绘制原理图的流程图

2.3 制作过程 1、原理图的绘制过程的流程图如图1所示: ⑴、使用Altium Designer绘图软件,画出单片机最小系统板的原理图,正确选择放置所需要的元器件并正确连接,适当添加元件库。必须用到的有微处理器芯片STC89C52RC、串口通信芯片MAC232等一系列电子元件。 ⑵、原理图设计完成后对各元件进行封装,以生成和现实元器件具有相同外观和尺寸的封装网络表。单片机最小系统板原理图如图2所示: 图2利用Altium Designer绘制的原理图 ⑶、生成PCB图。网络表生成以后,根据PCB面板的大小来放置各元件的位置,在放置时需要确保各元件引脚不交叉。经过规则的设置及调整,无错误完成PCB的布局布线。布线完成后的PCB图如图3所示: 图3布线完成后的PCB图 ⑷、利用转印纸将设计完成的PCB图通过打印机打印输出,然后将印有电路图的一面与铜板固定压紧,最后放到热转印机上进行热转印,高温下将转印纸上的电路图墨迹转印到铜板上。 ⑸、准备腐蚀液,将有墨迹的铜板放在溶液中,等待一段时间,铜板上除了墨迹以外的部分全部被腐蚀。取出铜板并清洗,妥善处理溶液。必须注意的一点是,清洗完毕后需立即擦干铜板,否则石墨线上附着的腐蚀液会继续腐蚀铜线部

基于51单片机的红外遥控

基于51单片机的红外遥控 红外遥控就是无线遥控的一种方式,本文讲述的红外遥控,采用STC89C52单片机,1838红外接收头与38k红外遥控器。 1838红外接收头: 红外遥控器: 原理: 红外接收的原理我不赘述,百度文库上不少,我推荐个网址,这篇文章写得比较清楚,也比较全面, 我主要讲下程序的具体意思,在了解原理的基础上,我们知道,当我们在遥控器上每按下一个键,遥控器上的红外发射头都会发出一个32位的编码(32位编码分成4组8位二进制编码,前16位为用户码与用户反码,后16位为数据码与数据反码,用户码表示遥控器类型,数据码表示按键编码),不同的键对应不同的编码,红外接收头接收到这个编码后,发送给单片机,再进行相关操作。 源程序1:(这个程序的功能就是将用户码与用户反码,数据码与数据反码显示在1602液晶上,因为遥控器买回来就是不会说明按键对应什么码值,所以先自己测试,确定每个按 键的码值) #include #include #include #define uint unsigned int #define uchar unsigned char #define _Nop() _nop_() #define TURE 1 #define FALSE 0

/*端口定义*/ sbit lcd_rs_port = P3^5; /*定义LCD控制端口*/ sbit lcd_rw_port = P3^6; sbit lcd_en_port = P3^4; #define lcd_data_port P0 /////////////////////////////////// void delay1 (void)//关闭数码管延时程序 { int k; for (k=0; k<1000; k++); } //////////////////////////////////// uchar code line0[16]={" user: "}; uchar code line1[16]={" data: "}; uchar code lcd_mun_to_char[16]={"0123456789ABCDEF"}; unsigned char irtime;//红外用全局变量 bit irpro_ok,irok; unsigned char IRcord[4];//用来存放用户码、用户反码、数据码、数据反码unsigned char irdata[33];//用来存放32位码值 void ShowString (unsigned char line,char *ptr); ////////////////////////////////////////////// void Delay(unsigned char mS); void Ir_work(void); void Ircordpro(void); void tim0_isr (void) interrupt 1 using 1//定时器0中断服务函数 { irtime++; } void ex0_isr (void) interrupt 0 using 0//外部中断0服务函数 { static unsigned char i; static bit startflag; if(startflag){ if(irtime<63&&irtime>=33)//引导码TC9012的头码 i=0; irdata[i]=irtime; irtime=0; i++; if(i==33){ irok=1; i=0; }

基于单片机的红外遥控系统设计

单片机红外遥控系统设计 随着社会的发展、科技的进步以及人们生活水平的逐步提高,各种方便于生活的遥控系统开始进入了人们的生活。传统的遥控器采用专用的遥控编码及解码集成电路,这种方法虽然制作简单、容易,但由于功能键数及功能受到特定的限制,只实用于某一专用电器产品的应用,应用范围受到限制。而采用单片机进行遥控系统的应用设计,具有编程灵活多样、操作码个数可随便设定等优点。 本设计主要应用了AT89C51单片机作为核心,综合应用了单片机中断系统、定时器、计数器等知识,应用红外光的优点,设计了一个红外线遥控系统。本系统包含发射和接收两大部分,利用编码/解码芯片来进行控制操作。发射部分包括键盘矩阵、编码调制、LED 红外线发射器;接收部分包括红外线接收芯片、光电转换器、调解电路。其优点硬件电路 简单,软件功能完善,性价比较高等特点,具有一定的使用和参考价值。 关键词:单片机AT89C51;LED红外线发射器

目录 目录 (2) 1 绪论 (2) 1.1研究背景 (2) 1.2国内外研究现状 (3) 1.3研究目的与意义 (3) 2系统方案设计论证 (5) 2.1单片机红外遥控发射器设计原理 (5) 2.2单片机红外遥控接收器设计原理 (5) 2.3方案选择和论证 (6) 3红外解码硬件电路设计 (8) 3.1红外解码系统设计 (8) 3.2单片机及其硬件电路设计 (8) 3.3红外发射电路设计 (10) 3.4红外接收电路设计 (11) 3.5本章小结 (13) 4红外解码程序设计 (14) 4.1红外接收电路主程序流程图 (14) 4.2红外接收电路子程序流程图 (14) 4.3本章小结 (15) 5 联机与调试 (16) 结论和展望 (23) 附录A:系统原理图 (24) 附录B:系统PCB图 (25) 附录C:系统仿真图 (26) 附录D:系统源程序 (27) 1 绪论 1.1研究背景 目前市场上采用的一般是遥控编码及解码集成的电路。此方案的特点是制作简单、容

相关主题
文本预览
相关文档 最新文档