課程設(shè)計報告樣板_第1頁
課程設(shè)計報告樣板_第2頁
課程設(shè)計報告樣板_第3頁
課程設(shè)計報告樣板_第4頁
課程設(shè)計報告樣板_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、西 安 電 子 科 技 大 學(xué)電 子 工 程 學(xué) 院課 程 設(shè) 計(報告)任 務(wù) 書學(xué)生姓名 指導(dǎo)教師 余柏生 職稱 高工 學(xué)生學(xué)號 020X1122 專業(yè) 電子信息工程 題目 遠(yuǎn)程巡回檢測中的數(shù)據(jù)檢錯糾錯電路設(shè)計 任務(wù)與要求任務(wù): 對基于單片機(jī)的漢明碼檢錯、糾錯算法進(jìn)行研究,并設(shè)計電路驗(yàn)證漢明碼的編碼和譯碼及其糾錯性能。具體要求如下:1.詳細(xì)分析了漢明碼的糾錯原理;2.完成(12,8)漢明碼的編碼和譯碼硬件電路設(shè)計及調(diào)試;3.完成基于STC89C51芯片的(12,8)漢明碼的編碼和譯碼及其糾錯程序的設(shè)計;4. 完成上述任務(wù)的軟硬件及算法設(shè)計和課程設(shè)計論文一篇。開始日期 2010 年12 月1

2、5日 完成日期 2011年1月30日 課程設(shè)計所在單位 電子工程學(xué)院2010 年 12月 15 日課程設(shè)計報告設(shè)計題目:遠(yuǎn)程巡回檢測中的數(shù)據(jù)檢錯糾錯電路設(shè)計 學(xué) 院: 電 子 工 程 學(xué) 院 專 業(yè): 電 子 信 息 工 程 班 級: 學(xué)號: 學(xué)生姓名: 電子郵件: 時 間: 2010 年 10月 成 績: 指導(dǎo)教師: 余 柏 生 摘 要本論文介紹了基于漢明碼的數(shù)據(jù)檢錯糾錯系統(tǒng),詳細(xì)分析了漢明碼的糾錯原理,給出了基于STC89C51單片機(jī)(12,8)編解碼的實(shí)現(xiàn)方案。數(shù)字信號在傳輸過程中需要用信道編碼來降低誤碼率,提高數(shù)字通信的可靠性,漢明碼正是一種編碼效率高且具有前向糾錯能力的信道編碼。單片

3、機(jī)穩(wěn)定的體系結(jié)構(gòu)、極低的功耗、極快的運(yùn)算速度等特點(diǎn),使其廣泛應(yīng)用于數(shù)據(jù)的實(shí)時處理、工業(yè)控制、網(wǎng)絡(luò)通信等方面。本課題中使用STC89C51單片機(jī)實(shí)現(xiàn)了(12,8)漢明碼的編碼和譯碼。關(guān)鍵詞:漢明碼 單片機(jī) 編碼 譯碼AbstractThis paper presents the data error correction system based on Hamming code, giving a detailed analysis of the FEC Hamming principle, and the realization of the program based on the STC8

4、9C51 SCM (12, 8) code.Digital signals in the transmission needs channel code to reduce the error rate and to improve the reliability of digital communication. It is proved that Hamming code is a efficient channel coding with the FECs ability. SCM, stable in architecture, low power in consumption and

5、 fast in computing speed, is the widely used in real-time data processing, industrial control, network communications, and so on. The issue using of STC89C51 handles Hamming (12, 8) encoding and decoding.Keywords: Hamming Code SCM Encoding Decoding1 / 32文檔可自由編輯打印目 錄第一章 緒 論 1.1 本課題研究的目的及意義21.2 本文所研究的

6、主要內(nèi)容及所做工作2第二章 漢明碼校驗(yàn)原理2.1 漢明碼冗余位和監(jiān)督關(guān)系式的構(gòu)造方法32.1.1 漢明碼的特點(diǎn)32.1.2 構(gòu)造漢明碼冗余位和監(jiān)督關(guān)系式的方法42.1.3 構(gòu)造校正因子和監(jiān)督關(guān)系式時應(yīng)遵循的原則52.1.4 錯碼與S0S1S2S3的對應(yīng)關(guān)系52.2漢明碼校驗(yàn)方法的實(shí)現(xiàn)62.2.1 漢明編碼62.2.2 漢明解碼與糾錯7第三章 漢明碼編解碼系統(tǒng)3.1 系統(tǒng)整體功能93.2 系統(tǒng)硬件設(shè)計103.2.1 系統(tǒng)整體硬件方案103.2.2 系統(tǒng)具體硬件設(shè)計113.3 系統(tǒng)軟件設(shè)計133.3.1 單片機(jī)結(jié)構(gòu)介紹133.3.2 軟件中用到的單片機(jī)資源介紹153.3.3 系統(tǒng)軟件具體設(shè)計22第

