基于某单片机地红外遥控设计与制作

合集下载

基于51单片机的红外遥控设计-毕业设计论文

基于51单片机的红外遥控设计-毕业设计论文

基于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单片机的红外遥控小车设计和制作

基于51单片机的红外遥控小车设计和制作红外遥控小车设计和制作是一个有趣且实用的项目。

本文将介绍一个基于51单片机的红外遥控小车的设计方案和制作过程。

设计方案:1.硬件设计:-采用STC89C52单片机作为控制核心,具有良好的性能和稳定性。

-红外接收器模块:用于接收红外信号并将其转换为电信号。

-直流电机:用于驱动小车的轮子,实现前进、后退、转弯等动作。

-驱动电路:将单片机的输出信号转换为合适的电流和电压来驱动电机。

-电源:使用锂电池作为电源,提供所需的电能。

2.软件设计:-红外信号解码:将接收到的红外信号进行解码,并判断是前进、后退、转弯等命令。

-控制逻辑:根据解码结果产生相应的电信号,驱动电机实现小车的相应动作。

-响应机制:处理红外信号的时延和干扰,避免误操作或信号丢失。

制作过程:1.连接电路:-将STC89C52单片机与电源、红外接收器模块和驱动电路连接。

确保连接正确、稳定。

-连接直流电机和驱动电路,通过电路板或者线缆进行连接,确保电机可以正确驱动。

2.烧录程序:- 使用Keil C编译器编写控制程序,并将程序通过编程器烧录到STC89C52单片机中。

3.完善控制逻辑:-在控制程序中添加红外信号解码和控制逻辑代码,使小车能够根据接收到的红外信号做出相应动作。

4.调试和测试:-将红外遥控器对准红外接收器模块,发送不同的红外信号,确保小车能够正确接收和处理信号。

-确保小车能够根据接收到的信号做出正确的动作,如前进、后退、转弯等。

5.完善功能:-可以根据实际需求添加其他功能,如声控、避障、图像识别等,提升小车的智能性和功能性。

通过以上设计和制作过程,一个基于51单片机的红外遥控小车就可以完成。

这个小车可以通过红外遥控器进行远程控制,并实现前进、后退、转弯等动作。

它可以在室内或者室外进行运行,并具有一定的智能性和便携性。

这个项目不仅可以培养学生的动手能力和创造力,还可以加深对电子电路和嵌入式系统的理解和掌握。

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

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

单片机STM32F103C8T6的红外遥控器解码系统设计一、本文概述本文旨在详细阐述基于STM32F103C8T6单片机的红外遥控器解码系统的设计和实现过程。

随着科技的不断进步和智能化设备的普及,红外遥控器作为一种常见的遥控设备,已经广泛应用于家电、安防、玩具等多个领域。

然而,红外遥控器发出的红外信号往往需要通过解码器才能被设备正确识别和执行,因此,设计一款高效、稳定、可靠的红外遥控器解码系统具有重要意义。

本文将首先介绍红外遥控器的基本原理和信号特点,然后详细阐述STM32F103C8T6单片机的性能特点和在红外遥控器解码系统中的应用优势。

接着,将详细介绍红外遥控器解码系统的硬件设计,包括红外接收头的选择、电路设计和PCB制作等。

在软件设计部分,将详细阐述如何通过STM32F103C8T6单片机的编程实现红外信号的接收、解码和处理,以及如何将解码后的数据通过串口或其他通信方式发送给主控制器。

本文还将对红外遥控器解码系统的性能进行测试和分析,包括信号接收距离、解码速度和稳定性等方面的测试。

将总结本文的主要工作和创新点,并对未来的研究方向进行展望。

通过本文的研究和实现,旨在为红外遥控器解码系统的设计提供一种新的思路和方法,同时也为相关领域的研究人员提供有益的参考和借鉴。

二、红外遥控器基础知识红外遥控器是一种常见的无线遥控设备,它利用红外光作为信息载体,通过发射和接收红外光信号实现对设备的远程控制。

这种遥控方式因其简单、低成本和无需视线连接等优点,在各类消费电子产品中得到了广泛应用,如电视机、空调、音响等。

红外遥控器的工作原理主要基于红外辐射和光电器件的检测。

遥控器内部通常包含一个或多个红外发射管,当按下按键时,发射管会发射出特定频率和编码的红外光信号。

接收端则配备有红外接收头,该接收头内部有一个光敏元件(如硅光敏三极管或光敏二极管),用于检测红外光信号并将其转换为电信号。

为了区分不同的按键操作,红外遥控器通常采用特定的编码方式对按键信号进行编码。

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

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

本科生毕业设计(论文)论文题目:基于单片机的红外遥控系统设计毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。

尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。

对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。

作者签名:日期:指导教师签名:日期:使用授权说明本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。

作者签名:日期:本设计是基于单片机的红外遥控系统设计,设计内容包括了红外接收,红外解码和步进电机控制三大块。

