單片機遙控控制酒店客房燈光系統secret_第1頁
單片機遙控控制酒店客房燈光系統secret_第2頁
單片機遙控控制酒店客房燈光系統secret_第3頁
單片機遙控控制酒店客房燈光系統secret_第4頁
單片機遙控控制酒店客房燈光系統secret_第5頁
已閱讀5頁,還剩23頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、單片機遙控控制酒店客房燈光系統摘要:本文通過老式酒店客房燈光控制系統進行改造,將原機的機械開關控制改為單片機紅外線遙控控制,說明了單片機在現代酒店燈光智能控制中的適用性、靈活性、先進性。通過對客房燈光控制電路改造后,大大提高了客人的使用舒適感,使酒店的硬件設施提高了一個臺階。關鍵字:單片機 遙控 客房燈光前言:酒店原有的智能控制系統較周邊新開張酒店相比,已跟不上潮流,失去競爭能力。例如原來酒店客房燈光控制系統均采用TCL2.0系列產品,房間的電視、臺燈、地燈、魚缸照明、夜燈、廊燈、吧臺燈等開關與床頭燈調光開關均集中安裝在床頭柜處(如圖1)。由于開關較多且固定在床頭柜側面,客

2、人想開燈時必須先看清開關下面的標記才能正確開燈,有時為開一盞燈竟把所有的開關都按了一遍,使用時極為不便?,F在大多數星級酒店都采用微動開關輕觸式集中控制面板,安裝在床頭柜的正上方。雖然較以前直觀,但是開關多且固定仍不是十分方便。本人采用8051系列單片機將原來固定的機械式開關改用遙控控制,這樣一個遙控器就可以控制整個房間的燈光開啟,電源控制箱可以放在床頭柜內;遙控器在放置在床頭柜上,可以任意移動,還可以在遙控面板中間加裝一液晶時鐘(如圖2所示)。美觀且實用即大方便客人的使用。圖1老式控制柜圖2新式遙控發射器一  硬件電路的設計1、  遙控發射電路如圖3所示,為該系統遙控發射器

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腳(地

4、址鎖存允許控制);P0.0P0.7以及P2.2P2.7作為14個電器的電源控制輸出,接口用繼電器隔離輸出。P2.0口為調光脈沖輸出,輸出脈沖由三極管9012放大后經光電耦合器MOC3021驅動雙向可控硅控制負載;P3.0口為交流50Hz同步檢測輸入。系統對市電進行變壓、整流、并經施密特觸發器整形后得到100Hz的方波(周期10ms),作為發送調光脈沖的同步信號,系統采用10ms為一個“單位時間”的長度,燈的亮度越高,則可控硅導通時間的占空比越大;P3.1口為紅外遙控碼輸入,采用集成紅外線接收路SFH506-38,此集成元件體積小、抗干擾性好、靈敏度高、并且價格低廉。它僅有三個腳,分別是電源正極

5、、電源負極以及信號輸出端,其工作電壓為5V左右,它的主要功能包括放大、選頻、解調幾大部分,要求輸入是已經被調制的信號,經過它的接收放大和解調會在輸出端直接輸出原始信號至P3.1腳。這款紅外線接收電路接收距離可以達8米左右,完全可以滿足客房內的遙控距離(一般客房標準間都在30平米左右);P3.2腳為外部中斷0輸入腳,采用下降沿觸發,當有信號時,第一位碼的低電平啟動中斷程序,實時接收數據幀。第9腳為單片機的復位腳,采用RC上電復位電路;18、19腳接12M晶振。圖4遙控接收電路圖二 系統的遙控功能實現方法1、  遙控編碼格式該遙控器采用脈沖個數編碼,不同的脈沖個數代表不同的碼,最小為2個