7、四章 實(shí)驗(yàn)及數(shù)據(jù)分析4.1 測試平臺建立244.2 測試結(jié)果244.3 小結(jié)24結(jié)束語.25參考文獻(xiàn)26第一章 緒 論1.1 本課題研究的目的及意義在當(dāng)今和未來的信息化社會中,數(shù)字通信已成為信息傳輸?shù)闹匾侄危驍?shù)字化已成為當(dāng)今社會的主要潮流。但是,數(shù)字信號在傳輸過程中,假性噪聲、碼間串?dāng)_等都會產(chǎn)生誤碼,因此需要用信道編碼來降低誤碼率,提高數(shù)字通信的可靠性,漢明碼正是一種編碼效率高且具有前向糾錯能力的信道編碼。常用的檢錯碼有奇偶校驗(yàn)、校驗(yàn)和、漢明碼、CRC循環(huán)冗余校檢碼等。其中,奇偶校驗(yàn)只能檢查出傳輸過程中的奇數(shù)個錯誤,不能發(fā)現(xiàn)偶數(shù)個錯誤,難以滿足傳輸中對誤碼率的要求;校驗(yàn)和算法雖然簡單,但

8、不能檢測出序列的錯誤,而且冗余碼較多,降低了系統(tǒng)的性能;CRC循環(huán)碼可以檢測突發(fā)錯誤,但用軟件編碼、譯碼比較復(fù)雜,占用CPU時間較長,在對實(shí)時性要求很高的工程應(yīng)用中實(shí)現(xiàn)起來較為困難。漢明碼是在原編碼的基礎(chǔ)上附加一部分代碼,使其滿足糾錯碼的條件。它屬于線性分組碼,由于線性碼的編碼和譯碼容易實(shí)現(xiàn),至今仍是應(yīng)用最廣泛的一類碼。漢明碼的抗干擾能力較強(qiáng),可以糾正1個錯誤發(fā)現(xiàn)2個錯誤。漢明碼是碼距的線性分組碼,它不僅性能好,而且編碼、譯碼簡單,易于工程實(shí)現(xiàn),因而在實(shí)際差錯控制系統(tǒng)中得到了廣泛應(yīng)用。1.2 本文所研究的主要內(nèi)容及所做工作本文對基于單片機(jī)的漢明碼檢錯、糾錯算法進(jìn)行了研究,并采用電路驗(yàn)證了漢明碼

9、的編碼和譯碼。內(nèi)容主要包括:1、 詳細(xì)分析了漢明碼的糾錯原理;2、 完成(12,8)漢明碼的編碼和譯碼硬件電路設(shè)計及調(diào)試;3、 完成基于STC89C51芯片的(12,8)漢明碼的編碼和譯碼程序設(shè)汁。 第二章 漢明碼校驗(yàn)原理2.1 漢明碼冗余位和監(jiān)督關(guān)系式的構(gòu)造方法2.1.1 漢明碼的特點(diǎn)海明碼是R. Hamming提出的, 一種可以糾正一位錯的差錯控制編碼。漢明碼是一種高碼率的糾正單個錯誤的線性分組碼。它是在原編碼的基礎(chǔ)上附加一部分代碼,使其滿足糾錯碼的條件。它屬于線性分組碼,由于線性碼的編碼和譯碼容易實(shí)現(xiàn),至今仍是應(yīng)用最廣泛的一類碼。漢明碼是一個碼距為的線性碼,它可以檢查出兩位錯誤,糾正一位

10、錯誤,它有以下特點(diǎn):碼長:;信息碼位:;最小碼距:;糾錯能力:。其中,為監(jiān)督位,是不小于2的整數(shù),給定后,可構(gòu)造出漢明碼。當(dāng)時,可構(gòu)造出分組碼;時,可構(gòu)造出分組碼。設(shè)原代碼的碼長為比特,附加糾錯編碼部分為比特,則合成后的糾錯碼為比特。如果這種糾錯碼的糾錯能力為糾正1個差錯,則應(yīng)滿足如下基本條件:(2-1)當(dāng)上式取等號時則稱漢明碼(Hamming Code)。干擾不僅使原代碼的每一位(比特)可能出錯,而且附加糾錯位(比特)也可能出錯,故“一個差錯”的情況共有種,加上“正常”狀態(tài)共有種狀態(tài),而比特的附加糾錯位要能分辨這種狀態(tài)。2.1.2 構(gòu)造漢明碼冗余位和監(jiān)督關(guān)系式的方法一個簡單奇偶校驗(yàn)碼的設(shè)計思

11、路為:若信息位為位,表示為,加上一位偶校驗(yàn)位(冗余位) ,構(gòu)成一個位的碼字,在接收端校驗(yàn)時,可按以下關(guān)系式來計算:(2-2)若,則無錯;若,則有錯。上式(2-2)可稱為監(jiān)督關(guān)系式,稱為校正因子。在奇偶校驗(yàn)情況下,只有一個監(jiān)督關(guān)系式和一個校正因子,其取值只有兩種(0或1),分別代表了無錯和有錯的情況,而不能指出差錯所在的位置。若增加冗余位,也相應(yīng)地增加監(jiān)督關(guān)系式和校正因子,就能區(qū)分更多的情況。對于時漢明碼冗余位和監(jiān)督關(guān)系式的具體構(gòu)造過程和方法如下:因?yàn)榍?,所以,即至少需?位冗余碼,對應(yīng)產(chǎn)生4個校正因子和4個監(jiān)督關(guān)系式,形成種不同取值,用其中11種分別表示無錯和中一位錯的情況。構(gòu)造表如下表2.1

