毕业设计基于单片机的遥控控制酒店客房灯光系统设计.doc
- 文档编号:7415877
- 上传时间:2023-05-11
- 格式:DOC
- 页数:28
- 大小:162KB
毕业设计基于单片机的遥控控制酒店客房灯光系统设计.doc
《毕业设计基于单片机的遥控控制酒店客房灯光系统设计.doc》由会员分享,可在线阅读,更多相关《毕业设计基于单片机的遥控控制酒店客房灯光系统设计.doc(28页珍藏版)》请在冰点文库上搜索。
单片机遥控控制酒店客房灯光系统
摘要:
本文通过老式酒店客房灯光控制系统进行改造,将原机的机械开关控制改为单片机红外线遥控控制,说明了单片机在现代酒店灯光智能控制中的适用性、灵活性、先进性。
通过对客房灯光控制电路改造后,大大提高了客人的使用舒适感,使酒店的硬件设施提高了一个台阶。
关键字:
单片机 遥控 客房灯光
前言:
酒店原有的智能控制系统较周边新开张酒店相比,已跟不上潮流,失去竞争能力。
例如原来酒店客房灯光控制系统均采用TCL2.0系列产品,房间的电视、台灯、地灯、鱼缸照明、夜灯、廊灯、吧台灯等开关与床头灯调光开关均集中安装在床头柜处(如图1)。
由于开关较多且固定在床头柜侧面,客人想开灯时必须先看清开关下面的标记才能正确开灯,有时为开一盏灯竟把所有的开关都按了一遍,使用时极为不便。
现在大多数星级酒店都采用微动开关轻触式集中控制面板,安装在床头柜的正上方。
虽然较以前直观,但是开关多且固定仍不是十分方便。
本人采用8051系列单片机将原来固定的机械式开关改用遥控控制,这样一个遥控器就可以控制整个房间的灯光开启,电源控制箱可以放在床头柜内;遥控器在放置在床头柜上,可以任意移动,还可以在遥控面板中间加装一液晶时钟(如图2所示)。
美观且实用即大方便客人的使用。
图1
老式控制柜
图2
新式遥控发射器
一 硬件电路的设计
1、 遥控发射电路
如图3所示,为该系统遥控发射器电原理图,其中P1口作为键盘扫描端口,具有16个操作键,可分别控制单片机发出16种不同脉冲,执行16种操作。
第9脚为单片机的复位脚,采用RC上电复位电路;15脚作为红外线遥控码的输出口,用于输出38KHz载波编码。
脉冲经9013放大然后由红外发射管输出;18、19脚接12M晶振。
P1.4—P1.7需接上拉电阻。
图3
遥控发射电路图
2、 遥控接收电路
如图4所示,为该系统遥控接收电原理图,其中P1.0—P1.2口作为数码管的二进制数据输出,显示数字为“0—7”,“0”表示最暗,“7”表示最亮,采用带锁存功能的七段译码电路74HC4511集成块译码显示数值。
4511的LE端接8051的30脚(地址锁存允许控制);P0.0—P0.7以及P2.2—P2.7作为14个电器的电源控制输出,接口用继电器隔离输出。
P2.0口为调光脉冲输出,输出脉冲由三极管9012放大后经光电耦合器MOC3021驱动双向可控硅控制负载;P3.0口为交流50Hz同步检测输入。
系统对市电进行变压、整流、并经施密特触发器整形后得到100Hz的方波(周期10ms),作为发送调光脉冲的同步信号,系统采用10ms为一个“单位时间”的长度,灯的亮度越高,则可控硅导通时间的占空比越大;P3.1口为红外遥控码输入,采用集成红外线接收路SFH506-38,此集成元件体积小、抗干扰性好、灵敏度高、并且价格低廉。
它仅有三个脚,分别是电源正极、电源负极以及信号输出端,其工作电压为5V左右,它的主要功能包括放大、选频、解调几大部分,要求输入是已经被调制的信号,经过它的接收放大和解调会在输出端直接输出原始信号至P3.1脚。
这款红外线接收电路接收距离可以达8米左右,完全可以满足客房内的遥控距离(一般客房标准间都在30平米左右);P3.2脚为外部中断0输入脚,采用下降沿触发,当有信号时,第一位码的低电平启动中断程序,实时接收数据帧。
第9脚为单片机的复位脚,采用RC上电复位电路;18、19脚接12M晶振。
图4
遥控接收电路图
二系统的遥控功能实现方法
1、 遥控编码格式
该遥控器采用脉冲个数编码,不同的脉冲个数代表不同的码,最小为2个脉冲,最大为17个脉冲。
为了使接收可靠,第一位码宽为3ms,其余为1ms,遥控数据帧间隔大于10ms,如图5所示。
图5
遥控脉冲编码图
2、 遥控码的发射
当某个操作键按下时,单片机先读出该键值,然后根据键值设定的遥控脉冲个数,再调制成38KHz的方波由红外线发射管发射出去。
P3.5端口的输出调制波如图5所示。
3、 数据帧的接收处理
当红外线接收器输出脉冲帧数据时,第一位码的低电平将启动中断程序,实时接收数据帧。
在数据接收时,先对第一位(起始位)码的码宽进行验证。
若第一位低电平码的脉宽小于2ms,将作为错误码处理;否则认为是起始码,累加器A加1。
当间隔位的高电平大于3ms时,结束接收,然后根据累加器A中的脉冲个数,执行相应的输出操作。
图6为红外线接收器输出的一帧遥控码波形图。
图6
一帧遥控码波形图
三遥控发射及接收控制程序流程图
1、 遥控发射程序控制流程图
图7
遥控发射控制流程图
2、 遥控接收程序控制流程图
图8
遥控接收控制流程图
四主要程序分析
1、 键盘扫描程序
本电路采用4×4矩阵式键盘电路,共16个按健开关可发送16种编码指令。
首先将立即数#0F0H送至P1口,再读入P1口值与#0F0H相比较,相等则说明没有键按下,返回。
不相等则表示有键按下,再调用延时消抖程序,确认有键按下。
转至行扫描程序确认按键所在的行,并将R2赋行号初值,然后调用列扫描程序确认按键所在例号。
例号与行号初值相加即得按键号(送寄存器A)。
KEYWORK:
MOV P1,#0F0H ;置P1口输入状态
MOV A,P1 ;读入P1口值
MOV B,A ;P1口值暂存B中
CJNE A,#0F0H,KEYHIT ;不等于#0FFH,转KEYHIT(有键按下)
KEYOUT:
RET ;没有键按下返回;
KEYHIT:
LCALL DL10MS ;延时去抖动
MOV A,P1 ;再读入P1口值至A
CJNE A,B,KEYOUY ;A不等于B(是干扰),子程序返回
SETB P1.1 ;有键按下,找键号开始,查0行
SETB P1.2
SETB P1.3
MOV A,P1 ;读入P1口值
CJNE A,#0FEH,KEYVAL0 ;P1不等于#0FEH,按下键在第0行
SETB P1.0 ;不在第0行,开始查1行
CLR P1.1
MOV A,P1 ;读入P1口值
CJNE A,#0FDH,KEYVAL1 ;P1口不等于#0FDH,按下键在第1行
SETB P1.1 ;不在第1行,开始查2行
CLR P1.2
MOV A,P1 ;读入P1口值
CJNE A,#0FBH,KEYVAL2 ;P1口不等于#0FBH,按下键在第2行
SETB P1.2 ;不在第2行,开始查3行
CLR P1.3
MOV A,P1 ;读入P1口值
CJNE A,#0F7H,KEYVAL3 ;P1口不等于#0F7H,按下键在第3行
LJMP KEYOUT ;不在第3行,子程序返回
KEYVAL0:
MOV R2,#00H ;按下键在第0行,R2赋行号初值0
LJMP KEYVAL4 ;跳到KEYVAL4
KEYVAL1:
MOV R2,#04H ;按下键在第1行,R2赋行号初值4
LJMP KEYVAL4 ;跳到KEYVAL4
.
.
KEYVAL4:
MOV DPTR,#KEYVALTAB;翻译成连续数字
MOV B,A ;P1口值暂存B内
ANL B,#0F0H ;取高四位
MOV R0,#0 ;清R0
KEYVAL5:
MOV A,R0 ;查列号开始,R0数据放入A
SUBB A,#04H ;A中数减4
JNC KEYOUT ;借位C为0,查表出错,返回
MOV A,R0 ;查表次数小于4,继续查,
MOVC A,@A+DPTR ;查列号表
INC R0 ;R0加1
CJNE A,B,KEYVAL5 ;查得值和P1口值不等,转KEYVAL5再查
DEC R0 ;查得值和P1口值相等,R0减1
MOV A,R0 ;放入A(R0中数值即为列号值)
ADD A,R2 ;与行号初值相加成为键号值(0-15)
KEYVALTAB:
DB 0E0H,0D0H,0B0H,07H ;列号对应数据表
;对应列号:
0 1 2 3
2、 键号处理程序
根据寄器A中的键号,首先执行A×3程序,(因为以下所执行的长跳转指令“LJMP”为3字节指令)然后使用散转指令“JMPA,@A+DPTR”跳到相应的程序标号。
各键号相应的程序标号均为一条长跳转指令,各跳转指令均指向与之相应的红外线脉冲赋值程序,最后跳转至脉冲发送程序,发出与键号相对应的脉冲。
MOV B,A ;键号乘3处理用于JMP散转指令
RL A ;键号乘3处理用于JMP散转指令
ADD A,B ;键号乘3处理用于JMP散转指令
MOV DPTR,#KEYFUNTAB;取散转功能程序(表)首址
JMP @A+DPTR ;散转至对应功能程序标号
KEYFUNTAB:
LJMP KEYFUN00 ;跳到键号0对应功能程序标号
LJMP KEYFUN01 ;跳到键号1对应功能程序标号
.
.
.
LJMP KEYFUN15 ;跳到键号15对应功能程序标号
RET
KEYFUN00:
MOV A,#02H ;发2个脉冲
LJMP REMOTE ;转发送程序
RET
KEYFUN01:
MOV A,#03H ;发3个脉冲
LJMP REMOTE ;转发送程序
RET
.
.
.
KEYFUN15:
MOV A,#11H ;发17个脉冲
LJMP REMOTE ;转发送程序
RET
3、38KHz载波及编码脉冲发射程序
本系统所用的红外线接收集成电路SFH506-38的解调中心频率为38KHz,故发射频率也采用38KHz,通过定时器中断程序实现,每次溢出中断时对P3.5取反,输出38KHz载波。
计算得周期为26.3us,则定时器设定为模式2,初值为(256-13)=0F3H。
利用1ms与3ms延时程序控制定时器的启停,从而控制P3.5发出相应的脉冲。
并根据寄存器A中的脉冲个数确定发送次数。
MOV IE,#00H ;关所有中断
MOV TMOD,#20H ;8位自动重装初值模式
MOV TH1,#0F3H ;定时为13微秒初值
MOV TL1,#0F3H
SETB EA ;开总中断允许
INTT1:
CPL P3.5 ;38kHZ红外线遥控信号产生
RETI ;中断返回
REMOTE:
MOV R1,A ;装入发射脉冲个数
LJMP OUT3 ;转第一个码发射处理
OUT:
MOV R0,#64H ;1MS宽低电平发射控制数据
OUT1:
SETB ET1 ;开T1中断
SETB TR1 ;开启定时器T1
NOP ;延时
NOP
NOP
NOP
NOP
DJNZ R0,OUT1 ;时间不到转OUT1再循环
MOV R0,#3CH ;1MS高电平间隙控制数据
OUT2:
CLR TR1 ;关定时器T1
CLR ET1 ;关T1中断
CLR P3.5 ;关脉冲输出
NOP ;空操作延时
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
DJNZ R0,OUT2 ;时间不到转OUT2再循环
DJNZ R1,OUT ;脉冲未发完,转OUT再循环发射
LCALL DL500MS
RET
OUT3:
MOV R0,#0FFH ;装发谢3MS宽控制数据
LJMP OUT1 ;转OUT1
4、遥控接收及处理程序
采用中断接收,经过红外线接收集电路SFH506接收处理后的脉冲信号送至P3.1与P3.2(中断输入脚,采用低电平触发),当接收到第一个低电平时将启动中断程序,实时接收数据帧,接收程序首先采用8us循环计时程序对第一位码(起始码)的码宽进行验证,当计时大于8×255=2040us时则认为是起始码,开始对输入的脉冲进行计数与校验,将计数值送到累加A中。
脉冲高电位大于设定时间513×6=3072us时则结束接收,然后根据累加器中的脉冲个数,跳转至相应的操作子程序。
2——15个脉冲所对应程序分别控制每盏灯的开关,通过将相应输出端口取反方法,从而控制了灯的亮灭,系统上电时所有输出I/O口均为“1”(高电平)外接晶体管均无输出,当某个按键按下时,程序将相应端口取反,输出为“0”(低电平)外接晶体管放大后,驱动继电器继合亮灯。
再次按下该键时,程序再次将该相应端口取反,输出为“1”关灯,如此便控制了每一路灯的亮、灭。
16、17个脉冲为亮度调整信号,接收到该脉冲信号时,将P1口加“1”(调亮)或减“1”(调暗),然后再调亮度调整程序,亮度调整程序根据P1口的值确定灯的亮度。
INTEX0:
CLR EX0 ;关外中断
JNB P3.1,READ1 ;P3.1口为低电平转READ1
READOUTT0:
SETB EX0 ;P3.1口为高电平开中断(系干扰)
RETI ;退出中断
READ1:
CLR A ;清A
MOV DPH,A ;清DPTR
MOV DPL,A
HARD1:
JB P3.1,HARD11 ;P3.1变高电平转HARD11
INC DPTR ;用DPTR对低电平计数
NOP ;1微秒延时
NOP
NOP
AJMP HARD1 ;转HARD1循环(循环周期为8微秒)
HARD11:
MOV A,DPH ;DPTR高8位放入A
JZ READOUTT0;为0(脉宽小于8*255=2毫秒)退出
CLR A ;不为0,说明是第一个宽脉冲(3毫秒)
READ11:
INC A ;脉冲个数计1
READ12:
JNB P3.1,READ12 ;低电平时等待
MOV R1,#06H ;高电平宽度判断定时值
READ13:
JNB P3.1,READ11 ;变低电平时转READ11脉冲计数
LCALL DELAY ;延时(512微秒)
DJNZ R1,READ13 ;6次延时不到转READ13再延时
DEC A ;超过3毫秒判为结束,减1
DEC A ;减1
JZ FUN0 ;为0执行FUN0(2个脉冲)
DEC A ;减1
.
.
.
FUN0:
CPL P0.0 ;P0口各端口开关输出控制
LJMP READOUTT0 ;转中断退出
FUN1:
CPL P0.1
LJMP READOUTT0
.
.
.
FUN14:
INC P1
MOV A,P1
CJNE A,#00H,OUTT0 ;不等转OUTT0(显示值大于7)
MOV P1,#0FFH ;放回P1(显示值为7)
OUTT0:
LCALL LOOP ;亮度调整
LJMP READOUTT0 ;中断退出
FUN15:
DEC P1 ;P1口值减1
MOV A,P1 ;移入A
CJNE A,#0F7H,OUTT1 ;不等转OUTT1(显示值小于0)
MOV P1,#0F8H ;放回P1(显示值为0)
OUTT1:
LCALL LOOP ;亮度调整
LJMP READOUTT0 ;中断退出
.
.
.
5、 调光程序
系统调光电路采用双向可控硅,利用它的“过零自动关闭”特性,AT89C51只需在每个交流信号的1/2周期(10ms)内控制可控硅打开的时刻,由于交流电过零点时可控硅自动关断,即间接控制了灯光的亮度。
上电时,首先调用调光程序,根据P1口值设定延时值并放在寄存器B中。
再根据P3.0输入的交流同步信号,确定调光脉冲的发送时间,当交流信号过零时调用调光程序,调光程序根据寄存器B中的值确定延时次数(每次延时512us)从而确定调光脉冲的发送时间,延时到P2.0置“0”经过外接晶体管反向放大后经光电耦合器隔离驱动双向可控硅导通的时间,当交流信号再次过零时,双向可控硅自动关闭,再次调用调光程序。
这样便控制了双向可控硅的导通时间,从而达到调光的目的。
START:
LCALL CLEARIO ;上电初始化
LCALL LOOP ;调用调光控制程序
MAIN:
JB P3.0,MAIN ;50HZ交流电未过零转MAIN
LCALL DLX ;过零点时调用延时子程序(延时可变)
CLR P2.0 ;发调光脉冲
LCALL DELAY ;持续512微秒
SETB P2.0 ;关调光脉冲
LJMP MAIN ;转MAIN循环
DLX:
MOV R2,B ;置延时初值
DLX1:
LCALL DELAY ;调512微秒延时子程序
DJNZ R2,DLX1 ;循环控制
RET ;返回
LOOP:
MOV A,P1 ;读入P1口值
SUBB A,#0FFH ;比较
JZ LOOP7 ;值为#0FFH(显示7)时转LOOP7
MOV A,P1
SUBB A,#0FEH
JZ LOOP6 ;值为#0FEH(显示6)时转LOOP6
MOV A,P1
.
.
.
RET
LOOP7:
MOV B,#01H ;设置延时值#01H(最亮)
RET ;返回
LOOP6:
MOV B,#02H ;设置延时值#02H(次亮)
RET ;返回
LOOP5:
MOV B,#04H
.
.
.
RET
6、 延时子程序
采用循环结构实现513微秒、10微秒、500微秒延时功能。
DELAY:
MOV R2,#0FFH ;513微秒延时程序
DELAY1:
DJNZ R2,DELAY1
RET
DL10MS:
MOV R3,#14H ;10毫秒延时程序
DL10MS1:
LCALL DELAY
DJNZ R3,DL10MS1
RET
DL500MS:
MOV R4,#32H ;500毫秒延时程序
DL500MS1:
LCALL DL10MS
DJN
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 毕业设计 基于 单片机 遥控 控制 酒店客房 灯光 系统 设计
![提示](https://static.bingdoc.com/images/bang_tan.gif)