6、脈沖,最大為17個脈沖。為了使接收可靠,第一位碼寬為3ms,其余為1ms,遙控數據幀間隔大于10ms,如圖5所示。圖5遙控脈沖編碼圖2、  遙控碼的發射當某個操作鍵按下時,單片機先讀出該鍵值,然后根據鍵值設定的遙控脈沖個數,再調制成38KHz的方波由紅外線發射管發射出去。P3.5端口的輸出調制波如圖5所示。3、  數據幀的接收處理當紅外線接收器輸出脈沖幀數據時,第一位碼的低電平將啟動中斷程序,實時接收數據幀。在數據接收時,先對第一位(起始位)碼的碼寬進行驗證。若第一位低電平碼的脈寬小于2ms,將作為錯誤碼處理;否則認為是起始碼,累加器A加1。當間隔位的高電平大于3ms時,結

7、束接收,然后根據累加器A中的脈沖個數,執行相應的輸出操作。圖6為紅外線接收器輸出的一幀遙控碼波形圖。圖6一幀遙控碼波形圖三 遙控發射及接收控制程序流程圖1、  遙控發射程序控制流程圖圖7遙控發射控制流程圖2、  遙控接收程序控制流程圖圖8遙控接收控制流程圖四 主要程序分析1、  鍵盤掃描程序本電路采用4×4矩陣式鍵盤電路,共16個按健開關可發送16種編碼指令。首先將立即數#0F0H送至P1口,再讀入P1口值與#0F0H相比較,相等則說明沒有鍵按下,返回。不相等則表示有鍵按下,再調用延時消抖程序,確認有鍵按下。轉至行掃描程序確認按鍵所在的行,并將R2賦行號

