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

正文內(nèi)容

基于單片機(jī)的紅外遙控系統(tǒng)設(shè)計(jì)畢業(yè)論文(參考版)

2025-03-02 12:11本頁面
  

【正文】 32 圖 實(shí)驗(yàn)視圖 四 Experimental view 。當(dāng)在按鍵上按下按鍵 “ 4” 時(shí),可以看到數(shù)碼管上顯示數(shù)字 “ 4” ,同時(shí)步進(jìn)電機(jī)由靜止開始轉(zhuǎn)動(dòng),轉(zhuǎn)速約 2r/s,按鍵 6 被定義為中檔。 圖 實(shí)驗(yàn)視圖 三 Experimental view 3 由上面的實(shí)驗(yàn)可知,當(dāng)按鍵按下 “ 4” 時(shí)系統(tǒng)正確執(zhí)行了程序,那么其可靠行怎樣呢?下面用不同的按鍵來對(duì)其設(shè)計(jì)的可靠性加以驗(yàn)證。如圖 。 圖 實(shí)驗(yàn)視圖二 Experimental view 2 31 實(shí)驗(yàn)二 首先,將程序下載到單片機(jī)內(nèi)部,并給單片機(jī)上電。也可以判斷出未顯示的用戶碼應(yīng)為 “ 00” 。數(shù)據(jù)碼是數(shù)據(jù)反碼的反碼,根據(jù)這一原則就可以判斷數(shù)據(jù)的正確性。這說明單片機(jī)已經(jīng)受到紅外信號(hào) ,并 對(duì)所接收的數(shù)據(jù)進(jìn)行了解碼 ,且 根據(jù)所接收到的數(shù)據(jù)執(zhí)行了預(yù)定義的操作。 給系統(tǒng)上電 , 在遙控器上按下按鍵 “ 0” ,這時(shí)可以 看到數(shù)碼管上顯示數(shù)字 “ FF16E9” , 同時(shí)步進(jìn)電機(jī)由靜止開始轉(zhuǎn)動(dòng),轉(zhuǎn) 速約 。本系統(tǒng)主要用該遙控器發(fā)射數(shù)據(jù)來控制步進(jìn)電機(jī)的轉(zhuǎn)速, 為了明顯區(qū)分步進(jìn)電 機(jī)轉(zhuǎn)子的轉(zhuǎn)動(dòng)速度,系統(tǒng)中將 3 按鍵設(shè)置為最低檔,將 6 按鍵設(shè)置為中檔,將 9 按鍵設(shè)置為高速檔。測(cè)試主要分三個(gè)部分:遙控器發(fā)射數(shù)據(jù)、數(shù)碼管顯示數(shù)據(jù)和步進(jìn)電機(jī)的運(yùn)行狀態(tài)。 b 是函數(shù) uchar irdisp()中對(duì)數(shù)據(jù)重定義之后的返回值, 根據(jù) b 的大小來控制步進(jìn)電機(jī)某一相驅(qū)動(dòng)的時(shí)間,就實(shí)現(xiàn)了對(duì)步進(jìn)電機(jī)速度的控制。 } } 程序中 delay(b)表示 P1 口電平持續(xù) b 毫秒的時(shí)間,這樣步進(jìn)電機(jī)某相的狀態(tài)也對(duì)應(yīng)持續(xù) b 毫秒,這樣做的原因是因?yàn)椴竭M(jìn)電機(jī)是一個(gè)物理組件,其反映速度遠(yuǎn)遠(yuǎn)小于單片機(jī)運(yùn)行的速度,為了給步進(jìn)電機(jī)留下足夠的反應(yīng)時(shí)間,所以此處加上延遲。i++) { 28 P1=table1[i]。 for(i=0。ULN2021 的出入引腳分別和單片機(jī)的 、 、 、 相連, 其輸出端分別與 A、B、 C、 D 相連(如圖 ), 對(duì)應(yīng)驅(qū)動(dòng) A 相, 對(duì)應(yīng)驅(qū)動(dòng) B 相, 對(duì)應(yīng)驅(qū)動(dòng)C 相, 對(duì)應(yīng)驅(qū)動(dòng) D 相。 } 上面的程序只是作為測(cè)試使用,只是為了得到原數(shù)據(jù),在單片機(jī)控制系統(tǒng)中并沒有太大作用,所以本設(shè)計(jì)中只是對(duì)其 進(jìn)行簡(jiǎn)單介紹,在整個(gè)程序中并沒有體現(xiàn)出來。 disp[6]=ircode[3]/16。 disp[4]=ircode[2]/16。 disp[2]=ircode[1]/16。 disp[i]即表示轉(zhuǎn)化之后的十六進(jìn)制數(shù),那么程序中是怎樣實(shí)現(xiàn)四個(gè)字節(jié)的數(shù)據(jù)到十六進(jìn)制數(shù)的轉(zhuǎn)化的呢?這里我們?cè)?程序 將 ircode[]中 四個(gè)字節(jié)數(shù)據(jù)分別對(duì) 16取商和取余即可 得到該數(shù)據(jù)的高八位和第八位,從而 實(shí)現(xiàn)轉(zhuǎn)化,具體程序如下: void irdisp() { disp[0]=ircode[0]/16。 27 delay(2)。 P0=table1[i]。 P1=0xff。 P0=table[disp[i]]。i6。為了方便的實(shí)現(xiàn)顯示,測(cè)試程序中數(shù)碼管顯示部分采用另一種方式,具體模塊如下: void display() { uchar i。這就需要將 ircode[]中四個(gè)字節(jié)的數(shù)據(jù)轉(zhuǎn)化成十六進(jìn)制數(shù),這里可根據(jù)自己的需要隨意對(duì)其進(jìn)行定義,然后由單片機(jī)對(duì)這些十六進(jìn)制數(shù)進(jìn)行操作的定義就方便多了。下面介紹一下如何重新定義要顯示的數(shù)據(jù)的方法。 P0=0xfe,即將 P0 的第 0 位 置 0,這樣就選中了第 0 位數(shù)碼管。 } dula 是數(shù)碼管的段選端, wela 是數(shù)碼管的位選端,高電平時(shí)導(dǎo)通。 wela=0。 wela=1。 P1=0xff。 P0=a。再經(jīng)一段時(shí)間的延遲就能驅(qū)動(dòng)特定某一位數(shù)碼管,這個(gè)時(shí)間是很短的,這里利用人眼 的視覺停留從而可以看到某個(gè)數(shù)碼管被點(diǎn)亮。 數(shù)碼管顯示程序 的設(shè)計(jì) 單片機(jī)對(duì)數(shù)碼進(jìn)行驅(qū)動(dòng)時(shí)先使 U3 的 C 引腳置為高電平,然后對(duì) P0 口進(jìn)行賦值,再將 U3 的 C 引腳置為低電平,這樣就將 P0 口的段選信號(hào)鎖存在 U3 內(nèi)部。 } } return b。break。程序如下: uchar irdisp() { switch (ircode[2]) { case 0x16: { a=table[0]。在數(shù)碼管上顯示出原始 25 數(shù)據(jù)之后, 單片機(jī) 就 可根據(jù)所接收到的數(shù)據(jù)碼( ircode[2]) 來定義 該按鍵 并 設(shè)置不同的操作。 disp[5]=ircode[3]%16。 disp[3]=ircode[2]%16。 disp[1]=ircode[1]%16。 } irprosok=1。 } k++。i++) //判斷 8 位數(shù)據(jù) { value=value1。j++) //判斷 4 個(gè)字節(jié)數(shù)據(jù) { for(i=0。 //irdata 中第 k 個(gè)數(shù)據(jù) if(irreceok==1) { for(j=0。 } 因?yàn)?8 位數(shù)據(jù)為一個(gè)字節(jié),所以要解碼出四個(gè)碼字節(jié)數(shù)據(jù),需要處理四個(gè)八位數(shù)據(jù),提取數(shù)據(jù)總的程序如下: void irpros() { 24 uchar i,j,value。 if(irdata[k]7) //若一個(gè)位數(shù)據(jù)傳送時(shí)間大于 則說明傳送的數(shù)據(jù)是 1。這樣就實(shí)現(xiàn)了將數(shù)據(jù)按照高地位的順序排列, 然后將得到的數(shù)值右移即可提取出該位數(shù)值 [13]。 //使其重新計(jì)數(shù),計(jì)時(shí) } } 數(shù)據(jù) 提取 程序的設(shè)計(jì) 由于數(shù)組 irdata[]中的數(shù)據(jù)僅僅是每一位數(shù)據(jù)的時(shí)長(zhǎng),并不是直接的有效數(shù)據(jù),所以需要對(duì) irdata 中的數(shù)據(jù)進(jìn)行進(jìn)一步處理,方可得到最終的有效數(shù)據(jù)。 } } else //第一次進(jìn)入外部中 后,進(jìn)入 該選項(xiàng) { startflag=1。 irreceok=1。 //然后根據(jù) irtime 的時(shí)長(zhǎng)判斷數(shù)據(jù)的值 irtime=0。 } 23 irdata[bitnum]=irtime。當(dāng) bitnum=33時(shí),表示一幀數(shù)據(jù)接收完畢,令 bitnum=0、 startflag=0。設(shè)定一個(gè)一維數(shù)組 irdata[bitnum]來存放提取出的 33 位數(shù)據(jù),令 bitnum=irtime,intime 是以 200us為基準(zhǔn)的時(shí)間變量,它表示某一位數(shù)據(jù)的時(shí)長(zhǎng) [12]。 由于發(fā)射端采用 PPM 調(diào)制方式,數(shù)據(jù) “ 0” 和 “ 1” 的兩個(gè)下降沿之間的時(shí)間不同,所以對(duì)數(shù)據(jù) “ 0” 和 “ 1” 的提取可根據(jù)相鄰兩個(gè)下降沿之間的時(shí)長(zhǎng)確定。 系統(tǒng) 整體流程圖 將附錄 B。信號(hào)到來后,單片機(jī)需要先將檢測(cè)到的信號(hào)進(jìn)行采集、保存,然后根據(jù)一定的規(guī)則對(duì)采集的數(shù)據(jù)進(jìn)行解碼,最終還原紅外數(shù)據(jù),并將數(shù)據(jù)在數(shù)碼管上顯示和對(duì)步進(jìn)電機(jī)進(jìn)行控制。在送位選數(shù)據(jù)之后,給六個(gè)數(shù)碼管的為選段都傳送同一個(gè)數(shù)據(jù) ,由于同一時(shí)間只有一位數(shù)碼管導(dǎo)通,所以只有選中的一位數(shù)碼管有顯示,其余的數(shù)碼管沒有顯示,這樣就實(shí)現(xiàn)了對(duì)某一位數(shù)碼管的驅(qū)動(dòng)。 設(shè)計(jì)中使用的是三個(gè)封裝在一起的八段共陰數(shù)碼管,這樣共能顯示六位數(shù)據(jù)。 圖 共陰極數(shù)碼管 Common cathode nixie tube 字段式數(shù)碼管按字段的不同又可分為七段數(shù)碼管和八段數(shù)碼管。 V 代表共陰極 ,與共陽極相反。 因?yàn)?“8”是十進(jìn)制數(shù)中筆畫最多的一個(gè)數(shù)字,所以要用七只 LED 排列成 “8”的形狀,再按要求是數(shù)碼管的某些字段(筆畫)發(fā)光,就可以顯示 0~9 這十個(gè)數(shù)字,其外形結(jié)構(gòu)如圖 。在系統(tǒng)中數(shù)碼管的驅(qū)動(dòng)電路如圖 。 圖 數(shù)碼管的驅(qū)動(dòng)電路 Digital tube drive circuit 圖 八段數(shù)碼管字段 Eight out of digital pipe field 21 鎖存器的鎖存控制端分 別與單片機(jī)的 和 引腳相連,分別控制數(shù)碼管的段選和位選信號(hào)。 它的輸入是和標(biāo)準(zhǔn) CMOS 輸出兼容的,加上拉電阻,他們能和LS/ALSTTL 輸出兼容。 數(shù)據(jù)顯示模塊的設(shè)計(jì) 在遙控器按鍵按下之后,如何判斷單片機(jī)系統(tǒng)是否已經(jīng)工作以及解碼的正確性呢?為了能直觀的看到解碼的結(jié)果,這里在使用數(shù)碼管實(shí)現(xiàn)對(duì)所接收數(shù)據(jù)的顯示。 本系統(tǒng)采用一向勵(lì)磁方式(通電方式為 ABCDA...),每次轉(zhuǎn)動(dòng)的角度是步距角的 兩 倍, 即 421/64= 。 表 28BYJ48型四相八拍步進(jìn)電機(jī)的驅(qū)動(dòng)方式 Table 28BYJ48 type fourphase eightshot of the stepper motor drive 導(dǎo)線顏色 1 2 3 4 5 6 7 8 紅 + + + + + + + + 橙 黃 粉 藍(lán) 28BYJ48 型步進(jìn)電機(jī)是一種減速步進(jìn)電機(jī),減速比是 1/64,即電機(jī)轉(zhuǎn)動(dòng) 64 周電機(jī)外部的轉(zhuǎn)軸轉(zhuǎn) 動(dòng) 1 周。 要對(duì) 28BYJ48 型四相八拍步進(jìn)電機(jī)進(jìn)行驅(qū)動(dòng) ,只需在四個(gè)定子上交替通電 ,即可產(chǎn)生步進(jìn)所需的電磁力 ,使轉(zhuǎn)子按照一定的方向和角度轉(zhuǎn)動(dòng)。而 0、 3 號(hào)齒和 A、 B相產(chǎn)生一個(gè)錯(cuò)齒角度, 5 號(hào)齒就和 A、 D 相磁極產(chǎn)生一個(gè)錯(cuò)齒角度。 如圖 ,開始時(shí),開關(guān) SB 接通電源, SA、 SC、 SD 斷開, B 相磁極和轉(zhuǎn)子 0、 3號(hào)齒在磁力矩的作用下對(duì)齊,同時(shí),轉(zhuǎn)子的 4 號(hào)齒就和 C、 D 相磁 極產(chǎn)生一個(gè)錯(cuò)齒角度, 5 號(hào)齒就和 D、 A 相磁極產(chǎn)生一個(gè)錯(cuò)齒角度。 該步進(jìn)電機(jī)為一四相步進(jìn)電機(jī),采用單極性直流電源供電。當(dāng) 圖 28BYJ48型步進(jìn)電機(jī) 28BYJ48type stepping motor 通電狀態(tài)的改變完成一個(gè)循環(huán)時(shí),轉(zhuǎn)子轉(zhuǎn)過一個(gè)齒距 [10]。當(dāng)對(duì)步進(jìn)電機(jī)施加一系列連續(xù)不斷的控制脈沖時(shí),轉(zhuǎn)子可以連續(xù)不斷地轉(zhuǎn)動(dòng)。也可以通過控制脈沖頻率來控制步進(jìn)電機(jī)的轉(zhuǎn)動(dòng)速度和加速度,從而達(dá)到調(diào)速的目的。每當(dāng)步進(jìn)電機(jī)的驅(qū)動(dòng)器接收到一個(gè)脈沖信號(hào)后,步進(jìn)電機(jī)將會(huì)按照設(shè)定的方向轉(zhuǎn)動(dòng)一個(gè)固定的角度,稱為角位移步進(jìn)電機(jī)。 其外觀如圖 。 圖 步進(jìn)電機(jī)控制電路 Stepper motor control circuit 1. 28BYJ48 型步進(jìn)電機(jī)簡(jiǎn)介 步電機(jī)是一種將電脈沖轉(zhuǎn)化為角位移的執(zhí)行裝置。輸入端引腳 4 分別與輸出引腳 1 1 1 13 引腳對(duì)應(yīng),控制著步進(jìn)電機(jī)的 A、 B、C、 D 四相。當(dāng)出入端為高電平時(shí)輸出端為低電平,當(dāng)輸入端為低電平時(shí),輸出端為高電平。當(dāng) 有中斷信號(hào)時(shí),觸發(fā)中斷并查詢中斷時(shí)間,并和紅外起始碼、 “ 0” 、 “ 1” 和終止碼的時(shí)間進(jìn)行比較,從而檢測(cè)紅外操作碼。其結(jié)構(gòu)框圖如圖 所示: 圖 HS0038結(jié)構(gòu)框圖 HS0038 structure block diagram HS0038 一體化接收頭接收空外遙控器發(fā)射的信號(hào),數(shù)據(jù)輸出口和單片機(jī)的 口相連。從而使電路達(dá)到最簡(jiǎn)化,靈敏度和抗干擾性都非常,可以說是一個(gè)接收紅外信號(hào)的理想裝置。 要求輸入信號(hào)需是已經(jīng)被調(diào)制的信號(hào)。 HS0038 是一種用于紅外遙控接收或其他方面的小型一體化接收頭,中心頻率為,可改善自然光的干擾,獨(dú)立的 PIN 二極管和前置 放大器集成在同一封裝上。 連接電路如圖 所示 。 紅外接收模塊的設(shè)計(jì) HS0038 的 信號(hào) 輸出引腳經(jīng)過 1K 的電阻與單片機(jī)的 引腳相連,單片機(jī)時(shí)時(shí)檢測(cè) 引腳上電平的變化。該系統(tǒng) 使用一個(gè)整體的 市面上已有的遙控器來研究單片機(jī)如何解碼如何根據(jù)信號(hào)的不同執(zhí)行不同的操作 。 這樣就將遙控器發(fā)射的原始信號(hào)解碼出來了,然后即可用所解碼的數(shù)據(jù)進(jìn)行其他的控制。 那么就可以取 和 中間的一個(gè)數(shù)值 7,若某位數(shù)據(jù)大于 7 則認(rèn)為該位是數(shù)據(jù) “ 1” ,若某位數(shù)據(jù)小于 7,則認(rèn)為該為是數(shù)據(jù) “ 0” 。 定時(shí)器 T0 定時(shí)基數(shù)是 0x38,即 irtime 每次自動(dòng)加一一次時(shí)間是 , irdata[]中的數(shù)據(jù)也是以此時(shí)間為基數(shù)的。由于 PPM 調(diào)制方式的數(shù)據(jù) “ 0” 和 “ 1” 持續(xù)的時(shí)長(zhǎng)并不相等,而時(shí)長(zhǎng)的差異又遠(yuǎn)遠(yuǎn)大于單片機(jī)的機(jī)器周期,所以可以根據(jù) irdata[]中每一個(gè)數(shù)據(jù)的大小來判斷該位是 “ 0” 或 “ 1” 。若沒有檢測(cè)到第二個(gè)下降沿,則單片機(jī)重新對(duì) 口進(jìn)行掃描。當(dāng)檢測(cè)到第一個(gè)下降沿之后開始計(jì)時(shí), 同時(shí) 令開始標(biāo)志位 startflag=1,令相鄰兩個(gè)下降沿間隔時(shí)間 irtime=0,以便準(zhǔn)備接收數(shù)據(jù)位。 在引導(dǎo)碼之后是 32bit 的數(shù)據(jù) “ 0” 或 “ 1” ,當(dāng)檢測(cè)到引導(dǎo)碼之后就要對(duì)之后的數(shù)據(jù)進(jìn)行采集。由于紅外信號(hào)的引導(dǎo)碼由 的高電平和 的低電平組成 (如圖 ) ,由引導(dǎo)碼到用戶碼開始這段時(shí)間內(nèi)會(huì)產(chǎn)生兩個(gè)上升沿,信號(hào)經(jīng)過紅外一體化接收頭反向后到
點(diǎn)擊復(fù)制文檔內(nèi)容
高考資料相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1