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

正文內(nèi)容

基于單片機的紅外遙控系統(tǒng)設(shè)計畢業(yè)論文-閱讀頁

2025-03-18 12:11本頁面
  

【正文】 數(shù)組 irdata[]中的數(shù)據(jù)僅僅是每一位數(shù)據(jù)碼的持續(xù)時長,要將原始信號數(shù)據(jù)解碼,還需要對數(shù)據(jù)進行進一步的處理。 如圖 , 數(shù)據(jù) “0”由 的高電平和 的低電平組成,其占空比是 1:2;數(shù)據(jù) “1”有 的高電平和 的低電平組成,其占空比是 1:3。 對 NEC 編碼方式,數(shù)據(jù)位 “0”的持續(xù)時間是 ,即 個基準(zhǔn)時間;數(shù)據(jù)位 “1”的持續(xù)時間是 ,即 個基準(zhǔn)時間。 解碼出來的數(shù)據(jù)用一個數(shù)組 ircode[]存放,它由 4 個字節(jié)( 32 位)組成,這 4 個字節(jié)分別是接收到的用戶碼、用戶反碼、數(shù)據(jù)碼和數(shù)據(jù)反碼。 15 第四章 系統(tǒng)方案的 硬件電路設(shè)計 本畢業(yè)設(shè)計擬設(shè)計一個基于單片機控制紅外遙控系統(tǒng),設(shè)計要求能夠?qū)崿F(xiàn)紅外信號的接收、紅外信號的解碼以及對接收的數(shù)據(jù)進行處理,并使單片機根據(jù)接收到的不同信號實現(xiàn)相應(yīng)的操作, 以達到使用紅外信號對 一些電氣產(chǎn)品的模擬控制的要求。 設(shè)計思路 本設(shè)計系統(tǒng)采用紅外一體化接收頭 HS0038 負(fù)責(zé)紅外信號的接收, AT89C52 單片機負(fù)責(zé)信號的解碼和控制中心,為了更直觀的看到實驗現(xiàn)象還增加了數(shù)碼管負(fù)責(zé)遙控信號的顯示,紅外信號的執(zhí)行用步進電機 28BYJ48 來執(zhí)行, 根據(jù)鍵盤上按鍵的不同將步進電機設(shè)置不同的檔位,即可實現(xiàn)對步進電機的控制 。當(dāng)檢測到第一個下降沿之后開始計時,在約 后如果出現(xiàn)第二個下降沿則認(rèn)為信號開始,然后對之后的信號進行收集和解碼等操作。 的簡介 紅外接收電路通常由紅外接收二極管與放大電路組成,放大電路通常又由一個集成塊及若干電阻電容等元件組成,并且需要封裝在一個金屬屏蔽盒里,因而電路比較復(fù)雜。 一體化接收頭 HS0038 的主要功能包括放大、選頻、解調(diào)幾部分 , 并且輸出可以讓單片機識別的 TTL 信號,這樣大大簡化了接收電路的復(fù)雜程度和電路的設(shè)計工作 ,方便使用。經(jīng)過它的接收放大和解調(diào)會在輸出端直接輸出原始的信號。 16 圖 4. 1 HS0038和單片機的連接 HS0038 and connected to the microcontroller 的工作原理 HS0038 有三條管腳,分別是電源正極、電源負(fù)極以及 解調(diào) 信號輸出端,其工作電壓在 5V 左右 .只要給它接上電源即是一個完整的紅外接收放大器,使用十分方便。 HS0038 只是對接收的紅外信號進行初步的處理,然后將處理好的比較規(guī)則的信號傳送給單片機進行解碼工作。 17 步進電機 模塊的設(shè)計 由于單片機的輸出信號很弱,要驅(qū)動步進電機需要經(jīng)過一個 ULN2021 芯片,該芯片有功率放大的作用。 當(dāng)輸入端某一引腳為低電平時,對應(yīng)的輸出端即輸出高電平。 ULN2021 的出入引腳 4 分 別和單片機的 、 、 、 相連,電路連接如圖 。一般的電機都是連續(xù)旋轉(zhuǎn)的而步進電機是一步一步轉(zhuǎn)動的,故稱之為步進電機。 每次能轉(zhuǎn)動的最小角度成為步距角。 對于角位移 步進電機,可以通過控制脈沖的個數(shù)來控制角位移量,從而達到準(zhǔn)確定位的目的。 2. 28BYJ48 型步進電機的工作原理 28BYJ48 型四相八拍步進電機,工作電壓為 5~12V。每一個脈沖信號對應(yīng)步進電機的某一相 18 或兩相繞組的通電狀態(tài)改變一次,也就使對應(yīng)轉(zhuǎn)子轉(zhuǎn)過一定的角度(一個步距角)。四相步進電機可以在不同的通 電方式下運行,常見的通電方式有單(單相繞組通電)四拍( ABCDA......), 圖 28BYJ48型步進電機工作原理示意圖 28BYJ48 type stepper motor working principle diagram 19 雙 ( 雙 相 繞 組 通 電 ) 四 拍 ( ABBCCDDAAB...... ),八拍( AABBBCCCDDDAA......)。只要對步進電機的各相繞組按合適的時序通電,就能使步進電機步進轉(zhuǎn)動。 當(dāng)開關(guān) SC 接通電源, SB、 SA、 SD 斷開時,由于 C 相繞組的磁力線和 4 號齒之間磁力矩的作用,使轉(zhuǎn)子轉(zhuǎn)動, 4 號齒和 C 相的磁極對齊。依次類推, A、B、 C、 D 四相繞組輪流供電,則轉(zhuǎn)子會依著 A、 B、 C、 D 的順序轉(zhuǎn)動。其 驅(qū)動方式如表 。其工作電壓是 5V,采用 5 線 4 項驅(qū)動,步距角度為 1/64。 要使 外部 轉(zhuǎn) 軸旋 轉(zhuǎn) 一周 需要 通 電循 環(huán)360/=512 次。 在本系統(tǒng)中,為了節(jié)省單片機管腳資源,將數(shù)碼管通過 74HC573 鎖存器與單片機 20 的 P0 口相連。當(dāng)鎖存使能端 LE 為高時,這些器件的鎖存對于數(shù)據(jù)是透明的(也就是說輸出同步);當(dāng)鎖存使能變低時,符合建立時間和保持時間的數(shù)據(jù)會被鎖存。數(shù)據(jù)輸入端分別與 P0 口的八個管腳相連,分別控制其輸出引腳上電平。 LED 數(shù)碼管是目前使用相當(dāng)普遍的一種顯示器件 ,它是將若干個 LED 組合成數(shù)字(或 符號 )的形狀,再封裝在一起構(gòu)成的。 LED 數(shù)碼管按顯示驅(qū)動電平高低不同可分為共陽極和共 陰極兩大類,以共陰極數(shù)碼管為例,其等效電路分別如圖 所示, a~g 為七個筆段驅(qū)動電平輸入端, dp 為小數(shù)點驅(qū)動端 ,+V 代表共陽極,它是將 8 只 LED 發(fā)光管 (包括 DP 筆段 )的正極連在一起引出,作為公共端接正電源。它是將 8 只 LED 發(fā)光管 (包括DP 筆畫 )的負(fù)極連在一起引出,作為公共端接地或低電平 [11]。按發(fā)光 二極管單元連接方式分為共陽數(shù)碼管和共陰數(shù)碼管:共陽極數(shù)碼管是將每個字段的發(fā)光二極管的陽極連接在一起,要點亮某一字段時,只需給該字段的二極管的陰極施加低電平即可點亮該字段;共陰極數(shù)碼管是將每個字段的放光二極管的陰極連接在一起,要點亮某一字段時,只需給該字段的二極管施加高電平即可點亮該字段。每一位都有其單獨的位選控制端,而三個數(shù)碼管的 a、 b、 c、 d、 e、 f、 g、 dp 八個字段是連接在一起的。 22 第五章 程序設(shè)計 設(shè)計思路 遙控器發(fā)射來的信號,經(jīng)過一體化接收頭 HS0038 的初步處理傳送給單片機,單片機需時時對 引腳的信號進行檢測。 程序設(shè)計主要包括單片機如何進行數(shù)據(jù)的采集、解碼以及根據(jù)得到的數(shù)據(jù)實現(xiàn)功能控 制等幾個方面。 數(shù)據(jù) 采集 程序的設(shè)計 當(dāng) 收到第一個下降沿,開始打開 T0 定時器,計時約 后,檢測是否有第二個下降沿到來,若沒有下降沿到來,則認(rèn)為該數(shù)據(jù)無效,設(shè)定數(shù)據(jù)接收開始標(biāo)志startflag=0,若有下降沿到來,說明用戶碼開始,設(shè)定數(shù)據(jù)接收開始標(biāo)志 startflag=1。對控制而言,引導(dǎo)碼是無用數(shù)據(jù),所以在提取數(shù) 據(jù)時可以丟棄,這樣有效數(shù)據(jù)共有 32 位。在數(shù)組 irdata[bitnum]中,第 0 位是引導(dǎo)碼的時長,第 1~32 位是用戶碼、用戶反碼、數(shù)據(jù)碼和數(shù)據(jù)反碼的時長。具體程序如下: void int0() interrupt 0 { if(startflag) { if(irtime60) //檢測引導(dǎo)碼 ,計時 ,準(zhǔn)備接收用戶碼 { bitnum=0。 //將每個數(shù)據(jù)對應(yīng)的 irtime 存放到 irdata 中去 bitnum++。 if(bitnum==33) { bitnum=0。 //一幀數(shù)據(jù)接受完畢 startflag=0。 irtime=0。 由于接收到的數(shù)據(jù)位低位在前高位在后,故可以讓該值與 0x80 做或運算 ,如果原來的數(shù)據(jù)是 “ 0” ,則與 0x80 做或運算后還是 “ 0” ,若原來的數(shù)據(jù)是 “ 1” ,與 0x80 做或運算后仍 是 “ 1” 。 value=value1。 { value=value|0x80。 uchar k=1。j4。i8。 if(irdata[k]7) //若一個位數(shù)據(jù)傳送時間大于 則說明傳送的數(shù)據(jù)是 1 { value=value|0x80。 } ircode[j]=value。 //一幀數(shù)據(jù)處理完畢標(biāo)志 } } 解出來的有效數(shù)據(jù)碼存放在 ircode[]中, 那么所接收的原始數(shù)據(jù)是什么呢?這里需要對接收的數(shù)據(jù)進行數(shù)制轉(zhuǎn)換,將其轉(zhuǎn)換成數(shù)碼管能顯示的十六進制數(shù)據(jù),程序如下: void irdisp() { disp[0]=ircode[1]/16。 disp[2]=ircode[2]/16。 disp[4]=ircode[3]/16。 } 其中 disp[i]是數(shù)碼管的第 i 位,由于本系統(tǒng)使用的數(shù)碼管是六位的,所以不能將所有數(shù)據(jù)一一顯示,這里只顯示了用戶反碼、數(shù)據(jù)碼和數(shù)據(jù)反碼。例如,當(dāng)設(shè)置 ircode[2]=0x16 時,顯示數(shù)字 0。b=1。 } …… default: { break。 } 上面程序中的 a 用來在數(shù)碼管上顯示,返回值 b 是為了對步進電機進行操作。之后使 U2的 C 引腳置為高電平,再對 P0 口進行賦值,再將 U2 的 C 引腳置為低電平,就將 P0口的信號鎖存在 U2 內(nèi)部。單片機對數(shù)碼管驅(qū)動的程序如下: void display() { dula=1。 dula=0。 26 delay(1)。 P0=0xfe。 delay(2)。在開啟位選之前使 P1=0xff,是為了消影,原因是半導(dǎo)體器件的反映速度相對單片機運行速度是很慢的,在兩次電平變化之間讓其先恢復(fù)低電平狀態(tài)一段時間, 可以防止上次的顯示留下 “影子 ”。 數(shù)碼管對接收數(shù)據(jù)的顯示在本系統(tǒng)中是經(jīng)過重新定義的數(shù)字,那么原始數(shù)據(jù)是什么呢?從上面的介紹中可知,提取出來的 32bit 的數(shù)據(jù)組合,可得到 8 個十六進制數(shù),這8 個十六進制數(shù)才是原始的數(shù)據(jù)碼,這樣才能在數(shù)碼管上顯示出來。 提取出的最終數(shù)據(jù)是在 ircode[]中存放的,但這種數(shù)據(jù)是沒有規(guī)律的,在單片機內(nèi)部進行二次操作時很麻煩,這樣就需要對數(shù)據(jù)進行重定義,以方便單片機根據(jù)數(shù)據(jù)進行其他操作。 由于這里是測試程序,只是將原始數(shù)據(jù)轉(zhuǎn)化成十六進制數(shù),故在設(shè)計中將此部分省略了,直接定義了數(shù)值,當(dāng)設(shè)置 ircode[2]=0x16 時,顯示數(shù)字 “ 0” 。 for(i=0。i++) { dula=1。 dula=0。 wela=1。 wela=0。 } } 程序中數(shù)組 table[]存放的是數(shù)碼管的段選數(shù)據(jù), table1[]存放的是數(shù)碼管的位選數(shù)據(jù)。 disp[1]=ircode[0]%16。 disp[3]=ircode[1]%16。 disp[5]=ircode[2]%16。 disp[7]=ircode[3]%16。 步進電機 驅(qū)動程序 的 設(shè)計 步進電機是遙控系統(tǒng)最終要操控的設(shè)備, 本系統(tǒng)采用一向勵磁方式對其進行驅(qū)動。故要以四相八拍的方式驅(qū)動步進電機, 可以定義一個數(shù)組uchar code table1[]={0x01,0x02,0x04,0x08},然后將該 數(shù)組中的數(shù)值分別賦給 P1 口,就實現(xiàn)了對 步進電機的 ABCDA…… 各相 循環(huán)驅(qū)動了,其 程序如下: void dianji() { uchar i。i。 delay(b)。另一個重要的原因是, 該延遲的大小可以實現(xiàn)對步進電機轉(zhuǎn)速的控制。 29 第六章 硬件 系統(tǒng)的實驗 對所設(shè)計系統(tǒng)的檢測,需要將程序下載到單片機中,在所設(shè)計的硬件電路中進行測試。實驗中使用的遙控器如圖 所示。 圖 系統(tǒng)中所使用的遙控器 The remote control used in the system 實驗一 由于系統(tǒng)程序中將紅外數(shù)據(jù)源碼的確定步驟省略,為了驗證程序(見 P24) 的 正確性, 此處將提取、顯示源數(shù)據(jù)的程序下載到 單片機內(nèi)部, 加以驗證。如圖 。 那么怎么確定所解碼出來的數(shù)據(jù)的正確性呢?根據(jù) NEC 編碼的原理可知,一幀數(shù)據(jù)分為用戶碼、用戶反碼、數(shù)據(jù)碼和數(shù)據(jù)反碼。數(shù)碼管上顯示的數(shù)據(jù)碼是 “ 16” 數(shù)據(jù)反碼是 “ E9” ,這兩個數(shù)據(jù)恰好成互相為反碼關(guān)系,這就驗證了對源數(shù)據(jù)解碼是正確的。 30 圖 實驗視圖一 Experimental view 1 同理,當(dāng)在遙控器上按下按鍵 “ 5” 時,如圖 ,數(shù)碼管上顯示的數(shù)字為 “ FF1CE3” ,根據(jù)驗證關(guān)系可知,次按鍵數(shù)據(jù)的解碼也是正確的。在遙控器上按下按鍵 “ 1” ,這時可以看到數(shù)碼管上顯示數(shù)字 “ 1” ,同時步進電機由靜止開始轉(zhuǎn)動,轉(zhuǎn)速約 。這說明單片機已經(jīng)受到紅外信號 ,正確的對所接收的數(shù)據(jù)進行了解碼 ,并 根據(jù)所接收到的數(shù)據(jù)執(zhí)行了預(yù)定義的操作。由于步進電機的轉(zhuǎn)速對延遲的要求有很嚴(yán)格的要求,延遲太大太小都不行,所以為了更明確的看出步進電機速度的變化,系統(tǒng)中將其定位 3 個檔位,圖 顯示的是低檔數(shù)據(jù)。
點擊復(fù)制文檔內(nèi)容
高考資料相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1