單片機課程設計(論文)紅外接收發(fā)送器_第1頁
單片機課程設計(論文)紅外接收發(fā)送器_第2頁
單片機課程設計(論文)紅外接收發(fā)送器_第3頁
單片機課程設計(論文)紅外接收發(fā)送器_第4頁
單片機課程設計(論文)紅外接收發(fā)送器_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、機電信息工程學院機電信息工程學院 單片機系統(tǒng)課程設計報告單片機系統(tǒng)課程設計報告 完成日期:完成日期:20082008 年年 3 3 月月 2121 日日 系:電子工程系 專 業(yè):通信工程 班 級:051 班 設計題目:紅外收發(fā)器 學生姓名: 指導教師: 目 錄 一、設計任務和性能指標.1 1.1 設計任務.1 1.2 性能指標.1 二、設計方案.1 三、系統(tǒng)硬件設計.2 3.1 紅外發(fā)射模塊設計.2 (一)單片機的最小系統(tǒng).2 (二)鍵盤電路.4 (三)紅外線發(fā)射編碼.4 3.2 紅外接收模塊設計.4 (一)紅外接收器設計.4 (二)顯示電路的設計.5 (三)鍵盤接口的設計.5 四、系統(tǒng)軟件設

2、計.5 五、調(diào)試及性能分析.7 5.1 調(diào)試步驟.7 5.2 性能分析.8 六、心得體會.8 參考文獻.9 附錄.10 1 程序清單.10 2 硬件原理圖.17 一、設計任務和性能指標一、設計任務和性能指標 1.11.1 設計任務設計任務 紅外遙控技術(shù)是一種利用紅外線進行點對點通信的技術(shù),其相應的軟件和 硬件技術(shù)都已比較成熟。它是把紅外線作為載體的遙控方式。在現(xiàn)代電子工程 應用中,紅外線常常被用做近距離視線范圍內(nèi)的通訊載波,最典型的應用就是 家電遙控器。使用紅外線做信號載波的優(yōu)點很多:成本低、傳播范圍和方向可 以控制、不產(chǎn)生電磁輻射干擾,也不收干擾等等。因此被廣泛地應用在各種技 術(shù)領域中。 紅

3、外線遙控具有結(jié)構(gòu)簡單,制作方便,成本低廉,抗干擾能力強,工作可 靠性高等一系列優(yōu)點,特別是室內(nèi)遙控的優(yōu)先遙控方式。同時,由于采用紅外 線遙控器件時,工作電壓低,功耗小,外圍電路簡單,因此它在日常工作生活 中的應用越來越廣泛。 1.21.2 性能指標性能指標 1.基本要求 (1) 能夠?qū)崿F(xiàn)利用紅外線實現(xiàn)無線數(shù)據(jù)的收發(fā); (2) 能夠?qū)l(fā)送的數(shù)據(jù)或接收的數(shù)據(jù)進行顯示,或根據(jù)接收的命令執(zhí)行相應的 功能。 2. 選做 (1) 所發(fā)送的數(shù)據(jù)利用 pc 機進行控制; (2) 能夠?qū)崿F(xiàn)的數(shù)據(jù)通信采用一對多的主從模式; (3) 能夠?qū)崿F(xiàn)遠程的參數(shù)數(shù)據(jù)傳送,如實現(xiàn)遠程抄表、溫度、濕度等。 二、設計方案二、設計方

4、案 按照性能設計指標的要求,設計紅外收發(fā)系統(tǒng)有發(fā)射和接收兩大模塊組成。 發(fā)射部分包括鍵盤矩陣、編碼調(diào)制、紅外發(fā)送器;接收部分包括光、電轉(zhuǎn)換放 大器、解調(diào)、解碼電路。具體框圖如下: 圖 1:紅外發(fā)射框圖 圖 2:紅外接收框圖 三、系統(tǒng)硬件設計三、系統(tǒng)硬件設計 3.13.1 紅外發(fā)射模塊設計紅外發(fā)射模塊設計 (一)單片機的最小系統(tǒng) atmel 公司生產(chǎn)的 at89c51 單片機它是硬件電路的核心部分,時鐘電路晶 振使用 11.0592mhz,復位電路采取按鍵復位方式。具體連接見附錄 1。 1、主要元器件介紹 單片機主控電路的主要元件是 at89c51,其外型如圖 3: 鍵 盤 電 路 紅外 發(fā)射

