freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于單片機(jī)的紅外遙控窗簾設(shè)計(jì)論文(含c語(yǔ)言源程序)(文件)

 

【正文】 128種不同組合的編碼。如果鍵按下超過(guò)108ms仍未松開(kāi),接下來(lái)發(fā)射的代碼(連發(fā)代碼)將僅由起始碼(9ms)和結(jié)束碼()組成。開(kāi)始延時(shí),若讀到的電平為低,說(shuō)明該位為“0”,反之則為“1”,為了可靠起見(jiàn),,否則如果該位為“0”,讀到的已是下一位的高電平,因此?。?)/2=。紅外接收頭靜態(tài)時(shí)輸出高電平。但它還不便于CPU讀取識(shí)別,因此需要先對(duì)這些串行二進(jìn)制碼進(jìn)行解碼。尤其是當(dāng)儀器系統(tǒng)的軟件不是由自己開(kāi)發(fā)而又要加裝遙控時(shí)更是無(wú)能為力。 考察一下智能儀器的鍵盤掃描輸入原理。所謂“模擬”是指并沒(méi)有機(jī)械按鍵動(dòng)作,但對(duì)于鍵盤矩陣電路而言卻產(chǎn)生一個(gè)低電平,效果和機(jī)械按鍵動(dòng)作完全一樣。若用普通邏輯門電路來(lái)實(shí)現(xiàn)這樣的功能將是十分麻煩的,用PLD(可編程邏輯器件)來(lái)做就要簡(jiǎn)單得多。不難推想,具有N位輸入地址和M位數(shù)據(jù)輸出的EPROM可以獲得一組(最多為M個(gè))任何形式的N變量組合邏輯函數(shù)。由解碼電路圖3可見(jiàn),EPROM2732的地址線A0A7接至8位輸出鎖存移位寄存器74HCS9S的輸出(即8位遙控碼),A8~A11接至鍵盤矩陣的行掃描線R0~R3;2732的8根數(shù)據(jù)線使用了其中的S根D0~D4,接至鍵盤矩陣的列掃描線C0~C4,2732的(片選端)接地,(讀信號(hào))接至施密特與非門4093的3腳輸出,此輸出為雙單穩(wěn)74HC123的1Q、與非的結(jié)果。,跟著引導(dǎo)碼是系統(tǒng)碼,系統(tǒng)反碼,按鍵碼,按鍵反碼,如果按著鍵不放,則遙控器則發(fā)送一段重復(fù)碼,重復(fù)碼由9ms的高電平,跟著是一個(gè)短脈沖。同時(shí)需要防止將用戶的一次按鍵解釋為多次按鍵,需要有去抖功能。 在51系列中,主要有8038058751三種機(jī)型,它們的指令系統(tǒng)與芯片引腳完全兼容,僅片內(nèi)ROM有所不同。 4K字節(jié)的片內(nèi)程序存儲(chǔ)器(8031無(wú))。 4個(gè)8位并行I/O接口:P0、PPP3。 111條指令,含乘法指令和除法指令。52子系列主要有8038052兩種機(jī)型。 MCS51系列單片機(jī)芯片有40個(gè)引。 現(xiàn)將各引腳分別說(shuō)明如下: Vcc:接+5V電源正端。外接晶體時(shí),XTAL1與XTAL2各接警惕的一端,借外接晶體與片內(nèi)反相放大器構(gòu)成振蕩器。 ~:P1口的8個(gè)引腳。 ~:P3口的8個(gè)引腳,除了作為準(zhǔn)雙向I/O接口使用外,還具有第二功能,具體如下: :RXD (串行輸入口) :TXD (串行輸出口) :INT0 (外部中斷0請(qǐng)求輸入端) :INT1 (外部中斷1請(qǐng)求輸入端) :T0 (定時(shí)器/計(jì)數(shù)器0計(jì)數(shù)脈沖輸入端) :T1 (定時(shí)器/計(jì)數(shù)器1計(jì)數(shù)脈沖輸入端) :WR (片外數(shù)據(jù)存儲(chǔ)器寫選通信號(hào)輸出端) :RD (片外數(shù)據(jù)存儲(chǔ)器讀選通信號(hào)輸出端)MCS51系列單片機(jī)外部引腳圖80C51的串行通信口是一個(gè)功能強(qiáng)大的通信口,而且是相當(dāng)好用的通信口,用于顯示驅(qū)動(dòng)電路再合適不過(guò)了,下面我們就根據(jù)這種需要設(shè)計(jì)一個(gè)用兩個(gè)串行通信口線加上兩根普通I/O口,設(shè)計(jì)一個(gè)4位LED顯示電路。74LS138是一個(gè)38譯碼器,它將單片機(jī)輸出的地址信號(hào)譯碼后動(dòng)態(tài)驅(qū)動(dòng)相應(yīng)的LED。程序清單 本文針對(duì)后者提出了幾種有效的軟件抗干擾方法。當(dāng)PC受干擾出現(xiàn)錯(cuò)誤,程序便脫離正常軌道“亂飛”,當(dāng)亂飛到某雙字節(jié)指令,若取指令時(shí)刻落在操作數(shù)上,誤將操作數(shù)當(dāng)作操作碼,程序?qū)⒊鲥e(cuò)。 在關(guān)鍵地方人為插入一些單字節(jié)指令,或?qū)⒂行巫止?jié)指令重寫稱為指令冗余。 所謂攔截,是指將亂飛的程序引向指定位置,再進(jìn)行出錯(cuò)處理。 1 軟件陷阱的設(shè)計(jì)軟件陷阱是指用來(lái)將捕獲的亂飛程序引向復(fù)位入口地址0000H的指令。 通常在程序中未使用的EPROM空間填0000020000。如某應(yīng)用系統(tǒng)雖未用到外部中斷1,外部中斷1的中斷服務(wù)程序可為如下形式: NOP如果故障診斷程序與系統(tǒng)自恢復(fù)程序的設(shè)計(jì)可靠、 完善,用“LJMP 0000H”作返回指令可直接進(jìn)入故障診斷程序,盡早地處理故障并恢復(fù)程序的運(yùn)行。 “看門狗”技術(shù)可由硬件實(shí)現(xiàn),也可由軟件實(shí)現(xiàn)。 筆者在實(shí)際應(yīng)用中,采用環(huán)形中斷監(jiān)視系統(tǒng)。這種軟件“看門狗”監(jiān)視原理是:在主程序、T0中斷服務(wù)程序、T1中斷服務(wù)程序中各設(shè)一運(yùn)行觀測(cè)變量,假設(shè)為MWatch、T0Watch 、T1Watch,主程序每循環(huán)一次,MWatch加1,同樣T0、T1中斷服務(wù)程序執(zhí)行一次,T0Watch、 T1Watch加1。限于篇幅不贅述。 系統(tǒng)故障處理、自恢復(fù)程序的設(shè)計(jì) 而軟件復(fù)位則對(duì)SP、SPW無(wú)影響。設(shè) 40H用來(lái)做上電標(biāo)志,上電標(biāo)志字為78H,若系統(tǒng)復(fù)位后40H單元內(nèi)容不等于78H,則認(rèn)為是硬件復(fù)位,否則認(rèn)為是軟件復(fù)位,轉(zhuǎn)向出錯(cuò)處理。 開(kāi)機(jī)復(fù)位與看門狗故障復(fù)位的識(shí)別開(kāi)機(jī)復(fù)位與看門狗故障復(fù)位因同屬硬件復(fù)位, 所以要想予以正確識(shí)別,一般要借助非易失性RAM或者EEROM。因此可通過(guò)一監(jiān)測(cè)單元對(duì)當(dāng)前系統(tǒng)的運(yùn)行狀態(tài)、系統(tǒng)時(shí)間予以監(jiān)控,將控制過(guò)程分解為若干步或若干時(shí)間段,每執(zhí)行完一步或每運(yùn)行一個(gè)時(shí)間段則對(duì)監(jiān)測(cè)單元置為關(guān)機(jī)允許值,不同的任務(wù)或任務(wù)的不同階段有不同的值,若系統(tǒng)正在進(jìn)行測(cè)控任務(wù)或正在執(zhí)某時(shí)間段,則將監(jiān)測(cè)單元置為非正常關(guān)機(jī)值。窗簾控制器可以使用紅外遙控器進(jìn)行遠(yuǎn)程手動(dòng)開(kāi)、手動(dòng)關(guān)和手動(dòng)??刂?;可以執(zhí)行事先輸入的開(kāi)啟時(shí)間和關(guān)閉時(shí)間進(jìn)行時(shí)間控制;還可以根據(jù)室外環(huán)境亮度實(shí)現(xiàn)環(huán)境亮度光控。 電路原理圖電源部分通過(guò)外接插座輸入交流12V或者直流1314V電壓,交流電經(jīng)過(guò)整流濾波后,輸出電壓為12V的VDD,為控制繼電器提供工作電壓。,限流電阻取用1—.,除驅(qū)動(dòng)數(shù)碼管的數(shù)點(diǎn)之外,兼用音頻信號(hào)輸出,音頻信號(hào)通過(guò)RC10輸入到三極管V6的基極上,三極管驅(qū)動(dòng)發(fā)聲器發(fā)聲。靜態(tài)時(shí)輸出端輸出高電平,當(dāng)接收到紅外信號(hào)后,按紅外信號(hào)的數(shù)據(jù)波形輸出負(fù)脈沖數(shù)據(jù)信號(hào)。光控電路有GMCV3組成。當(dāng)C3電壓下降到1/2VCC以下后,“0”,反之測(cè)得數(shù)據(jù)“1”。兩個(gè)繼電器的工作狀態(tài)受單片機(jī)控制,在同一個(gè)時(shí)間內(nèi)兩個(gè)繼電器僅能有一個(gè)吸合。這樣做的目的是AT89C2051用于本電路中,其I/O口比較富裕,這樣的驅(qū)動(dòng)顯示節(jié)省一個(gè)顯示驅(qū)動(dòng)電路,同時(shí)顯示的數(shù)字和字符完全通過(guò)軟件編寫的,可以編寫更多的字符。D3是C10的泄放電阻,保證交變信號(hào)的正常耦合。結(jié)合上面的軟件流程說(shuō)明按鍵功能的意義:紅外遙控按鍵的功能分為三部分,直接操作部分—窗簾電機(jī)的正轉(zhuǎn)、反轉(zhuǎn)和停止操作。手動(dòng)狀態(tài)下的單片機(jī)非工作期間進(jìn)入睡眠狀態(tài)。當(dāng)工作在時(shí)控和光控狀態(tài)下,并進(jìn)行當(dāng)時(shí)時(shí)間校正以后,內(nèi)部的時(shí)鐘開(kāi)始走時(shí),而且時(shí)間數(shù)據(jù)在一個(gè)數(shù)碼管上,按時(shí)分方法順序顯示當(dāng)時(shí)時(shí)間的小時(shí)和分鐘,顯示一遍之后,停止1秒鐘,以便區(qū)分一個(gè)完整的時(shí)間顯示完畢。比如在程序的編寫上就存在很大的不足。感謝導(dǎo)師,如果沒(méi)有導(dǎo)師的正確指導(dǎo)和建議,以我的個(gè)人水平是不可能這么順利完成的。譚忠祥老師治學(xué)嚴(yán)謹(jǐn),學(xué)識(shí)淵博,思想深邃,視野雄闊,為我營(yíng)造了一種良好的精神氛圍。我恨我無(wú)法用準(zhǔn)確生動(dòng)的語(yǔ)言來(lái)淋漓盡致地描述自己的真實(shí)感受,只好將它深深地埋在心底,化作一道虔誠(chéng)的祝福:愿導(dǎo)師合家歡樂(lè),一生平安。k0鍵輸出頻率300Hz833k1h equ 0f8hk1l equ 0ech 。k4鍵輸出頻率1500Hz167k5h equ 0ffhk5l equ 075h 。定時(shí)器T0入口AJMP intt0ORG 001bH 。k0jnb k0,$ acall sett1mov r1,k0h mov r2,k0lacall sett0jnb bz,$ d01: jb k0,d02acall ysJb k0,d02 。k4jnb k0,$ acall sett1mov r1,k4h mov r2,k4lacall sett0jnb bz,$ D05: jb k0,d06acall ysJb k0,d06 。定時(shí)時(shí)間約為100msMOV TL1,0b0hsetb tr1 。NACKBUSYFREEREAD_IR0x0b//讀取紅外define0x0c//保存數(shù)據(jù)define0x0d//讀取鍵值defineHEADTAILSDAP1_7define//接受數(shù)據(jù)緩沖unsigned int//發(fā)送數(shù)據(jù)緩沖unsigned intunsigned char data *p1[2]。}p。//unsigned char a[2]。//unsigned int b。//unsigned int data *p4。//地址指針//}q。unsigned char a[2]。unsigned int b。union{ }i。 void delay(void)。 void tf_1(void)。 void ir_init(void)。 void reset_iic(void)。 void send_ack_iic(void)。 void stop_iic(void)。}void tf2(void)//禁止中斷TH0=0。while(!EXF2){if(!TH0)//判斷是否是長(zhǎng)低電平脈沖過(guò)來(lái)了//不是長(zhǎng)低電平脈沖而是短低電平[1]=RCAP2L。}//是低電平脈沖,則進(jìn)行處理F0=0。*ir=[0]。//把連續(xù)的短脈沖總時(shí)間記錄下來(lái) }void rs232(void)//禁止中斷//清除接收中斷標(biāo)志位//判斷是否幀開(kāi)頭buf1=RECEIVE。else{0x0f))//判斷接收是否正確//是接收到數(shù)據(jù)幀尾buf1=RECEIVE。sbuf2=SP+1。//將接收狀態(tài)標(biāo)志置為零,接收下一個(gè)數(shù)據(jù)幀buf1_flag=1。//置接收標(biāo)志為1,表示已經(jīng)接收到一個(gè)數(shù)據(jù)幀REN=0。{*buf1=NACK。//禁止接收//接收。else//置標(biāo)志位為1,使主程序能對(duì)接收錯(cuò)誤進(jìn)行處理//把NACK信號(hào)存入接收緩沖里// 將接收狀態(tài)標(biāo)志置為零,重新接收state1=0。}//禁止接收[0]=sbuf2。//判斷是否為復(fù)位命令{//判斷是否接收到數(shù)據(jù)幀尾//接收錯(cuò)誤,有可能接收的是數(shù)據(jù)幀尾,也有可能是接收錯(cuò)誤{if((sbuf2amp。//把高半字節(jié)右移到的半字節(jié)case 10:sbuf2=sbuf14。if(sbuf1==HEAD){RI=0。EA=0。static unsigned char sbuf1,sbuf2,rsbuf1,rsbuf2。}exit:}go to exit。//把長(zhǎng)電平脈沖時(shí)間記錄下來(lái)//將捕捉數(shù)臨時(shí)存放起來(lái)if(F0)++。//檢查有沒(méi)超時(shí),如果超時(shí)則退出TL0=0。//把捕捉的數(shù)保存起來(lái)//清除電平變化產(chǎn)生的中斷位EXF2=0。go to end。EA=0。interrupt 3{tf_1()。interrupt 2{ie_1()。interrupt 1{tf_0()。interrupt 0{ie_0()。 unsigned int read_key_data(unsigned char a)。 bit receive_ack_iic(void)。 unsigned char read_byte_nack_iic(void)。 void store_ir(void)。 void read_ir(void)。 void tf_0(void)。 bit ir_flag。unsigned long c。unsigned int b[2]。unsigned char a[4]。}temp。 union{//unsigned int data *p2[2]。////unsigned char data *p3。 union{unsigned char a[2]。//接收標(biāo)志,1表示接受到一個(gè)數(shù)據(jù)幀,0表示沒(méi)有接受到數(shù)據(jù)幀或數(shù)據(jù)幀為空bit buf2_flag。buf2_length。buf1_length。IRSEND0X02//請(qǐng)求信號(hào)defineREQUEST0x00//數(shù)據(jù)無(wú)效definedefine允許T1中斷clr bzretsett0: MOV TH0,r1 MOV TL0,r2setb tr0setb et0retend附錄2解碼程序清單:includek6jnb k0,$ a
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1