课程设计报告样板.doc_第1页
课程设计报告样板.doc_第2页
课程设计报告样板.doc_第3页
课程设计报告样板.doc_第4页
课程设计报告样板.doc_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

西 安 电 子 科 技 大 学电 子 工 程 学 院课 程 设 计(报告)任 务 书学生姓名 指导教师 余柏生 职称 高工 学生学号 020X1122 专业 电子信息工程 题目 远程巡回检测中的数据检错纠错电路设计 任务与要求任务: 对基于单片机的汉明码检错、纠错算法进行研究,并设计电路验证汉明码的编码和译码及其纠错性能。具体要求如下:1.详细分析了汉明码的纠错原理;2.完成(12,8)汉明码的编码和译码硬件电路设计及调试;3.完成基于STC89C51芯片的(12,8)汉明码的编码和译码及其纠错程序的设计;4. 完成上述任务的软硬件及算法设计和课程设计论文一篇。开始日期 2010 年12 月15日 完成日期 2011年1月30日 课程设计所在单位 电子工程学院2010 年 12月 15 日课程设计报告设计题目:远程巡回检测中的数据检错纠错电路设计 学 院: 电 子 工 程 学 院 专 业: 电 子 信 息 工 程 班 级: 学号: 学生姓名: 电子邮件: 时 间: 2010 年 10月 成 绩: 指导教师: 余 柏 生 摘 要本论文介绍了基于汉明码的数据检错纠错系统,详细分析了汉明码的纠错原理,给出了基于STC89C51单片机(12,8)编解码的实现方案。数字信号在传输过程中需要用信道编码来降低误码率,提高数字通信的可靠性,汉明码正是一种编码效率高且具有前向纠错能力的信道编码。单片机稳定的体系结构、极低的功耗、极快的运算速度等特点,使其广泛应用于数据的实时处理、工业控制、网络通信等方面。本课题中使用STC89C51单片机实现了(12,8)汉明码的编码和译码。关键词:汉明码 单片机 编码 译码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 STC89C51 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 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 Decoding目 录第一章 绪 论 1.1 本课题研究的目的及意义21.2 本文所研究的主要内容及所做工作2第二章 汉明码校验原理2.1 汉明码冗余位和监督关系式的构造方法32.1.1 汉明码的特点32.1.2 构造汉明码冗余位和监督关系式的方法42.1.3 构造校正因子和监督关系式时应遵循的原则52.1.4 错码与S0S1S2S3的对应关系52.2汉明码校验方法的实现62.2.1 汉明编码62.2.2 汉明解码与纠错7第三章 汉明码编解码系统3.1 系统整体功能93.2 系统硬件设计103.2.1 系统整体硬件方案103.2.2 系统具体硬件设计113.3 系统软件设计133.3.1 单片机结构介绍133.3.2 软件中用到的单片机资源介绍153.3.3 系统软件具体设计22第四章 实验及数据分析4.1 测试平台建立244.2 测试结果244.3 小结24结束语.25参考文献26第一章 绪 论1.1 本课题研究的目的及意义在当今和未来的信息化社会中,数字通信已成为信息传输的重要手段,全球数字化已成为当今社会的主要潮流。但是,数字信号在传输过程中,假性噪声、码间串扰等都会产生误码,因此需要用信道编码来降低误码率,提高数字通信的可靠性,汉明码正是一种编码效率高且具有前向纠错能力的信道编码。常用的检错码有奇偶校验、校验和、汉明码、CRC循环冗余校检码等。其中,奇偶校验只能检查出传输过程中的奇数个错误,不能发现偶数个错误,难以满足传输中对误码率的要求;校验和算法虽然简单,但不能检测出序列的错误,而且冗余码较多,降低了系统的性能;CRC循环码可以检测突发错误,但用软件编码、译码比较复杂,占用CPU时间较长,在对实时性要求很高的工程应用中实现起来较为困难。汉明码是在原编码的基础上附加一部分代码,使其满足纠错码的条件。它属于线性分组码,由于线性码的编码和译码容易实现,至今仍是应用最广泛的一类码。汉明码的抗干扰能力较强,可以纠正1个错误发现2个错误。汉明码是码距的线性分组码,它不仅性能好,而且编码、译码简单,易于工程实现,因而在实际差错控制系统中得到了广泛应用。1.2 本文所研究的主要内容及所做工作本文对基于单片机的汉明码检错、纠错算法进行了研究,并采用电路验证了汉明码的编码和译码。内容主要包括:1、 详细分析了汉明码的纠错原理;2、 完成(12,8)汉明码的编码和译码硬件电路设计及调试;3、 完成基于STC89C51芯片的(12,8)汉明码的编码和译码程序设汁。 第二章 汉明码校验原理2.1 汉明码冗余位和监督关系式的构造方法2.1.1 汉明码的特点海明码是R. Hamming提出的, 一种可以纠正一位错的差错控制编码。汉明码是一种高码率的纠正单个错误的线性分组码。它是在原编码的基础上附加一部分代码,使其满足纠错码的条件。它属于线性分组码,由于线性码的编码和译码容易实现,至今仍是应用最广泛的一类码。汉明码是一个码距为的线性码,它可以检查出两位错误,纠正一位错误,它有以下特点:码长:;信息码位:;最小码距:;纠错能力:。其中,为监督位,是不小于2的整数,给定后,可构造出汉明码。当时,可构造出分组码;时,可构造出分组码。设原代码的码长为比特,附加纠错编码部分为比特,则合成后的纠错码为比特。如果这种纠错码的纠错能力为纠正1个差错,则应满足如下基本条件:(2-1)当上式取等号时则称汉明码(Hamming Code)。干扰不仅使原代码的每一位(比特)可能出错,而且附加纠错位(比特)也可能出错,故“一个差错”的情况共有种,加上“正常”状态共有种状态,而比特的附加纠错位要能分辨这种状态。2.1.2 构造汉明码冗余位和监督关系式的方法一个简单奇偶校验码的设计思路为:若信息位为位,表示为,加上一位偶校验位(冗余位) ,构成一个位的码字,在接收端校验时,可按以下关系式来计算:(2-2)若,则无错;若,则有错。上式(2-2)可称为监督关系式,称为校正因子。在奇偶校验情况下,只有一个监督关系式和一个校正因子,其取值只有两种(0或1),分别代表了无错和有错的情况,而不能指出差错所在的位置。若增加冗余位,也相应地增加监督关系式和校正因子,就能区分更多的情况。对于时汉明码冗余位和监督关系式的具体构造过程和方法如下:因为且,所以,即至少需要4位冗余码,对应产生4个校正因子和4个监督关系式,形成种不同取值,用其中11种分别表示无错和中一位错的情况。构造表如下表2.1所示。表2.1 冗余和监督关系式的构造表由表2.1可知冗余码为:(2-3)(2-4) (2-5)(2-6)监督关系式为:(2-7)(2-8)(2-9)(2-10)2.1.3 构造校正因子和监督关系式时应遵循的原则汉明码是线性分组码,线性分组码的编码设计就是在满足给定条件(如码距)下,如何从已知的个信息元中求出个校验元。要计算出校验元,就要先求出汉明码校验矩阵。在上表2.1中,构造4个校正因子和4个监督关系式的过程中,必须应遵守的原则是:表2.1中共有11列,每一列应保证各不相同,即的16种组合中, 取组合表示无错,剩下15种中取其中11种用来表示中某一位出错的情况。2.1.4 错码与S0S1S2S3的对应关系表2.2 错码与校正因子的对应关系表因为每一个校正因子都是由一个冗余码和构成该冗余码的表达式构成,如:,且正好是由两个相等的两部分构成的,所以在所接收的码字是正确的情况下,每一个校正因子都应该是“0”,当然的16种组合中,“0000”组合表示无错,而当一位出错时,如出错时, 因为同时出现在(2-8) 、(2-9)、(2-10) 三个表达式中,所以同时都受到影响,都由“0”变成了“1”,而没变,仍是“0”,在接收方,正是通过重新计算,根据,可知是错。值得注意的是,由于是采用偶性测试的办法。所以接收方如果同时出现了偶数个错误,那么将不能正确地被检出,但是出现这种情况概率很小。2.2汉明码校验方法的实现2.2.1 汉明编码 设要传输的汉明码为,其中为已知有效数据;为检验码。检验规则矩阵为: 因为(2-11) 则:(2-12)因为(),这里的加法运算等价于逻辑异或。故:(2-13)这样用式(2-13)计算出四位汉明检错位,就完成了八位数据的汉明编码。2.2.2 汉明解码与纠错已知发送端送出的汉明码为,假设接收端收到的信息为,且,其中:为收到的八位信息;为收到的检验码。设信道中的干扰向量为。且;有错位,否则;。则(2-14)(2-15)根据汉明编码规则,取为伴随向量则 (2-16)所以,伴随向量仅与干扰向量的变化有关。这样根据的变化,就可以得出伴随向量对应于错误向量的一位错误代码表。表2.3列出伴随向量对应的一位错误向量的关系。因为,为接收到的信息,这样用式(2-15)就可直接计算出伴随向量。(2-17)这样在软件中,用伴随向量查表2.3找到错误向量E,就可用式(2-14)在接收端纠错得到正确的发送信息。由于有效信息仅为八位。所以在接收端只存贮对应于 向量表,就能完成了八位有效数据的纠错当信息在传输出中出现两位以上的错误时,在接收端则丢掉该数据。表2.3 伴随向量对应的一位错误向量表注:存储该表时,以为地址,存储八位即可对接收到的有效信息纠错。第三章 汉明码编解码系统这一章主要介绍远程巡回检中的数据检错纠错电路设计,给出基于STC89C51单片机(12,8)汉明码编解码的实现方案。3.1 系统整体功能整个系统的基本功能如下:(1) 演示汉明码的编码、解码过程。(2) 演示加入1位随机错码的纠错效果。其系统结构如图3.1所示:图3.1 汉明码编解码系统结构发送方的单片机上电时随机产生一个8位信息码,通过信息码产生按键,每按一次按键,单片机都将随机产生一个8位信息码,并将8位信息码通过发光二极管指示出来,灯亮表示对应数据位为“1”, 灯不亮表示对应数据位为“0”。发送方单片机对产生的8位信息码进行汉明编码,编码后产生12位全码,若误码产生按键被按下,则单片机发送12位全码前将随机模拟将其中某一位设成错误值,之后经过传输信道发送到接收方。编码后的12位全码也全部通过发光二极管指示出来,并将对应出错的位以快闪的方式显示。接收方对接收到的12位全码进行解码,通过发光二极管将接收到的数据指示出来,若解码时发现接收到的数据某一位有错误,经纠错解码后将对应出错的位以快闪的方式显示,并将解码后产生的8位信息码结果在发光二极管上指示。灯亮表示对应数据位为“1”, 灯不亮表示对应数据位为“0”。如果发送方和接收方发光二极管指示灯显示一致,则表示汉明编解码后得到了正确的原始信息。系统运行后根据所按键触发相应的事件,从而达到发送方产生信息码/错误码,接收方接收数据并进行解码显示,达到最终的模拟演示效果。3.2 系统硬件设计3.2.1 系统整体硬件方案根据功能分析,设计系统硬件方案如下:图3.2 系统硬件结构整个系统由发送方和接收方组成,发送方以51内核的单片机为控制中心,通过随机数据产生按键产生8位的随机数据,并将8位随机数据通过8个LED显示出来,同时发送方还有一位随机错码产生按键,可以对编码后的12位数据随机产生一位的错码数据位,这样具有一位错码的12位数据将按照一定的通信协议通过串口发送出去,光纤模块则将串口数据转化位光信号发送至光纤通信链路。接收方同样为51内核单片机,它按照一定的通信协议将接收具有一位错码的12位编码序列,进行汉明纠错,将解码后的8位数据通过8个LED显示出来,同时也将12位全码通过12个LED显示出来。3.2.2 系统具体硬件设计图3.3 发送方硬件设计发送方以STC89C51为控制核心,STC89C51是台湾宏晶公司生产的51内核芯片,该芯片具有EEPROM、看门狗、上电监控、串口等内部资源。随机数据产生和错码产生按键分别接到单片机的中断引脚上,单片机的P0、P1、P2口分别驱动LED作为显示用;串口则负责将编码后的数据通过一定的通信协议发送到接收方单片机。图3.4 接收方硬件设计接收方同样也采用上面的电路结构只不过去掉了按键输入单元。3.3 系统软件设计3.3.1 单片机结构介绍3.3.1.1 概述8051系列微处理器基于简化的嵌入式控制系统结构,被广泛应用于从军事到自动控制再到PC 机上的键盘上的各种应用系统上,很多制造商都可提供8051系列单片机,像Intel Philips Siemens等。这些制造商给51系列单片机加入了大量的性能和外部功能,像I2C总线接口模拟量到数字量的转换、看门狗、PWM 输出等,不少芯片的工作频率达到40M,工作电压下降到1.5V。基于一个内核的这些功能使得8051单片机很适合作为厂家产品的基本构架,它能够运行各种程序,而且开发者只需要学习这一个平台。8051系列的基本结构如下:1、一个8 位算术逻辑单元2、32个I/O口(4 组8位端口)可单独寻址3、两个16 位定时计数器4、全双工串行通信5、6个中断源两个中断优先级6、128 字节内置RAM7、独立的64K 字节可寻址数据和代码区每个8051处理周期包括12个振荡周期,每12 个振荡周期用来完成一项操作,计算指令执行时间可把时钟频率除以12,取倒数,然后指令执行所须的周期数,因此,如果系统时钟是11.059MHz, 除以12 后就得到了每秒执行的指令个数为921583条指令,取倒数将得到每条指令所须的时间(1.085ms)。3.3.1.2 存储区结构8051结构提供给用户3个不同的存储空间,每个存储空间包括从0到最大存储范围的连续的字节地址空间.通过利用特定地址的寻址指令,决了地址重叠的问题。3.3.1.3 CODE区第一个存储空间是代码段,用来存放可执行代码。被16位寻址,空间可达64K。代码段是只读的,当要对外接存储器件如EPROM 进行寻址时处理器会产生一个信号,但这并不意味着代码区一定要用一个EPROM,目前一般使用EEPROM 作为外接存储器可以被外围器件或8051进行改写这使系统更新更加容易新的软件可以下载到EEPROM 中,而不用拆开它然后装入一个新的EEPROM。另外,带电池的SRAM也可用来代替EPROM,他可以像EEPROM一样进行程序的更新,并且没有像EEPROM那样读写周期的限制。但是,当电源耗尽时,存储在SRAM中的程序也随之丢失。使用SRAM来代替EPROM 时,允许快速下载新程序到目标系统中,这避免了编程/调试/擦写这样一个循环过程,不再需要使用昂贵的在线仿真器。除了可执行代码,还可在代码段中存储查寻表,为达此目的8051 提供了通过数据指针DPTR或程序计数器加上由累加器提供的偏移量进行寻址的指令,这样就可以把表头地址装入DPTR 中,把表中要寻址的元素的偏移量装入累加器中,8051在执行指令时的过程中把这两者相加,由此可节省不少指令周期。在以后的例子中我们会看到这点。3.3.1.4 DATA区第二个存储区是8051内128 字节的内部RAM或8052的前128 字节内部RAM.这部分主要是作为数据段称为DATA区.指令用一个或两个周期来访问数据段.访问DATA区比访问XDATA区要快,因为它采用直接寻址方式,而访问XDATA 须采用间接寻址,必须先初始化DPTR .通常我们把使用比较频繁的变量或局部变量存储在DATA 段中,但是必须节省使用DATA 段,因为它的空间毕竟有限.在数据段中也可通过R0 和R1 采用间接寻址,R0 和R1 被作为数据区的指针,将要恢复或改变字节的地址放入R0 或R1 中,根据源操作数和目的操作数的不同,执行指令需要一个或两个周期。数据段中有两个小段,第一个子段包含四组寄存器组,每组寄存器组包含八个寄存器共32 个寄存器,可在任何时候通过修改PSW寄存器的RS1和RS0 这两位来选择四组寄存器的任意一组作为工作寄存器组,8051 也可默认任意一组作为工作寄存器组。工作寄存器组的快速切换不仅使参数传递更为方便,而且可在8051 中进行快速任务转换。另外一个子段叫做位寻址段(BDATA),包括16个字节,共128 位,每一位都可单独寻址。8051有好几条位操作指令,这使得程序控制非常方便,并且可帮助软件代替外部组合逻辑,这样就减少了系统中的模块数。位寻址段的这16 个字节也可像数据段中其它字节一样进行字节寻址。3.3.1.5 IDATA区8051系列的一些单片机如8052有附加的128字节的内部RAM,位于从80H 开始的地址空间中,被称为IDATA。 因为IDATA区的地址和SFR的地址是重叠的,通过区分所访问的存储区来解决地址重叠问题,因为IDATA 区只能通过间接寻址来访问。3.3.1.6 XDATA区8051的最后一个存储空间为64K,和CODE 区一样,采用16位地址寻址,称作外部数据区,简称XDATA 区。这个区通常包括一些RAM( 如SRAM)或一些需要通过总线接口的外围器件。对XDATA 的读写操作需要至少两个处理周期,使用DPTR,R0或DPTR,R1。对DPTR来说,至少需要两个处理周期来装入地址,而读写又需要两个处理周期。同样,对于R0或R1 装入需要一个以上的处理周期,而读写又需两个周期,由此可见处理XDATA 中的数据至少要花3 个指令周期,因此使用频繁的数据应尽量保存在DATA 区中。如果不需要和外部器件进行I/O 操作或者希望在和外部器件进行I/O操作时开关RAM,则XDATA 可全部使用64K RAM。3.3.2 软件中用到的单片机资源介绍3.3.2.1单片机的中断系统1)中断系统基本的8051支持6个中断源,两个外部中断、两个定时/计数器中断、一个串行口输入/输出中断,中断,发生后处理器转到将五个中断入口处之一执行中断处理程序。中断向量位于代码段的最低地址处(串行口输入,输出中断共用一个中断向量)。中断服务程序必须在中断入口处或通过跳转,分支转移到别处。8051/8052的中断向量表如下表3.1所示:表3.1 8051/8052的中断向量表中断源中断向量上电复位0000H外部中断00003H定时器0溢出000BH外部中断10013H定时器1溢出001BH串行口中断0023H定时器2 溢出002BH8051支持两个中断优先级,有标准的中断机制,低优先级的中断只能被高优先级的中断所中断,而高优先级的中断不能被中断。2)中断优先级寄存器每个中断源都可通过设置中断优先级寄存器IP来单独设置中断优先级。如果每个中断源的相应位被置位,则该中断源的优先级为高。如果相应的位被复位,则该中断源的优先级为低,IP寄存器的各位此寄存器可位寻址。IP 寄存器(可位寻址)-PT2PSPT1PX1PT0PX0- 保留- 保留PT2:定时器2中断优先级PS:串行通信中断优先级PT1:定时器1中断优先级PX1:外部中断1优先级PT0:定时器0中断优先级PX0:外部中断0优先级3) 中断使能寄存器通过设置中断使能寄存器IE的EA位,使能所有中断。每个中断源都有单独的使能位,可通过软件设置IE中相应的使能位在任何时候使能或禁能中断。中断使能寄存器IE的各位如下所示。中断使能寄存器IE(可位寻址)EA-ET2ESET1EX1ET0EX0EA:使能标志位置位则所有中断使能复位则禁止所有中断-:保留ET2:定时器2 中断使能ES:串行通信中断使能ET1:定时器1 中断使能EX1:外部中断1 使能ET0:定时器0 中断使能EX0:外部中断0 使能4) 中断延迟8051在每个处理周期查询中断标志,确定是否有中断请求。当发生中断时,置位相应的标志,处理器将在下个周期查询到中断标志位,这样,从发生中断到确认中断之间有一个指令周期的延时。这时,处理器将用两个周期的时间来调用中断服务程序,总共要花3个时钟周期。在理想情况下,处理器将在3 个指令周期内响应中断,这使得用户能很快响应系统事件。不可避免地系统有可能在3个处理周期能不能响应中断请求,特别是当有同级或更高级的中断服务程序正在执行的时候。因此,中断的延迟主要取决于正在执行的程序。另外一种大于3 个周期的中断延迟是,程序正在执行一条多周期指令,要等到当前的指令执行完后,处理器才会处理中断事件,这将在原来的基础上至少增加一个周期的延时(假设在执行完多周期指令的第一个周期后发现中断)。除被其它中断所阻的情况,中断不被响应的最长延时为6 个处理周期(3 个周期的多周期指令执行时间,3个周期的指令响应时间4)。3.3.2.2 单片机的定时器系统1) 定时器的相应寄存器标准的8051有两个定时/计数器,每个定时器有16 位。定时/计数器既可用来作为定时器(对机器周期计数),也可用来对相应I/0 口(T0、T1)上从高到低的跳变脉冲计数。当用作计数器时,脉冲频率不应高于指令的执行频率的1/2, 因为每周期检测一次引脚电平,而判断一次脉冲跳变需要两个指令周期。如果需要的话,当脉冲计数溢出时,可以产生一个中断。TCON特殊功能寄存器用来控制定时器的工作起停和溢出标志位。通过改变定时器运行位TR0 和TR1来启动和停止定时器的工作。TCON中还包括了定时器T0和T1 的溢出中断标志位。当定时器溢出时,相应的标志位被置位,当程序检测到标志位从0 到1 的跳变时,如果中断是使能的,将产生一个中断。注意,中断标志位可在任何时候置位和清除,因此,可通过软件产生和阻止定时器中断。定时器控制寄存器(TCON 可位寻址)TF1TR1TF0TR0IE1IT1IE0IT0TF1:定时器1溢出中断标志,响应中断后由处理器清零TR1:定时器1控制位,置位时定时器1工作,复位时定时器1停止工作TF0:定时器0溢出标志位.定时器0 溢出时置位,处理器响应中断后清除该位TR0:定时器0控制位,置位时定时器0工作,复位时定时器0 停止工作IE1:外部中断1触发标志位,当检测到P3.3 有从高到低的跳变电平时置位,处理器响应中断后,由硬件清除该位。IT1:中断1触发方式控制位,置位时为跳变触发,复位时为低电平触发IE0:外部中断1触发标志位,当检测到P3.3 有从高到低的跳变电平时置位,处理器响应中断后,由硬件清除该位。IT0:中断1 触发方式控制位,置位时为跳变触发,复位时为低电平触发。定时器的工作方式由特殊功能寄存器TMOD 来设置。通过改变TMOD ,软件可控制两个定时器的工作方式和时钟源(是I/0 口的触发电平还是处理器的时钟脉冲)。TMOD 的高四位控制定时器1,低四位控制定时器0 。TMOD 的结构如下:定时器控制寄存器GATEC/TM1M0GATEC/TM1M0GATE:当GATE 置位时,定时器仅当TR=1 并且INT=1 时才工作,如果GATE=0,置位TR 定时器就开始工作。C/T:定时器方式选择.如果C/T=1,定时器以计数方式工作,C/T=0 时,以定时方式工作。M1:模式选择位高位M0:模式选择位低位可通过C/T位的设置来选择定时器的时钟源。C/T=1,定时器以计数方式工作(对I/0引脚脉冲计数),C/T=0 时,以定时方式工作(对内部时钟脉冲计数)。当定时器用来对内部时钟脉冲计数时,可通过硬件或软件来控制。GATE=0 为软件控制,置位TR 定时器就开始工作,GATE=1为硬件控制,当TR=1并且INT=1 时定时器才工作。当INT脚给出低电平时,定时器将停止工作。这在测量INT 脚的脉冲宽度时十分有用,当然INT 脚不作为外部中断使用。2) 定时器工作方式0 和方式1定时器通过软件控制有四种工作方式。方式0为十三位定时/计数器方式,定时器溢出时置位TF0 或TF1,并产生中断。方式1 将以十六位定时/计数器方式工作,除此之外和方式0 一样。3) 定时器工作方式2方式2为8位自动重装工作方式。定时器的低8 位(TL0 或TL1) 用来计数,高8 位(TH0或TH1) 用来存放重装数值。当定时器溢出时,TH 中的数值被装入TL 中。定时器0 和定时器1 在方式2 时是同样的。定时器1 常用此方式来产生波特率。4) 定时器工作方式3方式3时,定时器0成为两个8位定时/计数器(TH0 和TL0)。TH0对应于TMOD 中定时器0的控制位,而TL0 占据了TMOD 中定时器1 的控制位。这样定时器1 将不能产生溢出中断了,但可用于其它不需产生中断的场合,如作为波特率发生器或作为定时计数器被软件查询。当系统需要用定时器1 来产生波特率,而又同时需要两个定时/计数器时,这种工作方式十分有用。当定时器1设置为工作方式3时,将停止工作。3.3.2.3 单片机的串口通信部分1)串行通信相关的寄存器8051有一个可通过软件控制的内置,全双工串行通讯接口。由寄存器SCON 来进行设置,可选择通讯模式,允许接收,检查状态位。SCON的结构如下:串行控制寄存器SCON -可位寻址SM0SM1SM2RENTB8RB8TIRISM0 串行模式选择SM1 串行模式选择SM2 多机通讯允许位,当模式0 时,此位应该为0。 模式1 时,当接收到停止位时,该位将置位。模式2 或模式3 时,当接收的第9 位数据为1 时,将置位。REN 串行接收允许位TB8 在模式2 和模式3 中,将被发送数据的第9 位RB8 在模式0 中,该位不起作用,在模式1 中,该位为接收数据的停止位。在模式2 和模式3 中,为接收数据的第9 位TI 串行中断标志位,由软件清零RI 接收中断标志位,有软件清零UART有一个接收数据缓冲区,当上一个字节还没被处理,下一个数据仍然可以缓冲区接收进来,但如果接收完这个字节如果上个字节还没被处理,上个字节将被覆盖。因此,软件必须在此之前处理数据。当连续发送字节时也是如此。8051支持10位和11位数据模式,11数据模式用来进行多机通讯。并支持高速8位移寄存器模式。模式1和模式3中波特率可变。2)UART模式0模式0时,UART 作为一个8位的移位寄存器使用,波特率为fosc/12。数据由RXD从低位开始收发。TXD用来发送同步移位脉冲,因此,方式0 不支持全双工。这种方式可用来和像某些具有8位串行口的EEPROM 之类的器件通讯。当向SBUF写入字节时,开始发送数据。数据发送完毕时,TI 位将置位。置位REN时,将开始接收数据,接收完8位数据时,RI位将置位。3)UART模式1工作于模式1时,传输的是10位:1个起始位、8个数据位、1个停止位。这种方式可和包括PC机在内的很多器件进行通讯。这种方式中波特率是可调的。而用来产生波特率的定时器的中断应该被禁止。PCON的SMOD 位为1时,可使波特率翻倍。TI和RI 在发送和接收停止位的中间时刻被置位。这使软件可以响应中断并装入新的数据。数据处理时间取决于波特率和晶振频率。4)UART模式2模式2的数据以11位方式发送:1位起始位、8位数据位、第九位、1 位停止位发。送数据时,第九位为SCON中的TB8, 接收数据的第九位保存在RB8中。第九位一般用来多机通信,仅在第九位为1 时,单片机才接收数据。多机通信用SCON的SM2来控制。当SM2置位时,仅当数据的第九位为1时才引发通讯中断,当SM2为0时,只要接收完11位就产生一次中断。第九位可在多机通讯中避免不必要的中断,在传送地址和命令,时第九位置位,串行总线上的所有处理器都产生一个中断,处理器将决定是否继续接收下面的数据,如果继续接收数据就清零SM2。否则,SM2置位以后的数据流将不会使他产生中断。3.3.3 系统软件具体设计发送方程序结构如下图3.5所示:图3.5 发送模块程序结构发送方程序开始后首先对内部硬件进行初始化操作,包括串口波特率设置、定时器设置、中断设置等,然后进入主任务循环,如果数据键按下则产生8位随机数据,如果错码按键按下则产生12位中的一位错码数据,之后进入汉明码计算程序模块,该模块将按照汉明码的编码原理对8位数据进行编码产生12位数据,该12位数据用两个字节表示,之后按照一定的通信协议从串口发送出去。同时为了保证发送方和接收方的一致性,发送方每200ms将编码数据发送出去。图3.6 接收部分程序结构接收部分程序(如图3.6所示)相对简单,在程序初始化之后,主循环不停判断串口是否接收到数据,如果接收到数据后则将2个字节的汉明码编码进行解码处理产生8位原始数据,同时将解码结果显示出来。第四章 实验及数据分析4.1 测试步骤系统测试步骤如下:1. 对演示平台加电5V。2. 按下数据产生键,产生一组随机数据3. 记录产生的汉明编码及接收到的汉明编码及解码出来的数据4. 按下纠错位产生键随机产生一位纠错码5. 记录产生的汉明编码及接收到的汉明编码及解码出来的数据6. 重复25的操作过程,产生10组测试数据7. 对数据进行分析4.2 测试结果 对演示系统进行15次测试,测试结果如下表4.1所示,其中数据中标X的数据位为一位错码产生的位置。表4.1 测试结果序号发送数据发送端海明编码接收端海明编码解码数据1101010100001X01001010001X0100101101010102

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论