12、所示。表2.1 冗余和監(jiān)督關(guān)系式的構(gòu)造表由表2.1可知冗余碼為:(2-3)(2-4) (2-5)(2-6)監(jiān)督關(guān)系式為:(2-7)(2-8)(2-9)(2-10)2.1.3 構(gòu)造校正因子和監(jiān)督關(guān)系式時應(yīng)遵循的原則漢明碼是線性分組碼,線性分組碼的編碼設(shè)計就是在滿足給定條件(如碼距)下,如何從已知的個信息元中求出個校驗(yàn)元。要計算出校驗(yàn)元,就要先求出漢明碼校驗(yàn)矩陣。在上表2.1中,構(gòu)造4個校正因子和4個監(jiān)督關(guān)系式的過程中,必須應(yīng)遵守的原則是:表2.1中共有11列,每一列應(yīng)保證各不相同,即的16種組合中, 取組合表示無錯,剩下15種中取其中11種用來表示中某一位出錯的情況。2.1.4 錯碼與S0S1S

13、2S3的對應(yīng)關(guān)系表2.2 錯碼與校正因子的對應(yīng)關(guān)系表因?yàn)槊恳粋€校正因子都是由一個冗余碼和構(gòu)成該冗余碼的表達(dá)式構(gòu)成,如:,且正好是由兩個相等的兩部分構(gòu)成的,所以在所接收的碼字是正確的情況下,每一個校正因子都應(yīng)該是“0”,當(dāng)然的16種組合中,“0000”組合表示無錯,而當(dāng)一位出錯時,如出錯時, 因?yàn)橥瑫r出現(xiàn)在(2-8) 、(2-9)、(2-10) 三個表達(dá)式中,所以同時都受到影響,都由“0”變成了“1”,而沒變,仍是“0”,在接收方,正是通過重新計算,根據(jù),可知是錯。值得注意的是,由于是采用偶性測試的辦法。所以接收方如果同時出現(xiàn)了偶數(shù)個錯誤,那么將不能正確地被檢出,但是出現(xiàn)這種情況概率很小。2.2

14、漢明碼校驗(yàn)方法的實(shí)現(xiàn)2.2.1 漢明編碼 設(shè)要傳輸?shù)臐h明碼為,其中為已知有效數(shù)據(jù);為檢驗(yàn)碼。檢驗(yàn)規(guī)則矩陣為: 因?yàn)椋?-11) 則:(2-12)因?yàn)椋ǎ?,這里的加法運(yùn)算等價于邏輯異或。故:(2-13)這樣用式(2-13)計算出四位漢明檢錯位,就完成了八位數(shù)據(jù)的漢明編碼。2.2.2 漢明解碼與糾錯已知發(fā)送端送出的漢明碼為,假設(shè)接收端收到的信息為,且,其中:為收到的八位信息;為收到的檢驗(yàn)碼。設(shè)信道中的干擾向量為。且;有錯位,否則;。則(2-14)(2-15)根據(jù)漢明編碼規(guī)則,取為伴隨向量則 (2-16)所以,伴隨向量僅與干擾向量的變化有關(guān)。這樣根據(jù)的變化,就可以得出伴隨向量對應(yīng)于錯誤向量的一位錯誤

15、代碼表。表2.3列出伴隨向量對應(yīng)的一位錯誤向量的關(guān)系。因?yàn)椋瑸榻邮盏降男畔?,這樣用式(2-15)就可直接計算出伴隨向量。(2-17)這樣在軟件中,用伴隨向量查表2.3找到錯誤向量E,就可用式(2-14)在接收端糾錯得到正確的發(fā)送信息。由于有效信息僅為八位。所以在接收端只存貯對應(yīng)于 向量表,就能完成了八位有效數(shù)據(jù)的糾錯當(dāng)信息在傳輸出中出現(xiàn)兩位以上的錯誤時,在接收端則丟掉該數(shù)據(jù)。表2.3 伴隨向量對應(yīng)的一位錯誤向量表注:存儲該表時,以為地址,存儲八位即可對接收到的有效信息糾錯。第三章 漢明碼編解碼系統(tǒng)這一章主要介紹遠(yuǎn)程巡回檢中的數(shù)據(jù)檢錯糾錯電路設(shè)計,給出基于STC89C51單片機(jī)(12,8)漢明碼

16、編解碼的實(shí)現(xiàn)方案。3.1 系統(tǒng)整體功能整個系統(tǒng)的基本功能如下:(1) 演示漢明碼的編碼、解碼過程。(2) 演示加入1位隨機(jī)錯碼的糾錯效果。其系統(tǒng)結(jié)構(gòu)如圖3.1所示:圖3.1 漢明碼編解碼系統(tǒng)結(jié)構(gòu)發(fā)送方的單片機(jī)上電時隨機(jī)產(chǎn)生一個8位信息碼,通過信息碼產(chǎn)生按鍵,每按一次按鍵,單片機(jī)都將隨機(jī)產(chǎn)生一個8位信息碼,并將8位信息碼通過發(fā)光二極管指示出來,燈亮表示對應(yīng)數(shù)據(jù)位為“1”, 燈不亮表示對應(yīng)數(shù)據(jù)位為“0”。發(fā)送方單片機(jī)對產(chǎn)生的8位信息碼進(jìn)行漢明編碼,編碼后產(chǎn)生12位全碼,若誤碼產(chǎn)生按鍵被按下,則單片機(jī)發(fā)送12位全碼前將隨機(jī)模擬將其中某一位設(shè)成錯誤值,之后經(jīng)過傳輸信道發(fā)送到接收方。編碼后的12位全碼也