5、器 紅外 接收 器 顯示 電路 圖 3:at89c51 引腳圖 at89c51 是一個低電壓,高性能 cmos 8 位單片機,片內(nèi)含 4k bytes 的可 反復擦寫的只讀程序存儲器(perom)和 128 bytes 的隨機存取數(shù)據(jù)存儲器 (ram),器件采用 atmel 公司的高密度、非易失性存儲技術(shù)生產(chǎn),兼容標準 mcs-51 指令系統(tǒng),片內(nèi)置通用 8 位中央處理器和 flash 存儲單元,內(nèi)置功能強 大的微型計算機的 at89c51 提供了高性價比的解決方案。 at89c51 是一個低功耗高性能單片機,40 個引腳,32 個外部雙向輸入/輸 出(i/o)端口,同時內(nèi)含 2 個外中斷口,

6、2 個 16 位可編程定時計數(shù)器,2 個全 雙工串行通信口,at89c51 可以按照常規(guī)方法進行編程,也可以在線編程。其 將通用的微處理器和 flash 存儲器結(jié)合在一起,特別是可反復擦寫的 flash 存 儲器可有效地降低開發(fā)成本。 2、管腳說明: vcc:供電電壓。 gnd:接地。 p0 口:p0 口為一個 8 位漏級開路雙向 i/o 口,每腳可吸收 8ttl 門流。當 p1 口的管腳第一次寫 1 時,被定義為高阻輸入。p0 能夠用于外部程序數(shù)據(jù)存儲 器,它可以被定義為數(shù)據(jù)/地址的第八位。在 fiash 編程時,p0 口作為原碼輸 入口,當 fiash 進行校驗時,p0 輸出原碼,此時 p

7、0 外部必須被拉高。 p1 口:p1 口是一個內(nèi)部提供上拉電阻的 8 位雙向 i/o 口,p1 口緩沖器能 接收輸出 4ttl 門電流。p1 口管腳寫入 1 后,被內(nèi)部上拉為高,可用作輸入, p1 口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在 flash 編程和校驗時,p1 口作為第八位地址接收。 p2 口:p2 口為一個內(nèi)部上拉電阻的 8 位雙向 i/o 口,p2 口緩沖器可接收, 輸出 4 個 ttl 門電流,當 p2 口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且 作為輸入。并因此作為輸入時,p2 口的管腳被外部拉低,將輸出電流。這是由 于內(nèi)部上拉的緣故。p2 口當用于外

8、部程序存儲器或 16 位地址外部數(shù)據(jù)存儲器 進行存取時,p2 口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉 優(yōu)勢,當對外部八位地址數(shù)據(jù)存儲器進行讀寫時,p2 口輸出其特殊功能寄存器 的內(nèi)容。p2 口在 flash 編程和校驗時接收高八位地址信號和控制信號。 p3 口:p3 口管腳是 8 個帶內(nèi)部上拉電阻的雙向 i/o 口,可接收輸出 4 個 ttl 門電流。當 p3 口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。 作為輸入,由于外部下拉為低電平,p3 口將輸出電流(ill)這是由于上拉的 緣故。 p3 口也可作為 at89c51 的一些特殊功能口,如下表所示: 口管腳 備選功能

