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

正文內(nèi)容

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

2025-01-03 14:28 本頁面


【正文】 似乎只有一個鍵盤輸入單元在工作,只須訪問它來進(jìn)行鍵盤掃描、鍵碼讀出操作。但實際上卻有遙控器與鍵盤兩套鍵輸入硬件在同時而獨立地工作。 考察一下智能儀器的鍵盤掃描輸入原理。在這種方式下,CPU通過輸出指令使鍵盤矩陣的行掃描線依次為“0”(低電平),同時監(jiān)測鍵盤矩陣的列掃描線。若無鍵按下,則列掃描線輸出全“1”(高電平);若有鍵按下,則此鍵所在列線輸出為“0”,再結(jié)合行掃描線此時的狀態(tài),就可具體定位按鍵。我們設(shè)想,可否將遙控接收頭輸出的含有按鍵信息的8位遙控碼通過某種轉(zhuǎn)換,并入鍵盤矩陣電路,當(dāng)遙控器有鍵按下時,就會在機(jī)上鍵盤對應(yīng)鍵處產(chǎn)生一個“模擬”按鍵動作,產(chǎn)生一個鍵碼可供CPU讀取。所謂“模擬”是指并沒有機(jī)械按鍵動作,但對于鍵盤矩陣電路而言卻產(chǎn)生一個低電平,效果和機(jī)械按鍵動作完全一樣。這樣就將遙控鍵盤和本機(jī)鍵盤統(tǒng)一起來,二者的鍵數(shù)和鍵功能定義都一樣,一個相同的鍵在遙控器上按下和在本機(jī)鍵盤上按下對CPU而言沒有任何區(qū)別,只不過對鍵盤矩陣來說前者是軟接觸,后者是硬接觸。根據(jù)遙控器上按鍵與本機(jī)鍵盤按鍵的一一對應(yīng)方案,我們可以導(dǎo)出實現(xiàn)“模擬”按鍵的邏輯真值表(其中C0~C4為列掃描線)。 這是一個12變量輸入S變量輸出的組合邏輯函數(shù),最小項總數(shù)為1620=320個。若用普通邏輯門電路來實現(xiàn)這樣的功能將是十分麻煩的,用PLD(可編程邏輯器件)來做就要簡單得多。EPROM就是一種與陣列固定、或陣列可編程的邏輯器件。如果把EPROM的輸入地址A0,A1,……AN視為輸入邏輯變量,同時把輸出數(shù)據(jù)D0,D1,……DM視為一組多輸出邏輯變量,那么輸出與輸入之間也就是一組多輸出的組合邏輯函數(shù)。而且,EPROM地址譯碼器的輸出包含了全部輸入變量的最小項,每一位數(shù)據(jù)輸出又都是這些最小項之和,因而任何形式的組合邏輯函數(shù)均能通過向EPROM中寫入相應(yīng)的數(shù)據(jù)來實現(xiàn)。不難推想,具有N位輸入地址和M位數(shù)據(jù)輸出的EPROM可以獲得一組(最多為M個)任何形式的N變量組合邏輯函數(shù)。根據(jù)這個原理,選用4K8EPROM2732,可以實現(xiàn)任意12變量輸入、8變量輸出的組合邏輯函數(shù)。在本機(jī)遙控系統(tǒng)中,利用了EPROM的D0~D4五根數(shù)據(jù)線和全部12根地址線,通過向2732中固化上表所示的邏輯真值表,從而實現(xiàn)了關(guān)鍵的遙控解碼,使遙控器上按鍵與本機(jī)鍵盤按鍵一一對應(yīng)起來。需要指出的是,EPROM的地址譯碼是全譯碼,而在本方案中占據(jù)地址線A0~A7的8位遙控碼只有20種有效碼值(20個鍵),即一頁(2S6字節(jié))中只有20個有效數(shù)據(jù),則應(yīng)將剩余空間填入0FFH。由解碼電路圖3可見,EPROM2732的地址線A0A7接至8位輸出鎖存移位寄存器74HCS9S的輸出(即8位遙控碼),A8~A11接至鍵盤矩陣的行掃描線R0~R3;2732的8根數(shù)據(jù)線使用了其中的S根D0~D4,接至鍵盤矩陣的列掃描線C0~C4,2732的(片選端)接地,(讀信號)接至施密特與非門4093的3腳輸出,此輸出為雙單穩(wěn)74HC123的1Q、與非的結(jié)果。當(dāng)遙控器上沒有按鍵按下時,EPROM2732的端為“1”,使得2732的數(shù)據(jù)線D0~D4為高阻態(tài)與鍵盤矩陣線脫離,而本機(jī)鍵盤的掃描與讀出照常進(jìn)行不受影響,若遙控器上有鍵按下時,經(jīng)紅外發(fā)射、接收對應(yīng)的8位遙控碼出現(xiàn)在74HC595的輸出端,并作為EPROM2732的A0~A7輸入,此時的行掃描碼(CPU發(fā)出)作為A8~A11輸入,2732的端為低電平,讀出A0~A11指定單元的數(shù)據(jù),將其中D0~D4放在鍵盤矩陣列線上。D0~D4中只有一位為“0”,指示著哪一列有鍵按下,這樣就由遙控接收、解碼電路模擬了一次“按鍵”動作。接下來CPU對這個“按鍵”動作的響應(yīng)、處理就和本機(jī)鍵盤完全一樣了。,跟著引導(dǎo)碼是系統(tǒng)碼,系統(tǒng)反碼,按鍵碼,按鍵反碼,如果按著鍵不放,則遙控器則發(fā)送一段重復(fù)碼,重復(fù)碼由9ms的高電平,跟著是一個短脈沖。程序流程圖下:解碼程序在比較器中斷服務(wù)程序中實現(xiàn)。第一個下降沿表明編碼輸出開始,這時將時間記錄為last_time,當(dāng)比較器輸出跳為高電平時,記錄當(dāng)前時間為current_time,并且記錄脈沖寬(current_timelast_time)判斷收到的是寬脈沖還是窄脈沖,如果是寬脈沖記錄為0,窄脈沖記錄為1。每一組有效的編碼由24為組成,因此程序中需要有一個脈沖計數(shù)變量來記錄是否有24位碼,只有確認(rèn)收到24位碼后,才認(rèn)為這次按鍵有效。同時需要防止將用戶的一次按鍵解釋為多次按鍵,需要有去抖功能。可以設(shè)一個變量來記錄同一個鍵值收到的次數(shù),當(dāng)它的記錄小于某一預(yù)定的值時,表示用戶在進(jìn)行同一操作。完整的接收到一組編碼后,在中斷程序中將鍵值有效標(biāo)志key_flag置1,主程序循環(huán)中如果查詢到key_flag為1則保存這個鍵碼,即完成一次解碼操作。4 單片機(jī)介紹 MCS51系列單片機(jī)是美國Intel公司在1980年推出的高性能8位單片微機(jī),較原來的MCS48系列結(jié)構(gòu)更為先進(jìn),功能增強(qiáng),它包括51和52兩個子系列。 在51系列中,主要有8038058751三種機(jī)型,它們的指令系統(tǒng)與芯片引腳完全兼容,僅片內(nèi)ROM有所不同。51子系列的主要功能為: 8為CPU。 片內(nèi)帶振蕩器,~12MHZ;可有時鐘輸出。 128個字節(jié)的片內(nèi)數(shù)據(jù)存儲器。 4K字節(jié)的片內(nèi)程序存儲器(8031無)。 程序存儲器的尋址范圍為64K字節(jié)。 片外數(shù)據(jù)存儲器的尋址范圍為64K字節(jié)。 21個字節(jié)專用寄存器。 4個8位并行I/O接口:P0、PPP3。 1個全雙工串行I/O接口,可多機(jī)通訊。 2個16位定時/計數(shù)器。 中斷系統(tǒng)有5個中斷源,可編程為兩個優(yōu)先級。 111條指令,含乘法指令和除法指令。 有強(qiáng)的位尋址、位處理能力。 片內(nèi)采用單總線結(jié)構(gòu)。 用單一+5V電源。52子系列主要有8038052兩種機(jī)型。與51子系列的不同在于:片內(nèi)數(shù)據(jù)存儲器增至256個字節(jié);片內(nèi)程序存儲器增至8KB(8032無);有3個16位定時器/計數(shù)器;有6個中斷源。其他性能均與51子系列相同。它含運(yùn)算器、控制器、片內(nèi)存儲器、4個I/O接口、串行接口、定時器/計數(shù)器、中斷系統(tǒng)、振蕩器等功能器件。 MCS51系列單片機(jī)芯片有40個引。見圖。用HMOS工藝制造的芯片采用雙列直插式封裝。低功耗的、采用CHMOS工藝制造的機(jī)型(在型號中間家一“C”字作為識別,如80C380C587C51)也有用方型封裝結(jié)構(gòu)的。 現(xiàn)將各引腳分別說明如下: Vcc:接+5V電源正端。 Vss:接+5V電源地端。 XTAL1:片內(nèi)反相放大器輸入端。 XTAL2:片內(nèi)反相放大器輸出端。外接晶體時,XTAL1與XTAL2各接警惕的一端,借外接晶體與片內(nèi)反相放大器構(gòu)成振蕩器。 ~:P0口的8個引腳。在不接片外存儲器與不擴(kuò)展I/O接口時,可作為準(zhǔn)雙向輸入/輸出接口。在接有片外存儲器或擴(kuò)展I/O接口時,P0口分時復(fù)用為低8位地址總線和雙向數(shù)據(jù)總線。 ~:P1口的8個引腳。可作為準(zhǔn)雙向I/O接口使用。對于52子系列,:;。 ~:;在接有片外存儲器或擴(kuò)展I/O接口且尋址范圍超過256字節(jié)時,P2口用為高8為地址總線。 ~:P3口的8個引腳,除了作為準(zhǔn)雙向I/O接口使用外,還具有第二功能,具體如下: :RXD (串行輸入口) :TXD (串行輸出口) :INT0 (外部中斷0請求輸入端) :INT1 (外部中斷1請求輸入端) :T0 (定時器/計數(shù)器0計數(shù)脈沖輸入端) :T1 (定時器/計數(shù)器1計數(shù)脈沖輸入端) :WR (片外數(shù)據(jù)存儲器寫選通信號輸出端) :RD (片外數(shù)據(jù)存儲器讀選通信號輸出端)MCS51系列單片機(jī)外部引腳圖80C51的串行通信口是一個功能強(qiáng)大的通信口,而且是相當(dāng)好用的通信口,用于顯示驅(qū)動電路再合適不過了,下面我們就根據(jù)這種需要設(shè)計一個用兩個串行通信口線加上兩根普通I/O口,設(shè)計一個4位LED顯示電路。當(dāng)然只要再加上兩根I/O口線即可輕易實現(xiàn)8位LED的顯示電路[7]。 串行動態(tài)LED掃描電路圖是電原理圖,我們還是采用C2051單片機(jī),同時用廉價易得的74LS164和74LS138作為擴(kuò)展芯片。74LS164(詳細(xì)技術(shù)手冊)是一個8位串入并出的移位寄存器,其此處的功能是將C2051串行通信口輸出的串行數(shù)據(jù)譯碼并在其并口線上輸出,從而驅(qū)動LED數(shù)碼管。74LS138是一個38譯碼器,它將單片機(jī)輸出的地址信號譯碼后動態(tài)驅(qū)動相應(yīng)的LED。但74LS138電流驅(qū)動能力較小,為此,我們使用了未級驅(qū)動三極管2SA1015作為地址驅(qū)動。將4只LED的段位都連在一起,它們的公共端則由74LS138分時選通,這樣任何一個時刻,都只有一位LED在點亮,也即動態(tài)掃描顯示方式,其優(yōu)點在上一節(jié)中我們已經(jīng)闡述。使用串行口進(jìn)行LED通信,程序編寫相當(dāng)簡單,用戶只需將需顯示的數(shù)據(jù)直接送串口發(fā)送緩沖器,等待串行中斷即可,看看下面的程序。程序清單 ORG 0100H MOV SCON,00H 。串行口工作方式0MAIN: MOV R3,00H ;字型碼初始地址LOOP: MOV R4,0E8H ;循環(huán)顯示某個字符DELAY: ACALL DISPLAY ;顯示 DJNZ R4,DELAY ;延時時間未到繼續(xù) INC R3 ;顯示下個字符 CJNE R3,OAH,LOOP ;未顯示到“9”繼續(xù) AJMP MAIN ;返回主程序DISPLAY:CLR CLR ;選中第一位 ACALL DISP ;顯示 ACALL DELAY1 ;延時10MS SETB ;選中第二位 ACALL DISP ACALL DELAY1 SETB ;選中第三位 CLR ACALL DISP ACALL DELAY1 SETB ;選中第四位 SETB ACALL DISP ACALL DELAY1 RETDIS: MOV A,R3 MOV DPTR,TABLE MOVC A,@A+DPTR ;查表 MOV BUFF,A ;送發(fā)送緩沖器WAIT: JNB TI,WAIT ;等待串行中斷 CLR TI RETDELAY1: MOV R6,10H ;延時子程序LOOP1: MOV R7,38HLOOP2: DJNZ R7,LOOP2 DJNZ R6,LOOP1 RETTABLE: DB 0C0H,0F9H,0A4H,0B0H,99H DB 92H,82H,0F8H,80H,90H END ;程序結(jié)束 [10]在提高硬件系統(tǒng)抗干擾能力的同時,軟件抗干擾以其設(shè)計靈活、節(jié)省硬件資源、可靠性好越來越受到重視。下面以MCS51單片機(jī)系統(tǒng)為例,對微機(jī)系統(tǒng)軟件抗干擾方法進(jìn)行研究。 軟件抗干擾方法的研究 在工程實踐中,軟件抗干擾研究的內(nèi)容主要是: 一、消除模擬輸入信號的嗓聲(如數(shù)字濾波技術(shù));二、程序運(yùn)行混亂時使程序重入正軌的方法。本文針對后者提出了幾種有效的軟件抗干擾方法。 指令冗余 CPU取指令過程是先取操作碼,再取操作數(shù)。當(dāng)PC受干擾出現(xiàn)錯誤,程序便脫離正常軌道“亂飛”,當(dāng)亂飛到某雙字節(jié)指令,若取指令時刻落在操作數(shù)上,誤將操作數(shù)當(dāng)作操作碼,程序?qū)⒊鲥e。若“飛” 到了三字節(jié)指令,出錯機(jī)率更大。 在關(guān)鍵地方人為插入一些單字節(jié)指令,或?qū)⒂行巫止?jié)指令重寫稱為指令冗余。通常是在雙字節(jié)指令和三字節(jié)指令后插入兩個字節(jié)以上的NOP。這樣即使亂飛程序飛到操作數(shù)上,由于空操作指令NOP的存在,避免了后面的指令被當(dāng)作操作數(shù)執(zhí)行,程序自動納入正軌。此外,對系統(tǒng)流向起重要作用的指令如RET、 RETI、LCALL、LJMP、JC等指令之前插入兩條NOP,也可將亂飛程序納入正軌,確保這些重要指令的執(zhí)行。 攔截技術(shù) 所謂攔截,是指將亂飛的程序引向指定位置,再進(jìn)行出錯處理。通常用軟件陷阱來攔截亂飛的程序。因此先要合理設(shè)計陷阱,其次要將陷阱安排在適當(dāng)?shù)奈恢谩?1 軟件陷阱的設(shè)計 當(dāng)亂飛程序進(jìn)入非程序區(qū),冗余指令便無法起作用。通過軟件陷阱,攔截亂飛程序,將其引向指定位置,再進(jìn)行出錯處理。軟件陷阱是指用來將捕獲的亂飛程序引向復(fù)位入口地址0000H的指令。通常在EPROM中非程序區(qū)填入以下指令作為軟件陷阱: NOP NOP LJMP 0000H其機(jī)器碼為0000020000。2 陷阱的安排 通常在程序中未使用的EPROM空間填0000020000。最后一條應(yīng)填入020000,當(dāng)亂飛程序落到此區(qū),即可自動入軌。在用戶程序區(qū)各模塊之間的空余單元也可填入陷阱指令。當(dāng)使用的中斷因干擾而開放時,在對應(yīng)的中斷服務(wù)程序中設(shè)置軟件陷阱,能及時捕獲錯誤的中斷。如某應(yīng)用系統(tǒng)雖未用到外部中斷1,外部中斷1的中斷服務(wù)程序可為如下形式: NOP NOP RETI返回指令可用“RETI”,也可用“LJMP 0000H”。如果故障診斷程序與系統(tǒng)自恢復(fù)程序的設(shè)計可靠、 完善,用“LJMP 0000H”作返回指令可直接進(jìn)入故障診斷程序,盡早地處理故障并恢復(fù)程序的運(yùn)行。 考慮到程序存貯器的容量,軟件陷阱一般1K空間有23個就可以進(jìn)行有效攔截。 軟件“看門狗”技術(shù) 若失控的程序進(jìn)入“死循環(huán)”,通常采用“看門狗”技術(shù)使程序脫離“死循環(huán)”。通過不斷檢測程序循環(huán)運(yùn)行時間,若發(fā)現(xiàn)程序循環(huán)時間超過最大循環(huán)運(yùn)行時間,則認(rèn)為系統(tǒng)陷入“死循環(huán)”,需進(jìn)行出錯處理?!翱撮T狗”技術(shù)可由硬件實現(xiàn),也可由軟件實現(xiàn)。 在工業(yè)應(yīng)用中,嚴(yán)重的干擾有時會破壞中斷方式控制字,關(guān)閉中斷。則系統(tǒng)無法定時“喂狗”,硬件看門狗電路失效。而軟件看門狗可有效地解決這類問題。 筆者在實際應(yīng)用中,采用環(huán)形中斷監(jiān)視系統(tǒng)。用定時器T0監(jiān)視定時器T1,用定時器T1監(jiān)視主程序,主程序監(jiān)視定時器T0。采用這種環(huán)形結(jié)構(gòu)的軟件“看門狗”具有良好的抗干擾性能,大大提高了系統(tǒng)可靠性。對于需經(jīng)常使用T1定時器進(jìn)行串口通訊的測控系統(tǒng),則定時器T1不能進(jìn)行中斷,可改由串口中斷進(jìn)行監(jiān)控(如果用的是MCS52系列單片機(jī),也可用T2代替T1進(jìn)行監(jiān)視)。這種軟件“看門狗”監(jiān)視原理是:在主程序、T0中斷服務(wù)程序、T1中斷服務(wù)程序中各設(shè)一運(yùn)行觀測變量,假設(shè)為MWatch、T0Watch 、T1Watch,主程序每循環(huán)一次,MWatch加1,同樣T0、T1中斷服務(wù)程序執(zhí)行一次,T0Watch、 T1Watch加1。在T0中斷服務(wù)程序中通過檢測T1Watch的變化情況判定T1運(yùn)行是否正常,在T1中斷服務(wù)程序中檢測MWatch的變化情況判定主程序是否正常運(yùn)行,在主程序中通過檢測T0Watch的變化情況判別T0是否正常工作。若檢測到某觀測變量變化不正常,比如應(yīng)當(dāng)加1而未加1,則轉(zhuǎn)到出錯處理程序作排除故障處理。當(dāng)然,對主程序最大循環(huán)周期、定時器T0和T1定時周期應(yīng)予以全盤合理考慮[5]。限于篇幅不贅述。160
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1