17、全部通過發(fā)光二極管指示出來,并將對應(yīng)出錯的位以快閃的方式顯示。接收方對接收到的12位全碼進(jìn)行解碼,通過發(fā)光二極管將接收到的數(shù)據(jù)指示出來,若解碼時發(fā)現(xiàn)接收到的數(shù)據(jù)某一位有錯誤,經(jīng)糾錯解碼后將對應(yīng)出錯的位以快閃的方式顯示,并將解碼后產(chǎn)生的8位信息碼結(jié)果在發(fā)光二極管上指示。燈亮表示對應(yīng)數(shù)據(jù)位為“1”, 燈不亮表示對應(yīng)數(shù)據(jù)位為“0”。如果發(fā)送方和接收方發(fā)光二極管指示燈顯示一致,則表示漢明編解碼后得到了正確的原始信息。系統(tǒng)運(yùn)行后根據(jù)所按鍵觸發(fā)相應(yīng)的事件,從而達(dá)到發(fā)送方產(chǎn)生信息碼/錯誤碼,接收方接收數(shù)據(jù)并進(jìn)行解碼顯示,達(dá)到最終的模擬演示效果。3.2 系統(tǒng)硬件設(shè)計3.2.1 系統(tǒng)整體硬件方案根據(jù)功能分析,設(shè)

18、計系統(tǒng)硬件方案如下:圖3.2 系統(tǒng)硬件結(jié)構(gòu)整個系統(tǒng)由發(fā)送方和接收方組成,發(fā)送方以51內(nèi)核的單片機(jī)為控制中心,通過隨機(jī)數(shù)據(jù)產(chǎn)生按鍵產(chǎn)生8位的隨機(jī)數(shù)據(jù),并將8位隨機(jī)數(shù)據(jù)通過8個LED顯示出來,同時發(fā)送方還有一位隨機(jī)錯碼產(chǎn)生按鍵,可以對編碼后的12位數(shù)據(jù)隨機(jī)產(chǎn)生一位的錯碼數(shù)據(jù)位,這樣具有一位錯碼的12位數(shù)據(jù)將按照一定的通信協(xié)議通過串口發(fā)送出去,光纖模塊則將串口數(shù)據(jù)轉(zhuǎn)化位光信號發(fā)送至光纖通信鏈路。接收方同樣為51內(nèi)核單片機(jī),它按照一定的通信協(xié)議將接收具有一位錯碼的12位編碼序列,進(jìn)行漢明糾錯,將解碼后的8位數(shù)據(jù)通過8個LED顯示出來,同時也將12位全碼通過12個LED顯示出來。3.2.2 系統(tǒng)具體硬件

19、設(shè)計圖3.3 發(fā)送方硬件設(shè)計發(fā)送方以STC89C51為控制核心,STC89C51是臺灣宏晶公司生產(chǎn)的51內(nèi)核芯片,該芯片具有EEPROM、看門狗、上電監(jiān)控、串口等內(nèi)部資源。隨機(jī)數(shù)據(jù)產(chǎn)生和錯碼產(chǎn)生按鍵分別接到單片機(jī)的中斷引腳上,單片機(jī)的P0、P1、P2口分別驅(qū)動LED作為顯示用;串口則負(fù)責(zé)將編碼后的數(shù)據(jù)通過一定的通信協(xié)議發(fā)送到接收方單片機(jī)。圖3.4 接收方硬件設(shè)計接收方同樣也采用上面的電路結(jié)構(gòu)只不過去掉了按鍵輸入單元。3.3 系統(tǒng)軟件設(shè)計3.3.1 單片機(jī)結(jié)構(gòu)介紹3.3.1.1 概述8051系列微處理器基于簡化的嵌入式控制系統(tǒng)結(jié)構(gòu),被廣泛應(yīng)用于從軍事到自動控制再到PC 機(jī)上的鍵盤上的各種應(yīng)用系統(tǒng)

20、上,很多制造商都可提供8051系列單片機(jī),像Intel Philips Siemens等。這些制造商給51系列單片機(jī)加入了大量的性能和外部功能,像I2C總線接口模擬量到數(shù)字量的轉(zhuǎn)換、看門狗、PWM 輸出等,不少芯片的工作頻率達(dá)到40M,工作電壓下降到1.5V?;谝粋€內(nèi)核的這些功能使得8051單片機(jī)很適合作為廠家產(chǎn)品的基本構(gòu)架,它能夠運(yùn)行各種程序,而且開發(fā)者只需要學(xué)習(xí)這一個平臺。8051系列的基本結(jié)構(gòu)如下:1、一個8 位算術(shù)邏輯單元2、32個I/O口(4 組8位端口)可單獨(dú)尋址3、兩個16 位定時計數(shù)器4、全雙工串行通信5、6個中斷源兩個中斷優(yōu)先級6、128 字節(jié)內(nèi)置RAM7、獨(dú)立的64K 字

21、節(jié)可尋址數(shù)據(jù)和代碼區(qū)每個8051處理周期包括12個振蕩周期,每12 個振蕩周期用來完成一項操作,計算指令執(zhí)行時間可把時鐘頻率除以12,取倒數(shù),然后指令執(zhí)行所須的周期數(shù),因此,如果系統(tǒng)時鐘是11.059MHz, 除以12 后就得到了每秒執(zhí)行的指令個數(shù)為921583條指令,取倒數(shù)將得到每條指令所須的時間(1.085ms)。3.3.1.2 存儲區(qū)結(jié)構(gòu)8051結(jié)構(gòu)提供給用戶3個不同的存儲空間,每個存儲空間包括從0到最大存儲范圍的連續(xù)的字節(jié)地址空間.通過利用特定地址的尋址指令,決了地址重疊的問題。3.3.1.3 CODE區(qū)第一個存儲空間是代碼段,用來存放可執(zhí)行代碼。被16位尋址,空間可達(dá)64K。代碼段是