9、 p3.0 rxd(串行輸入口) p3.1 txd(串行輸出口) p3.2 /int0(外部中斷 0) p3.3 /int1(外部中斷 1) p3.4 t0(記時器 0 外部輸入) p3.5 t1(記時器 1 外部輸入) p3.6 /wr(外部數(shù)據(jù)存儲器寫選通) p3.7 /rd(外部數(shù)據(jù)存儲器讀選通) p3 口同時為閃爍編程和編程校驗接收一些控制信號。 rst:復位輸入。當振蕩器復位器件時,要保持 rst 腳兩個機器周期的高電 平時間。 /ale/prog:當訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址 的地位字節(jié)。在 flash 編程期間,此引腳用于輸入編程脈沖。在平時,ale 端

10、 以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的 1/6。因此它可用 作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當用作外部數(shù)據(jù)存 儲器時,將跳過一個 ale 脈沖。如想禁止 ale 的輸出可在 sfr8eh 地址上置 0。 此時, ale 只有在執(zhí)行 movx,movc 指令是 ale 才起作用。另外,該引腳被略 微拉高。如果微處理器在外部執(zhí)行狀態(tài) ale 禁止,置位無效。 /psen:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個 機器周期兩次/psen 有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/psen 信 號將不出現(xiàn)。 /ea/vpp:當/ea 保持低電平

11、時,則在此期間外部程序存儲器(0000h- ffffh),不管是否有內(nèi)部程序存儲器。注意加密方式 1 時,/ea 將內(nèi)部鎖定為 reset;當/ea 端保持高電平時,此間內(nèi)部程序存儲器。在 flash 編程期間,此 引腳也用于施加 12v 編程電源(vpp)。 xtal1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。 xtal2:來自反向振蕩器的輸出。 (二)鍵盤電路 鍵盤采用列掃描。 列掃描的原理是:使第一行線為低電平,如果這條列線上沒有閉合鍵,則 各條線的狀態(tài)都為高電平,如果行線上有閉合鍵,則相應的那條列線即變?yōu)榈?電平。于是就可以根據(jù)按行線號和列線號求得閉合鍵的鍵碼。行號分別接到了 p

12、1.0,p1.1,p1.2,列號分別接到了 p1.3,p1.4,p1.5,做成了 3*3 的矩陣式鍵盤。 (三)紅外線發(fā)射編碼 at89c51 的 p1.7 引腳外接元件組成了紅外驅(qū)動放大發(fā)射電路。它主要是由 驅(qū)動管和紅外發(fā)射二極管組成的。當 p1.7 腳有指令信號輸出時,該信號經(jīng)驅(qū)動 管放大后,加至紅外發(fā)射二極管上,遙控指令則以紅外線的形式發(fā)射出去。 當按下鍵盤上的不同按鍵時,通過編碼器產(chǎn)生與之相應的特定的二進制脈 沖碼信號。將此二進制脈沖碼信號先調(diào)制在 38khz 的載波上,經(jīng)過放大后,激 發(fā)紅外發(fā)光二極管轉(zhuǎn)發(fā)成波長 940nm 的紅外線光傳輸出去。 3.23.2 紅外接收模塊設計紅外接收

13、模塊設計 (一)(一)紅外接收器設計 紅外接收器采用一體化紅外遙控接收器 sm0038,實驗電路如圖 4: 1 2 3 outout vccvcc gndgnd 圖 4:sm0038 outout 接單片機的 p3.2 口,若有紅外線數(shù)字信號則經(jīng)過紅外接收器取出數(shù)字信號 數(shù)據(jù)經(jīng)單片機譯碼,最后送到顯示電路。gndgnd 接地,vccvcc 接高電平。 (二)顯示電路的設計 顯示部分采用普通的共陽數(shù)碼管顯示,使用動態(tài)掃描,以便減少硬件電路。 考慮到一次掃描 7 位數(shù)碼管顯示時會出現(xiàn)閃爍情況,設計時采用多次調(diào)用顯示 子程序解決這個問題。驅(qū)動數(shù)碼管的芯片采用驅(qū)動能力較強的 74hc373,使用 單片

