课程设计报告 样板 联系客服

发布时间 : 星期日 文章课程设计报告 样板更新完毕开始阅读

第三章 汉明码编解码系统 20

之外和方式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 -可位寻址 SM0 SM1 SM2 REN TB8 RB8 TI RI SM0 串行模式选择 SM1 串行模式选择

SM2 多机通讯允许位,当模式0 时,此位应该为0。 模式1 时,当接收到停止位时,该位将置位。模式2 或模式3 时,当接收的第9 位数据为1 时,将置位。 REN 串行接收允许位

TB8 在模式2 和模式3 中,将被发送数据的第9 位

RB8 在模式0 中,该位不起作用,在模式1 中,该位为接收数据的停止位。在模式2 和模式3 中,为接收数据的第9 位 TI 串行中断标志位,由软件清零

第三章 汉明码编解码系统 21

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位就产生一次中断。

第九位可在多机通讯中避免不必要的中断,在传送地址和命令,时第九位置位,

串行总线上的所有处理器都产生一个中断,处理器将决定是否继续接收下面的数据,

第三章 汉明码编解码系统 22

如果继续接收数据就清零SM2。否则,SM2置位以后的数据流将不会使他产生中断。 3.3.3 系统软件具体设计

发送方程序结构如下图3.5所示:

图3.5 发送模块程序结构

发送方程序开始后首先对内部硬件进行初始化操作,包括串口波特率设置、定时器设置、中断设置等,然后进入主任务循环,如果数据键按下则产生8位随机数据,如果错码按键按下则产生12位中的一位错码数据,之后进入汉明码计算程序模块,该模块将按照汉明码的编码原理对8位数据进行编码产生12位数据,该12位数据用两个字节表示,之后按照一定的通信协议从串口发送出去。同时为了保证发送方和接收方的一致性,发送方每200ms将编码数据发送出去。

第三章 汉明码编解码系统 23

图3.6 接收部分程序结构

接收部分程序(如图3.6所示)相对简单,在程序初始化之后,主循环不停判断串口是否接收到数据,如果接收到数据后则将2个字节的汉明码编码进行解码处理产生8位原始数据,同时将解码结果显示出来。