22、只讀的,當(dāng)要對外接存儲器件如EPROM 進(jìn)行尋址時處理器會產(chǎn)生一個信號,但這并不意味著代碼區(qū)一定要用一個EPROM,目前一般使用EEPROM 作為外接存儲器可以被外圍器件或8051進(jìn)行改寫這使系統(tǒng)更新更加容易新的軟件可以下載到EEPROM 中,而不用拆開它然后裝入一個新的EEPROM。另外,帶電池的SRAM也可用來代替EPROM,他可以像EEPROM一樣進(jìn)行程序的更新,并且沒有像EEPROM那樣讀寫周期的限制。但是,當(dāng)電源耗盡時,存儲在SRAM中的程序也隨之丟失。使用SRAM來代替EPROM 時,允許快速下載新程序到目標(biāo)系統(tǒng)中,這避免了編程/調(diào)試/擦寫這樣一個循環(huán)過程,不再需要使用昂貴的在線仿

23、真器。除了可執(zhí)行代碼,還可在代碼段中存儲查尋表,為達(dá)此目的8051 提供了通過數(shù)據(jù)指針DPTR或程序計數(shù)器加上由累加器提供的偏移量進(jìn)行尋址的指令,這樣就可以把表頭地址裝入DPTR 中,把表中要尋址的元素的偏移量裝入累加器中,8051在執(zhí)行指令時的過程中把這兩者相加,由此可節(jié)省不少指令周期。在以后的例子中我們會看到這點(diǎn)。3.3.1.4 DATA區(qū)第二個存儲區(qū)是8051內(nèi)128 字節(jié)的內(nèi)部RAM或8052的前128 字節(jié)內(nèi)部RAM.這部分主要是作為數(shù)據(jù)段稱為DATA區(qū).指令用一個或兩個周期來訪問數(shù)據(jù)段.訪問DATA區(qū)比訪問XDATA區(qū)要快,因?yàn)樗捎弥苯訉ぶ贩绞?而訪問XDATA 須采用間接尋址,

24、必須先初始化DPTR .通常我們把使用比較頻繁的變量或局部變量存儲在DATA 段中,但是必須節(jié)省使用DATA 段,因?yàn)樗目臻g畢竟有限.在數(shù)據(jù)段中也可通過R0 和R1 采用間接尋址,R0 和R1 被作為數(shù)據(jù)區(qū)的指針,將要恢復(fù)或改變字節(jié)的地址放入R0 或R1 中,根據(jù)源操作數(shù)和目的操作數(shù)的不同,執(zhí)行指令需要一個或兩個周期。數(shù)據(jù)段中有兩個小段,第一個子段包含四組寄存器組,每組寄存器組包含八個寄存器共32 個寄存器,可在任何時候通過修改PSW寄存器的RS1和RS0 這兩位來選擇四組寄存器的任意一組作為工作寄存器組,8051 也可默認(rèn)任意一組作為工作寄存器組。工作寄存器組的快速切換不僅使參數(shù)傳遞更為方

25、便,而且可在8051 中進(jìn)行快速任務(wù)轉(zhuǎn)換。另外一個子段叫做位尋址段(BDATA),包括16個字節(jié),共128 位,每一位都可單獨(dú)尋址。8051有好幾條位操作指令,這使得程序控制非常方便,并且可幫助軟件代替外部組合邏輯,這樣就減少了系統(tǒng)中的模塊數(shù)。位尋址段的這16 個字節(jié)也可像數(shù)據(jù)段中其它字節(jié)一樣進(jìn)行字節(jié)尋址。3.3.1.5 IDATA區(qū)8051系列的一些單片機(jī)如8052有附加的128字節(jié)的內(nèi)部RAM,位于從80H 開始的地址空間中,被稱為IDATA。 因?yàn)镮DATA區(qū)的地址和SFR的地址是重疊的,通過區(qū)分所訪問的存儲區(qū)來解決地址重疊問題,因?yàn)镮DATA 區(qū)只能通過間接尋址來訪問。3.3.1.6

26、XDATA區(qū)8051的最后一個存儲空間為64K,和CODE 區(qū)一樣,采用16位地址尋址,稱作外部數(shù)據(jù)區(qū),簡稱XDATA 區(qū)。這個區(qū)通常包括一些RAM( 如SRAM)或一些需要通過總線接口的外圍器件。對XDATA 的讀寫操作需要至少兩個處理周期,使用DPTR,R0或DPTR,R1。對DPTR來說,至少需要兩個處理周期來裝入地址,而讀寫又需要兩個處理周期。同樣,對于R0或R1 裝入需要一個以上的處理周期,而讀寫又需兩個周期,由此可見處理XDATA 中的數(shù)據(jù)至少要花3 個指令周期,因此使用頻繁的數(shù)據(jù)應(yīng)盡量保存在DATA 區(qū)中。如果不需要和外部器件進(jìn)行I/O 操作或者希望在和外部器件進(jìn)行I/O操作時開