14、機的 p0 口作為并行輸出,74hc373 是高電平鎖存,用 p1.4 口作為 74hc373 時鐘控制端口,即置1控制端。由于數(shù)碼管采用共陽接法,使用 p2.0-p2.1 口作為數(shù)碼管的位選。74hc373 在得到高電平后,將 8 位數(shù)據(jù)鎖存,并行輸出 送至數(shù)碼管各段選控制口。 (三)鍵盤接口的設計 鍵盤只有 4 個,其中 2 個用于單片機上電復位,其中一個用于電源轉(zhuǎn)換電 路中,另外一個用于紅外發(fā)射程序和紅外接收程序能下載到不同單片機上的轉(zhuǎn) 換開關(guān)。 四、系統(tǒng)軟件設計四、系統(tǒng)軟件設計 系統(tǒng)軟件可分為發(fā)射部分、接收部分和顯示三部分。軟件可由匯編語言完 成。 發(fā)射和接收部分都采用 at89c51

15、。 發(fā)射程流程圖如圖 5: n y n y 鍵按下 逐行掃描, 按 p 口值查 鍵號 按鍵號轉(zhuǎn)至 相應的發(fā)射 程序 裝入發(fā)射脈沖個數(shù)到(r1) 發(fā) 3ms 脈沖 停發(fā) 1ms (r1)-1=0? 發(fā) 1ms 脈沖 停發(fā) 1ms 開始發(fā)射 初始化 掃描鍵盤 延時消抖 結(jié)束 圖 5.1:發(fā)射主程序流程圖 圖 5.2:發(fā)射程序流程圖 圖 5:發(fā)射流程圖 開始 接收流程圖如圖 6: n y n y n y 初始化 低電平脈寬2ms? 接收并對低電平脈沖計數(shù) 高電平脈沖寬3ms? 按脈沖個數(shù)至對應功能程序 中斷返回 中斷開始 開始 是否有中 斷? 調(diào)中斷子程 序 按照按鍵數(shù)顯示 圖 6.1:接受主程序流

16、程圖 圖 6.2:中斷子程序流程圖 圖 6:接收流程圖 五、調(diào)試及性能分析五、調(diào)試及性能分析 5.15.1 調(diào)試步驟調(diào)試步驟 調(diào)試分為硬件調(diào)試和軟件調(diào)試。 硬件調(diào)試主要是檢測硬件電路是否有短路、斷路、虛焊等。具體步驟及測 試結(jié)果如下: (1)檢查電源與地線是否全部連接上,用萬用表對照電路原理圖測試各導 線是否完全連接,測試結(jié)果所有連接線都已連接好; (2)檢驗單片機的晶振是否起振,用示波器觀察波形;測試結(jié)果波形都很 好; (3)檢查各芯片的功能是否正常,檢測按鍵的導通情況。測試結(jié)果正常。 軟件調(diào)試主要是程序調(diào)試,可以分塊進行調(diào)試,分別對發(fā)射模塊和接收模 塊程序進行調(diào)試。首先都要在實驗臺上進行調(diào)

17、試。具體步驟如下: (1)發(fā)射模塊程序調(diào)試,首先將程序輸入到電腦中,對邏輯功能和語句進 行檢查,再用軟件進行調(diào)試,調(diào)試無錯誤后才可以下載到單片機中。 (2)接收模塊程序調(diào)試,程序無錯誤后,下載到單片機中,結(jié)合接收模塊 程序,驗證實驗功能,當發(fā)射部分有鍵按下時,接收模塊中的接收器接收紅外 線并在數(shù)碼管中顯示出按鍵數(shù),完成實驗要求。 5.25.2 性能分析性能分析 首先單片機按鍵復位后,數(shù)碼管無顯示,指示燈滅。然后把發(fā)射程序和接 收程序分別下載到相應的單片機中,當發(fā)射部分有鍵按下時,經(jīng)過內(nèi)部編碼, 然后根據(jù)鍵值設定按鍵的脈沖個數(shù),再調(diào)制成 40hz 方波由紅外發(fā)射管發(fā)射出去。 紅外接收模塊的紅外接

