自学习型红外遥控
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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
• 实际电路的测试 • 程序下载进单片机后,打开单片机开发板上电源接口开 关以及P1口电源切换开关,按下中断0控制键,待绿色的 流水灯亮后,将电视遥控器对准单片机开发板上的红外接 收头按下某个按键,当绿灯熄灭时,此时代表学习完成了, 然后关闭PI口电源切换开关按下单片机开发板上的发射键 对电视机进行遥控操作。测试可知,本次设计的学习型遥 控器完全符合要求,达到了预期目的。
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; }
红外接收电路
X2 X1
P1_1
红外发送电路
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
C5 X1 10pF
流程图
•主程序流程图
软 件 流 程 图
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++) ; }
我的汇报结束了, 谢谢!
自学习型红外遥控器设计
作者:徐鸣 指导老师:李宏 理工学院 科院11通信工程
引言
当今社会科学技术的发展与日俱增,人们的生活水平也是日益提
高,为了减少人的工作量,所以对各种家用电器、电子器件的非人工 控制的要求也是越来越高, 针对这种情况,设计出一种集成度比较高的控制体系是必然的。 单片机的集成很高,它具有体积小、质量轻、价格便宜、耗电少等突 出特点。 本课程设计介绍了基于单片机的一种学习型遥控器的设计与实现, 可以对红外线遥控器发射的信号进行识别、存储和再现等功能。学习
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+ +; } }
SW5
SW6
SW7
SW8
SW-PB
SW-PB
SW-PB
SW-PB
SW9
SW10
SW11
SW12
SW-PB
SW-PB
SW-PB
SW-PB
SW13
SW14
SW15
SW16
SW-PB
SW-PB
SW-PB
SW-PB
键盘电路
• 单片机对键盘采用循环扫描法,由图可以看出该矩阵扫描 键盘由行线和列线组成,P1_8、P1_9、P1_10和P1_11 构成了键盘的列线,P1_4、P1_5、P1_6和P1_7构成了 键盘的行线。键盘的行线作为键盘的控制输出端,键盘的 列线作为键盘的输入端。键盘的列线通过上拉电路将管脚 拉高,这样在没有按键按下的情况下,管脚的电平为高电 平,如果有按键按下时,则相应的列线管脚为低电平,这 时通过设置列线为低电平触发中断方式,低电平就触发中 断而进入中断服务程序,从而获得输入的数据。
SW-PB
SW-PB
SW14
SW15
SW16
+ C1 10uF
SW-PB
SW-PB
SW-PB
SW-PB
R9 10k
复位电路
外存储电路
键盘电路
红外接收电路
• 该电路主要的部分是一体化红外接收头,采用NB1838, 对接收到得各种红外遥控编码信号进行放大、检波、整形, 并调出编码,得到电平,输入单片机。
Program
/***********主函数***************/ main() { clearmen(); while(1) { keywork(); } } /*********40KHZ发生器***********/ void time_intt1(void) interrupt 3 { remoteout=~remoteout; } /***********学习函数 ***********/
复位电路和晶振电路
• 复位电路采用的是上电复位,为了保证系统能够可靠地复位,RST端 的高电平信号必须维持足够长的时间。单片机晶振的作用是为系统提 供基本的时钟信号,晶振提供的时钟频率越高,那么单片机运行速度 就越快。
VCC
C3 X2
C1 10uF REST
+
10pF
Y1 11.0592MHZ
R9 10k
VCC
R2 56K R1 1K J1 C2 100uF 1 2 3 NB1838
Q1
9013 P1_0
红外发送电路
• 该电路主要由单片机内部的软件来产生38kHz载波信号,并 把遥控码调制到载波上后通过P1_ 1口输出已经调制好的 红外遥控信号。采用二级放大电路是为了使遥控器的可遥 控距离增大,满足用户的要求。
型红外线遥控器要求可以学习不同遥控器的某个按键码功能。使用时
先用原遥控器对着学习器按一下某操作键,学习器就可以实现原遥控 器中该键的遥控功能。
系统总体方案
外存储电路 A T 8 9 C 5 1 红外接收电路
矩阵键盘
红外发送电路
LED显示
晶振电路
• 本系统由红外遥控发射器,红外遥控信号接收器, 矩阵键盘,外存储电路,单片机及其外围电路构 成。
VCC 33 D1 LED R4 300 R6
R5 5K
Q3 8050
P1_1
R3 10k
Q2 9013
外存储电路
• 自学习型遥控器所能存储代码的数量也是衡量一个自学习 型遥控器性能好坏的重要指标。自学习型遥控器在学习完 某个遥控器的代码后得把该代码存储起来,由于AT89C51 内部的数据存储器RAM所能存储的数据有限而且不能掉电 保护。所以就需要合适大小的外存储器来存储所学习到的 代码。
总电路图
VCC 33 JP1 P1_1 VCC R2 56K R1 1K 9013 P1_0 P1_2 P1_3 J1 C2 100uF 1 2 3 NB1838 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 Q1 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 R3 10k Q2 9013
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)
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; } //*********************结束*********** ***************//
VCC JP3 1 3 5 7 24C02 P1_2 P1_3 2 4 6 8
R7 5.1K
R8 5.1K
键盘电路
VCC R10 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 R13 10k SW-PB SW-PB SW-PB SW-PB