如今红外遥控技术已经得到了广泛的应用;其利用红外线来传输数据,这种情况下不需要实体连线,体积小,成本低,功能强。

我们日常生活中的电视机,洗衣机,空调,航天飞机,工业现场设备等都运用了红外遥控的技术。

本设计中发射端采用专用的发射芯片来实现红外遥控码的发射,且遥控码格式是NEC标准。

接收端采用市面上流行的1838一体化红外接收头,接收到的红外信号经由1838接收头完成光/电转化和解调的工作,然后把33位的完整码发送到解码芯片中去完成解码工作。

本设计中的主芯片是STC89C52单片机,主芯片和解码芯片之间进行串行通讯。

系统启动后,解码芯片将解码后得到的8位数据码串行发送到主芯片中,然后通过主芯片来控制步进电机的正转,反转,加速,减速。

本设计中的被控对象是步进电机,步进电机最适合做数字控制。

步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。

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

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

目录第一章设计简介 (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容量大,节能环保(可多次利用),但体积大。

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

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

De s i g n o f I n f r ar e d Re mo t e Co n t r o l l e r B a s e d O n MCU
W AN G Ho n g r n e i
( T i a n j i n T i a n b o S c i e n c e&T e c h n o l o g y C o . , L T D, T i a n j i n 3 0 0 0 7 2 , C h i n a )
子技 术 , 2 0 0 3 , ( 0 6 ) : 4 0 — 4 1
自动 化应 用 { 2 0 1 3 9期
3 2
图1 单 片 机 遥 控 发射 器 和接 收器 设 计 原 理 图
难度大 因此 , 这几种方式都未能大量使用 。
而 红 外 遥 控 方 式 是 以 红 外 线 作 为 载 体 来 传 送 控 制信息 的 , 因其 反 应 速 度 快 、 传 输效率 高 、 工 作 稳 定 可 靠 等 优 点 而 广 泛 应 用 红 外 线 发 射 装 置 采 用 红 外 发光 二 极管 . 遥 控 发 射 器 易 于 小 型化 且 价 格 低 廉 : 采 用 数 字 信 号 编 码 和二 次 调 制 方 式 . 不 仅 可 以 实 现 多 路 信 息 的控 制 . 增加遥控功能 , 提高信 号传输的率 消 耗 低 : 红 外 线 不 会 向室 外 泄 露 ,
率。
参 考文献
该 系统在实 验过程 中运行 稳定 、 控制 准确 、 操作



5 I X T A L 1 P I . 4  ̄ 1
[ 1 】曹建 军 , 戴 兵. 无 线 遥 控技 术在 施 工现 场 的应 用—— 利 用 弱 电控制 强 电实现 节 能减 材[ J ] . 施 工技 术 , 2 0 1 1 ,

基于单片机的红外遥控密码锁的设计与实现_曹开田

基于单片机的红外遥控密码锁的设计与实现_曹开田
红外线遥控是目前使用最广泛的一种通信和遥控 手段,采用红外线作为传输媒介进行数据通信是一种 既方便又经济实用的选择,在小型移动设备中得到了 广泛 的 应用。红 外 通讯 一 般采 用 光波 波长 范 围为 850~900nm 的红外线。
本文所设计的红外遥控密码锁是以红外线作为载 波,将数码指令信号调制到载波上,然后通过红外发 射二极管发射出去;接收端接收到调制信号后将经过 限幅、滤波、解调等过程还原出原数码指令信号。该
开始
开始
初始化
初始化
打开串口
打开串口
产生指令
接收指令
送到串口
与原指令比较
20 次?
N
Y
驱动红外 发射管 发射主程序
15 次以上
N
比较相同?
Y
输出该指令 接收主程序
图 2 发射和接收程序流程图
4 结束语
本文设计的红外遥控密码锁具有体积小、结构紧 凑、安全可靠、成本低廉等优点。随着技术的不断进 步和发展,该系统必将有广阔的应用前景。
参考文献 1 胡汉才. 单片机原理及其接口技术. 清华大学出版社,
1995. 2 郭海英. 基于单片机的电子安全密码锁的设计. 现代
电子技术, 2005,13.
作者简介:曹开田,助教,硕士。研究方向为 智能控制及其信号处理。
优惠订购
30 元 = 补订《中国仪器仪表》2005 年下半年度杂志 (优惠代码:FX-1)
接收端的红外接收装置 0038B 对发射过来的红外 调制信号进行前置放大、限幅滤波、检波等一系列过 程后逐一解调出原数码指令信号,再将解调出的信号 与发射模块中的原数码指令信号相比较。如果有 15 次 以上比较结果是相同的,则认为接收成功,并用该数 码信号驱动继电器工作,最后由继电器控制密码锁的 闭合和开启。

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

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

基于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。

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

基于单片机的红外遥控设计与制作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单片机为基础通过红外发射与接收装置来实现信息的传递,通过这次课程设计,我学会了红外通信装置的使用以及它们之间编码的设计。

相关文档
最新文档