18、收器 sm0038 接收紅外線,當紅外接收器輸出脈沖幀數(shù)據(jù) 時,第一位碼的低電平將啟動終端程序,實時接收數(shù)據(jù)幀。在數(shù)據(jù)幀接收時, 將對第一位碼的碼寬進行驗證,若第一位低電平的脈沖小于 2ms,將作為錯誤碼 處理,當間隔位的高電平脈沖寬大于 3ms 時,結(jié)束接收。再經(jīng)過單片機的譯碼 來確定所按鍵的脈沖數(shù),并經(jīng)過解碼功能確定相應的功能,最后經(jīng)過數(shù)碼管顯 示出按鍵數(shù)。 紅外接收器輸出的一幀遙控碼波形如圖 7: 1ms 第一位 2ms1ms 圖 7:紅外接收器一幀遙控碼波形圖 六、心得體會六、心得體會 這次課程設計是對我們學習微機原理及單片機課程的檢驗及實際應用能力 的一次提高。我們所設計的是紅外收發(fā)

19、器。所能實現(xiàn)的是紅外的發(fā)射和接收, 發(fā)射部分通過鍵盤輸入數(shù)字通過 at89c51 編碼并用紅外二極管發(fā)射出去。接收 部分通過另外一塊 at89c51 通過中斷方式接收紅外信號并解碼,最后從數(shù)碼管 顯示所按下的鍵號。 原理圖的設計時我們使用了 altium6.0 這個強大的繪圖工具,由于一些實 際的器件在器件庫中無法找到,我們只有自己制作,在這個過程中我們學到了 很多的知識和方法。在制作 pcb 印刷電路板的時候,很多器件的封裝與實際尺 寸存在很大的差別,為了獲得準確的封裝,我們實際測量了所給器件的大小與 規(guī)格,自己制作與之匹配的封裝庫,這讓我們明白實踐是出真知的唯一途徑, 只有親自動手,實際才

20、能測試才能獲得最可靠的設計數(shù)據(jù)。當然我們也出現(xiàn)了 嚴重的失誤,由于對電源與地的距離估計不足,導致兩者過近,出現(xiàn)了短接的 危險。因此我們不得不重新處理這個問題,這個教訓也告誡了我們,對于任何 小的細節(jié)都不能掉以輕心,小的疏忽也會造成大的損失。對于電路圖和電路板 都應當采取科學謹慎的態(tài)度,這是保證是的基本實驗結(jié)果產(chǎn)生的前提,在正式 焊接前,對電路板的核查測試應當細心備至,反復檢測才不會導致最終的失敗。 程序的編寫過程也給了我們很大的收獲。在編寫程序之前,我們查閱了大 量的相關(guān)資料,力求做到規(guī)范清晰。在把握了整體的思路后,我們先從程序流 程圖著手, 將整個程序分成若干模塊,分開編寫,一邊發(fā)現(xiàn)問題一邊

21、解決問題, 并在實驗板上檢驗程序測試情況,根據(jù)現(xiàn)象不斷修改。在這個過程中我們體會 到編程的技巧,設置子程序的合理性,同時對單片機最小系統(tǒng)的設計有了整體 的理解和深刻的體會,使我們的思維的鍛煉與能力培養(yǎng)有了很大的提高和長足 的進步。 本次課程設計雖然時間很短,但收獲卻很大。首先我們對單片機最小系統(tǒng) 的設計有了整體的把握,對程序編寫的合理與規(guī)范性有了深刻的理解,建立起 程序設計的一般思路,以及 altium6.0 的使用方法,其強大的功能給我們提供 了很大的幫助,通過原理圖的設計過程,使我們認識到了這個軟件的重要性, 我們會以此為契機,在日后的學習中會繼續(xù)使用它,使其發(fā)揮更大的功能。 經(jīng)過三個星期

