期刊VIP學術指導 符合學術規范和道德
保障品質 保證專業,沒有后顧之憂
摘要:本文通過老式酒店客房燈光控制系統進行改造,將原機的機械開關控制改為單片機紅外線遙控控制,說明了單片機在現代酒店燈光智能控制中的適用性、靈活性、先進性。通過對客房燈光控制電路改造后,大大提高了客人的使用舒適感,使酒店的硬件設施提高了一個臺階。
關鍵詞:單片機 遙控 客房燈光
前言:本人工作的酒店開業于一九九八年,至今已有七年之久,當初選型設備老化過時,特別對于科技飛速發展的當今。酒店原有的智能控制系統較周邊新開張酒店相比,已跟不上潮流,失去競爭能力。例如原來酒店客房燈光控制系統均采用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字節指令)然后使用散轉指令“JMP A,@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口的值確定燈的亮度。
5、 調光程序
系統調光電路采用雙向可控硅,利用它的“過零自動關閉”特性,AT89C51只需在每個交流信號的1/2周期(10ms)內控制可控硅打開的時刻,由于交流電過零點時可控硅自動關斷,即間接控制了燈光的亮度。上電時,首先調用調光程序,根據P1口值設定延時值并放在寄存器B中。再根據P3.0輸入的交流同步信號,確定調光脈沖的發送時間,當交流信號過零時調用調光程序,調光程序根據寄存器B中的值確定延時次數(每次延時512us)從而確定調光脈沖的發送時間,延時到P2.0置“0”經過外接晶體管反向放大后經光電耦合器隔離驅動雙向可控硅導通的時間,當交流信號再次過零時,雙向可控硅自動關閉,再次調用調光程序。這樣便控制了雙向可控硅的導通時間,從而達到調光的目的。
6、 延時子程序
五、系統調試
上電,測試發送板單片機各IO口電平,P3.5、P1.0、P1.1、P1.2、P1.3均為低電平,其余均為高電平,表明單片機上電復位正常,且程序運行正常。然后用萬用表毫伏檔測量紅外線發射管兩端,同時按各輸入鍵,表針應有左右擺動現像,則表明鍵掃描程序與紅外線發射程序運行正常,且在發射紅外線脈沖。
接收電路上電時,數碼管顯示“7”各繼電器及可控硅均無輸出。遙控信號輸入腳P3.1應高電平。則表明單片機上電復位正常,外圍電路接線正確。然后將發射板紅外線發射管對準接收電路,按壓輸入鍵,同時用萬用表測量P3.1腳,應有輕微擺動。紅外脈沖接收正常。且相應輸出繼電器應動作,或調光電路應正確動。如無動作或萬用有針無擺動,可以稍為改動發射脈沖頻率,將定時器初值改為(0FFH-12)=0F4H對應發射頻率為41.7KHz或(0FFH-13)=0F3H對應發射頻率為38.5KHz,因為紅外線發射與接收電路的中心頻率相差1KHz時大都能正常遙控,相差2KHz以上會出現遙控失靈現象。大多晶振或接收電路都有一定的頻率偏差,我們可以調整定時器的初值來稍為改動發射頻率或換用12M晶振,直到能夠接收為止。調光程序調試,按調光鍵,調至顯示“0”,此時燈為最暗,應熄滅。否則可以改變調光程序中寄存器B中的值,加長或減少延時時間,使燈能在最低亮度時能正常熄滅,最高亮度時能達最大亮度。按本程序中的值,實測數據如下。
六、結束語
通過此次改造,利用單片機遙控控制房間燈光取得了良好的效果,使酒店的硬件服務水平提高了一個臺階。同時也應總結經驗,逐步完善客房燈光智能控制,例如可以增加房間燈具的自動巡檢與電腦聯網功能,燈具故障即可自動發出報修信號,服務人員可以通過主服務器方便的了解各個房間電氣設備工作情況,即提高了工作效率又方便管理。也體會到我的知識面還是很狹窄,作為從事電氣工作的技術人員,在學好本專業的基礎前提下,還要不斷的學習其他領域的科學技術知識,拓寬自己的知識面,才能勝任新設備、新技術的工作,更好發揮本專業的作用。
本人因水平、經驗有限,文中難免有錯漏以及不足之處,懇請專家、教授及同行批評指正。
七、參考文獻
房小翠 主編:《單片微型計算與機電接口技術》國防工業出版社
陳永甫 主編:《紅外線探測與控制電路》人民郵電出版社
陳 科、陳清山 主編:《最新世界晶體三極管詳盡參數及互換手冊》湖南科學技術出版社
科 林、孫人杰 主編:《TTL、高速CMOS手冊》電子工業出版社