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

正文內(nèi)容

畢業(yè)設(shè)計-基于89c51單片機的紅外通訊軟件設(shè)計(參考版)

2025-01-20 00:10本頁面
  

【正文】 謝謝! 基于單片 機的紅外 通訊軟件設(shè)計 1 35 參考文獻 [1] 百度百科 紅外通訊 [2] 激光網(wǎng) 紅外技術(shù)的現(xiàn)狀和未來 [3] 蘇長贊 .紅外線與超聲波遙控 .北京 人民郵電出版社, 1997 [4] 張玉香 .新型遙控接收模塊 . HS0038[ J]無線電, 1998, 7 [5] 肖景和 .實用遙控電路 . 北京 人民郵電出版社, 1998 [6] Joseph M. Kah , John R. Barry .Wireless Infrared Communications. Junc 19,1997. Dept. of Electrical。 通過本論文對紅外通訊系統(tǒng)的研究發(fā)現(xiàn),紅外通訊的確是一種非常 實用的遠(yuǎn)程控制 技術(shù) ,成本低,點對點控制使用方便, 資料及其技術(shù)成熟便于深入研究探討。 仿真系統(tǒng)中,主要使用的是 89C51芯片為核心,分成紅外通訊的發(fā)射端和接收端兩部分電路,實現(xiàn)了利用紅外通訊技術(shù)對電機的控制,液晶顯示器的控制。 基于單片 機的紅外 通訊軟件設(shè)計 1 34 結(jié)論 紅外通訊應(yīng)用越來越廣泛,各種家用電器,電子產(chǎn)品,醫(yī)療設(shè)備等無一不用到紅外通訊,所以對于紅外通訊的研究設(shè)計,是十分有必要的。 對于這個問題,我是通過在紙上繪制出,編碼過程的所有方波波形 發(fā)現(xiàn)的。 這個問題之前有提到過,我們解碼用的是接收端單片機的外部中斷 1,中斷觸發(fā)方式是下降沿,但是編碼的位“ 0”和位“ 1”卻是同樣先一段 ,s 的高電平,再根據(jù) 和 的低電平來區(qū)別。后來我是根據(jù),接收端的反應(yīng)做出判斷,問題出在接收端的 用戶按鍵操作碼發(fā)送部分。導(dǎo)致一次用戶輸入按鍵就發(fā)送多個操作碼。語句。下面就我編寫過程中,遇到的幾個比較重大的問題,并且如何發(fā)現(xiàn)及 基于單片 機的紅外 通訊軟件設(shè)計 1 33 其解決進行分析。編譯調(diào)試結(jié)果如下圖所示: 基于單片 機的紅外 通訊軟件設(shè)計 1 32 這樣便完成紅外通訊系統(tǒng)軟件編寫調(diào)試方面的內(nèi)容。編譯過程中的信息將出現(xiàn)在輸出窗口中的 Build 頁中,如果源程序有語法錯誤,會有錯誤報告出現(xiàn),雙擊該行,可以定到出錯的位置,對源程序反復(fù)修改后,最終會得到如圖所示的結(jié)果,提示獲得了名為 紅外通訊系統(tǒng) .hex 的文件,該文件即可被編程器讀入并寫到芯片中,同時還產(chǎn)生了一些其他相關(guān)文件可被用于 KEIL的仿真與調(diào)試。 編譯調(diào)試程序 基于單片 機的紅外 通訊軟件設(shè)計 1 31 完成好項目和源文件的建立后,便可以 開始 編寫代碼, 代碼編寫完成后 編譯、連接:在設(shè)置好工程后,既可以進行編譯、連接。在工程窗口的文件頁中,出現(xiàn)了“ Target1”,前面有 “ +”號,點擊“ +”展開,可以看到下一層的“ Source Group1” ,這時的工程還是一個空工程,里面什么文件也沒有,需要手動把剛才編寫好的源程序加入,點擊“ Souce Group”使其反白顯示,然后,點擊鼠標(biāo)右鍵,出現(xiàn)一個下拉菜單。項目建立完成后,開始建立源文件, 使用菜單 “ FileNew”或者點擊工具欄的新建文件按鈕,即可在項目窗口的右側(cè)打 開一個新的文本編輯窗口,在該窗口中輸入 C語言源程序。 在文件名的框中填入項目的名稱 ” 紅外通訊系統(tǒng) ” ,然后保存。至于其它功能,只要進行普通的測試,保證它不出 現(xiàn)明顯和嚴(yán)重 bug即可。對于 最核心 功能 ,多進行一些健壯性測試、穩(wěn)定性、安全性等測試。至于其它的 非 重點功能,只要不出明顯 bug,有點小缺陷無傷大雅。對于重點功能中的 “ 常用功能 ” ,要保證 時間 性能夠好(能快速響應(yīng))。作為一個職業(yè)的開發(fā)人員,不應(yīng)該以自己的興趣和喜好來決定開發(fā)的輕重緩急。 編寫代碼方面: 很 開發(fā)人員 有幾個通?。合茸鲇腥せ蛉菀椎墓δ埽缓笤僮鰺o聊或者繁瑣的功能;對自己有興趣的功能投入精力多,對自己沒興趣的簡單應(yīng)付。這個時候透徹分析程序該如何寫,是否切合實際至關(guān)重要。本文的汽車行駛記錄儀系統(tǒng)在設(shè)計時也使用了一些軟件抗干擾措施。 軟件抗干擾以其設(shè)計靈活。抗干擾措施有硬件措施和軟件措施。 基于單片 機的紅外 通訊軟件設(shè)計 1 29 軟件抗干擾技術(shù) 隨著單片微機在各個領(lǐng)域中的應(yīng)用越來越廣泛,對其可靠性要求也越來越高。當(dāng)用戶定時開啟后, LED指示燈亮,定時器 1開始計數(shù),中斷一次 TimeCount 自加一次,并且每次中斷都通過表達(dá)式來判斷是否達(dá)到用戶指定的中斷時間,表達(dá)式為: if((Time*1000)/90 == TimeCount)。 電機 P0口不同值對應(yīng)電機狀態(tài)如下表: P0口的值 電機狀態(tài) 0x00 停止 0x02 電機低速檔運行 0x04 電機中速檔運行 0x08 電機高速檔運行 除了控 制電機轉(zhuǎn)速外,程序還需要控制一個接與 P37口的 LED燈,用來指示電機是否定時運行。在仿真中,控制三個不同電壓的單片機管腳選用的是 P10, P11, P12。這樣雙方達(dá)成共同的協(xié)議,變可以進行通信。如:用戶按鍵按下 0,那么便將 SENDCODE0作為操作碼拿去編碼,然后發(fā)送出去 (SENDCODE 的定義語句為 :define SENDCODE0 0x60)。通信協(xié)議在“ “頭文件中。 Y Y Y 若接收完 8 位,則IsNewCode=1,key_code 完整。 key_bit_count8? 根據(jù) buf_count 的次數(shù)來判斷是 0 還是 1 ,再給buf_key_code 賦值。 ir_status =0 ir_status =2 ir_status =1 是 否 為 起始碼 ? ir_status 賦值為 1,表示接收完起始碼。然后IsNewCode=0,繼續(xù)回到等待發(fā)射端用戶的操作。根據(jù)位 0和位 1的脈沖寬度可知,如果 40buf_count50則說明接收到一個 1,20buf_count30 則說明接收到一個 0。然后再進行判斷 ,是否為起始碼,如果是則 buf_count 的次數(shù)應(yīng)該為 250buf_count300 因為 9ms+=即 ,13500/50=275,這時候接受狀態(tài) ir_status=1,表示已經(jīng)接受過起始碼,那么接下來接受的應(yīng)該是系統(tǒng)識別碼。amp。 buf_count 來計算接受到的脈沖的寬度 ,如果脈沖的寬度不是合法的信號 ,那么就去除。 mon_code_count:已接收系統(tǒng)識別碼計位 key_bit_count:已接收操作碼計位 buf_key_code:操作碼位存儲 key_code:完全操作碼 IsNewCode:是否有新操作碼傳送 。 buf_count:儲存 Count計數(shù) 。 用于解碼程序的變量和函數(shù)主要有 : recive():外部中斷函數(shù) 。 也就是說,解碼 的關(guān)鍵是如何識別“ 0”和“ 1”,從對位的定義我們可以發(fā)現(xiàn)“ 0”、“ 1”均以 的高電平開始,不同的是低電平的寬 基于單片 機的紅外 通訊軟件設(shè)計 1 26 度不同,“ 0”為 ,“ 1”為 ,所以必須根據(jù)低電平的寬度區(qū)別“ 0”和“ 1” .而在接收端程序中,電平的寬度之前說了,是使用定時器 0 中斷函數(shù)中的 Count來計數(shù) ,定時器 50us中斷一次。 這樣便產(chǎn)生一個 38KHz 的方波,輸出后在仿真中通過元件與編碼后的數(shù)據(jù)結(jié)合。TH0 設(shè)置為 0XF3, TL0=0XF3。 38KHz 載波信號調(diào)制程序 本次系統(tǒng)中的 38KHz 的載波信號調(diào)制使用外接單片機的內(nèi)部定時器 0 產(chǎn)生 38KHz 方波與編碼后的信 號結(jié)合 再送到紅外發(fā)射器發(fā)送出去。OverCode()。DataCode(SendCode)。DataCode(0X55)。沒關(guān)系,這一步,我們要在結(jié)束碼中完成,所以 OveCode函數(shù)中先發(fā)送一段 ,用于操作碼最后一位的外部中斷溢出和寬度計算,隨后發(fā)送一段 和 23ms的高電平用于 結(jié)束這次的操作碼發(fā)送過程。 DataCode()用于 基于單片 機的紅外 通訊軟件設(shè)計 1 25 發(fā)送系統(tǒng)識別碼和操作碼 ,函數(shù)中 將參數(shù) SendCode逐位分解,從低位開始發(fā)送;如果該位是 0,則發(fā)送位 ” 0” ,即先發(fā)送 ;如果該位是 1,則發(fā)送位 ” 1” ,即先發(fā)送 平;連續(xù)發(fā)送八位這樣的位 0和位 1表示一個完整的操作碼。而在這四個函數(shù)中用到的函數(shù)均有定時器 0來延時,做到 100%的精確。程序中,采用的是模擬發(fā)送一次原碼后再發(fā)送一次反碼的形式。用戶碼和數(shù)據(jù)碼統(tǒng)稱為傳送碼 ,通常為 8 位或 16 位的“ 0”“ 1”碼 ,為了避免出現(xiàn)差錯 ,每次發(fā)射的傳送碼中一般都包含兩次編碼 :一次為原碼 ,一次為反碼 。編碼主 要是由用戶碼和數(shù)據(jù)碼構(gòu)成 ,通常還包括引導(dǎo)脈沖 ,引導(dǎo)脈沖總是出現(xiàn)在編碼脈沖的前頭 ,作為遙控接收的啟動信號 。 基于單片 機的紅外 通訊軟件設(shè)計 1 24 模擬編碼芯片的編碼程序設(shè)計 這里編碼程序模擬的是 uPD6121編碼芯片。0XF0 得到列的狀態(tài)值,再將該值加上行值 ,如是第一行則加上該值加上 0X0E, 便 可得到行和列的值。KeyCheck()函數(shù)的開始時,先將 P0 口的低四位至高電平,高四位至低電平 ,即P0=0XF0;如果有鍵按下,根據(jù)則根據(jù)圖中可知 ,不可能為原本的低四位高電平,高四位低電平,則 P0 != 0XF0;然后再接下來分別判斷,是哪一行,如果是第一行則 P0為 0XFE,第二行 P0為 0XFD,第三行 P0為 0XFB,第四行 P0 為 0XF7,程序中為每一行的判斷設(shè)置一個 if 判斷語句,若如何判斷則說明是該行,進入該行的 if 語句 。四乘四矩陣鍵盤在仿真使用的是 KEYPAD 仿真元件,其內(nèi)部的各按鍵之間的接線大致如下圖所示 , C1 至 C4 基于單片 機的紅外 通訊軟件設(shè)計 1 23 分別接 P0至 P3, R1 至 R4分別接 P4至 P7。具體的中文字型編碼可參見 ST7920 GB 中文字型碼表 。 而不管是寫指令 還是寫數(shù)據(jù),都應(yīng)該注意 LCD1602 的延時時序,由于 E為高脈沖的時候?qū)憯?shù)據(jù)和寫指令,所以程序中在 E為高脈沖后使用 基于單片 機的紅外 通訊軟件設(shè)計 1 22 延時函數(shù) DelayNMS(1)讓其符合 LCD1602的延時時序,讓指令和數(shù)據(jù)準(zhǔn)確讀入到顯示器中。 8位并行數(shù)據(jù)傳送時序下圖如所示: 單片機寫數(shù)據(jù)到 LCD1602 顯示器的時序圖 單片機從 LCD1602讀數(shù)據(jù)時序圖 RS 為并行的指令 /數(shù)據(jù)選擇信號, RS=0 表示并行指令選擇信號, RS=1 表示并行數(shù)據(jù)選擇信號; E為 LCD1602的使能信號,由時序圖可知,使能信號為高電有效; R/W為并行的讀寫選擇信號,邏輯“ 1”表示讀,邏輯“ 0”表示寫 。) 停止電機 基于單片 機的紅外 通訊軟件設(shè)計 1 20 程序流程圖如下:發(fā)射端啟動 接收端啟動 初始化 LCD 液晶顯示器顯示初始信息 初始化 是否有用戶輸入? 按鍵輸入檢測 N Y 根據(jù)用戶輸入,得到相關(guān)的按鍵信息后,進行編碼 編 碼 后 數(shù) 據(jù) 與38KHz 的載波結(jié)合 將經(jīng)過載波調(diào)制后的編碼數(shù)據(jù)發(fā)送出去 等待來自發(fā)射端的數(shù)據(jù) ? 啟動定時器 0, 50us累計一次,BI 技術(shù) 送入外部中斷函數(shù),并且獲得定時器累計 是否為 8位傳送碼 數(shù)據(jù)發(fā)送 N Y 解碼傳送碼 ,得到用戶輸入數(shù)據(jù) 控 制 電機運行 LCD 液晶顯示器顯示電機相關(guān)信息 基于單片 機的紅外 通訊軟件設(shè)計 1 21 LCD1602 液晶顯示器軟件設(shè)計 串行數(shù)據(jù)傳送和并行數(shù)據(jù)傳送。 然后 IsNewCode=0,繼續(xù)回到等待發(fā)射端用戶的操作。根據(jù)位 0 和位 1 的脈沖寬度可知,如果 40Count50 則說明接收到一個 1,20Count30 則說明接收到一個 0。然后再進行判斷 ,是否為起始碼 ,如果是則 Count 的次數(shù)應(yīng)該為 250Count300 因為 9ms+= 即 ,13500/50=275,這時候接受狀態(tài)ir_status=1,表示已經(jīng)接受過起始碼,那么接下來接受的應(yīng)該是系統(tǒng)識別碼。外部中斷接受到下降沿的脈沖后將會進入外部中斷函數(shù)recive,獲取 Count 的 計數(shù),根據(jù) Count 的次數(shù)來計算接受到的脈沖的寬度 ,如果脈沖的寬度不是合法的信號 ,那么就去除。顯示器顯示電機初始狀態(tài) ,主程序開始停留在 while(IsNewCode)的循環(huán)等待新的發(fā)射端用戶輸入 。根據(jù)發(fā)射端和接收端的通信協(xié)議( 在“ ”頭文件中)在 Transmit()編碼函數(shù)中 發(fā)送按鍵數(shù)值指定的數(shù)據(jù)碼 ,依次先發(fā)送一次起始碼(9ms 高電平 , 低電平 ),然后發(fā)送兩次系統(tǒng)識別碼 (0x55 與 0xAA),一次 數(shù)據(jù)碼 碼一次 數(shù)據(jù)碼 的反碼,最后再發(fā)送一次結(jié)束碼 ( 9ms 高電平 , 低電平 ,) ,這樣一套順序組成一個完整操作碼 , 完全模擬 編碼芯片。 紅外通訊的數(shù)據(jù)發(fā)送是通過區(qū)別脈沖的低電平寬度來區(qū)分位 0和位 1,位 0 和位 1 的高電平均為 , 而低電平位 0 為 ,位 1 為 。軟件要有先進些和可擴展性,軟件要能滿足客戶的要求
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1