基于某单片机地红外遥控设计与制作
- 格式:doc
- 大小:186.50 KB
- 文档页数:19
基于51单片机的红外遥控设计摘要很多电器都采用红外遥控,那么红外遥控的工作原理是什么呢?本文将介绍其原理和设计方法。
红外线遥控就是利用波长为0.76~1.5μm之间的近红外线来传送控制信号的。
常用的红外遥控系统一般分发射和接收两个部分。
红外遥控常用的载波频率为38kHz,这是由发射端所使用的455kHz晶振来决定的,在发射端要对晶振进行整数分频,分频系数一般取12,所以455kHz÷12≈37.9 kHz≈38kHz。
也有一些遥控系统采用36kHz、40kHz、56kHz等,一般由发射端晶振的振荡频率来决定。
接收端的输出状态大致可分为脉冲、电平、自锁、互锁、数据五种形式。
“脉冲”输出是当按发射端按键时,接收端对应输出端输出一个“有效脉冲”,宽度一般在100ms左右。
一般情况下,接收端除了几位数据输出外,还应有一位“数据有效”输出端,以便后级适时地来取数据。
这种输出形式一般用于与单片机或微机接口。
除以上输出形式外,还有“锁存”和“暂存”两种形式。
所谓“锁存”输出是指对发射端每次发的信号,接收端对应输出予以“储存”,直至收到新的信号为止;“暂存”输出与上述介绍的“电平”输出类似。
关键词:80c51单片机、红外发光二极管、晶振目录第一章1、引言 (3)2、设计要求与指标 (3)3、红外遥感发射系统设计 (4)4、红外发射电路设计 (4)5、调试结果及分析 (9)6、结论 (10)第二章1、引言 (10)2、设计要求与指标 (11)3、红外遥控系统设计 (11)4、系统功能实现方法 (15)5、红外接收电路 (16)6、软件设计 (17)7、调试结果及分析 (18)8、结论 (19)参考文献附录绪论人的眼睛能看到的可见光按波长从长到短排列,依次为红、橙、黄、绿、青、蓝、紫。
其中红光的波长范围为0.62~0.76μm;紫光的波长范围为0.38~0.46μm。
比紫光波长还短的光叫紫外线,比红光波长还长的光叫红外线。
基于51单片机的红外遥控小车设计和制作红外遥控小车设计和制作是一个有趣且实用的项目。
本文将介绍一个基于51单片机的红外遥控小车的设计方案和制作过程。
设计方案:1.硬件设计:-采用STC89C52单片机作为控制核心,具有良好的性能和稳定性。
-红外接收器模块:用于接收红外信号并将其转换为电信号。
-直流电机:用于驱动小车的轮子,实现前进、后退、转弯等动作。
-驱动电路:将单片机的输出信号转换为合适的电流和电压来驱动电机。
-电源:使用锂电池作为电源,提供所需的电能。
2.软件设计:-红外信号解码:将接收到的红外信号进行解码,并判断是前进、后退、转弯等命令。
-控制逻辑:根据解码结果产生相应的电信号,驱动电机实现小车的相应动作。
-响应机制:处理红外信号的时延和干扰,避免误操作或信号丢失。
制作过程:1.连接电路:-将STC89C52单片机与电源、红外接收器模块和驱动电路连接。
确保连接正确、稳定。
-连接直流电机和驱动电路,通过电路板或者线缆进行连接,确保电机可以正确驱动。
2.烧录程序:- 使用Keil C编译器编写控制程序,并将程序通过编程器烧录到STC89C52单片机中。
3.完善控制逻辑:-在控制程序中添加红外信号解码和控制逻辑代码,使小车能够根据接收到的红外信号做出相应动作。
4.调试和测试:-将红外遥控器对准红外接收器模块,发送不同的红外信号,确保小车能够正确接收和处理信号。
-确保小车能够根据接收到的信号做出正确的动作,如前进、后退、转弯等。
5.完善功能:-可以根据实际需求添加其他功能,如声控、避障、图像识别等,提升小车的智能性和功能性。
通过以上设计和制作过程,一个基于51单片机的红外遥控小车就可以完成。
这个小车可以通过红外遥控器进行远程控制,并实现前进、后退、转弯等动作。
它可以在室内或者室外进行运行,并具有一定的智能性和便携性。
这个项目不仅可以培养学生的动手能力和创造力,还可以加深对电子电路和嵌入式系统的理解和掌握。
单片机STM32F103C8T6的红外遥控器解码系统设计一、本文概述本文旨在详细阐述基于STM32F103C8T6单片机的红外遥控器解码系统的设计和实现过程。
随着科技的不断进步和智能化设备的普及,红外遥控器作为一种常见的遥控设备,已经广泛应用于家电、安防、玩具等多个领域。
然而,红外遥控器发出的红外信号往往需要通过解码器才能被设备正确识别和执行,因此,设计一款高效、稳定、可靠的红外遥控器解码系统具有重要意义。
本文将首先介绍红外遥控器的基本原理和信号特点,然后详细阐述STM32F103C8T6单片机的性能特点和在红外遥控器解码系统中的应用优势。
接着,将详细介绍红外遥控器解码系统的硬件设计,包括红外接收头的选择、电路设计和PCB制作等。
在软件设计部分,将详细阐述如何通过STM32F103C8T6单片机的编程实现红外信号的接收、解码和处理,以及如何将解码后的数据通过串口或其他通信方式发送给主控制器。
本文还将对红外遥控器解码系统的性能进行测试和分析,包括信号接收距离、解码速度和稳定性等方面的测试。
将总结本文的主要工作和创新点,并对未来的研究方向进行展望。
通过本文的研究和实现,旨在为红外遥控器解码系统的设计提供一种新的思路和方法,同时也为相关领域的研究人员提供有益的参考和借鉴。
二、红外遥控器基础知识红外遥控器是一种常见的无线遥控设备,它利用红外光作为信息载体,通过发射和接收红外光信号实现对设备的远程控制。
这种遥控方式因其简单、低成本和无需视线连接等优点,在各类消费电子产品中得到了广泛应用,如电视机、空调、音响等。
红外遥控器的工作原理主要基于红外辐射和光电器件的检测。
遥控器内部通常包含一个或多个红外发射管,当按下按键时,发射管会发射出特定频率和编码的红外光信号。
接收端则配备有红外接收头,该接收头内部有一个光敏元件(如硅光敏三极管或光敏二极管),用于检测红外光信号并将其转换为电信号。
为了区分不同的按键操作,红外遥控器通常采用特定的编码方式对按键信号进行编码。
本科生毕业设计(论文)论文题目:基于单片机的红外遥控系统设计毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。
尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。
对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。
作者签名:日期:指导教师签名:日期:使用授权说明本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。
作者签名:日期:本设计是基于单片机的红外遥控系统设计,设计内容包括了红外接收,红外解码和步进电机控制三大块。
如今红外遥控技术已经得到了广泛的应用;其利用红外线来传输数据,这种情况下不需要实体连线,体积小,成本低,功能强。
我们日常生活中的电视机,洗衣机,空调,航天飞机,工业现场设备等都运用了红外遥控的技术。
本设计中发射端采用专用的发射芯片来实现红外遥控码的发射,且遥控码格式是NEC标准。
接收端采用市面上流行的1838一体化红外接收头,接收到的红外信号经由1838接收头完成光/电转化和解调的工作,然后把33位的完整码发送到解码芯片中去完成解码工作。
本设计中的主芯片是STC89C52单片机,主芯片和解码芯片之间进行串行通讯。
系统启动后,解码芯片将解码后得到的8位数据码串行发送到主芯片中,然后通过主芯片来控制步进电机的正转,反转,加速,减速。
本设计中的被控对象是步进电机,步进电机最适合做数字控制。
步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。
目录第一章设计简介 (2)第二章系统方案 (2)一、设计方案对比 (2)二、方案设计 (4)第三章硬件设计 (4)一、红外遥控器 (4)二、红外接收模块部分 (6)第四章软件设计 (7)一、红外遥控器软件设计 (7)二、红外接收模块软件设计 (10)三、程序代码 (10)第五章测试及分析 (10)第六章结论 (10)第七章参考文献 (11)附录一(程序代码): (12)第一章设计简介本设计分为红外遥控器与红外接收模块两部分。
红外遥控器包括矩阵键盘、增强型51单片机(STC11L04E)、红外发射电路组成。
单片机扫描矩阵键盘后,将按键状态进行信源编码与信道编码,载波(38k脉冲)后由红外发射器发射。
红外接收模块部分由传统51单片机、数码管、一体化红外接收头组成。
一体化红外接收头将信号进行限幅放大、带通滤波、解调、积分、整形后输出解调信号至单片机,并由单片机输出解调信号。
第二章系统方案一、设计方案对比红外遥控器部分2.1.1 主控芯片方案一:HT6222方案二:STC11L04E分析:传统红外遥控器芯片HT6222具有性价比高、功能强大、稳定可靠、使用简单等特点,但该芯片难以零购。
STC11L04E为增强型51单片机,控制灵活(载波频率可调、通信协议可变更、用户码可变换)、价格较HT6222稍贵。
STC11L04E最大的特别是低功耗,功作电压低3.3V,易于应用于移动设备。
结论:由于STC11L04E单片机的灵活性以及学习性(可增强我们对一个完整通信系统的理解)。
因此我们采用方案二。
2.1.2 矩阵键盘方案一:3*6*2.5 贴片轻触开关方案二:6*6*6 直插轻触开关分析:3*6*2.5贴片轻触开关虽然体积小巧、美观,但与6*6*6直插轻触开关对比,在制板布线上较繁锁。
结论:综上,我们采用6*6*6直插轻触开关,使得整体布线简单,可布单面版,简化制板流程。
2.1.3电源模块方案一:钮扣电池CR2032方案二:可充电锂电池18650分析:可充电锂电池18650容量大,节能环保(可多次利用),但体积大。
基于51单片机的红外遥控小车设计和制作本文介绍一款红外线遥控小车,以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。
基于51单片机的红外通信设计报告研究方案:基于51单片机的红外通信设计报告摘要:本研究旨在通过对基于51单片机的红外通信的研究与实践,对红外通信协议进行优化和改进,提高通信的可靠性和稳定性。
通过设计红外发射器和接收器,并利用51单片机进行编程控制,实现了红外信号的发送与接收。
在实验中,采集了一系列数据,通过对这些数据的整理和分析,发现了现有研究成果的不足之处,并提出了一种新的观点和方法,为解决实际问题提供了有价值的参考。
1. 引言红外通信是一种常见的无线通信方式,具有传输速度快、安全可靠等优点,在家庭电器控制、遥控玩具、无线数据传输等领域广泛应用。
本研究基于51单片机进行红外通信协议的设计与实践,旨在优化和改进红外通信的性能。
2. 研究设计2.1 硬件设计2.1.1 红外发射器设计通过使用红外发光二极管作为发射器,并连接到51单片机的IO口,控制IO口的高低电平来实现对发射器的开关控制。
2.1.2 红外接收器设计通过使用红外接收头作为接收器,并将其连接到51单片机的IO口,通过检测接收器的信号电平变化来判断接收到的红外信号。
2.2 软件设计2.2.1 红外信号解析与发送在51单片机上编写红外信号解析与发送的程序,通过对输入信号的解析,将需要发送的红外信号编码成特定协议的数据帧,再通过IO口的控制将数据帧发送出去。
2.2.2 红外信号接收与解析在51单片机上编写红外信号接收与解析的程序,通过IO口的状态变化检测,获取红外接收器接收到的信号,并对接收到的信号进行解析,还原成原始数据。
3. 实验与调查情况在本研究中,我们通过实验和调查采集了一系列的数据来评估所设计的红外通信系统的性能。
3.1 实验设置我们设置了一个包含发射器和接收器的实验平台。
通过按下遥控器上的按键,触发发射器发送特定红外信号,在接收器上探测到红外信号,并通过51单片机进行信号解析。
3.2 数据采集与分析通过对实验中采集到的数据进行整理和分析,我们可以得到以下结论:(1)在传输距离较近的情况下,信号的可靠性和稳定性良好。
基于单片机的红外遥控智能小车设计引言:随着科技的不断发展,智能物联网已经走进了我们的生活。
智能小车作为一种智能化的产品,能够实现远程遥控、自动避障等功能,受到了广大消费者的青睐。
本文就基于单片机的红外遥控智能小车设计进行详细介绍。
一、设计目标本设计的目标是通过红外遥控,实现对智能小车的远程控制,小车能够根据收到的指令进行行驶、避障等操作。
二、设计原理1.主控芯片:本设计使用单片机作为主控芯片,常用的单片机有51系列、AVR系列等,可根据实际需求选择合适的芯片型号。
2.红外遥控模块:红外遥控模块是实现红外通信的设备,可以将遥控器发出的红外信号解码成数据,实现遥控操作。
3.电机驱动模块:电机驱动模块可将单片机的PWM信号转化为电机的动力驱动信号,控制小车的行驶方向和速度。
4.超声波传感器:超声波传感器可以感知到小车前方的障碍物距离,根据测得的距离,进行相应的避障操作。
5.电源模块:小车需要使用适当的电源,通常是锂电池或者直流电源供应。
三、系统设计1.硬件设计:(1)搭建小车底盘:根据所选择的底盘,搭建小车结构,并安装好电机驱动模块、电源模块等硬件设备。
(2)连接电路:将红外遥控模块、超声波传感器等硬件设备与主控芯片进行连接,确保每个模块正常工作。
2.软件设计:(1)红外遥控程序设计:通过红外遥控模块接收红外信号,并解码成相应的指令。
根据指令控制电机驱动模块,实现小车的行驶方向和速度控制。
(2)超声波避障程序设计:根据超声波传感器测得的距离,判断是否有障碍物,如果有障碍物就停止或者转向。
四、实验结果和讨论经过实验验证,本设计的红外遥控智能小车能够准确接收红外信号,并根据指令控制小车的行驶方向和速度。
同时,超声波传感器能够及时感知到前方的障碍物,并进行相应的避障操作。
然而,该设计仍然存在一些不足之处,比如超声波传感器的测距范围有限,可能无法感知到较小的障碍物。
此外,红外遥控信号的传输距离也有一定限制,需要保持遥控器与小车之间的距离不过远。
基于单片机的红外遥控设计与制作13工试2班舒佳章韬略一、设计目的对于本课题的研究,其理论中的价值是对红外线这种电磁波的特性进行更加深入的研究。
同时在与单片机和电子电路的共同作用下,找到单片机及电子电路在实际运用中的更多功能,从而挖掘出红外线和硬件设备结合中的更多可能性。
在现实意义中,对于红外线的使用,它不仅提高了单片机、硬件设备和硬件系统在智能遥控领域的广泛应用,而相对了在硬件设施上使用了红外线的遥控技术,也同时大大拓宽了硬件设施的应用围。
在不久的将来,我相信,人们对于红外遥控控制的运用,会变得越来越广。
二、设计要求基本功能要求:1.以一个单片机作为控制遥控器,另一个单片机控制系统为被遥控对象;2.用遥控器的10个遥控开关,控制遥控对象的10个电源开关通断;3.能实现10个电源开关状态显示;4.能实现定时开关某一个电源开关。
扩展功能:1.能实现灯光亮度连续调节;2.能根据不同电器实现不同时间通断控制;3.其他扩展功能。
三、方案设计3.1红外遥控发射电路的方案采用指令键产生电路产生不同的控制指令,单片机进行状态的编码,直接由单片机的口输出方波信号控制红外发射管进行发射。
红外发射管采用普通的红外发射二极管。
3.2红外遥控接收电路的方案遥控系统采用红外线脉冲个数编码,直接利用单片机软件解码,实现功能的遥控。
3.3单片机的选择本设计所编写的程序比较简单,功能也比较少,所用到的输入输出端口也不是很多,所以我们决定用STC89C52单片机来完成本设计,既方便也很实用。
3.4红外遥控系统电路的原理框图以及各部分作用各部分作用:(1)行列式键盘行列式键盘又称为矩阵式键盘,用I/O线组成行列结构,按键设置在行列的交点上,行列式分别连接到按键开关的两端。
键盘中有无按键按下是由行线送入扫描字及列线读入列线状态字来判断的,有键按下时通过查键并执行键功能程序。
(2)红外线发射电路遥控器信息码由单片机的定时器1中断产生40KHZ红外线方波信号。
由P3.5口输出,经过三极管放大,由红外线发射管发送。
(3)单片机单片机用于输出方波信号控制红外发射电路的工作。
3.5红外接收部分原理框图以及各部分作用各部分作用: (1)+5V电源电路给单片机最小系统、控制电路提供以及红外接收电路提供电压。
(2)红外接收电路红外接收电路把接收到的状态在部进行解码,从而实现不同的功能。
(3)控制电路通过发射电路的按键实现对控制电路的控制作用。
3.6系统硬件电路的设计红外发射电路:红外接收电路:四、遥控发射及接收控制电路的软件设计4.1 软件设计流程图4.1.1键扫描程序流程图相应的按键扫描程序:#include<reg52.h>#define uint unsigned int#define uchar unsigned char#define keyrow P0#define keyline P2uchar code keyv[8]={1,2,4,8}; uchar keyscan(void){uchar keyval,i;keyval=0;keyrow=0xfe;if(keyline!=0xff)for(i=0;i<4;i++)if(~keyline==keyv[i]) keyval=i+1; keyrow=0xfd;if(keyline!=0xff)for(i=0;i<4;i++)if(~keyline==keyv[i]) keyval=i+5; keyrow=0xfb;if(keyline!=0xff)for(i=0;i<4;i++)if(~keyline==keyv[i]) keyval=i+9; keyrow=0xf7;if(keyline!=0xff)for(i=0;i<4;i++)if(~keyline==keyv[i]) keyval=i+13; while(keyline!=0xff);return(keyval);}红外信号发射过程:该遥控器采用脉冲个数编码,不同的脉冲个数代表不同的码,最小为2个脉冲,最大为17个脉冲,为了使接收可靠,第一位码宽为3ms,其余为1ms,遥控码数据帧间隔大于10ms 。
当某个被控电器的电源开关被按下时,单片机先读出键值,然后根据键值设定遥控码的脉冲个数,再调制成40kHz 方波由红外线发光管发身出去。
sbit remoteout=P3^5;extern void delay1ms(uint time);/*************初始化函数***********/void init(void) {remoteout=0;IE=0x00;IP=0x08;TMOD=0x22;TH1=0xf3;TL1=0xf3;EA=1;}/*****************发射函数***********/void send_infrared(uchar keyval){uchar m;ET1=1;TR1=1;delay1ms(3);ET1=0;TR1=0;remoteout=0;for(m=keyval;m>0;m--) {delay1ms(1);ET1=1;TR1=1;delay1ms(1);ET1=0;TR1=0;remoteout=0; }delay1ms(10);}/******************40KHZ发生器************/ void time_intt1(void) interrupt 3 {remoteout=~remoteout; }4.1.3遥控发射主程序流程图遥控发射的主程序流程图:首先初始化程序,然后调用键扫描程序。
相应的发射主程序如下:#include<reg52.h>#define uint unsigned int#define uchar unsigned charextern uchar keyscan(void);extern void init(void);extern void send_infrared(uchar keyval);void delay1ms(uint time) {uint i,j;for(i=0;i<time;i++)for(j=0;j<110;j++);}void main(){uint keyval;init();while(1){keyval=keyscan();while(keyscan());if(keyval) {send_infrared(keyval);}}}4.1.4 中断程序流程图中断过程:首先判断低电平脉宽度是否大于2ms,若脉宽不到2ms,则中断返回;若低电平大于2ms,则接收并对低电平脉冲计数,接下来看判断高电平脉宽度冲是否大于3ms,若脉宽不到3ms,则返回上一接收计数过程;若高电平脉宽大于3ms,则按照脉冲个数至对应功能程序。
此时中断返回。
相应的中断程序如下:#include<reg52.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intsbit remotein=P3^1;extern void delay1ms(uint time);uchar value;/***********初始化********/void clearmen(void){EX0=1;EA=1;}/**************外中断遥控接收函数**************/void intt0(void) interrupt 0{ uchar keyval,k,sign;EX0=0;sign=0;keyval=0;if(remotein==0){delay1ms(2);if(remotein==0)while(1){while(remotein==0);keyval++;k=0;delay1ms(1);while(remotein==1){delay1ms(1);k++;if(k>2){value=keyval-1;sign=1;break;}} if(sign) break;}}EX0=1;}4.1.5遥控接收器主程序流程图相应的接收主程序:#include<reg52.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intextern void clearmen(void);extern uchar value;uchar temp;void delay1ms(uint time) {uint i,j;for(i=0;i<time;i++)for(j=0;j<110;j++);void youyi(void) //7个流水灯逐个闪动{ uint i;temp=0x01;for(i=0;i<8;i++){P2=~temp;delay1ms(1000);temp<<=1;}}void zuoyi(void) //7个流水灯反向逐个闪动{ uint i;temp=0x80;for(i=0;i<8;i++){P2=~temp;delay1ms(1000);Temp>>=1;}}void quanliang(void){uint i;temp=0xfe;for(i=0;i<8;i++) //7个流水灯依次全部点亮{P2=temp;delay1ms(1000);temp<<=1;}}void fquanliang(void){uint i;temp=0x7f;for(i=0;i<8;i++) //7个流水灯依次全部点亮{P2=temp;delay1ms(1000);Temp>>=1;}void main(){ clearmen();P0=0xff;while(1) {if(value==1) {P2=0xfe;}if(value==2) {P2=0xfd;}if(value==3) {P2=0xfb;}if(value==4 {P2=0xf7;}if(value==5) {P2=0xef;}if(value==6) {P2=0xdf;}if(value==7) {P2=0xbf;}if(value==8) {P2=0x7f;}if(value==9) {P1=0xfe;}if(value==10) {P1=0xfd;}if(value==11) youyi();if(value==12) zuoyi();if(value==13) quanliang();if(value==14) fquanliang();}}五、演示结果当按下键1时,发光二极管LED1亮;当按下键2时,发光二极管LED2亮;当按下键3时,发光二极管LED3亮;当按下键4时,发光二极管LED4亮;当按下键5时,发光二极管LED5亮;当按下键6时,发光二极管LED6亮;当按下键7时,发光二极管LED7亮;当按下键8时,发光二极管LED8亮;当按下键9时,发光二极管LED9亮;当按下键10时,发光二极管LED10亮;当按下键11时,发光二极管LED8-LED1依次渐亮;当按下键12时,发光二极管LED1-LED8依次渐亮;当按下键13时,发光二极管LED8-LED1依次全亮;当按下键14时,发光二极管LED1-LED8依次全亮;附录:1.程序:#include<reg52.h>#define uint unsigned int#define uchar unsigned char#define keyrow P0#define keyline P2uchar code keyv[8]={1,2,4,8};uchar keyscan(void){uchar keyval,i;keyval=0;keyrow=0xfe;if(keyline!=0xff)for(i=0;i<4;i++)if(~keyline==keyv[i]) keyval=i+1;keyrow=0xfd;if(keyline!=0xff)for(i=0;i<4;i++)if(~keyline==keyv[i]) keyval=i+5;keyrow=0xfb;if(keyline!=0xff)for(i=0;i<4;i++)if(~keyline==keyv[i]) keyval=i+9;keyrow=0xf7;if(keyline!=0xff)for(i=0;i<4;i++)if(~keyline==keyv[i]) keyval=i+13;while(keyline!=0xff);return(keyval);}sbit remoteout=P3^5;extern void delay1ms(uint time);/*************初始化函数***********/void init(void) {remoteout=0;IE=0x00;IP=0x08;TMOD=0x22;TH1=0xf3;TL1=0xf3;EA=1;}/*****************发射函数***********/void send_infrared(uchar keyval){uchar m;ET1=1;TR1=1;delay1ms(3);ET1=0;TR1=0;remoteout=0;for(m=keyval;m>0;m--) {delay1ET1=1;TR1=1;delay1ms(1);ET1=0;TR1=0;remoteout=0; } delay1ms(10);}/******************40KHZ发生器************/void time_intt1(void) interrupt 3 {remoteout=~remoteout; }extern uchar keyscan(void);extern void init(void);extern void send_infrared(uchar keyval);void delay1ms(uint time) {uint i,j;for(i=0;i<time;i++)for(j=0;j<110;j++);}void main(){uint keyval;init();while(1){keyval=keyscan();while(keyscan());if(keyval) {send_infrared(keyval);}}接收系统:#include<reg52.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intsbit remotein=P3^1;extern void delay1ms(uint time);uchar value;/***********初始化********/void clearmen(void){EX0=1;EA=1;}/**************外中断遥控接收函数**************/ void intt0(void) interrupt 0{ uchar keyval,k,sign;EX0=0;sign=0;keyval=0;if(remotein==0){delay1ms(2);if(remotein==0)while(1){while(remotein==0);keyval++;k=0;delay1ms(1);while(remotein==1){delay1ms(1);k++;if(k>2){value=keyval-1;sign=1;break;}} if(sign) break;}EX0=1;}接收主程序:extern void clearmen(void); extern uchar value;uchar temp;void delay1ms(uint time) { uint i,j;for(i=0;i<time;i++)for(j=0;j<110;j++);}void youyi(void){ uint i;temp=0x01;for(i=0;i<8;i++){P2=~temp;delay1ms(1000);temp<<=1;}}void zuoyi(void){ uint i;temp=0x80;for(i=0;i<8;i++){P2=~temp;delay1ms(1000);Temp>>=1;}}void quanliang(void) {uint i;temp=0xfe;for(i=0;i<8;i++){P2=temp;delay1ms(1000);temp<<=1;}void fquanliang(void){uint i;temp=0x7f;for(i=0;i<8;i++){P2=temp;delay1ms(1000);Temp>>=1;}}void main(){ clearmen();P0=0xff;while(1) {if(value==1) {P2=0xfe;}if(value==2) {P2=0xfd;}if(value==3) {P2=0xfb;}if(value==4 {P2=0xf7;}if(value==5) {P2=0xef;}if(value==6) {P2=0xdf;}if(value==7) {P2=0xbf;}if(value==8) {P2=0x7f;}if(value==9) {P1=0xfe;}if(value==10) {P1=0xfd;}if(value==11) youyi();if(value==12) zuoyi();if(value==13) quanliang();if(value==14) fquanliang();}}2.个人小结这次课程设计我们的题目是设计单片机遥控系统设计,以51单片机为基础通过红外发射与接收装置来实现信息的传递,通过这次课程设计,我学会了红外通信装置的使用以及它们之间编码的设计。