国产未成女一区二区三区,成人区人妻精品一熟女,亚洲精品乱码久久久久久中文字幕 ,成人欧美一区二区三区在线观看

資料

單片機遙控的酒店客房燈光控制系統(圖)

上傳人:admin

上傳時間: 2008-09-09

瀏覽次數: 2838

  前言:本人工作的酒店開業于一九九八年,至今已有七年之久,當初選型設備老化過時,特別對于科技飛速發展的當今。酒店原有的智能控制系統較周邊新開張酒店相比,已跟不上潮流,失去競爭能力。例如原來酒店客房燈光控制系統均采用TCL2.0系列產品,房間的電視、臺燈、地燈、魚缸照明、夜燈、廊燈、吧臺燈等開關與床頭燈調光開關均集中安裝在床頭柜處(如圖1)。由于開關較多且固定在床頭柜側面,客人想開燈時必須先看清開關下面的標記才能正確開燈,有時為開一盞燈竟把所有的開關都按了一遍,使用時極為不便。現在大多數星級酒店都采用微動開關輕觸式集中控制面板,安裝在床頭柜的正上方。雖然較以前直觀,但是開關多且固定仍不是十分方便。本人采用8051系列單片機將原來固定的機械式開關改用遙控控制,這樣一個遙控器就可以控制整個房間的燈光開啟,電源控制箱可以放在床頭柜內;遙控器在放置在床頭柜上,可以任意移動,還可以在遙控面板中間加裝一液晶時鐘(如圖2所示)。美觀且實用即大方便客人的使用。

圖1 老式控制柜

圖2 新式遙控發射器

  一 硬件電路的設計

  1、 遙控發射電路

  如圖3所示,為該系統遙控發射器電原理圖,其中P1口作為鍵盤掃描端口,具有16個操作鍵,可分別控制單片機發出16種不同脈沖,執行16種操作。第9腳為單片機的復位腳,采用RC上電復位電路;15腳作為紅外線遙控碼的輸出口,用于輸出38KHz載波編碼。脈沖經9013放大然后由紅外發射管輸出;18、19腳接12M晶振。P1.4P1.7需接上拉電阻。

圖3 遙控發射電路圖

  2、 遙控接收電路

  如圖4所示,為該系統遙控接收電原理圖,其中P1.0P1.2口作為數碼管的二進制數據輸出,顯示數字為07,0表示最暗,7表示最亮,采用帶鎖存功能的七段譯碼電路74HC4511集成塊譯碼顯示數值。4511的LE端接8051的30腳(地址鎖存允許控制);P0.0P0.7以及P2.2P2.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、 鍵盤掃描程序

  本電路采用44矩陣式鍵盤電路,共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

| 收藏本文
最新評論

用戶名: 密碼:

主站蜘蛛池模板: 鸡西市| 乐平市| 漳平市| 额尔古纳市| 万山特区| 宿迁市| 安乡县| 景东| 淅川县| 武鸣县| 天全县| 都匀市| 呼玛县| 赣州市| 民县| 安丘市| 普兰县| 措勤县| 阳新县| 原阳县| 昌邑市| 苏尼特左旗| 堆龙德庆县| 广南县| 鹤山市| 诏安县| 苏尼特右旗| 延川县| 仙游县| 宝坻区| 黔江区| 永春县| 夏河县| 邢台县| 从江县| 嘉定区| 荃湾区| 阳新县| 文成县| 洛隆县| 上犹县|