基于51单片机的红外遥控LED灯控制系统设计与实现.docx
《基于51单片机的红外遥控LED灯控制系统设计与实现.docx》由会员分享,可在线阅读,更多相关《基于51单片机的红外遥控LED灯控制系统设计与实现.docx(27页珍藏版)》请在冰豆网上搜索。
基于51单片机的红外遥控LED灯控制系统设计与实现
郑州科技学院
《单片机原理及应用》课程设计
题目基于单片机的红外遥控LED灯控制设计
学生姓名XX
专业班级XXXX
学号XXXXX
院(系)信息工程学院
指导老师XXXXX
完成时间2015年9月20日
基于单片机红外遥控LED灯控制系统设计与实现
0.引言
随着国民经济的快速发展和社会进步,教育在全社会愈加被关注和重视,校园规模也随着受教育者的数量增加而不断扩大,教室的数量也大幅度增加。
为使师生有舒适的教学和学习的环境,无论是教室的面积、设施和照度,校方在力所能及的范围内,都付出了十分的努力。
但由于学校开放型的管理模式,以及全员的节能意识的淡薄,高校的教室在白天室内照度很高的情况下,仍然普遍存在开灯作业;即使室内无人或人数很少的情况下,也是全部开启室内照明。
夜间许多教室,即使仅有几个学生在教室自习,但室内照明全部开启,绝不会有师生因为只有少数人而仅开几盏灯。
LED被认为是21世纪的照明光源。
LED发光器件是冷光源,光效高,工作电压低,而且能耗低,同样亮度下,LED能耗为白炽灯的10%,荧光灯的50%。
LED寿命可达10万小时,是荧光灯的10倍,白炽灯的100倍。
用LED替代白炽灯或荧光灯,环保无污染。
使用安全可靠,便于维护。
我国照明用电占总发电量的12%。
目前,公共建筑的照明灯具控制大多采用手动开关,经常出现没有及时开关的现象,从而造成大量的能源浪费和使用上的不便。
另外,不必要的使用,也会缩短灯具的使用寿命。
本文阐述了一套LED智能照明控制系统设计方案,可以根据工作环境中是否有人员和环境补光亮度等来自动控制照明的开关和亮度。
采用本系统具有提高用电效率,节约电能和缓解了用电高峰的电力供双重作用。
单片机的出现至今已经有30多年的历史了。
微型计算机的迅速发展,促进微型计算机测量和控制技术的迅速发展和广泛应用,单片机(单片微型计算机)的应用已经渗透到广泛渗透到社会经济、军事、交通、通信等相关行业,而且也深入到家电、娱乐、艺术、社会文化等各个领域,并掀起了一场数字化技术革命。
单片微型计算机就是将中央处理单元、存储器、定时/计数器和多种接口都集成到一块集成电路芯片上的微型计算机。
因此一块芯片就构成了一台计算机。
它已成为工业控制领域、智能仪器仪表、尖端武器、日常生活中最广泛使用的计算机。
本篇论文介绍了就是基于单片机AT89C51的室内灯光控制系统的研究和开发。
本系统是以单片机为控制器的核心,本系统主要由光照检测电路、热释电红外线传感器及处理电路、单片机系统及控制电路组成。
工作时,光照检测电路和热释电红外线传感器采集光照强弱、室人是否有人等信息送到单片机,单片机根据这些信息通过控制电路对LED照明设备进行开关操作,从而实现照明控制,以达到节能的目的。
1.设计方案
该设计由硬件和软件共同组成。
首先是硬件部分,该系统的最终实现选用的单片处理器(89S52)、键盘、LED显示、单片机的串行接口电路。
因此应充分了解单片机,包括存储空间,并行口,串行口,串行通信,定时器等,掌握非编码键盘和LED的动态显示,并要在充分满足系统可实现的功能的基础上考虑到器件的价格,制版的复杂度和软件的实现难度。
其次是软件部分,该系统的软件环境是S52,因此应了解S52的编程方法,常用的一些编程技巧,调试运行程序,尽量使程序简洁,易懂,便于移植,编译效率高,健壮性好。
为了用计算机解决某一具体问题或实现某一特定的功能,总要先对问题或功能要求进行分析,确定相应的算法和步骤,然后选择相应的指令,并按一定的顺序排列起来,这就构成了解决某一问题或实现某一特定功能的应用程序。
编制好的程序通过仿真器进行调试,将调试成功的程序通过T写入器写入到芯片AT89S52中,最后把芯片AT89S52插入连接完毕的硬件系统中投入实际使用。
1.1系统方案选择
(1)红外编码和发射部分
方案一:
专用芯片解决方案。
专用红外编码芯片种类很多,如日本三菱公司的M50426AP、PT2262、BL9148、zD6631等,此类芯片一般集载波振荡、编码、发射于一体,具有很强的抗干扰能力,外围电路简单,使用很方便,而且价格也很低。
通用的遥控器上大多使用此类专用芯片。
但是,专用芯片也有致命的弱点:
专用芯片的应用灵活性很差,其内部编码已经固定,无法修改内部数据,不适用于经常需要改动传送数据的场合;专用芯片几乎都是面向指令型的编码遥控方式,传输效率较低;大多数的专用芯片的内部编码及技术数据已经公诸于世,会产生安全漏洞。
方案二:
微处理器单独解决方案。
电路如图(a)所示。
该方案使用微处理器的I/O口直接产生38KHZ已调波,驱动红外发光二极管,发射红外数据。
38KHZ方波由CPU的定时器产生或由软件编程产生。
红外编码工作由软件完成,因此,红外编码方案可以任意设计,外部只需配接非常简单的硬件电路,大大降低了了电路的复杂性,有利于降低成本,减小遥控器的体积。
由于使用软件编码方案,占用了CPU的一定的时间,CPU处理速度受到一定的影响,但是,对于遥控器这一类功能比较单一的系统来说,处理任务比较少,根本影响不了CPU的处理效率,仅仅是增加了软件编程的负担。
经比较,方案二既可满足题目要求,电路又非常简单,硬件成本又很低,仅仅是增加了软件的编程负担,使得红外编码非常灵活,所以采用该方案。
(2)红外接收和解码部分
方案一:
分立元件解决方案,电路如图2-1所示。
图中RD1为红外接收管;R3、R4,VT1构成反相放大器;VT2、R5、C2构成滤波器,滤掉38KHZ的高频载波;R6、R7、VT3构成整形电路,将滤波后的波形处理为较好的方波;Cl、C3为耦合电容;R2为限流电阻,当接收到较强的信号是保护VT1。
该方案最大的优点是供电电压比较低,可用两节电池3V电压供电。
但是,由于电路使用分立元件构成,其稳定性和抗干扰能力不高,影响红外数据传输的准确性。
方案二:
集成电路解决方案,电路如图(b)所示。
该方案使用一体化红外接收器,集红外接收和放大于一体,不需任何外接元件,就能完成从红外接收到输出与TTL电平兼容的所有工作,而体积和普通的塑封三极管大小一样。
结合设计任务书比较以上两种方案,可知,利用电子电路装置控制,其电路不是很复杂,相对来说,制作更简单一些,而且成本也相对较低,但是其可调性能差,亮灯模式少而且样式单调,不能满足当代社会对彩灯的要求,也不能达到设计任务的要求,或者说很难实现,经比较,方案二既可满足题目要求,电路又非常简单,硬件成本又很低,通过软件编程,使得红外编码非常灵活,所以采用该方案。
(3)器件选择:
采用12MHZ的晶振;红外接收端采用价格便宜,性能可靠的一体化红外接收头:
HSOO38;采用89S52进行控制;控制方面采用小灯进行模拟。
1.2系统构成框图
图1-2系统结构框图
2.系统设计
系统工作原理:
红外遥控有发送和接收两个组成部分:
发送端采用单片机将待发送的二进制信号编码调制为一系列的脉冲串信号,通过红外发射管发射红外信号。
红外接收端普遍采用价格便宜,性能可靠的一体化红外接收头(如HSOO38,它接收红外信号频率为38KHz,周期约26US)接收红外信号,它同时对信号进行放大、检波、整形,得到相应电平的编码信号,再送给单片机,经单片机解码并执行,去控制相关对象。
(1)二进制信号的编码
本设计采用不同的脉宽宽度来实现二进制信号的编码,可由发送单片机来完成。
用图2-1(a)表示二制信号中的高电平‘1’,其特征是脉冲中低电平的宽度等于0.26ms,相当于10个26us的宽度,高电平的宽度等于0.52ms,相当于20个26us的宽度;用图2-1(b)表示二进制信号中的低电平‘0’,其特征是脉冲中高电平的宽度等于0.26mS,而低电平的宽度是高电平的二倍,等于0.52ms,相当于20个26us的宽度。
上述10个和20个脉冲宽度还可适当调整,以适应不同数据传输速度的需要。
(3)二进制信号的解调
二进制信号的解调由一体化红外接收头HSOO38来完成,它把收到的红外信号(图2-2中波形D,经内部处理并解调复原,输出图2-2中波形E,HS0038的解调可理解为:
在输入有脉冲串时,输出端输出低电平,否则输出高电平。
二进制信号的解码由接收单片机来完成的它把红外接收头送来的二进制编码波形通过解码,还原出发送端发送的数据。
如图2-2,把波形E解码后还原成数据信息101。
(4)基于字节传输的红外遥控数据格式
在发送字节的开始先通过单片机发送20个脉冲宽度(每个脉冲周期26uS)的高电平作为传输开始,接着发送8位数据(字节高位在前,低位在后),最后发送10个脉冲宽度的低电平作为传输结束,如图2-3所示。
2.1硬件原理
2.1.1硬件组成介绍
LED彩灯显示电路:
LED彩灯显示电路(如图所示)实际上是由8个发光二极管和8个电阻构成的电路。
发光二极管与电阻对应串联,然后接在与之相对应的P2口上。
通过软件编程对P2口输出高低电平来实现不同的闪烁花型。
由于发光二极管的导通电压一般为1.7V以上,另外,他的工作电流根据型号不同一般为1mA到30mA,电阻选择范围100欧姆~3千欧姆在此我们这里选用560欧姆的电阻。
新型LED彩灯系统包括2大部分,即LED彩灯控制器(89C51主控模块)和LED彩灯管(管内LED板模块)。
前者是主控模块,具有按键、显示等功能,并利用89C51的P口输出控制信号;后者是受控模块,上面焊有三色LED彩灯和信号驱动芯片,模块置于LED的透明灯管内。
彩灯控制器可直接与220V交流市电相连接,经过开关电源变换,输出直流工作电压,一方面为管内LED模块提供12V工作电源,另一方面为主控模块单片机系统(彩灯控制器)提供5V工作电源。
整个系统工作由软件程序控制运行,根据需要,用户可以在LED彩灯工作时通过主控模块上的按键来设定亮灯时间和灯光闪动频率。
芯片AT89S52:
(1)主要性能:
与MCS-51单片机产品兼容、8K字节在系统可编程Flash存储器、1000次擦写周期、全静态操作:
0Hz~33Hz、三级加密程序存储器、32个可编程I/O口线、三个16位定时器/计数器、八个中断源、全双工UART串行通道、低功耗空闲和掉电模式、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符。
(2)功能特性描述:
At89s52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
AT89S52具有以下标准功能:
8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
8位微控制器8K字节在系统可编程FlashAT89S52
(3)管脚说明:
P0口:
P0口是一个8位漏极开路的双向I/O口。
作为输出口,每位能驱动8个TTL逻辑电平。
对P0端口写“1”时,引脚用作高阻抗输入。
当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。
在这种模式下,P0具有内部上拉电阻。
在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。
程序校验时,需要外部上拉电阻。
P1口:
P1口是一个具有内部上拉电阻的8位双向I/O口,p1输出缓冲器能驱动4个TTL逻辑电平。
对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX),具体如下所示。
在flash编程和校验时,P1口接收低8位地址字节。
引脚号第二功能
P1.0T2(定时器/计数器T2的外部计数输入),时钟输出
P1.1T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)
P1.5MOSI(在系统编程用)
P1.6MISO(在系统编程用)
P1.7SCK(在系统编程用)
P2口:
P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。
对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX@DPTR)时,P2口送出高八位地址。
在这种应用中,P2口使用很强的内部上拉发送1。
在使用8位地址(如MOVX@RI)访问外部数据存储器时,P2口输出P2锁存器的内容。
在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。
P3口:
P3口是一个具有内部上拉电阻的8位双向I/O口,p2输出缓冲器能驱动4个TTL逻辑电平。
对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
P3口亦作为AT89S52特殊功能(第二功能)使用。
在flash编程和校验时,P3口也接收-一些控制信号。
(4)振荡器特性:
XTAL1和XTAL2分别为反向放大器的输入和输出。
该反向放大器可以配置为片内振荡器。
石晶振荡和陶瓷振荡均可采用。
如采用外部时钟源驱动器件,XTAL2应不接。
有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
(5)时钟电路
时钟电路是计算机的心脏,它控制着计算机的工作节奏。
MCS-51单片机允许的时钟频率是因型号而异的典型值为12MHZ
MCS-51内部都有一个反相放大器,XTAL1、XTAL2分别为反相放大器输入和输出端,外接定时反馈元件以后就组成振荡器,产生时钟送至单片机内部的各个部件。
AT89S52是属于CMOS8位微处理器,它的时钟电路在结构上有别于NMOS型的单片机。
CMOS型单片机内部(如AT89S52)有一个可控的负反馈反相放大器,外接晶振(或陶瓷谐振器)和电容组成振荡器,图3-1为CMOS型单片机时钟电路框图。
振荡器工作受/PD端控制,由软件置“1”PD(即特殊功能寄存器PCON.1)使/PD=0,振荡器停止工作,整个单片机也就停止工作,以达到节电目的。
清“0”PD,使振荡器工作产生时钟,单片机便正常运行。
图中SYS为晶振或陶瓷谐振器,振荡器产生的时钟频率主要由SYS参数确定(晶振上标明的频率)。
电容C1和C2的作用有两个:
其一是使振荡器起振,其二是对振荡器的频率f起微调作用(C1、C2大,f变小),其典型值为30pF。
(6)复位电路
计算机在启动运行时都需要复位,使中央处理器CPU和系统中的其它部件都处于一个确定的初始状态,并从这个状态开始工作。
MCS-51单片机有一个复位引脚RST,它是史密特触发输入(对于CHMOS单片机,RST引脚的内部有一个拉低电阻),当振荡器起振后,该引脚上出现2个机器周期(即24个时钟周期)以上的高电平,使器件复位,只要RST保持高电平,MCS-51保持复位状态。
此时ALE、PSEN、P0、P1、P2、P3接口都输出高电平。
RST变为低电平后,退出复位,CPU从初始状态开始工作。
本设计采用的复位方式是自动复位方式。
对于MOS(AT89S52)单片机只要接一个电容至VCC即可(见图2-4)。
在加电瞬间,电容通过电阻充电,就在RST端出现一定时间的高电平,只要高电平时间足够长,就可以使MCS-51有效的复位。
RST端在加电时应保持的高电平时间包括VCC的上升时间和振荡器起振的时间,Vss上升时间若为10ms,振荡器起振的时间和频率有关。
10MHZ时约为1ms,1MHZ时约为10ms,所以一般为了可靠的复位,RST在上电进应保持20ms以上的高电平。
RC时间常数越大,上电进RST端保持高电平的时间越长。
若复位电路失效,加电后CPU从一个随机的状态开始工作,系统就不能正常运转。
图2-4接收器HS0038
一体化红外接收头HSOO38的外部结构如图2-5所示,1脚GND接电源地,2脚VCC接十SV,3脚OUT为数据输出端(TTL电平,反相输出),可直接与单片机相联。
以HSOO38作为红外接收头,介绍了红外遥控信号的单片机软件编码解码方法,包括编码、调制和解码的原理,以及硬件电路和程序实现。
经实验测试,该方法能使红外遥控信号可靠发送和接收,并执行相应的功能。
2.1.2电路各部分功能原理
(1)接收电路原理图如图2-6所示:
图2-6接收电路原理图
各个基本电路图的设计
(2)发射接收电路如图2-7所示:
图2-7(a)接收电路图2-7(b)发射电路
(3)控制电路:
采用小灯的亮灭来模拟实际应用中的电路,电路如图2-8所示。
图2-8小灯控制电路
2.2软件流程
单片机的应用系统由硬件和软件组成,上述硬件原理图搭建完成上电之后,我们还不能看到多控制、多闪烁方式的LED灯系统循环点亮的现象,我们还需要告诉单片机怎么样进行控制,即编写程序控制单片机管脚电平的高低变化,来实现发光二极管的明灭。
软件编程是多控制、多闪烁方式的LED灯系统中的一个重要的组成部分,是本设计的重点和难点。
下面,我将阐述多控制、多闪烁方式的LED灯系统是如何实现,软件部分的主要任务是完成对光照检测电路和对热释电传感器信号处理电路的输出信号进行处理。
在光照较强时,系统继续对光照检测电路的输出状态进行检测。
光照较弱时,系统对信号处理电路的输出状态Vo进行检测。
若室内有人时Vo为高电平,系统控制照明设备点亮并按设定的时间进行延时。
在延时时间内再一次检测到有人时,则系统又按设定的时间进行延时;若在延时时间内检测到室内无人时,则系统控制照明设备熄灭并重新对信号处理电路的输出状态Vo进行检测。
基于上述分析,系统软件设计流程如图2-9所示。
:
程序如下:
#include
#include
#defineucharunsignedchar
uchardistemp;
sbitIRIN=P3^3;
ucharIRCOM[7];
table1[]={0xff,0x00,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0x00};
table2[]={0xfc,0xf9,0xf3,0xe7,0xcf,0x9f,0x3f,0x7e,0xfc,0xf9,0xf3,0xe7,0xcf,0x9f,0x3f};
table3[]={0xaa,0x7e,0xbd,0xdb,0xe7,0xff,0xe7,0xdb,0xbd,0x7e,0x55,0xff,0x00};
voiddelay(unsignedcharx)//x*0.14MS
{
unsignedchari;
while(x--)
{
for(i=0;i<13;i++){}
}
}
/**********************************************************/
voidDelay100ms(ucharx)//@11.0592MHz
{
unsignedchari,j,n;
for(n=0;n{
i=180;
j=73;
do
{
while(--j);
}while(--i);
}
}
/*******************************************************************/
intmain()
{
IE=0x84;
TCON=0x10;
IRIN=1;
Delay100ms
(1);
P2=0xff;
while
(1);
}
/**********************************************************/
voidIR_IN()interrupt2
{
unsignedcharj,k,N=0,i=0;
EX1=0;
delay(15);
if(IRIN==1)
{EX1=1;
return;
}
while(!
IRIN)
{delay
(1);}
for(j=0;j<4;j++)
{
for(k=0;k<8;k++)
{
while(IRIN)
{delay
(1);}
while(!
IRIN)
{delay
(1);}
while(IRIN)
{
delay
(1);
N++;
if(N>=30)
{EX1=1;
return;}
}
IRCOM[j]=IRCOM[j]>>1;
if(N>=8){IRCOM[j]=IRCOM[j]|0x80;}
N=0;
}
}
if(IRCOM[2]!
=~IRCOM[3])
{EX1=1;
return;}
switch(IRCOM[2])
{
case0x16:
{
for(;i<11;i++)
{P2=table1[i];
Delay100ms(10);}
};
break;
case0x0c:
{
for(;i<15;i++)
{P2=table2[i];
Delay100ms(10);}
};
break;
case0x18:
{
for(;i<12;i++)
{
P2=table3[i];
Delay100ms(10);
}
};
break;
}
EX1=1;
}
2.3实验与仿真
根据系统设计方案,本系统的调试共分为三大部分:
硬件调试,软件调试和软硬件联调。
由于在系统设计中采用模块设计法,所以方便对各电路模块功能进行逐级测试:
LED驱动模块的调试,单片机最小系统的调试,最后将各模块组合后进行整体测试[10]。
硬件调试:
对各个模块的功能进行调试,主要调试各模块能否实现指定的功能。
软件调试:
软件调试采用仿真软件Proteus6.9SP4,将程序调入MCS-51单片机实验系统进行编译,然后调入仿真软件Proteus6.9SP4中运行,主要是检查语法错误,程序在硬件上的可执行性。
硬件软