学习型红外线遥控器的设计与实现

  • 格式:pptx
  • 大小:761.50 KB
  • 文档页数:22

下载文档原格式

  / 22
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Program
/**********键功能函数************/ keywork() { if(txkey==0) { while(txkey==0); ET1=1;TR1=1; for(i=head;i>0;i--){;} remoteout=0;ET1=0;TR1=0; n=0; while(1) { if(remotedata[n]==0x00){delay1ms (10);break;} for(i=remotedata[n];i>0;i--) {_nop_();_nop_();_nop_();_nop_();_nop_ ();_nop_();_nop_();_nop_();_nop_();} lamp=~lamp;n++; ET1=1;TR1=1; for(i=remotedata[n];i>0;i--){;} remoteout=0;ET1=0;TR1=0;n+ +; } }
Module
红外接收电路
该电路主要的部分是一体化红外接收头,采用NB1838,对接收
到得各种红外遥控编码信号进行放大、检波、整形,并调出编码, 得到电平,输入单片机。
VCC
R2 56K R1 1K J1 C2 100uF 1 2 3 NB1838
Q1
9013 P1_0
Module
红外发送电路
该电路主要由单片机内部的软件来产生38kHz载波信号,并把遥控码 调制到载波上后通过P1_ 1口输出已经调制好的红外遥控信号。采用二级 放大电路是为了使遥控器的可遥控距离增大,满足用户的要求。
Program /***********初始化函数**********/ clearmen() { studylamp=1; lamp=1; remoteout=1; remotein=1; for(i=0;i<206;i++) {remotedata[i]=0x00;} IE=0x00; IP=0x01; TMOD=0x22; PCON=0X00; TH1=0xf3; TL1=0xf3; IT0=1; EX0=1; EA=1; }
自学习型红外遥控器设计
漓江学院2011电子信息工程
1.引言
2.工作原理
3.模块化设计
Introduction
当今社会科学技术的发展与日俱增,人们的生活水平也是日益提高,为了减 少人的工作量,所以对各种家用电器、电子器件的非人工控制的要求也是越来越
高,
针对这种情况,设计出一种集成度比较高的控制体系是必然的。单片机的集 成很高,它具有体积小、质量轻、价格便宜、耗电少等突出特点。 本课程设计介绍了基于单片机的一种学习型万能遥控器的设计与实现,可以 对各种红外线遥控器发射的信号进行识别、存储和再现等功能,从而实现对各类 家电的控制。学习型红外遥控器由单片机、红外线接收、红外线发射、显示、存 储、按键等部分组成。
VCC
的代码。
JP3 1 3 5 7 24C02 P1_2 P1_3 2 4 6 8
R7 5.1K
R8 5.1K
Module
软 件 流 程 图
Program
/*********学习型红外遥控器C程序******* **/ #include "reg51.h" #include "intrins.h" #define uchar unsigned char #define uint unsigned int sbit studylamp=P1^6; sbit lamp=P1^7; sbit studykey=P3^2; sbit remotein=P3^7; sbit remoteout=P1^0; sbit txkey=P3^3 ; uint i,j,m=255,n,k,s; uchar idata remotedata[206]; uint head; uint remdata; /*********1毫秒延时程序**********/ delay1ms(uint t) { for(i=0;i<t;i++) for(j=0;j<120;j++) ; }
基于STC89C52学习型红外线遥控器系统框图 遥控器由红外接收及红外发射电路、复位电
路、控制器AT89S52、按键及状态指示电路组成
Module
VCC R2 56K R1 1K 9013 P1_0 J1 C2 100uF 1 2 3 NB1838
总电路图
VCC 33 JP1 P1_1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 REST RXD TXD INT0 INT1 T0 T1 WR RD XTAL2 XTAL1 GND AT89C51 VCC P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 EA/VP ALE/P PSEN P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 VCC R4 300 D1 LED R6 P1_0 REST R5 VCC P1_12 P1_4 P1_5 P1_6 P1_7 P1_8 P1_9 P1_10 P1_11 5K Q3 8050 P1_2 P1_3
SW-PB
SW-PB
SW14
SW15
SW16
+ C1 10uF
SW-PB
SW-PB
SW-PB
SW-PB
R9 10k
复位电路
外存储电路
键盘ห้องสมุดไป่ตู้路
Module
控制芯片选择AT89S52单片机,控制系统按最小化工作模式设计,P1. 0接红外线发射,P1.6和P1.7接两个发光二极管用来指示遥控器的工作状态, P3.4和P3.5用来接收和发射红外线。红外接收采用一体化红外遥控接收器 (HX1838)。
VCC 33 D1 LED R4 300 R6
R5 5K
Q3 8050
P1_1
R3 10k
Q2 9013
Module
外存储电路
自学习型遥控器所能存储代码的数量也是衡量一个自学习型遥控器 性能好坏的重要指标。自学习型遥控器在学习完某个遥控器的代码后得 把该代码存储起来,由于AT89C51内部的数据存储器RAM所能存储的数据有 限而且不能掉电保护。所以就需要合适大小的外存储器来存储所学习到
Program
{_nop_();_nop_();_nop_();_nop_();_nop_ ();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();remdata++;} remotedata[n]=remdata;n++;r emdata=0x00; } end: lamp=1;studylamp=0; } //*********************结束*********** ***************//
SW-PB
SW-PB
SW-PB
SW-PB
SW5
SW6
SW7
SW8
晶振
LCD显示
SW-PB
SW-PB
SW-PB
SW-PB
SW9
SW10
SW11
SW12
SW-PB VCC VCC JP3 1 3 5 7 24C02 REST P1_2 P1_3 2 4 6 8 SW13 R7 5.1K R8 5.1K
SW-PB
工作原理
Principle
红外遥控器的工作原理
利用单片机STC89C52对多个红外遥控编码的脉冲宽
度进行测量,并原封不动地把发射信号中高、低电平的
时间宽度记忆至扩展存储区的指定地址。当要发射红外 信号时,从扩展存储区中还原出相应的红外遥控编码, 并调制到38KHz的载波信号上,最后,通过三极管放大 电路驱动红外发光二极管发射红外信号,达到学习和发 射的目的,从而实现一个遥控器控制多种红外遥控设备。
漓江学院2011电子信息工程
void intt0(void) interrupt 0 { ET1=0;TR1=0;EX0=0;EA=0; head=0;studylamp=1;lamp=0; while(studykey==0); while(remotein==1);
Program
head=0; while(remotein==0) {_nop_();_nop_();_nop_();_nop_();_nop_ ();_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();head++;} n=0;remdata=0x0000; while(1) { while(remotein==1) {_nop_();_nop_();_nop_();_nop_();_nop_ ();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();remdata++;} if(remdata>m) {remotedata[n]=0x00;EX0=1; EA=1;goto end;} remotedata[n]=remdata;n++; remdata=0x0000; while(remotein==0)
Q1
红外接收电路
X2 X1
P1_1
R3 10k
Q2 9013
红外发送电路
C3 X2 10pF D2 LED R10 10k Y1 11.0592MHZ C5 X1 10pF P1_12 R14 10k SW1 P1_4 P1_5 P1_6 P1_7 P1_8 P1_9 P1_10 P1_11 SW2 R11 10k SW3 R12 10k SW4 VCC R13 10k
Program
/***********主函数***************/ main() { clearmen(); while(1) { keywork(); } } /*********40KHZ发生器***********/ void time_intt1(void) interrupt 3 { remoteout=~remoteout; } /***********学习函数 ***********/