22、的課程設計,我們得到了充分的鍛煉,不僅對單片機的學習 有了深刻的理解,同時也增強了我們的毅力和處理突發(fā)問題的能力。學習是要 付出一定的艱辛與努力的,做事情一定要有不怕困難的吃苦精神,唯有堅持不 懈,發(fā)揚團隊協(xié)作才能夠克服困難,取得最后的勝利。 相信本次課程設計對我們以后的學習將會有很大的影響,我們一定會積極 地總結(jié)經(jīng)驗與教訓,改進不足,爭取在日后做得更好。當然要感謝老師和同學 們的幫助,在我們束手無策,陷入困境的時候給予熱情的幫助,使我們順利渡 過難關(guān)。 課程設計是一次很好的實踐動手機會,通過實踐,我們的知識得到了應用, 真正實現(xiàn)了知識的學以致用,理論聯(lián)系實際,我們會更加注重實踐能力的鍛煉,

23、注重動手能力的培養(yǎng)。 參考文獻參考文獻 1 彭為、黃科、雷道仲. 單片機典型系統(tǒng)設計實例精講. 北京:電子工業(yè)出 版社,2006 2 陳明熒. 8051 單片機課程設計實訓教材. 北京: 清華大學出版社,2004 3 李群芳,黃建. 單片機微型計算機與接口技術(shù). 北京:電子工業(yè)出版社, 2001 4 樓然苗、李光飛. 51 系列單片機設計實例. 北京:北京航空航天大學出版 社,2003 5 李光飛、樓然苗. 單片機課程設計指導. 北京航空航天大學出版社,2007 附錄附錄 1 1 程序清單程序清單 發(fā)射程序發(fā)射程序 ;主程序和中斷程序入口 org 0000h ajmp start org 00

24、03h reti org 000bh reti org 0013h reti org 001bh ;定時器 t1 中斷入口地址 ljmp intt1 ;初始化程序 clearmemio: clr a dec a mov p0,a mov p1,a mov p2,a mov p3,a clr p1.7 mov ie,#00h ;關(guān)所有中斷 mov tmod,#20h ;方式 2 mov th1,#0f5h ;定時初值 mov tl1,#0f5h setb ea ret ;主程序 start: lcall clearmemio main: lcall keywork ljmp main ;中斷服務

25、程序 intt1: cpl p1.7 ;38.5khz 紅外遙控信號 reti keywork: mov p1,#0ffh ;置 p1 口為輸入狀態(tài) clr p1.7 clr p1.6 clr p1.0 ;掃描第 1 行 mov a,p1 anl a,#38h cjne a,#38h,keycon setb p1.0 ; 掃描第 2 行 clr p1.1 mov a,p1 anl a,#38h cjne a,#38h,keycon setb p1.1 ;掃描第 3 行 clr p1.2 mov a,p1 anl a,#38h cjne a,#38h,keycon setb p1.2 ;結(jié)束掃描

26、 ret keycon: lcall delay ;延時去抖動 mov a,p1 ;讀入 p1 口值 anl a,#38h cjne a,#38h,keyche ;確有鍵按下 keyout: ret keyche: mov a,p1 mov b,a loop: mov a,p1 anl a,#38h ;低 3 位為 0 cjne a,#38h,loop ;列選全為 1(鍵按著) mov r7,#00h ;放鍵,查表次數(shù)為 0 mov dptr,#keytab cheloop: mov a,r7 movc a,a+dptr xrl a,b ;查表值與 p1 口值比較 jz keyok inc r

27、7 cjne r7,#09h,cheloop ret keyok: mov a,r7 mov b,a rl a add a,b mov dptr,#keyfuntab ;散轉(zhuǎn)功能程序首址 jmp a+dptr ;散轉(zhuǎn)至對應功能程序標號 keyfuntab: ljmp keyfun00 ;跳到鍵號對應功能程序標號 ljmp keyfun01 ljmp keyfun02 ljmp keyfun03 ljmp keyfun04 ljmp keyfun05 ljmp keyfun06 ljmp keyfun07 ljmp keyfun08 ret keytab: db 36h,35h,33h,2eh,