27、關(guān)RAM,則XDATA 可全部使用64K RAM。3.3.2 軟件中用到的單片機(jī)資源介紹3.3.2.1單片機(jī)的中斷系統(tǒng)1)中斷系統(tǒng)基本的8051支持6個中斷源,兩個外部中斷、兩個定時/計數(shù)器中斷、一個串行口輸入/輸出中斷,中斷,發(fā)生后處理器轉(zhuǎn)到將五個中斷入口處之一執(zhí)行中斷處理程序。中斷向量位于代碼段的最低地址處(串行口輸入,輸出中斷共用一個中斷向量)。中斷服務(wù)程序必須在中斷入口處或通過跳轉(zhuǎn),分支轉(zhuǎn)移到別處。8051/8052的中斷向量表如下表3.1所示:表3.1 8051/8052的中斷向量表中斷源中斷向量上電復(fù)位0000H外部中斷00003H定時器0溢出000BH外部中斷10013H定時器1

28、溢出001BH串行口中斷0023H定時器2 溢出002BH8051支持兩個中斷優(yōu)先級,有標(biāo)準(zhǔn)的中斷機(jī)制,低優(yōu)先級的中斷只能被高優(yōu)先級的中斷所中斷,而高優(yōu)先級的中斷不能被中斷。2)中斷優(yōu)先級寄存器每個中斷源都可通過設(shè)置中斷優(yōu)先級寄存器IP來單獨(dú)設(shè)置中斷優(yōu)先級。如果每個中斷源的相應(yīng)位被置位,則該中斷源的優(yōu)先級為高。如果相應(yīng)的位被復(fù)位,則該中斷源的優(yōu)先級為低,IP寄存器的各位此寄存器可位尋址。IP 寄存器(可位尋址)-PT2PSPT1PX1PT0PX0- 保留- 保留PT2:定時器2中斷優(yōu)先級PS:串行通信中斷優(yōu)先級PT1:定時器1中斷優(yōu)先級PX1:外部中斷1優(yōu)先級PT0:定時器0中斷優(yōu)先級PX0:

29、外部中斷0優(yōu)先級3) 中斷使能寄存器通過設(shè)置中斷使能寄存器IE的EA位,使能所有中斷。每個中斷源都有單獨(dú)的使能位,可通過軟件設(shè)置IE中相應(yīng)的使能位在任何時候使能或禁能中斷。中斷使能寄存器IE的各位如下所示。中斷使能寄存器IE(可位尋址)EA-ET2ESET1EX1ET0EX0EA:使能標(biāo)志位置位則所有中斷使能復(fù)位則禁止所有中斷-:保留ET2:定時器2 中斷使能ES:串行通信中斷使能ET1:定時器1 中斷使能EX1:外部中斷1 使能ET0:定時器0 中斷使能EX0:外部中斷0 使能4) 中斷延遲8051在每個處理周期查詢中斷標(biāo)志,確定是否有中斷請求。當(dāng)發(fā)生中斷時,置位相應(yīng)的標(biāo)志,處理器將在下個周

30、期查詢到中斷標(biāo)志位,這樣,從發(fā)生中斷到確認(rèn)中斷之間有一個指令周期的延時。這時,處理器將用兩個周期的時間來調(diào)用中斷服務(wù)程序,總共要花3個時鐘周期。在理想情況下,處理器將在3 個指令周期內(nèi)響應(yīng)中斷,這使得用戶能很快響應(yīng)系統(tǒng)事件。不可避免地系統(tǒng)有可能在3個處理周期能不能響應(yīng)中斷請求,特別是當(dāng)有同級或更高級的中斷服務(wù)程序正在執(zhí)行的時候。因此,中斷的延遲主要取決于正在執(zhí)行的程序。另外一種大于3 個周期的中斷延遲是,程序正在執(zhí)行一條多周期指令,要等到當(dāng)前的指令執(zhí)行完后,處理器才會處理中斷事件,這將在原來的基礎(chǔ)上至少增加一個周期的延時(假設(shè)在執(zhí)行完多周期指令的第一個周期后發(fā)現(xiàn)中斷)。除被其它中斷所阻的情況,

31、中斷不被響應(yīng)的最長延時為6 個處理周期(3 個周期的多周期指令執(zhí)行時間,3個周期的指令響應(yīng)時間4)。3.3.2.2 單片機(jī)的定時器系統(tǒng)1) 定時器的相應(yīng)寄存器標(biāo)準(zhǔn)的8051有兩個定時/計數(shù)器,每個定時器有16 位。定時/計數(shù)器既可用來作為定時器(對機(jī)器周期計數(shù)),也可用來對相應(yīng)I/0 口(T0、T1)上從高到低的跳變脈沖計數(shù)。當(dāng)用作計數(shù)器時,脈沖頻率不應(yīng)高于指令的執(zhí)行頻率的1/2, 因?yàn)槊恐芷跈z測一次引腳電平,而判斷一次脈沖跳變需要兩個指令周期。如果需要的話,當(dāng)脈沖計數(shù)溢出時,可以產(chǎn)生一個中斷。TCON特殊功能寄存器用來控制定時器的工作起停和溢出標(biāo)志位。通過改變定時器運(yùn)行位TR0 和TR1來啟

