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

正文內(nèi)容

畢業(yè)設(shè)計(jì)-基于89c51單片機(jī)的紅外通訊軟件設(shè)計(jì)(編輯修改稿)

2024-07-11 01:50 本頁面
 

【文章內(nèi)容簡介】 讀 /寫接口等)。這樣的芯片因?yàn)?具有和計(jì)算機(jī)一樣的功能,所以稱之為單片微型計(jì)算機(jī),簡稱單片機(jī)。而單片機(jī)又主要應(yīng)用于實(shí)時(shí)控制,并通常作為其他系統(tǒng)的組成部分使用,故又稱之為嵌入式控制器。自從 20 世紀(jì) 70年代中期美國仙童公司推出第一臺(tái) F8單片機(jī)以來,單片機(jī)已經(jīng)有 30 多年的發(fā)展歷史。直至今天,單片的生產(chǎn)廠家和型號(hào)已經(jīng)是各式各樣。 紅外通訊系統(tǒng)的單片機(jī)中,采用 AT89C51 單片機(jī)作為中央處理器。 89C51 單片機(jī)帶有 4K 閃爍可編程可擦除只讀存儲(chǔ)器( FPEROM— Falsh Programmable and Erasable Read Only Memory), 128 字節(jié)內(nèi)部 RAM, 32 個(gè) I/O 接口, 2 個(gè) 16 位定時(shí)器 /計(jì)數(shù)器, 一個(gè) 5 向量兩級(jí)中斷結(jié)構(gòu),一個(gè)全雙工串行通信口,片內(nèi)振蕩器及時(shí)鐘電路。同時(shí), AT89C51 可降至 0Hz 的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電工作模式??臻e方式停止 CPU 工作,但允許 RAM、定時(shí) /計(jì)數(shù)器、串行通信口及中斷系統(tǒng)繼續(xù)工作,掉電方式保存 RAM 的數(shù)據(jù),但振蕩器停止工作并禁止其它所有部件工作指導(dǎo)下一個(gè)硬件復(fù)位 。 基于單片 機(jī)的紅外 通訊軟件設(shè)計(jì) 1 9 紅外通訊編碼解碼芯片選擇 紅外通訊電路若要將數(shù)據(jù)通過紅外發(fā)射頭和紅外接收頭發(fā)送出去,則需要在電路的發(fā)射端先進(jìn) 行編碼操作編碼成操作碼,然后通過載波電路將編碼后的芯片進(jìn)行 38KHz 的調(diào)制后,才能更遠(yuǎn)更安全穩(wěn)定地發(fā)送出去;紅外接受電路在接收到信號(hào)后,則需要進(jìn)行解碼操作,還原發(fā)射端的最原始數(shù)據(jù),才能知道發(fā)射端是發(fā)送一個(gè)什么樣的請(qǐng)求。 由于我個(gè)人在用 Proteus 進(jìn)行仿真時(shí),并沒有編碼和解碼芯片可以使用,所以程序中我全面模擬了編碼和解碼芯片的功能;我選定了uPD6121 為編碼芯片, BC7210 為解碼芯片;之所以選擇這兩個(gè)芯片分別作為發(fā)射端和接收端的編碼解碼芯片是因?yàn)?BC7210 解碼芯片成本低,常見, 而且 BC7210的輸出可以 設(shè)置為并行輸出或者串行輸出,串行輸出方式兼容 SPI 和 UART 兩種接口,可以輕松完成與各種 MCU、 PC 機(jī)的接口??梢匀〈?SAA3049 等芯片 ;而能夠與 BC7210解碼芯片互相支持的多個(gè)芯片中又屬 Upd6121編碼芯片最為合適 [13]。 uPD6121 編碼芯片 和 BC7210 解碼芯片 如圖 31所示 圖 31 紅外發(fā)射頭和接收頭 紅外發(fā)射二極管是紅外通信系統(tǒng)中用來發(fā)射信號(hào)的一個(gè)非常重要的元件,雖然它看起來比較小,不太顯眼,但是沒有它,紅外通信就只能是一句空話。它是實(shí)現(xiàn)紅外通信的橋梁, 其重要性就好像燈泡在照明系統(tǒng)中的重要性一樣,是整個(gè)紅外通信系統(tǒng)的焦點(diǎn)。 選用常用的紅外發(fā)光二極管 SE303,外形類似 LED發(fā)光二 基于單片 機(jī)的紅外 通訊軟件設(shè)計(jì) 1 10 極管, 發(fā)出紅外光(近紅外線約 m )。管壓降約 ,工作電流一般小于 20mA。為了適應(yīng)不同的工作電壓,回路中常串有限流電阻 。 SE303 實(shí)物圖如圖32 所示 圖 32 紅外接收器是紅外發(fā)光二極管的受控裝置,其里面有相應(yīng)的紅外光電轉(zhuǎn)換電路。這里我們采用的接收器是一種紅外專用接收集成電路 HS0038,用它來完成紅外信號(hào)的光電轉(zhuǎn)換及接收。 接收方一般使用 HS0038 一體化紅外線接收器進(jìn)行接收解碼,當(dāng) HS0038 接收到 38kHz 紅外信號(hào)時(shí),輸出端輸出低電平,否則為高電平。所以紅外遙控器發(fā)送紅外信號(hào)時(shí),參考上面遙控串行數(shù)據(jù)編碼波形圖,在低電平處發(fā)送 38kHz 紅外信號(hào),高電平處則不發(fā)送紅外信號(hào) 。 HS0038實(shí)物圖如圖 33所示 。 圖 33 紅外 通訊系統(tǒng)電路設(shè)計(jì) 最小系統(tǒng)電路 單片機(jī)如果要能夠正常工作,那么最小系統(tǒng)是必不可少的。而所謂的最小系統(tǒng),就是單片機(jī)的 XTAL1,XTAL2 兩個(gè) IO 口外接晶振電路 ,RST 口外接復(fù)位電路 ,EA、 VCC 接 5V 電源, VSS 接地,這樣組成的一個(gè)小系統(tǒng)成為最小系統(tǒng)。所以,紅外通訊系統(tǒng)中的發(fā)射端和接收端都需要有如下圖所示的基本電路模塊: 基于單片 機(jī)的紅外 通訊軟件設(shè)計(jì) 1 11 圖 34 這里值得注意的是:仿真的時(shí)候 VCC 和 VSS 都默認(rèn)地接 5V電源和接地,所以不需要再添加,但是繪制原理圖和制作 PCB 板時(shí),不能將 VCC和 VSS 遺漏,否則單片機(jī)無法正常 工作。 按鍵輸入電路 用來接收用戶輸入的按鍵模塊,采用四乘四矩陣鍵盤與單片機(jī)的 P0 八個(gè)管腳相連,在程序中進(jìn)行行列檢測,從而得出用戶對(duì)哪個(gè)按鍵進(jìn)行的單擊操作(具體算法實(shí)現(xiàn)在第四章軟件設(shè)計(jì)中詳解)。這里值得注意的是,使用 P0口時(shí),單片機(jī)內(nèi)部是沒有接上拉電阻,所以我們需要外部添加上路電阻。 按鍵輸入模塊電路如下圖所示 : 圖 35 圖 35 基于單片 機(jī)的紅外 通訊軟件設(shè)計(jì) 1 12 紅外編碼電路 及其紅外發(fā)射 紅外編碼電路的 編碼主要是由用戶碼和數(shù)據(jù)碼構(gòu)成 ,用戶碼和數(shù)據(jù)碼統(tǒng)稱為傳送碼 ,通常為 8 位或 16 位的“ 0”“ 1”碼 ,為了避免出現(xiàn)差錯(cuò) ,每次發(fā)射的傳送碼中一般都包含兩次編碼 :一次為原碼 ,一次為反碼 ?;蛳嗤拇a連續(xù)發(fā)兩次。 本系統(tǒng)采用 8位的傳送碼 ,并且再發(fā)送一次反補(bǔ)作為驗(yàn)證。 采用 uPD6121編碼芯片,KL/O0至 KL/O7七個(gè)管腳接受未編碼的原始操作數(shù)據(jù);也可以用 KI1至 KI4四個(gè)管腳與 KL/O0至 O7組成矩陣鍵盤直接接受輸入數(shù)據(jù)。本系統(tǒng)采用第一種方案。 ( 這里的編碼電路沒有經(jīng)過載波就發(fā)送,是因?yàn)檫@是單獨(dú)繪制的編碼和紅外發(fā)射電路 ,并沒有應(yīng)用到仿真。而 本次系統(tǒng)設(shè)計(jì) 仿真 中并沒有 編碼 芯片,所以在仿真電路中單 獨(dú)繪制解碼發(fā)射模塊,用于學(xué)習(xí)不參與程序運(yùn)行。) 電路模塊電路圖如下圖所示: 圖 36 載波信號(hào)電路 在所有的高頻通信電路中,載波信號(hào)的存在是必不可少的。為使紅外信號(hào)能夠正確的傳送出去和傳送更長的距離,我們也需要在編碼信號(hào)輸出的同端加上一個(gè)高頻載波信號(hào)。通過這個(gè)高頻載波信號(hào)的調(diào)制,把編碼信號(hào)的有用信息“攜帶”出去,這樣信號(hào)的傳送距離就能更長,而且能夠有效的避免其他信號(hào)的干擾,從而提高了信息傳送的準(zhǔn)確性。 本系統(tǒng)采用 89C51 單片機(jī)內(nèi)部定時(shí)器產(chǎn)生 38KHz信號(hào)的方波,與編碼后的傳 送碼結(jié)合,調(diào)制后傳送出去。 圖中的 SendIO 用于接 基于單片 機(jī)的紅外 通訊軟件設(shè)計(jì) 1 13 收來自用戶輸入的數(shù)據(jù)編碼后得到的傳送碼(操作碼)。 載波信號(hào)調(diào)制電路如下圖所示: 圖 37 解碼電路 及其紅外接 圖 38 通過解碼電路后,得到用戶最原始的輸出數(shù)據(jù),從而控制 LCD 液晶顯示器顯示電機(jī)運(yùn)轉(zhuǎn)的相關(guān)信息,并且控制電機(jī)運(yùn)轉(zhuǎn)。 液晶顯示電路和電機(jī)電路 根據(jù)解碼后得到的用戶原始輸入數(shù)據(jù),通過程序控制液晶顯示器的顯示,和電機(jī)的運(yùn)轉(zhuǎn)。液晶顯示器使用 LCD1602。 RS,RW,E 三個(gè)控制端口分別接單片機(jī) P0 基于單片 機(jī)的紅外 通訊軟件設(shè)計(jì) 1 14 口的 , , ,外接上路電阻,而數(shù)據(jù)傳輸端口接單片機(jī)的 P2口,因?yàn)閮?nèi)部已經(jīng)有上路電阻,所以不再需要外部接上拉電阻。 這里電機(jī)采用直流電機(jī),而控制直流電機(jī)的轉(zhuǎn)速主要是通過控制其電壓實(shí)現(xiàn),所以電路中用 三個(gè) 2N3055 三極管 ,三個(gè)三極管的基極分別接單片機(jī)的 P11,P12, P13 三個(gè)管腳,集電極接不同大小的電阻再接電源,然后通過程序來控制使用不同的三極管,從而控制不同的直流電機(jī)電壓,達(dá)到改變轉(zhuǎn)速的效果。 液晶顯示模塊電路和電機(jī)電路分別如圖 39所示 圖 39 總體發(fā)射 端 綜合 仿真電路 圖 基于單片 機(jī)的紅外 通訊軟件設(shè)計(jì) 1 15 總體 接收 端綜合 仿真電路圖 基于單片 機(jī)的紅外 通訊軟件設(shè)計(jì) 1 16 4 系統(tǒng)軟件設(shè)計(jì) 紅外通訊系統(tǒng)軟件設(shè)計(jì)的編程語言選擇 現(xiàn)在程序編程語言很多如 C 語言, C++語言,匯編語言,機(jī)器語言等,這些語言主要都應(yīng)用于嵌入式開發(fā)之中,但由于機(jī)器語言的 難以閱讀,所以現(xiàn)在已經(jīng)基本不再使用 。 而 在單片機(jī)應(yīng)用系統(tǒng)開發(fā)過程中,程序設(shè)計(jì)有兩種方法:一種是基于匯編語言的程序設(shè)計(jì)方法,另一種是基于 C 語言的程序設(shè)計(jì)方法。匯編語言的機(jī)器代碼生成效率高但可讀性不強(qiáng),而 C 語言在大多數(shù)情況下,其機(jī)器代碼生成效率和匯編語言相當(dāng),而可讀性和可移植性卻遠(yuǎn)遠(yuǎn)超過匯編語言。此外,由于 C 語言有很 好的層次結(jié)構(gòu),使其編寫的程序更容易閱讀和維護(hù)。且 C 編寫的程序比匯編更符合人們的思考習(xí)慣,開發(fā)者能更專心的考慮程序設(shè)計(jì)而不是考慮些細(xì)節(jié)問題,這樣就減少了開發(fā)和調(diào)試的時(shí)間 [10]。 選用 C語言設(shè)計(jì)程序 具有一些特點(diǎn) [14]: C 語言代碼簡潔易讀,使用靈活方便 , 裝性好,代碼重用性高。 C 語言具有函數(shù),相對(duì)于匯編語言來說,代碼的封裝性遠(yuǎn)遠(yuǎn)高于匯編語言,代碼的重用性高,并且具有一定的模塊化。 并且 表達(dá)能力強(qiáng) , 豐富的數(shù)據(jù)結(jié)構(gòu)類型,用戶根據(jù)需要,采用多種數(shù)據(jù)類型來控制各種復(fù)雜的數(shù)據(jù); C語言還有多種運(yùn)算符,用戶可以靈活地進(jìn)行簡單 或者復(fù)雜的算術(shù)運(yùn)算 , 表達(dá)方式 也很 靈活。 而且 C語言是一種結(jié)構(gòu)化程序設(shè)計(jì)語言。這一點(diǎn)很適合單片機(jī)的設(shè)計(jì), C 語言以函數(shù)作為程序設(shè)計(jì)的基本單位, C 語言程序中的函數(shù)相當(dāng)于一般語言中的子程序。 還有很關(guān)鍵的一點(diǎn)是 C語言擁有指針,直接操作計(jì)算機(jī)硬件。 C 語言具有直接訪問機(jī)器物理地址的能力, Keil 的 C51 編譯器和 Franklin 的 C51 編譯器都可以直接對(duì)單片機(jī)的內(nèi)部特殊功能寄存器和 I/O 端口進(jìn)行操作,可以直接訪問片內(nèi)或片尾存儲(chǔ)器,還可以進(jìn)行各種位操作。 基于單片 機(jī)的紅外 通訊軟件設(shè)計(jì) 1 17 開發(fā)環(huán)境 ,即編程軟件的選擇 本次紅外通訊系統(tǒng)的程序編寫的開發(fā)環(huán) 境,選擇 使用 Keil uVersion3。它是美國 Keil Software 公司出品的主要用于 51 系列單片機(jī)主要用于 C 語言軟件程序開發(fā)工具。 Keil 還提供了包括 C 語言編譯器、宏匯編、連接器、庫管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等完全的開發(fā)方案。在 Keil uVersion3 上編寫的 C 語言程序可以直接生成一個(gè) .HEX 文件在 Proteus 中直接將 HEX 文件 調(diào)入 到單片機(jī)中 便可直接運(yùn)行程序 ,方便程序在單片機(jī)環(huán)境下的運(yùn)行和調(diào)試。 而使用 C 編譯器 在產(chǎn)生代碼的準(zhǔn)確性和效率方面達(dá)到了較高的水平,而且可以附加靈活地控制選項(xiàng),在開發(fā) 大型項(xiàng)目時(shí)非常理想,是目前應(yīng)用最廣泛的單片機(jī)開發(fā)環(huán)境之一 [15]。所以,如果是用 C 語言編寫單片機(jī)程序沒那么 Keil 幾乎就是第一選擇。 軟件設(shè)計(jì) 原則 軟件是連接需求分析 \硬件系統(tǒng)以及使得系統(tǒng)實(shí)現(xiàn)的橋梁,對(duì)軟件進(jìn)行編寫設(shè)計(jì)之前應(yīng)該先了解軟件設(shè)計(jì)的原則。 軟件要有一定的可靠性,軟件系統(tǒng)規(guī)模越大越復(fù)雜,可知這時(shí)候軟件的可靠性就越來越難保證 。 軟件的可靠性 意味著該軟件在測試運(yùn)行過程中避免可能發(fā)生故障的能力,且一旦發(fā)生故障后,具有解脫和排除故障的能力。 軟件可靠性 和硬件可靠性本質(zhì)區(qū)別在于:后者為物理機(jī)理的衰變和老 化所致,而前者是由于設(shè)計(jì)和實(shí)現(xiàn)的錯(cuò)誤所致。 在進(jìn)行軟件設(shè)計(jì)之前 的 軟件的 可靠性必須在設(shè)計(jì)階段就確定,在生產(chǎn)和測試階段再考慮就困難了。 軟件需要有健壯性,又稱為魯棒性,是指 軟件 對(duì)于規(guī)范要求以外的輸入能夠判斷出這個(gè)輸入不符合規(guī)范要求,并能有合理的處理方式。 但是它的健壯性 是一個(gè)較模糊的概念,但是卻是非常重要的軟件外部量度標(biāo)準(zhǔn)。 軟件 設(shè)計(jì)的健壯與否直接反應(yīng)了分析設(shè)計(jì)和編碼人員的水平 軟件的可修改性,在軟件編寫完成后,可能在后續(xù)部分根據(jù)用戶的需求反應(yīng),或者其他原因,可能需要修改軟件。這時(shí)候,就要求軟件開發(fā)人員在軟件開發(fā) 時(shí)要編寫完整的文檔和良好的結(jié)構(gòu),如模塊化。 軟件編寫要容易理解,這個(gè)其實(shí)和可修改性是相關(guān)聯(lián)的。擁有良好的結(jié)構(gòu)、明朗的注釋,便于修改時(shí)候的閱讀。 基于單片 機(jī)的紅外 通訊軟件設(shè)計(jì) 1 18 軟件要有可測試性, 就是設(shè)計(jì)一個(gè)適當(dāng)?shù)臄?shù)據(jù)集合,用來測試所建立的系統(tǒng),并保證系統(tǒng)得到全面的檢驗(yàn)。 軟件有效率性,效率性是指軟件在編寫的時(shí)候應(yīng)該注意運(yùn)行時(shí),盡可能得少用計(jì)算機(jī)內(nèi)存,并且采用最優(yōu)的算法來處理數(shù)據(jù)結(jié)構(gòu),讓軟件在計(jì)算機(jī)中運(yùn)行時(shí)所占用的內(nèi)存達(dá)到最低,這點(diǎn)很考研開發(fā)人員的水平。 軟件標(biāo)準(zhǔn)化原則,軟件編寫要基于業(yè)界的一些規(guī)范、協(xié)議、接口、命名規(guī)則。 軟件要 有先進(jìn)些和可擴(kuò)展性,軟件要能滿足客戶的要求,并且做好模塊化,便于日后對(duì)軟件的升級(jí)。 系統(tǒng)軟件設(shè)計(jì) 主程序功能的設(shè)計(jì)及其實(shí)現(xiàn) 系統(tǒng)功能的要求決定了系統(tǒng)軟件設(shè)計(jì)的方向,本次系統(tǒng)程序設(shè)計(jì)流程圖如圖41 所示。 紅外通訊的數(shù)據(jù)發(fā)送是通過區(qū)別脈沖的低電平寬度來區(qū)分位 0和位 1,位 0 和位 1 的高電平均為 , 而低電平位 0 為 ,位 1 為 。對(duì)于 發(fā)射端程序,運(yùn)行后 先初始化定時(shí)器 0
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1