28、2dh,2bh,1eh,1dh,1bh,0ffh keyfun00: mov a,#02h ;發(fā)送 2 個脈沖 lcall remote ;轉(zhuǎn)發(fā)送程序 ret keyfun01: mov a,#03h ;發(fā)送 3 個脈沖 lcall remote ;轉(zhuǎn)發(fā)送程序 ret keyfun02: mov a,#04h ;發(fā)送 4 個脈沖 lcall remote ;轉(zhuǎn)發(fā)送程序 ret keyfun03: mov a,#05h ;發(fā)送 5 個脈沖 lcall remote ;轉(zhuǎn)發(fā)送程序 ret keyfun04: mov a,#06h ;發(fā)送 6 個脈沖 lcall remote ;轉(zhuǎn)發(fā)送程序 ret

29、keyfun05: mov a,#07h ;發(fā)送 7 個脈沖 lcall remote ;轉(zhuǎn)發(fā)送程序 ret keyfun06: mov a,#08h ;發(fā)送 8 個脈沖 lcall remote ;轉(zhuǎn)發(fā)送程序 ret keyfun07: mov a,#09h ;發(fā)送 9 個脈沖 lcall remote ;轉(zhuǎn)發(fā)送程序 ret keyfun08: mov a,#0ah ;發(fā)送 10 個脈沖 lcall remote ;轉(zhuǎn)發(fā)送程序 ret ;編碼發(fā)射程序 remote: mov r1,a ;裝入發(fā)射脈沖個數(shù) ljmp out3 out: mov r0,#75h ;1ms 寬低電平發(fā)射數(shù)據(jù) out

30、1: setb et1 ;開 t1 中斷 setb tr1 ;開定時器 t1 nop nop nop nop djnz r0,out1 mov r0,#32h ;1ms 寬高電平間隙控制數(shù) 據(jù) out2: clr tr1 ;關(guān)定時器 t1 clr et1 ;關(guān)中斷 clr p1.7 ;關(guān)脈沖輸出 nop nop nop nop nop nop nop nop nop nop nop nop nop djnz r0,out2 ;時間不到,轉(zhuǎn) out2 再循環(huán) djnz r1,out ;脈沖未發(fā)完,轉(zhuǎn) out 再循 環(huán)發(fā)射 lcall dl500ms ret out3: mov r0,#0ffh

31、;裝發(fā)射 3ms 寬控制數(shù)據(jù) ljmp out1 delay: mov r2,#0ffh delay1: djnz r2,delay1 ret ;10ms 延時 dl10ms: mov r3,#14h dl10ms1: lcall delay djnz r3,dl10ms1 ret ;500ms 延時程序 dl500ms: mov r4,#32h dl500ms1: lcall dl10ms djnz r4,dl500ms1 ret end 接受程序接受程序 ;主程序和中斷程序入口 org 0000h ajmp start org 0003h ;外部中斷 0 中斷入口 ljmp intex0

32、org 000bh reti org 0013h reti org 001bh reti org 0023h reti org 002bh reti ;初始化程序 clear: clr a dec a mov p0,a mov p1,a mov p2,a mov p3,a clearmem: mov ie,#00h ;關(guān)所有中斷 setb ex0 ;開外中斷 setb ea ;總中斷允許 ret start: lcall clear sjmp $ ;遙控接收程序(采用中斷接收) intex0: clr ex0 ;關(guān)外中斷 jnb p3.2,read1 readout: setb ex0 ;允許

33、外部中斷 0 中斷 reti read1: clr a mov dph,a ;dptr 清零 mov dpl,a hard1: jb p3.2,hard11 ;p3.2 變高電平轉(zhuǎn) hard11 inc dptr ;低電平記數(shù) nop ;1us 延時 nop ajmp hard1 hard11: mov a,dph ;dptr 高 8 位放入 a jz readout ;為 0 則脈寬小于(255*8us) 2ms 退出 clr a ;否則第一個為寬脈沖(計數(shù)器先 清 0) clr p3.6 read11: inc a read12: jnb p3.2,read12 ;低電平時等待 mov r