32、動和停止定時器的工作。TCON中還包括了定時器T0和T1 的溢出中斷標(biāo)志位。當(dāng)定時器溢出時,相應(yīng)的標(biāo)志位被置位,當(dāng)程序檢測到標(biāo)志位從0 到1 的跳變時,如果中斷是使能的,將產(chǎn)生一個中斷。注意,中斷標(biāo)志位可在任何時候置位和清除,因此,可通過軟件產(chǎn)生和阻止定時器中斷。定時器控制寄存器(TCON 可位尋址)TF1TR1TF0TR0IE1IT1IE0IT0TF1:定時器1溢出中斷標(biāo)志,響應(yīng)中斷后由處理器清零TR1:定時器1控制位,置位時定時器1工作,復(fù)位時定時器1停止工作TF0:定時器0溢出標(biāo)志位.定時器0 溢出時置位,處理器響應(yīng)中斷后清除該位TR0:定時器0控制位,置位時定時器0工作,復(fù)位時定時器0

33、 停止工作IE1:外部中斷1觸發(fā)標(biāo)志位,當(dāng)檢測到P3.3 有從高到低的跳變電平時置位,處理器響應(yīng)中斷后,由硬件清除該位。IT1:中斷1觸發(fā)方式控制位,置位時為跳變觸發(fā),復(fù)位時為低電平觸發(fā)IE0:外部中斷1觸發(fā)標(biāo)志位,當(dāng)檢測到P3.3 有從高到低的跳變電平時置位,處理器響應(yīng)中斷后,由硬件清除該位。IT0:中斷1 觸發(fā)方式控制位,置位時為跳變觸發(fā),復(fù)位時為低電平觸發(fā)。定時器的工作方式由特殊功能寄存器TMOD 來設(shè)置。通過改變TMOD ,軟件可控制兩個定時器的工作方式和時鐘源(是I/0 口的觸發(fā)電平還是處理器的時鐘脈沖)。TMOD 的高四位控制定時器1,低四位控制定時器0 。TMOD 的結(jié)構(gòu)如下:定

34、時器控制寄存器GATEC/TM1M0GATEC/TM1M0GATE:當(dāng)GATE 置位時,定時器僅當(dāng)TR=1 并且INT=1 時才工作,如果GATE=0,置位TR 定時器就開始工作。C/T:定時器方式選擇.如果C/T=1,定時器以計數(shù)方式工作,C/T=0 時,以定時方式工作。M1:模式選擇位高位M0:模式選擇位低位可通過C/T位的設(shè)置來選擇定時器的時鐘源。C/T=1,定時器以計數(shù)方式工作(對I/0引腳脈沖計數(shù)),C/T=0 時,以定時方式工作(對內(nèi)部時鐘脈沖計數(shù))。當(dāng)定時器用來對內(nèi)部時鐘脈沖計數(shù)時,可通過硬件或軟件來控制。GATE=0 為軟件控制,置位TR 定時器就開始工作,GATE=1為硬件控

35、制,當(dāng)TR=1并且INT=1 時定時器才工作。當(dāng)INT腳給出低電平時,定時器將停止工作。這在測量INT 腳的脈沖寬度時十分有用,當(dāng)然INT 腳不作為外部中斷使用。2) 定時器工作方式0 和方式1定時器通過軟件控制有四種工作方式。方式0為十三位定時/計數(shù)器方式,定時器溢出時置位TF0 或TF1,并產(chǎn)生中斷。方式1 將以十六位定時/計數(shù)器方式工作,除此之外和方式0 一樣。3) 定時器工作方式2方式2為8位自動重裝工作方式。定時器的低8 位(TL0 或TL1) 用來計數(shù),高8 位(TH0或TH1) 用來存放重裝數(shù)值。當(dāng)定時器溢出時,TH 中的數(shù)值被裝入TL 中。定時器0 和定時器1 在方式2 時是同

36、樣的。定時器1 常用此方式來產(chǎn)生波特率。4) 定時器工作方式3方式3時,定時器0成為兩個8位定時/計數(shù)器(TH0 和TL0)。TH0對應(yīng)于TMOD 中定時器0的控制位,而TL0 占據(jù)了TMOD 中定時器1 的控制位。這樣定時器1 將不能產(chǎn)生溢出中斷了,但可用于其它不需產(chǎn)生中斷的場合,如作為波特率發(fā)生器或作為定時計數(shù)器被軟件查詢。當(dāng)系統(tǒng)需要用定時器1 來產(chǎn)生波特率,而又同時需要兩個定時/計數(shù)器時,這種工作方式十分有用。當(dāng)定時器1設(shè)置為工作方式3時,將停止工作。3.3.2.3 單片機(jī)的串口通信部分1)串行通信相關(guān)的寄存器8051有一個可通過軟件控制的內(nèi)置,全雙工串行通訊接口。由寄存器SCON 來進(jìn)

37、行設(shè)置,可選擇通訊模式,允許接收,檢查狀態(tài)位。SCON的結(jié)構(gòu)如下:串行控制寄存器SCON -可位尋址SM0SM1SM2RENTB8RB8TIRISM0 串行模式選擇SM1 串行模式選擇SM2 多機(jī)通訊允許位,當(dāng)模式0 時,此位應(yīng)該為0。 模式1 時,當(dāng)接收到停止位時,該位將置位。模式2 或模式3 時,當(dāng)接收的第9 位數(shù)據(jù)為1 時,將置位。REN 串行接收允許位TB8 在模式2 和模式3 中,將被發(fā)送數(shù)據(jù)的第9 位RB8 在模式0 中,該位不起作用,在模式1 中,該位為接收數(shù)據(jù)的停止位。在模式2 和模式3 中,為接收數(shù)據(jù)的第9 位TI 串行中斷標(biāo)志位,由軟件清零RI 接收中斷標(biāo)志位,有軟件清零U

