【正文】
清單:include0x00//數(shù)據(jù)無效defineREQUESTIRbuf1_length。buf2_length。//接收標志,1表示接受到一個數(shù)據(jù)幀,0表示沒有接受到數(shù)據(jù)幀或數(shù)據(jù)幀為空bit buf2_flag。 union{unsigned char a[2]。//// union{}temp。unsigned int b[2]。 void tf_0(void)。 void store_ir(void)。 bit receive_ack_iic(void)。interrupt 0{ie_0()。interrupt 2{ie_1()。EA=0。go to end。EXF2=0。//清除電平變化產(chǎn)生的中斷位//把捕捉的數(shù)保存起來TL0=0。if(F0)++。//將捕捉數(shù)臨時存放起來//把長電平脈沖時間記錄下來go to exit。EA=0。RI=0。if(sbuf1==HEAD){case 10:sbuf2=sbuf14。{//判斷是否接收到數(shù)據(jù)幀尾}state1=0。//接收。REN=0。//置接收標志為1,表示已經(jīng)接收到一個數(shù)據(jù)幀buf1_flag=1。//將接收狀態(tài)標志置為零,接收下一個數(shù)據(jù)幀0x0f))else{buf1=RECEIVE。//清除接收中斷標志位//把連續(xù)的短脈沖總時間記錄下來*ir=[0]。//是低電平脈沖,則進行處理F0=0。[1]=RCAP2L。if(!TH0)TH0=0。}void tf2(void) void send_ack_iic(void)。 void ir_init(void)。 void delay(void)。union{unsigned int b。//地址指針//}q。unsigned int data *p4。////}p。//發(fā)送數(shù)據(jù)緩沖unsigned int//接受數(shù)據(jù)緩沖unsigned intP1_7defineSDAHEAD0x0d//讀取鍵值define0x0c//保存數(shù)據(jù)define0x0b//讀取紅外defineFREENACK定時時間約為100msMOV TL1,0b0hsetb tr1 。k0jnb k0,$ acall sett1mov r1,k0h mov r2,k0lacall sett0jnb bz,$ d01: jb k0,d02acall ysJb k0,d02 。k4鍵輸出頻率1500Hz167k5h equ 0ffhk5l equ 075h 。我恨我無法用準確生動的語言來淋漓盡致地描述自己的真實感受,只好將它深深地埋在心底,化作一道虔誠的祝福:愿導師合家歡樂,一生平安。感謝導師,如果沒有導師的正確指導和建議,以我的個人水平是不可能這么順利完成的。當工作在時控和光控狀態(tài)下,并進行當時時間校正以后,內(nèi)部的時鐘開始走時,而且時間數(shù)據(jù)在一個數(shù)碼管上,按時分方法順序顯示當時時間的小時和分鐘,顯示一遍之后,停止1秒鐘,以便區(qū)分一個完整的時間顯示完畢。結(jié)合上面的軟件流程說明按鍵功能的意義:紅外遙控按鍵的功能分為三部分,直接操作部分—窗簾電機的正轉(zhuǎn)、反轉(zhuǎn)和停止操作。這樣做的目的是AT89C2051用于本電路中,其I/O口比較富裕,這樣的驅(qū)動顯示節(jié)省一個顯示驅(qū)動電路,同時顯示的數(shù)字和字符完全通過軟件編寫的,可以編寫更多的字符。當C3電壓下降到1/2VCC以下后,“0”,反之測得數(shù)據(jù)“1”。靜態(tài)時輸出端輸出高電平,當接收到紅外信號后,按紅外信號的數(shù)據(jù)波形輸出負脈沖數(shù)據(jù)信號。電源部分通過外接插座輸入交流12V或者直流1314V電壓,交流電經(jīng)過整流濾波后,輸出電壓為12V的VDD,為控制繼電器提供工作電壓。 電路原理圖因此可通過一監(jiān)測單元對當前系統(tǒng)的運行狀態(tài)、系統(tǒng)時間予以監(jiān)控,將控制過程分解為若干步或若干時間段,每執(zhí)行完一步或每運行一個時間段則對監(jiān)測單元置為關(guān)機允許值,不同的任務或任務的不同階段有不同的值,若系統(tǒng)正在進行測控任務或正在執(zhí)某時間段,則將監(jiān)測單元置為非正常關(guān)機值。 開機復位與看門狗故障復位的識別開機復位與看門狗故障復位因同屬硬件復位, 所以要想予以正確識別,一般要借助非易失性RAM或者EEROM。而軟件復位則對SP、SPW無影響。 限于篇幅不贅述。 筆者在實際應用中,采用環(huán)形中斷監(jiān)視系統(tǒng)。 如某應用系統(tǒng)雖未用到外部中斷1,外部中斷1的中斷服務程序可為如下形式: 1 軟件陷阱的設(shè)計當PC受干擾出現(xiàn)錯誤,程序便脫離正常軌道“亂飛”,當亂飛到某雙字節(jié)指令,若取指令時刻落在操作數(shù)上,誤將操作數(shù)當作操作碼,程序?qū)⒊鲥e。 74LS138是一個38譯碼器,它將單片機輸出的地址信號譯碼后動態(tài)驅(qū)動相應的LED。 ~:P1口的8個引腳。 現(xiàn)將各引腳分別說明如下: Vcc:接+5V電源正端。52子系列主要有8038052兩種機型。 4個8位并行I/O接口:P0、PPP3。 在51系列中,主要有8038058751三種機型,它們的指令系統(tǒng)與芯片引腳完全兼容,僅片內(nèi)ROM有所不同。,跟著引導碼是系統(tǒng)碼,系統(tǒng)反碼,按鍵碼,按鍵反碼,如果按著鍵不放,則遙控器則發(fā)送一段重復碼,重復碼由9ms的高電平,跟著是一個短脈沖。不難推想,具有N位輸入地址和M位數(shù)據(jù)輸出的EPROM可以獲得一組(最多為M個)任何形式的N變量組合邏輯函數(shù)。所謂“模擬”是指并沒有機械按鍵動作,但對于鍵盤矩陣電路而言卻產(chǎn)生一個低電平,效果和機械按鍵動作完全一樣。尤其是當儀器系統(tǒng)的軟件不是由自己開發(fā)而又要加裝遙控時更是無能為力。紅外接收頭靜態(tài)時輸出高電平。如果鍵按下超過108ms仍未松開,接下來發(fā)射的代碼(連發(fā)代碼)將僅由起始碼(9ms)和結(jié)束碼()組成。 波形圖上述“0”和“1”組成的32位二進制碼經(jīng)38kHz的載頻進行二次調(diào)制以提高發(fā)射效率,達到降低電源功耗的目的。當有按鍵按下時,控制軟件啟動定時器T0、T1, T0定時溢出,寫入定時器的初值不同,在輸出端口就可得到不同的發(fā)射頻率。為了達到一次能發(fā)送一組數(shù)據(jù)(如車次號,通常為三位十進制數(shù)),我們可以采用89C2051的軟件編碼/解碼的方法,先一次性輸入一組車號,按下發(fā)送鍵后,全部發(fā)送出;同時在接收時,用連續(xù)接收方法,一次性解碼所有數(shù)據(jù)[6]。脈沖發(fā)射器脈沖功放紅外發(fā)射紅外接收電壓放大限幅放大雙穩(wěn)觸發(fā)繼電器濾波或整形 紅外遙控的基本原理由于一般的遙控電路,其控制距離都不超過10米。利用單片機控制的紅外遙控電路,它是利用單片機的異步通訊口,用紅外發(fā)射口和紅外接收來實現(xiàn)發(fā)射和接收點信號功能。上述的歸納還不夠完整,但已知單片機的應用已滲透到國民經(jīng)濟的各個領(lǐng)域,極大地推動了計算機技術(shù)的普及,而且可以預見,隨著單片機性能的進一步提高,它的應用將更趨廣泛。從1974年開始,單片機就以它的體積小、質(zhì)量輕、耗電省、可靠性高、價格低等特點,開始不斷發(fā)展,并廣泛應用于儀器儀表、家電電器、醫(yī)用設(shè)備、航天航空、專用設(shè)備的智能化管理及過程控制等領(lǐng)域。但不是說就沒有他的研究價值,為了進一步滿足人們高水準生活的需要,家用電器產(chǎn)品性能也在不斷的更新挽代,從始初的晶體管、到電子管;由模擬到數(shù)字;由分立元件到集成電路;從普通向高性能、多功能型;由手動控制向紅外線遙控、向智能化發(fā)展。另外、電機拉動窗簾的工作的時間長度,電機工作的時候是否有鳴響提示,以及光控狀態(tài)下環(huán)境亮度的控制參數(shù)的調(diào)整等等都可以通過遙控器進行設(shè)置[16]。與此同時,窗簾作為裝修業(yè)不可缺少的一部分,也日益火爆起來,目前,常用的窗簾軌道都是鋼絲繩手拉式或滑輪式,只有一部分高收入的家庭采用是電動遙控軌道。 Imitated it to the figure。它是采用89C2051單片機的最小系統(tǒng)設(shè)計,控制一個220V的可逆、直流電動機控制窗簾的拉開和關(guān)閉。此次要設(shè)計的就是紅外遙控窗簾。關(guān)鍵詞: 遙控,紅外線,編碼 ,抗干擾,智能,串行口ABSTEACTWith the development of electronic technology and automatic technology, people have more and more high expectations for life quality. The home electric equipment products are in constant update too. From the transistor of the beginning of beginning, to the electron tube 。進入尋常百姓的家用電器品種與數(shù)量愈來愈多,這些家用電器有的能減輕人們的家務、有的能豐富人們的文娛生活,有的則能提高人們的生活質(zhì)量……為了進一步滿足人們高水準生活的需要,家用電器產(chǎn)品性能也在不斷的更新挽代,從始初的晶體管、到電子管;由模擬到數(shù)字;由分立元件到集成電路;從普通向高性能、多功能型;由手動控制向紅外線遙控、向智能化發(fā)展。三種工作方式可以方便地進行選擇,當選擇時間控制的方案時,數(shù)碼管還能顯示當時小時和分鐘時間,不過時間數(shù)據(jù)只能順序顯示,顯示一遍后,略等片刻再顯示下一遍時間。當今,遙控已經(jīng)很普遍。同時,單片機也有它突出的優(yōu)點。(4) 用于各種工業(yè)控制,如溫度控制、液面控制、生產(chǎn)線順序控制等[2]。借助于紅外線具有直線傳播的特性,利用專用的紅外傳感器具有靈敏度高,響應快和光譜范圍窄的性能,制成靈敏度高,抗干擾性能良好的紅外遙控裝置。最后將雙穩(wěn)態(tài)電路輸出的控制信號進行功率放大并驅(qū)動繼電器,達到控制開關(guān)的目的。紅外發(fā)送每次編碼的發(fā)送是一個鍵值,即一個十六進制的數(shù)據(jù)。T1作為發(fā)射時間控制器,T0作為紅外線發(fā)射頻率控制器。這種遙控碼具有以下特征:采用脈寬調(diào)制的串行碼,、“0”;、“1”。當一個鍵按下超過36ms,振蕩器使芯片激活,將發(fā)射一組108ms的編碼脈沖,這108ms發(fā)射代碼由一個起始碼(9ms),一個結(jié)果碼(),低8位地址碼(9ms~18ms),高8位地址碼(9ms~18ms),8位數(shù)據(jù)碼(9ms~18ms)和這8位數(shù)據(jù)的反碼(9ms~18ms)組成。電路原理: ,主要由紅外接收頭和IC4069組成的紅外控制開關(guān)電路。但這樣做要占用CPU一個外部中斷資源并需編寫額外的中斷服務程序,顯得比較煩瑣。我們設(shè)想,可否將遙控接收頭輸出的含有按鍵信息的8位遙控碼通過某種轉(zhuǎn)換,并入鍵盤矩陣電路,當遙控器有鍵按下時,就會在機上鍵盤對應鍵處產(chǎn)生一個“模擬”按鍵動作,產(chǎn)生一個鍵碼可供CPU讀取。而且,EPROM地址譯碼器的輸出包含了全部輸入變量的最小項,每一位數(shù)據(jù)輸出又都是這些最小項之和,因而任何形式的組合邏輯函數(shù)均能通過向EPROM中寫入相應的數(shù)據(jù)來實現(xiàn)。接下來CPU對這個“按鍵”動作的響應、處理就和本機鍵盤完全一樣了。4 單片機介紹 MCS51系列單片機是美國Intel公司在1980年推出的高性能8位單片微機,較原來的MCS48系列結(jié)構(gòu)更為先進,功能增強,它包括51和52兩個子系列。 21個字節(jié)專用寄存器。 用單一+5V電源。低功耗的、采用CHMOS工藝制造的機型(在型號中間家一“C”字作為識別,如80C380C587C51)也有用方型封裝結(jié)構(gòu)的。在接有片外存儲器或擴展I/O接口時,P0口分時復用為低8位地址總線和雙向數(shù)據(jù)總線。74LS164(詳細技術(shù)手冊)是一個8位串入并出的移位寄存器,其此處的功能是將C2051串行通信口輸出的串行數(shù)據(jù)譯碼并在其并口線上輸出,從而驅(qū)動LED數(shù)碼管。下面以MCS51單片機系統(tǒng)為例,對微機系統(tǒng)軟件抗干擾方法進行研究。 CPU取指令過程是先取操作碼,再取操作數(shù)。此外,對系統(tǒng)流向起重要作用的指令如RET、 RETI、LCALL、LJMP、JC等指令之前插入兩條NOP,也可將亂飛程序納入正軌,確保這些重要指令的執(zhí)行。 LJMP 0000H其機器碼為0000020000。當使用的中斷因干擾而開放時,在對應的中斷服務程序中設(shè)置軟件陷阱,能及時捕獲錯誤的中斷。而軟件看門狗可有效地解決這類問題。當然,對主程序最大循環(huán)周期、定時器T0和T1定時周期應予以全盤合理考慮[5]。此處硬件復位指開機復位與看門狗復位,硬件復位對寄存器有影響,如復位后PC=0000H, SP=07H,PSW=00H等。 在已執(zhí)行測控50分鐘的情況下,系統(tǒng)電壓異常引起復位,此時若系統(tǒng)復位后又從頭開始進行測控則會造成不必要的時間消耗。電路分為8個部分,分別是電源部