34、1,#06h read13: jnb p3.2,read11 lcall delay ;延時 512us djnz r1,read13 ;6 次延時 dec a ;超過 3ms 判為結(jié)束,減 1 dec a jz fun0 ;為 0 執(zhí)行 fun0(2 個脈沖) dec a jz fun1 ;為 0 執(zhí)行 fun1(3 個脈沖) dec a jz fun2 ;為 0 執(zhí)行 fun2(4 個脈沖) dec a jz fun3 ;為 0 執(zhí)行 fun3(5 個脈沖) dec a jz fun4 ;為 0 執(zhí)行 fun4(6 個脈沖) dec a jz fun5 ;為 0 執(zhí)行 fun5(7 個脈沖

35、) dec a jz fun6 ;為 0 執(zhí)行 fun6(8 個脈沖) dec a jz fun7 ;為 0 執(zhí)行 fun7(9 個脈沖) dec a jz fun8 ;為 0 執(zhí)行 fun8(10 個脈沖) nop nop ljmp readout ;出錯退出 fun0: mov r0,#00h ljmp display fun1: mov r0,#01h ljmp display fun2: mov r0,#02h ljmp display fun3: mov r0,#03h ljmp display fun4: mov r0,#04h ljmp display fun5: mov r0,

36、#05h ljmp display fun6: mov r0,#06h ljmp display fun7: mov r0,#07h ljmp display fun8: mov r0,#08h ljmp display display: mov dptr,#table mov p0,#0c0h ;關(guān)閉所有共陽 7 段 led mov p2,#02h ;片選高位 mov a,r0 movc a,a+dptr ;查表得顯示內(nèi)容 mov p0,a ljmp readout ;延時程序(512us) delay: mov r0,#0ffh delay1: djnz r0,delay1 ret tab

37、le: db 0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,0ffh end 2 2 硬件原理圖硬件原理圖 發(fā)射原理圖發(fā)射原理圖 p1.0/t2 1 p1.1/t2ex 2 p1.2/eci 3 p1.3/cex0 4 p1.4/cex1 5 p1.5/cex2 6 p1.6/cex3 7 p1.7/cex4 8 rst 9 p3.0/rxd 10 p3.1/txd 11 p3.2/int0 12 p3.3/int1 13 p3.4/t0 14 p3.5/t1 15 p3.6/wr 16 p3.7/rd 17 xtal2 18 xtal1 19 vss 20

38、p2.0/a8 21 p2.1/a9 22 p2.2/a10 23 p2.3/a11 24 p2.4/a12 25 p2.5/a13 26 p2.6/a14 27 p2.7/a15 28 psen 29 ale/prog 30 ea/vpp 31 p0.7/ad7 32 p0.6/ad6 33 p0.5/ad5 34 p0.4/ad4 35 p0.3/ad3 36 p0.2/ad2 37 p0.1/ad1 38 p0.0/ad0 39 vcc 40 u2 89c51 20pf c2 cap 20pf c4 cap 12 y2 xtal gnd 1k r6 res2 s2 sw-pb 10uf

39、c7 cap pol1 gnd vcc gnd vcc k1k2k3 k4k5k6 k7k8k9 p1.0 p1.1 p1.2 p1.3 p1.4 p1.5 p1.0 p1.1 p1.2 p1.3 p1.4 10uf c10 10uf c12 10uf c13 10uf c11 r1 in 13 r2 in 8 t1 in 11 t2 in 10 v+ 2 v- 6 r1 out 12 r2 out 9 t1 out 14 t2 out 7 c1+ 1 c1 - 3 c2+ 4 c2 - 5 u5 stc232 1 2 3 4 5 6 7 8 9 j3db9 gnd gnd vcc txd rxd txd1 rxd1 1k r4 res semi vcc vin 1 gnd 2 vout 3 u3 mc78l05 0.01uf c8 10uf c6 u+12 u+5 gnd d1 led0 1k r1 res1 gndv

溫馨提示

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

評論

0/150

提交評論