




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、红外遥控通信系统现在家电产品大部分配有红外线遥控器,在 PC上也有红外传输的接口,有些鼠 标加了红外控制接口,变成了无线鼠标。所以说使用红外已经是一种非常广泛的 通信方式。红外通信知识的概述。实验内容简介实验目的1、掌握红外通信系统的知识。2、学会对接收到的红外信号进行解码操作。3、学会如何使用单片机来控制红外发射器发射红外信号。4、了解NEC码的编码方式等相关知识。实验要求1、使用开发板上的红外发射器TSAL6200模拟一个采用NEC码的红外遥控器进行 红外信号的发射。2、红外的编码使用开发板上的矩阵键盘实现(按键扫描实验)。3、开发板通过红外接收模块(HS0038完成红外数据的接受,同时进
2、行解码等 操作。4、MCU寸解码后的数据进行处理,将其显示在数码管上。简单硬件需求分析1、一般的红外通信系统都由发射与接收两个部分组成,所以我们需要一个发送 红外信号的发射器和一个红外接收器,由于我们需要对接收到的红外信号进行解 码,然后送给单片机进行处理,所以选择的接收器应该可以解码出单片机可以直 接处理的数据。2、选择一个MCU寸红外发射器进行控制,得到想要的红外数据。3、由于我们实验需要显示接收到的红外数据,所以需要一个显示器件,数码管 就能够满足显示的需求。开发板设计* HS0038模 块:HS0038是一个直接输出MCI可以处理的数字信号,所以在电路连接中,可以直 接将它的OUT引脚
3、接在单片机的I/O 口上,进行红外数据的处理,但是在我们的 开发板上,不仅接在了 I/O 口上,同时也将其接在了 8259A中断控制器上,这样 做,可以让我们在编写程序时有多种做法。这里的OUT引脚默认情况下为高电平的,这是上拉电阻所起到的作用 TSAL6200模块:TJQC匚D NG该器件是一个红外发射器,发射器的一端接在 5V电源上,另一段接在PNP型三 极管的发射极上,三极管主要起到一个电流放大的作用。这里的 IR_OUT信号通 过电阻接在电源上,除了让IR_OUT信号线在默认情况下输出高电平的作用外(IR_OUT=1红外发射管不工作),还起到了分压的作用,因为 TSAL6200的正向
4、压降只有1.35V (详细内容见TSAL6200 。在默认情况下,由于IR_OUT为高电平,所以三极管的基极是高电平,此时三极 管不导通,TSAL6200没有工作,不会发射红外信号,只有当IR OUTB号输出低8259A中断控制器是分为奇地址以及偶地址(主要通过8259A的A0引脚进行控 制):它们分别是0x6001、0x6000。由于这里我们只用到单片8259A所以SP/EN引脚接高电平表示为单片, CAS0CAS是级联使用的,单片8259A时这些引脚都无用,所以直接悬空了。1、 INT引脚:这里我们用8051控制8259,由于8259有中断请求时INT引脚变 为高电平,而8051中断外部中
5、断只有下降沿和低电平触发方式,为了满足两者 之间的兼容性,使用该信号与地线接在或非门上,实现一个反向的功能。2、 INTA引脚处理:由于8051没有中断应答引脚,所以这里我们要借助8051的 RD引脚和8259的INT引脚模拟出中断应答信号,由于中断应答也是变为低电平 有效,而8051的RD为低电平有效,开发板的设计如下:RD信号线通过一个与非门之后,再和INT 起接在另一个与非门的输入端,然 后与非门的输出端接在8259A的26号引脚INTA#上作为中断响应的应答信号。(注:由于需要将RD信号线取反,我们使用一个与非门实现了一个非门的功能, 这样做可以节约成本,因为一个 74LS00芯片上包
6、含了多个与非门。与非门的输U3DAOVCCAOI NT52210DOD1D2D3D4D5 6D7I%34IS23皿入引脚接相同的信号就相当是给这个信号取反。)各个部件与MCU的连接:IR_IN( P1.2)与红外接收器的OUT引脚相连,单片机可从该引脚获取红外数据 信息;IR_OUT( P1.3与红外发射器相连)单片机对此引脚进行控制,可以改变 TSAL62O0勺工作状态,以达到进行红外数据的发送功能;P3.3引脚是单片机的外 部中断1引脚,与中断控制器8259A相连,单片机的P0 口是8位数据的传输线, 分别与8259A的数据线相连;单片机的P1.0和P1.1用来当I2C总线,使用软件 进行
7、I2C的模拟,详细内容可见IIC 。POaADO 町 1,ADlPO PODOSADSP3 7. AJ7=2/述 Pi iAiC P2A11 Pfl 4A12転U ISF3 FWDPS.aiHTflF33FibTiF3 4iTQ 弓iP3SZBP3 7.RD C_SL 1C妙 IRTIK QJ tivie砒 tK护Kf_2pf 0.T2PT 1/T2EX 心 2ECiF1.3GEX(J PT 4jCX1 P E.C=X; Pl.SCsXiF1 7.C=XJg L 22t(?SP/ENTMP8259APCASO CAS1CAS2IROIF?1IR2IR3IR4IR5IR6IR7片选畐红夕卜中断诸
8、谢引脚1输入引脚HALLJNTIR INTLED INT.、19:加r|R321IR422IRSIRS24-25AO?7INTA26RD3WR2Y3.JLINTA RD WRCS10DA19DA28DA37DA46DAS5DA6dDA71213H I15jT、1fi17INT比丹a向应mi 诘应中斯的 引脚程序流程分析1、先进行初始化操作,包括数码管驱动芯片 CH452数码管、定时器0、定时器1、8259A中断控制器的初始化。2、当有按键时,会产生8259A中断,在中断服务函数中,把1赋给Flagl,用 来标志有键按下,并且进行按键值的查找,并用一个全局变量Keycode记录按键 值。3、主程
9、序中检测到Flag仁1后(为了不影响接收程序,此时先关闭按键中断的 允许位,等本次发送过程结束再打开允许位),就会调用红外发送程序,发送的内容为引导码、地址码以及命令,对于同一个遥控器件来说,它们的地址码应该 是不变的,我们这里的地址码应该为 0x40bd。(如下图所示:) 1 001 1 1 0 1 00 1 0 1 0 1 0 1 0 1 1 0 1 0B, LSB4 9m $ 4.5mE Addres $lowMSSLSBMSB-LSB.Adck essk C ommandhiah lllllllllllllllllllll从图中我们可以看出,命令码(comma nd data code
10、)发送两次,第一次发送的 是原码,第二次发送的是反码,这样是为了提高红外传输过程的可靠性。需要注 意的是,不管是地址码还是数据码,都是先发送最低有效位。4、在发送程序中,先发送引导码,由 9ms的高电平和4.5ms的低电平组成,由 下图所示:引导码发送完毕之后,紧接着就会发送 4个字节的数据,包括地址码和命令码, 数据编码格式如下图所示:0.56ms的高电平和0.56ms的高电平代表数据 O, 0.56ms的高电平和1.12ms 的低电平代表数据 1。5、接收过程应该和发送过程是同时的,在红外发送程序执行的过程中,当红 外接收器HS0038接收到红外信号后,在红外信号出现上升沿(程序中设置了I
11、T1=1 ),会产生8259A中断,此时我们可以在中断服务程序中进行解码操作, 获取红外数据。6解码操作时,先进行引导码的判断,由于HS0038会将接收到的红外信号反向, 所以引导码就变成了 9ms的低电平和4.5ms的高电平,第一次产生8259A中断是 在9ms之后,下一次中断产生则是在发送数据位的0.56ms之后,所以两次中断之间的时间间隔应该为4.5ms左右,如果时间在这个范围之内,则说明引导码判 断成功,同样的方法我们可以判断产生两次中断时间间隔来判断接收到的数据。/用/用(砂j关般酸A的鍵盘阴红朴发射檢序连狞數曲的岌送/用/用程序代码分析头文件/用#in elude #in elud
12、e #i nclude #include 8259a.h#include ch452.h变量的定义*/用/sbit Ir_out=P1A3;外发射引脚un sig ned int Coun t1=0;于计数、判断时间使用/用un sig ned char lr_Code=0x00,Flag=0,Keycode=0xff,Flag1=0void Sen d_Data( un sig ned char Data)/发送八位数据的函数/Flagl用来标志有按键按下了,Flag用来判断是否需要发送红外载波信号,Keycode用来记录按键值 LeadCode=0,Data=0x00,DataNum=0,
13、FirstNum=0,ReceiveData8=0;/LeadCode用来标记引导码判断是否成功,Data用来接收红外数据,DataNum表示已经接收了多少位数据了,FirstNum表示是否为第一次产生中断,ReceiveData用来存储数码管显示的数据un sig ned char Code4=0x02,0xbd;/用来存放将要发送的数据,前两位为地址码,固定的,后两位数据为命令码,互为 相反unsigned char Keytable44 = 0x0f, 0x0e, 0x0d, 0x0c,0x0b, 0x0a, 0x09, 0x08,0x07, 0x06, 0x05, 0x04,键值0x0
14、3, 0x02, 0x01,0x00;/查找表void Delayus( un sig ned int x)while(x-);*k Z/k 外 白“的立R ZX/此时不需要再发送红外载/此时不需要再发送红外载un sig ned char i; for(i=0;i8;i+)/Flag=1;/送红外载波置Flag为1,表明需要发TR0=1;Cou nt仁0;/while(Cou nt120);0.56ms的高电平/打开定时器0 计数值赋为.0 判断是否已经发送了/此时不需要再发送红外载Flag=0;Ir_out=1;Cou nt 仁0; 波了,Flag=0/此时不需要再发送红外载并显示的部分v
15、oid Display。接收到的红外数据取数据的最低位进行发送数据为1则发送1.68ms数据为0则发送1.68ms关闭定时器0要传送的数据右移,取下一位开始发送,先发引导码打开定时器0产生38KHZ的红判断是否已经发送了 9ms的高此时发送低电平,定时器0关闭红外发射判断是否已经发送了 4.5ms用来存放当前要发送调用发送八位数据的函数,先发再发送命令码的源码然后发送命令码的反码if(Data&OxO1)/while(Cou nt163);/的低电平elsewhile(Cou nt11;/void Send(un sig ned char * Code)/Flag=1;/外载波并计数TR0=1
16、;Cou nt仁0;while(Cou nt1345);/电平Flag=0;/只用来定时作用Ir_out=1;/Cou nt仁0;while(Cou nt14;if(ReceiveData0!=0x02|ReceiveData1!=0x00) /于前十六位为地址码,对于同一个发射器,应该将其的地址码设为一个固定不变 的,解码时,判断接收到的数据是否与规定的地址码相同, 不同则表示接收到的 数据错误,将变量赋为初始值,准备接收下一次的红外信号LeadCode=0;Data=0x00;DataNum=0;FirstNum=0;break;case 16:ReceiveData2=Data&0x0f
17、;ReceiveData3=Data4;if(ReceiveData2!=0x0d|ReceiveData3!=0x0b)LeadCode=0;Data=0x00;DataNum=0;FirstNum=0;break;case 24:ReceiveData4=Data&0x0f;ReceiveData 5=Data4;break;case 32:ReceiveData6=Data&0x0f;/判断命令码是否相反,不是则不正确ReceiveData7=Data4;if(ReceiveData4!=ReceiveData6|ReceiveData5!=ReceiveData7) DataNum=0
18、;Data=0x00;FirstNum=0;LeadCode=0;break;void Decode(void) / TR1=0;/switch(LeadCode) /case 0:解码函数此时关闭定时器在没有判断引导码的情况下,先判断引导码是否正确if(TH1=0x12&TH1=0x03&TH1=1;DataNum+;else if(TH1=0x06&TH1=1;Data|=0x80;DataNum+;else /两个时间范围都不是,则表示接收到的数据不正确,重新开DataNum=0;FirstNum=0;LeadCode=0;Receive。;break;if(DataNum=32) /当
19、数据接收完之后,将变量赋为原值,以便下一次接收DataNum=0;FirstNum=0;LeadCode=0;TH1=0x00;/判断一次数据之后, /TH1、TL1赋为0x00,重新进行计数,用于下次判断时间TL1=0x00;TR1=1;初始化void In it8259a()/8259AADR_8259AE=ICW1;/ADR_8259AO=ICW2;ADR_8259AO=ICW4;ADR_8259AO=OCW1;/ADR_8259AE=OCW2;的初始化写入初始化命令字写入操作命令字void Init()In it8259a(); / TMOD=0x12;TH0=230;TL0=230;
20、TH1=0x00;TL1=0x00;ET0=1;EX仁1;/初始化函数调用8259A中断控制器的初始化/ 定时器0工作方式2、计时,定时器1工作方式1、计时 /定时器0初始值为230,即26us中断发生一次/定时器1的初始值/定时器中断允许位打开外部中断1允许IT仁1;/EA=1;/外部中断1为上下降沿触发 总中断允许位打开数码管初始显示0 调用初始化函数 延时一段时间/*/*主程序 */void mai n()CH452_Write(CH452_SYSON2); /打开CH452的数码管显示和按键扫描的功能CH452_Write(CH452_BCD); / 启动 CH452的自动解码功能CH
21、452_Write(CH452_DIG0 | 0); /In it();Delayus(500);while(1)Delayus(100);已经有按键被按下了,准备发送红外数据if(Flag1) /ADR_8259AO=0xfd; /Code2=Keycode; /Code3=Keycode; /Sen d(Code); /Display();ADR_8259AO=0xfB;/Flag 仁0;Delayus(500); 写OCW此时不再接收按键的中断命令码的原码命令码的反码调用红外发送函数,传递的参数为数据的首地址 /显示内容打开8259A的按键中断,关闭8259A的红外/中断/清除按键标志位中断服务函数void Timer1sr(void) in terrupt 1/定时
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年标牌产品项目可行性研究报告
- 纳米改性剂行业市场发展及发展趋势与投资战略研究报告
- 2025年中国哮喘药市场竞争策略及行业投资潜力预测报告
- 2024-2025学年高中地理第一单元地球运动第一节地球自转的地理意义练习
- 2024-2025学年新教材高中化学1.1物质的分类及转化综合训练含解析新人教版必修第一册
- 2024-2025学年高中化学专题3从矿物到基础材料第2单元第2课时铁铜及其化合物的应用练习含解析苏教版必修1
- 2024年上海市普通高中学业水平等级性考试物理试题含答案
- 库克小儿止咳糖浆行业深度研究报告
- 2025年门灯开关项目可行性研究报告
- 2025年中国巡检机器人行业市场规模及发展前景研究报告(智研咨询)
- 【历史】唐朝建立与“贞观之治”课件-2024~2025学年统编版七年级历史下册
- 2024化工园区危险品运输车辆停车场建设规范
- 第1课 精美绝伦的传统工艺 课件 2023-2024学年赣美版初中美术八年级下册
- delta-台达dvp eh系列plc使用说明书ehs
- Q∕GDW 12152-2021 输变电工程建设施工安全风险管理规程
- 云南省地质灾害群测群防手册
- 集团权属公司管理制度
- 五金冲压件作业指导书
- 食品工业企业诚信管理体系建立及实施
- 汽车吊车吊装施工方案
- 《植物保护学通论》PPT课件.ppt
评论
0/150
提交评论