8、初值,然后調用列掃描程序確認按鍵所在例號。例號與行號初值相加即得按鍵號(送寄存器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&#

9、160;     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 

10、 ;不在第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

11、     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   ;跳到KEYVAL4KEYVAL1:  MOV   R2,#04H ;按下鍵在第

12、1行,R2賦行號初值4  LJMP    KEYVAL4  ;跳到KEYVAL4 . .KEYVAL4:  MOV   DPTR,#KEYVALTAB ;翻譯成連續數字  MOV   B,A ;P1口值暫存B內  ANL   B,#0F0H ;取高四位  MOV   R0,#0 ;清R0KEYVAL5:    MOV   A,R0  ;查列號開始,R0數據放入A  SUBB    A,#04H 

13、;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減1MOV 

14、0; A,R0  ;放入A(R0中數值即為列號值)ADD     A,R2  ;與行號初值相加成為鍵號值(0-15)KEYVALTAB:  DB  0E0H,0D0H,0B0H,07H ;列號對應數據表;對應列號:  0  1  2  32、  鍵號處理程序根據寄器A中的鍵號,首先執行A×3程序,(因為以下所執行的長跳轉指令“LJMP”為3字節指令)然后使用散轉指令“JMP A,A+DPTR”跳到相應的程序標號。各鍵號相應的程序標號均為一條長跳轉指令,各跳轉指令均指向與之相應

15、的紅外線脈沖賦值程序,最后跳轉至脈沖發送程序,發出與鍵號相對應的脈沖。MOV     B,A ;鍵號乘3處理用于JMP散轉指令  RL    A ;鍵號乘3處理用于JMP散轉指令      ADD     A,B ;鍵號乘3處理用于JMP散轉指令  MOV      DPTR,#KEYFUNTAB ;取散轉功能程序(表)首址  JMP   A+DPTR  ;散轉至對應功能程序標號KEYFUNTAB:  LJMP

16、60;   KEYFUN00  ;跳到鍵號0對應功能程序標號 LJMP   KEYFUN01  ;跳到鍵號1對應功能程序標號 .  . LJMP    KEYFUN15  ;跳到鍵號15對應功能程序標號 RETKEYFUN00:   MOV   A,#02H ;發2個脈沖  LJMP    REMOTE      ;轉發送程序  RETKEYFUN01:   MOV   A,#03H ;發3個脈沖 

17、; LJMP    REMOTE ;轉發送程序  RET    .  .  .KEYFUN15:   MOV   A,#11H ;發17個脈沖  LJMP    REMOTE ;轉發送程序 RET3、38KHz載波及編碼脈沖發射程序本系統所用的紅外線接收集成電路SFH506-38的解調中心頻率為38KHz,故發射頻率也采用38KHz,通過定時器中斷程序實現,每次溢出中斷時對P3.5取反,輸出38KHz載波。  計算得周期為26.3us,則定時器設定為模式2,初值為(

18、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紅外線遙控信號產生&#

19、160;     RETI    ;中斷返回REMOTE:   MOV   R1,A  ;裝入發射脈沖個數  LJMP    OUT3  ;轉第一個碼發射處理OUT: MOV   R0,#64H ;1MS寬低電平發射控制數據OUT1:  SETB    ET1 ;開T1中斷  SETB    TR1 ;開啟定時器T1  NOP   ;延時  NOP  NOP  NOP

20、  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

21、0; NOP  NOP  DJNZ    R0,OUT2     ;時間不到轉OUT2再循環  DJNZ    R1,OUT        ;脈沖未發完,轉OUT再循環發射  LCALL   DL500MS        RET     OUT3:  MOV   R0,#0FFH  ;裝發謝3MS寬控制數據  LJMP    O

22、UT1    ;轉OUT14、遙控接收及處理程序采用中斷接收,經過紅外線接收集電路SFH506接收處理后的脈沖信號送至P3.1與P3.2(中斷輸入腳,采用低電平觸發),當接收到第一個低電平時將啟動中斷程序,實時接收數據幀,接收程序首先采用8us循環計時程序對第一位碼(起始碼)的碼寬進行驗證,當計時大于8×2552040us時則認為是起始碼,開始對輸入的脈沖進行計數與校驗,將計數值送到累加A中。脈沖高電位大于設定時間513×6=3072us時則結束接收,然后根據累加器中的脈沖個數,跳轉至相應的操作子程序。215個脈沖所對應程序分別控制每盞燈的開關,通過將相

23、應輸出端口取反方法,從而控制了燈的亮滅,系統上電時所有輸出I/O口均為“1”(高電平)外接晶體管均無輸出,當某個按鍵按下時,程序將相應端口取反,輸出為“0”(低電平)外接晶體管放大后,驅動繼電器繼合亮燈。再次按下該鍵時,程序再次將該相應端口取反,輸出為“1”關燈,如此便控制了每一路燈的亮、滅。16、17個脈沖為亮度調整信號,接收到該脈沖信號時,將P1口加“1”(調亮)或減“1”(調暗),然后再調亮度調整程序,亮度調整程序根據P1口的值確定燈的亮度。INTEX0:  CLR   EX0 ;關外中斷  JNB   P3.1,READ1  ;P3.1

24、口為低電平轉READ1READOUTT0: 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微秒延時

25、60; 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  ;脈沖個數計1READ12:  JNB   P3.1,READ12  ;低電平時

26、等待  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執行

27、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(

28、顯示值大于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 &

29、#160; P1,#0F8H ;放回P1(顯示值為0)OUTT1: LCALL   LOOP ;亮度調整  LJMP    READOUTT0     ;中斷退出.5、  調光程序系統調光電路采用雙向可控硅,利用它的“過零自動關閉”特性,AT89C51只需在每個交流信號的1/2周期(10ms)內控制可控硅打開的時刻,由于交流電過零點時可控硅自動關斷,即間接控制了燈光的亮度。上電時,首先調用調光程序,根據P1口值設定延時值并放在寄存器B中。再根據P3.0輸入的交流同步信號,確定調光脈沖的發送時間,當交流信號過零時調用調光程序,

30、調光程序根據寄存器B中的值確定延時次數(每次延時512us)從而確定調光脈沖的發送時間,延時到P2.0置“0”經過外接晶體管反向放大后經光電耦合器隔離驅動雙向可控硅導通的時間,當交流信號再次過零時,雙向可控硅自動關閉,再次調用調光程序。這樣便控制了雙向可控硅的導通時間,從而達到調光的目的。START: LCALL   CLEARIO   ;上電初始化  LCALL   LOOP ;調用調光控制程序MAIN:  JB    P3.0,MAIN ;50HZ交流電未過零轉MAIN  LCALL  DLX ;過零

31、點時調用延時子程序(延時可變)  CLR   P2.0    ;發調光脈沖  LCALL   DELAY   ;持續512微秒  SETB    P2.0    ;關調光脈沖  LJMP  MAIN ;轉MAIN循環DLX: MOV   R2,B      ;置延時初值DLX1:  LCALL   DELAY   ;調512微秒延時子程序  DJNZ   

32、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)時轉LOOP6MOV

33、  A,P1  . .RETLOOP7: MOV   B,#01H  ;設置延時值#01H(最亮)  RET    ;返回LOOP6: MOV   B,#02H  ;設置延時值#02H(次亮)  RET    ;返回LOOP5: MOV   B,#04H  .  RET6、  延時子程序采用循環結構實現513微秒、10微秒、500微秒延時功能。DELAY: MOV R2,#0FFH ;513微秒延時程序DELAY1:  DJN

34、Z  R2,DELAY1    RETDL10MS:  MOV R3,#14H   ;10毫秒延時程序DL10MS1: LCALL DELAY DJNZ  R3,DL10MS1    RETDL500MS: MOV R4,#32H     ;500毫秒延時程序DL500MS1:  LCALL DL10MS DJNZ  R4,DL500MS1RET五、系統調試上電,測試發送板單片機各IO口電平,P3.5、P1.0、P1.1、P1.2、P1.3均為低電平,其余均為高電平,表明單片

35、機上電復位正常,且程序運行正常。然后用萬用表毫伏檔測量紅外線發射管兩端,同時按各輸入鍵,表針應有左右擺動現像,則表明鍵掃描程序與紅外線發射程序運行正常,且在發射紅外線脈沖。接收電路上電時,數碼管顯示“7”各繼電器及可控硅均無輸出。遙控信號輸入腳P3.1應高電平。則表明單片機上電復位正常,外圍電路接線正確。然后將發射板紅外線發射管對準接收電路,按壓輸入鍵,同時用萬用表測量P3.1腳,應有輕微擺動。紅外脈沖接收正常。且相應輸出繼電器應動作,或調光電路應正確動。如無動作或萬用有針無擺動,可以稍為改動發射脈沖頻率,將定時器初值改為(0FFH-12)=0F4H對應發射頻率為41.7KHz或(0FFH-1

36、3)=0F3H對應發射頻率為38.5KHz,因為紅外線發射與接收電路的中心頻率相差1KHz時大都能正常遙控,相差2KHz以上會出現遙控失靈現象。大多晶振或接收電路都有一定的頻率偏差,我們可以調整定時器的初值來稍為改動發射頻率或換用12M晶振,直到能夠接收為止。調光程序調試,按調光鍵,調至顯示“0”,此時燈為最暗,應熄滅。否則可以改變調光程序中寄存器B中的值,加長或減少延時時間,使燈能在最低亮度時能正常熄滅,最高亮度時能達最大亮度。按本程序中的值,實測數據如下。延時子程序為512us,電源交流電壓227V燈光亮度顯示負載電壓(60W)燈光亮度顯示負載電壓(60W)02V4102V120V5135

37、V247V6168V373V7216V六、結束語通過此次改造,利用單片機遙控控制房間燈光取得了良好的效果,使酒店的硬件服務水平提高了一個臺階。同時也應總結經驗,逐步完善客房燈光智能控制,例如可以增加房間燈具的自動巡檢與電腦聯網功能,燈具故障即可自動發出報修信號,服務人員可以通過主服務器方便的了解各個房間電氣設備工作情況,即提高了工作效率又方便管理。也體會到我的知識面還是很狹窄,作為從事電氣工作的技術人員,在學好本專業的基礎前提下,還要不斷的學習其他領域的科學技術知識,拓寬自己的知識面,才能勝任新設備、新技術的工作,更好發揮本專業的作用。本人因水平、經驗有限,文中難免有錯漏以及不足之處,懇請專家

38、、教授及同行批評指正。七、附錄1、  遙控發射電路原理圖附圖一遙控發射電路原理圖2、遙控接收電路原理圖附圖二遙控接收電路原理圖3、遙控發送控制器程序    ORG 0000H     ;程序執行開始地址      AJMP    START    ;跳至START執行       ORG   001BH    ;定時器T1中斷入口地址      LJMP  INTT1 

39、0; ;跳至INTT1中斷服務程序  CLEARIO:    MOV   P0,#0FFH    ;P0-P3口置1 MOV   P1,#0FFH    MOV   P2,#0FFH    MOV   P3,#0FFH    CLR  P3.5   ;關遙控輸出CLEARMEM:  MOV   SP,#70H     ;設堆?;窞?0H  MOV   IE,#00H

40、  ;關所有中斷  MOV   TMOD,#20H   ;8位自動重裝初值模式  MOV   TH1,#0F3H ;定時為13微秒初值  MOV   TL1,#0F3H   SETB  EA  ;開總中斷允許  RET   ;返回START:    LCALL   CLEARIO   ;調用初始化子程序;MAIN:   LCALL   KEYWORK   ;主體程序。調用查鍵子程序  L

41、JMP  MAIN  ;轉MAIN循環  NOP       ;PC值出錯處理  NOP  NOP  LJMP    START ;重新初始化INTT1:    CPL   P3.5    ;40kHZ紅外線遙控信號產生      RETI    ;中斷返回KEYWORK: MOV   P1,#0F0H    ;置P1口輸入狀態 MOV  A,P1

42、     讀入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(是干擾),子程序返回   

43、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行

44、60; 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

45、KEYOUT    ;不在第3行,子程序返回KEYVAL0:    MOV   R2,#00H ;按下鍵在第0行,R2賦行號初值0  LJMP    KEYVAL4   ;跳到KEYVAL4KEYVAL1:  MOV   R2,#04H ;按下鍵在第1行,R2賦行號初值4  LJMP    KEYVAL4  ;跳到KEYVAL4KEYVAL2:  MOV   R2,#08H ;按下鍵在第2行,R2賦行號初值8  LJ

46、MP    KEYVAL4   ;跳到KEYVAL4KEYVAL3:    MOV   R2,#0CH    按下鍵在第3行,R2賦行號初值12  LJMP     KEYVAL4   ;跳到KEYVAL4KEYVAL4:  MOV   DPTR,#KEYVALTAB ;翻譯成連續數字  MOV   B,A ;P1口值暫存B內  ANL   B,#0F0H ;取高四位  MOV   R0,#0 ;

47、清R0KEYVAL5:    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  CJN

48、E  A,B,KEYVAL5   ;查得值和P1口值不等,轉KEYVAL5再查  DEC   R0  ;查得值和P1口值相等,R0減1  MOV   A,R0  ;放入A(R0中數值即為列號值)      ADD     A,R2  ;與行號初值相加成為鍵號值(0-15)      MOV     B,A ;鍵號乘3處理用于JMP散轉指令  RL    A ;鍵號乘3處理用于J

49、MP散轉指令      ADD     A,B ;鍵號乘3處理用于JMP散轉指令  MOV      DPTR,#KEYFUNTAB ;取散轉功能程序(表)首址  JMP   A+DPTR  ;散轉至對應功能程序標號KEYFUNTAB:  LJMP    KEYFUN00    ;跳到鍵號0對應功能程序標號  LJMP   KEYFUN01  ;跳到鍵號1對應功能程序標號  LJMP &

50、#160; KEYFUN02  ;跳到鍵號2對應功能程序標號  LJMP   KEYFUN03  ;跳到鍵號3對應功能程序標號  LJMP    KEYFUN04  ;跳到鍵號4對應功能程序標號  LJMP    KEYFUN05  ;跳到鍵號5對應功能程序標號  LJMP    KEYFUN06  ;跳到鍵號6對應功能程序標號  LJMP    KEYFUN07  ;跳到鍵號7對應功能程序標號&

51、#160; LJMP    KEYFUN08  ;跳到鍵號8對應功能程序標號  LJMP    KEYFUN09  ;跳到鍵號9對應功能程序標號  LJMP    KEYFUN10  ;跳到鍵號10對應功能程序標號  LJMP    KEYFUN11  ;跳到鍵號11對應功能程序標號LJMP    KEYFUN12  ;跳到鍵號12對應功能程序標號  LJMP    KEYFUN13 &

52、#160;跳到鍵號13對應功能程序標號  LJMP    KEYFUN14  ;跳到鍵號14對應功能程序標號  LJMP    KEYFUN15  ;跳到鍵號15對應功能程序標號  RETKEYVALTAB:  DB  0E0H,0D0H,0B0H,07H ;列號對應數據表;對應列號:   0  1  2  3  RETKEYFUN00:   MOV   A,#02H ;發2個脈沖  LJMP&#

53、160;   REMOTE      ;轉發送程序  RETKEYFUN01:   MOV   A,#03H      ;發3個脈沖  LJMP    REMOTE      ;轉發送程序  RETKEYFUN02:   MOV   A,#04H      ;發4個脈沖  LJMP    REMOTE      ;轉發

54、送程序  RETKEYFUN03:   MOV   A,#05H      ;發5個脈沖  LJMP    REMOTE      ;轉發送程序  RETKEYFUN04:   MOV   A,#06H      ;發6個脈沖  LJMP    REMOTE      ;轉發送程序  RETKEYFUN05:   MOV   A

55、,#07H      ;發7個脈沖  LJMP    REMOTE      ;轉發送程序  RETKEYFUN06:   MOV   A,#08H      ;發8個脈沖  LJMP    REMOTE      ;轉發送程序  RETKEYFUN07:   MOV   A,#09H      ;發9個脈沖  LJM

56、P    REMOTE    ;轉發送程序  RETKEYFUN08:   MOV   A,#0AH      ;發10個脈沖  LJMP    REMOTE      ;轉發送程序  RETKEYFUN09:   MOV   A,#0BH      ;發11個脈沖  LJMP    REMOTE      ;轉發送程

57、序  RETKEYFUN10:   MOV   A,#0CH      ;發12個脈沖  LJMP    REMOTE      ;轉發送程序  RETKEYFUN11:   MOV   A,#0DH      ;發13個脈沖  LJMP    REMOTE      ;轉發送程序  RETKEYFUN12:   MOV   A

58、,#0EH      ;發14個脈沖  LJMP    REMOTE      ;轉發送程序  RETKEYFUN13:   MOV   A,#0FH      ;發15個脈沖  LJMP    REMOTE      ;轉發送程序  RETKEYFUN14:   MOV   A,#10H      ;發16個脈沖 

59、LJMP    REMOTE      ;轉發送程序  RETKEYFUN15:   MOV   A,#11H      ;發17個脈沖  LJMP    REMOTE      ;轉發送程序  RETREMOTE:   MOV  R1,A  ;裝入發射脈沖個數  LJMP    OUT3  ;轉第一個碼發射處理OUT: MOV   R0

60、,#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 ;

61、關T1中斷  CLR   P3.5      ;關脈沖輸出  NOP   ;空操作延時  NOP  NOP  NOP  NOP  NOP  NOP  NOP  NOP  NOP  NOP  DJNZ    R0,OUT2     ;時間不到轉OUT2再循環  DJNZ    R1,OUT        ;脈沖

62、未發完,轉OUT再循環發射  LCALL   DL500MS         RET     OUT3:  MOV   R0,#0FFH  ;裝發謝3MS寬控制數據  LJMP    OUT1    ;轉OUT1DELAY: MOV   R2,#0FFH ;513微秒延時程序DELAY1:  DJNZ    R2,DELAY1  RETDL10MS:  MOV   R3,#14H   ;10毫秒延時程序DL10MS1: LCALL   DELAY  DJNZ    R3,DL10MS1  RETDL500MS: MOV   R4,#32H     ;500毫秒延時程序DL500MS1:  LCALL   DL10MS  DJNZ    R4,DL50

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論