38、ART有一個接收數(shù)據(jù)緩沖區(qū),當(dāng)上一個字節(jié)還沒被處理,下一個數(shù)據(jù)仍然可以緩沖區(qū)接收進(jìn)來,但如果接收完這個字節(jié)如果上個字節(jié)還沒被處理,上個字節(jié)將被覆蓋。因此,軟件必須在此之前處理數(shù)據(jù)。當(dāng)連續(xù)發(fā)送字節(jié)時也是如此。8051支持10位和11位數(shù)據(jù)模式,11數(shù)據(jù)模式用來進(jìn)行多機(jī)通訊。并支持高速8位移寄存器模式。模式1和模式3中波特率可變。2)UART模式0模式0時,UART 作為一個8位的移位寄存器使用,波特率為fosc/12。數(shù)據(jù)由RXD從低位開始收發(fā)。TXD用來發(fā)送同步移位脈沖,因此,方式0 不支持全雙工。這種方式可用來和像某些具有8位串行口的EEPROM 之類的器件通訊。當(dāng)向SBUF寫入字節(jié)時,開始

39、發(fā)送數(shù)據(jù)。數(shù)據(jù)發(fā)送完畢時,TI 位將置位。置位REN時,將開始接收數(shù)據(jù),接收完8位數(shù)據(jù)時,RI位將置位。3)UART模式1工作于模式1時,傳輸?shù)氖?0位:1個起始位、8個數(shù)據(jù)位、1個停止位。這種方式可和包括PC機(jī)在內(nèi)的很多器件進(jìn)行通訊。這種方式中波特率是可調(diào)的。而用來產(chǎn)生波特率的定時器的中斷應(yīng)該被禁止。PCON的SMOD 位為1時,可使波特率翻倍。TI和RI 在發(fā)送和接收停止位的中間時刻被置位。這使軟件可以響應(yīng)中斷并裝入新的數(shù)據(jù)。數(shù)據(jù)處理時間取決于波特率和晶振頻率。4)UART模式2模式2的數(shù)據(jù)以11位方式發(fā)送:1位起始位、8位數(shù)據(jù)位、第九位、1 位停止位發(fā)。送數(shù)據(jù)時,第九位為SCON中的TB

40、8, 接收數(shù)據(jù)的第九位保存在RB8中。第九位一般用來多機(jī)通信,僅在第九位為1 時,單片機(jī)才接收數(shù)據(jù)。多機(jī)通信用SCON的SM2來控制。當(dāng)SM2置位時,僅當(dāng)數(shù)據(jù)的第九位為1時才引發(fā)通訊中斷,當(dāng)SM2為0時,只要接收完11位就產(chǎn)生一次中斷。第九位可在多機(jī)通訊中避免不必要的中斷,在傳送地址和命令,時第九位置位,串行總線上的所有處理器都產(chǎn)生一個中斷,處理器將決定是否繼續(xù)接收下面的數(shù)據(jù),如果繼續(xù)接收數(shù)據(jù)就清零SM2。否則,SM2置位以后的數(shù)據(jù)流將不會使他產(chǎn)生中斷。3.3.3 系統(tǒng)軟件具體設(shè)計發(fā)送方程序結(jié)構(gòu)如下圖3.5所示:圖3.5 發(fā)送模塊程序結(jié)構(gòu)發(fā)送方程序開始后首先對內(nèi)部硬件進(jìn)行初始化操作,包括串口波

41、特率設(shè)置、定時器設(shè)置、中斷設(shè)置等,然后進(jìn)入主任務(wù)循環(huán),如果數(shù)據(jù)鍵按下則產(chǎn)生8位隨機(jī)數(shù)據(jù),如果錯碼按鍵按下則產(chǎn)生12位中的一位錯碼數(shù)據(jù),之后進(jìn)入漢明碼計算程序模塊,該模塊將按照漢明碼的編碼原理對8位數(shù)據(jù)進(jìn)行編碼產(chǎn)生12位數(shù)據(jù),該12位數(shù)據(jù)用兩個字節(jié)表示,之后按照一定的通信協(xié)議從串口發(fā)送出去。同時為了保證發(fā)送方和接收方的一致性,發(fā)送方每200ms將編碼數(shù)據(jù)發(fā)送出去。圖3.6 接收部分程序結(jié)構(gòu)接收部分程序(如圖3.6所示)相對簡單,在程序初始化之后,主循環(huán)不停判斷串口是否接收到數(shù)據(jù),如果接收到數(shù)據(jù)后則將2個字節(jié)的漢明碼編碼進(jìn)行解碼處理產(chǎn)生8位原始數(shù)據(jù),同時將解碼結(jié)果顯示出來。第四章 實(shí)驗(yàn)及數(shù)據(jù)分析4.1 測試步驟系統(tǒng)測試步驟如下:1. 對演示平臺加電5V。2. 按下數(shù)據(jù)產(chǎn)生鍵,產(chǎn)生一組隨機(jī)數(shù)據(jù)3. 記錄產(chǎn)生的漢明編碼及接收到的漢

溫馨提示

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

評論

0/150

提交評論