版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于单片机的 CRC编解码的实现在当今信息社会,单片机在计算机的网络通讯与数据传输、工业自动化过程的实时控制和数据处理等都有广泛的应用,它已经渗透到人们生产生活的各个领域。而利用单片机进行数据通讯的控制应用得越来越广泛。于此同时,人们对信息传递的要求逐渐提高,使得通信传输过程中,可靠性和有效性这对矛盾日益凸显。随着对有效性不断提高,每个码元所占的时间越来越短,由于传输距离、现场状况等诸多因素的影响 ,设备(通常为嵌入单片机 )之间的通讯数据常会发生无法预测的错误。为了防止错误所带来的影响 ,在数据的接收端必须保证其可靠性。但由于数据在一个有干扰的环境中进行传输,任何数据中的任何信息包括确认信息
2、都是不可靠的。这里举一个红军和蓝军通信联合进攻山下的敌军的经典案例:第一天红军发认信息”如果也不可靠而没有成功到达红军那里,那自己不是很危险?于是红军再发一条“对确认的确认信息” ,但同样的问题还是不能解决,红军仍然不敢贸然行动。对通信的可靠性检查就需要“校验” ,校验是从数据本身进行检查,它依靠某种数学上约定的形式进行检查,校验的结果是可靠或不可靠,如果可靠就对数据进行处理,如果不可靠,就丢弃重发或者进行修复。数据在向单片机或其它设备进行输入时,容易产生输入错误,为了减少输入错误,编码专家发明了各种校验检错方法,并依据这些方法设置了校验码。 凡设有校验码的信息校验码则是附加在本体码后边,用来
3、校验本体码在输入过程中准确性的号码。每一个本体码只能有一个校验码,校验码通过规定的数学关系得到。校验码的校验原理是:系统内部预先设置根据校验方法所导出的校验公式编制成的校验程序,当带有校验码的代码输入系统时,系统利用校验程序对输入的本体码进行运算得出校验结果之后,再将校验结果与输入代码的校验码进行对比来检测输入的正确与否。如果两者一致,则表明代码输入正确,CRC 方法。由于 CRC 校验编码和解码方法简单,检错能力强,开销小,易于用编码器及检测CRC 的应用。1福州大学至诚学院本科生毕业设计(论文)本论文主要研究基于单片机的 CRC 编解码系统设计。根据CRC 循环冗余校验码的原理结合单片机的
4、实际运用,对如下几个问题展开讨论和研究:从 CRC 校验码原理出发,分析不同的CRC 编码过程,确定一种适用于单片机语言的编解码方法,然后制定具体的程序设计方案。结合编解码程序设计,设计实验性的编解码器,验证编解码程序在单片机上的可行性。其中涉及到输入系统,输出系统,通信系统。在实验性的编码器中的基础上进一步拓展,结合传感器模块,设计一个结合CRC 校验的实时检测通信系统。本论文第一章为绪论,介绍CRC 校验码在单片机通讯中起到的重要作用以及本设计所实现的任务。第二章具体介绍 CRC 循环冗余校验码。从其基本原理出发,发现能够实现编解码的计算方法,并分析每种计算方法。第三章主要介绍通过第二章所
5、介绍的不同算法,选择一种适用于单片机语言的算法。分析其具体结构,并用 C 语言实现该算法。第四章详细介绍了 CRC 编解码在单片机上的实现。本章节以“输入编码传输解 CRC 编解码验证系统”和“温湿度实时检测的编解码系统” ,来验证 CRC 校验码在单片机上的实现和具体应用。2基于单片机的 CRC编解码的实现循环冗余码校验英文名称为 Cyclical Redundancy ,简称 CRC,它是利用除法及余数的原理来作错误侦测的。CRC K位信息码后再拼接 R N位,因此,这种编码又叫(N,K)码。对于一个给定的(N,K)码,可以证明存在一个最高次幂为 N-K=R的多项式 G(x)。根据 G(x
6、)可以生成 K位信息的校验码,而 G(x)叫做这个 CRC码的生成多项式。 校验码的具体生成过程为:假设发送信息用信息多项式 C(X)表示,将C(x)左移 R位,则可表示成 C(x)*2的 R次方,这样 C(x)的右边就会空出 R位,这就是校验码的位置。通过 C(x)*2的 R次方除以生成多项式 G(x)得到的余数就是校验码。n位的 CRC校验码产生的规则是先将要发送的二进制序列数左移 n 2n再除以一个多项式,最后所得到的余数既是 CRC值,如式(2-1)式所示,其中 B(X)表示R(X)G(X) Q(X)基于以上原理可以知道:计算 CRC值的过程就是先将 K位信息码 B(X)左移 R位,再
7、用 R位的校验码 。它与算术除法的区别在于,将算术除法中的减运算变成了 XOR(异或)运算。而这个特殊除法的目的是逐步消掉最高位的 1或 0 XOR Q(X) R(X)就是 CRC R CRC值。在计算 CRC值的过程中,作为“除数”的生成多项式G(X)也是非常重要的。它是接收在发送方,利用生成多项式对信息多项式做模 2除生成校验码。在接受方利用生成多项式对收到的编码多项式做模 2除检测和确定错误位置。由于生成多项式的最高位必须为 1,而实际上在除法的每次 XOR时,都要消掉,这个1可以不做参考,所以一般生成项简写时不写最高位的 1。而 CRC计算时最后一次除法 XOR,最高位消除了,所以得到
8、的余数的位 CRC校验码R(X)的位数=生成多项式 G(X)位数-1。接收方将接收到的二进制序列数(包括信息码和 CRC种生成多项式进行一次 CRC计算,如果余数为 0,则说明传输中无错误发生,否则说明传3福州大学至诚学院本科生毕业设计(论文)按位计算法就是直接模拟 CRC 校验码基本原理中除法的过程,来得到余数即 CRC 值。 G(X)有 g 要一直消掉的,所以只需要一个 g-1 位的寄存器。以下是计算的过程:原始数据后扩展 g-1 个比特 0;寄存器左移一位,并且右边移入下一位数据。这样最高位1 移出,由于最高位是1,故本次的商是 1,要用 G(X)来进行 XOR,最高位肯定 XOR 得
9、0,故忽略最高位,只要用低g-1 位来进行 XOR 就可以,其结果便是第一次XOR 后的结果。 如果移出的最高位是 0,则继续移位,直到移出的最高位为 1。寄存器置0原始数据末扩展g-1个0寄存器左移出一位否寄存器左移1位为1是有剩余原始数据无图4基于单片机的 CRC编解码的实现按位计算法是将被测数据一位一位放到寄存器中来做除法,现在来探究一种能处理多位的数据的方法。根据同样的原理可以得到如下的算法:While (还有剩余没有处理的数据)Begin检查 register头字节,并取得它的值 ;求不同偏移处多项式的 XOR;在这个算法中,需要讨论的是求不同偏移处多项式的XOR这一步。我们可以通过
10、一个例子说明:假设生成多项式 R(X)为 1 0010 0011,即 CRC-8,待测数据 B(X)是 1011 0100 1101,也就是说:B(X)与 R(X)相 XOR R(X)相 XOR重复进行,最终消掉 4个比特中所有的 1,直到结果满足要求。基于异或运算的交换律,即(A XOR B) XOR C = A XOR (B XOR C),我们可以将 R(X)与适当移位后的 R(X)先进行 XOR,使其结果值的高位与 B(X)相同。然后与 B(X)相异或 。2现在换成这种算法:第一步:5福州大学至诚学院本科生毕业设计(论文)R(X)相 XOR后得到的值得到的结果值和上面是一样的以上两种算法
11、计算的结果是一致的,从后一种算法可以发现:如果事先将 R(X)自行XOR后使其结果高 n位能够连续地由低到高生成一张表,由于高 n位的原始数据和高 n位的表内数据在计算时都是被消掉的,所以表内数据只保留低位余数。然后计算CRC值时只需让原始数据查这张表中对应的值。接下来再将表内的值XOR下一位原始数据,重复该步骤,直到处理完所有数据,这就是查表法。从以上的例子可以看出,查表法的高位决定了这里以生成多项式 CRC-8=X8 +X2+ X1+10000 0001 0000 0111)为例,介绍表的生成:4.0000 0010 0000 1110与 0001 0000 0111相 XOR, 低 8位
12、值为 0 x09 高 8位为 0 x035.0000 0100 0001 1100 低 8位值为 0 x1C 高 8位为 0 x046.0000010000011100 与 0000000101011100相 XOR,低 8位值为 0 x1B 高 8位为 0 x057.0000010000011100 与 0000001000001110 相 XOR,低 8位值为 0 x12 高 8位为 0 x068.0000 0100 0001 1100 与 0000 0010 0000 1110,0000 0001 0000 0111 相 XOR,低 8位值为0 x15 高 8位为 0 x07.其中,在每
13、一项XOR后所得到的高 8位代表每一项在表里的位置,并且决定了该表一次可以给一个字节编码。所得到低8位代表每一项的值。通过这样的不同偏移处的统一生成多项式的 XOR,遍历高 8位的每一项,即可求得 256个项,以应对原信息码内单字节内表 0 x00,0 x07,0 x0E,0 x09,0 x1C,0 x1B,0 x12,0 x15,0 x38,0 x3F,0 x36,0 x31,0 x24,0 x23,0 x2A,0 x2D,0 x70,0 x77,0 x7E,0 x79,0 x6C,0 x6B,0 x62,0 x65,0 x48,0 x4F,0 x46,0 x41,0 x54,0 x53,0
14、 x5A,0 x5D,0 xE0,0 xE7,0 xEE,0 xE9,0 xFC,0 xFB,0 xF2,0 xF5,0 xD8,0 xDF,0 xD6,0 xD1,0 xC4,0 xC3,0 xCA,0 xCD,0 x90,0 x97,0 x9E,0 x99,0 x8C,0 x8B,0 x82,0 x85,0 xA8,0 xAF,0 xA6,0 xA1,0 xB4,0 xB3,0 xBA,0 xBD,0 xC7,0 xC0,0 xC9,0 xCE,0 xDB,0 xDC,0 xD5,0 xD2,0 xFF,0 xF8,0 xF1,0 xF6,0 xE3,0 xE4,0 xED,0 xEA,0
15、 xB7,0 xB0,0 xB9,0 xBE,0 xAB,0 xAC,0 xA5,0 xA2,0 x8F,0 x88,0 x81,0 x86,0 x93,0 x94,0 x9D,0 x9A,0 x27,0 x20,0 x29,0 x2E,0 x3B,0 x3C,0 x35,0 x32,0 x1F,0 x18,0 x11,0 x16,0 x03,0 x04,0 x0D,0 x0A,0 x57,0 x50,0 x59,0 x5E,0 x4B,0 x4C,0 x45,0 x42,0 x6F,0 x68,0 x61,0 x66,0 x73,0 x74,0 x7D,0 x7A,0 x89,0 x8E,0
16、 x87,0 x80,0 x95,0 x92,0 x9B,0 x9C,0 xB1,0 xB6,0 xBF,0 xB8,0 xAD,0 xAA,0 xA3,0 xA4,0 xF9,0 xFE,0 xF7,0 xF0,0 xE5,0 xE2,0 xEB,0 xEC,0 xC1,0 xC6,0 xCF,0 xC8,0 xDD,0 xDA,0 xD3,0 xD4,0 x69,0 x6E,0 x67,0 x60,0 x75,0 x72,0 x7B,0 x7C,0 x51,0 x56,0 x5F,0 x58,0 x4D,0 x4A,0 x43,0 x44,0 x19,0 x1E,0 x17,0 x10,0
17、 x05,0 x02,0 x0B,0 x0C,0 x21,0 x26,0 x2F,0 x28,0 x3D,0 x3A,0 x33,0 x34,6基于单片机的 CRC 编解码的实现7福州大学至诚学院本科生毕业设计(论文)“按位计算法”虽然很直观,但每一次只能对一位数据进行运算,每一次运算,都需要很长的时间。由于CRC校验广泛运用于单片机通信中,如果传输的信息量大,而编码的速度很慢,造成发送时间慢,当与传输校验中的时间不匹配就会造成丢包。如MODBUS-RTU通讯协议中规定若超过 3.5个字符时间单片机仍没有接收到新数据,则认为接收完成。假设在波特率为9600b/s的情况下进行MODBUS-RTU
18、0.37ms的话,就会造成该次传输就丢包。而使用按位计算法在处理较大数据时有可能出现这种情况。由于“查表法”算法和“按位计算法”是完全一样的,不仅结果完全一样,处理方式也是完全一样的,所以“查表法”是可以完全替代“按位计算法”的。查表法主要优点是能够快速计算。由于其一次能够计算多位数据,从而提高了速度,较好地克服了异步传输中校验和发送时间可能出现不匹配的问题。查表法的缺点是由于要存储几百个字节的参数表,需要更多的存储空间,然而在单片机的应用中,只要在程序存储空间容量允许的情况下,这种以空间换取时间的方法是值得提倡的。单片机,作为计算机的特殊分支,在各领域中的应用越来越广。单片机的正式名称为微控
19、制器(Micro Controller Unit,MCU单片机厂商有:STC公司的单片机主要是基于8051内核,是新一代增强型单片机,指令代码完全兼容传统 8051,速度快 8至 12倍,双串口,有全球唯一 ID号,加密性好。II. Microchip公司Microchip公司 PIC系列单片机,其突出特点是体积小,功耗低,精简指令集,抗干扰能力强,可靠性高,有较强的模拟接口,代码保密性好,大部分芯片有其兼容的 FLASH程序存储器的芯片。ATMEl公司的 8位单片机 AT89系列是 8位 Flash单片机,与 8051系列单片机相兼容,8基于单片机的 CRC 编解码的实现系统由单片机实现控制
20、与计算,其中一个首要的工作就是选择适合的单片机。目前国内在使用单片机作控制系统的微处理器时多选择 PIC51 系列单片机,其中PIC 系列的单片机在多个方面较之其它系列单片机具有以下优点: MCS-51 系列及其它单片机相比,PIC 单片机内集成了上电复位电路、I/O 引脚上拉电路、看门狗定时器,尤其是集成了 AD 模块,在对模拟量进行模/数转换时可以更大程度的减少和免用外接器件,以便实现“纯单片”化,这样,不仅便于开发,而且还可以节省电路板空间和制造成本。具有独特的C 语言开发环境。使用C 语言这种高级综上所述现有的单片机产品中,由于Microchip 公司的 PIC 系列单片机拥有强大的抗
21、干扰能力,而且稳定性和可靠性高,同时拥有较强的模拟接口,与大部分芯片的兼容,鉴于以上优势,故在本装置中选用 Microchip 公司的 PIC 系列单片机。由于本论文中的设计对模拟量进行采集,同时,设计外围硬件也需要较多的I/O 资源以及考虑到今后的功能扩展。因此,需要选用一款运算速度快,模拟采集通道,I/O 引脚较多的单片机。经过比较选择,PIC 系列单片机中的 PIC16F877A。本论文中的设计采用基于 CRC-8=X8+X2+X1+1 的查表法。根据2.2.2 节对查表法的分析,我们可以总结出查表法的寄存器运算模型:移位CRC8表具体描述:9福州大学至诚学院本科生毕业设计(论文)如果还
22、有未处理的数据则回到第一步继续执行。当所有原始数据处理完后,八位寄存器中的值就是该数据的 CRC 值,把这个值加到原始数据的后面,便构成 CRC 校验码。当接收端进行CRC 解码时,只要将CRC 校验码按上述查表法运算模型再进行一次相同的运算。如果八位寄存器的最后结果是 0。这表明改 CRC 校验码内的原始数据无误。3.2.3 CRC编解码程序设计基于 PIC单片机所具有的具有独特的 C PIC单片机时可以运用C 语言来进行程序设计,可大大的提高工作效率。所以本次设计中采用的是C 语言对单片机进行编译。CRC=0I=0Counter是Counter=0否CRC=crc_table表内数据输出C
23、RC值图基于单片机的 CRC编解码的实现具体程序如下:unsigned char crc= 0;crc = CRCTablecrc*p;p+;return(crc);福州大学至诚学院本科生毕业设计(论文)通过以上章节的探究,已经找到了适用于将 CRC 编解码原理在 PIC单片机上实现的途径。接下来将介绍 CRC 编解码器的实际应用。 该系统是为了实现 CRC 校验原理在单片机上应用,使单片机能够进行简单的CRC 编解码功能。其结构框图如下:解码结果键盘输入图 框图具体流程如下:由键盘输入一串原始数据;发送单片机将确定好的原始数据进行适当处理,使其转换成可以被编码的序列,然后进行 CRC 编码;
24、通过 PIC 单片机通信端口将编好的 CRC 校验码发送到接收单片机;接收单片机对 CRC 校验码经行解码;键盘类型的选择:基于单片机的 CRC 编解码的实现键盘分为编码式键盘和非编码式键盘,编码式键盘能够由硬件逻辑电路完成键盘闭合无需占用系统资源。而非编码键盘则由软件完成上述任务,其硬件电路比较简单,但要占用 MCU 和简化电路,所以采用非编码键盘。键盘电路结构的选择:非编码键盘的电路结构非为独立式和矩阵式结构。独立式键盘配置灵活,软件简单,但每个按键单独占用一个 I/O 口。矩阵键盘由行线和列线组成,按键位于行线与列线的交 n 个按键只需 2 n 个 I/O 比独立键盘节省很多 I/O 口
25、。本次设计中,按键输入模块需要实现能够直接输入 16 进制数。由此键盘输入模块中需要16 个按键遍历 0 x00 至 0 x0F,根据以上分析,本次设计选用键盘工作方式选择:键盘工作方式可分为查询工作方式和中断工作方式,查询工作方式是在一定的时间周期内,由主程序调用键盘键盘扫描程序,检查是否有按键操作。若无按键操作退出程序;若有按键操作,则执行相应的按键处理程序。中断工作方式是为了提高MCU 的效率,大大减少 MCU 无谓的工作时间只有当出现按键操作,才执行中断服务程序内有关按键处理的操作,若无按键操作,则MCU 不进行任何与按键有关的操作。另外中断工作方式需要占用到一个外部中断口。本次设计中
26、,该系统发送单片机的结构是先输入数据后处理数据,在资源使用上是先后的关系。此外,PIC16F877A 单片机只有一个外部中断口,而且本次设外部中断口另有他用。所以采用查询扫描的方式。综上所诉本次设计采用 44 扫描键盘。图福州大学至诚学院本科生毕业设计(论文)由于PIC单片机的I/OI/O口的方向,这里简述在有按键按下的情况下,行、列扫描法:在有键盘操作之前,先执行行、列扫描法步骤,即 RD 口值为 。当有按键按下RD 口值改变,才开始执行行、列扫描。此外,在按键没有释放之前需一直循环该次扫描。为了实现输入多个数据,就需要一直重复上述过程。该系统一次最多能处理 12 个字节的数据,所以就需要一
27、个数组Input 存放每次键入的数据。当输入12 次之后便停止重复,等待数据发送。此外再设置一个编码允许按键控制数据编码,其程序流程图为:是无否是图 基于单片机的 CRC 编解码的实现在这里需先说明输入数据的存储格式,每次键入的数据都单独存储在一个数组中,即数组中每一个项都存放一个半字节值。为了便于之后的处理和显示,将先入数据移入数组末端,采用压栈形式存放数据。对输入数据经行编码要进行两个步骤:将输入数据序列转化为可进行 CRC 编码的序列;将改好的序列进行 CRC 编码。由于采用的是 4X4 键盘,输入的数据都是都是半字节,所以一开始键入的数据是以半字节的形式保存在单片机中。而本次设计的CR
28、C 编码一次能够处理一字节,且PIC 单片机位八位单片机,也是能够一次处理一个字节。为了提高效率,须将原先以半字节为单位的输入数据合并成以单字节位单位的数据。解决上述要求,只需将相邻数据两两结合:将其中一位左移 4 位再与另一位为低 4 位相或结合,就能得到一组 8 位的数据。算法流程图如下:i=0指向原始数据数组第i位地址将i左移4位然后与i+1位相或i+所有数据是否合并完否图 福州大学至诚学院本科生毕业设计(论文)当生成新原始数据后,再按照3.2 节编解码系统总体结构中得出的 CRC 编码方法去处理这些数据数据,得出 CRC 值,具体实现方法参照 3.2 节。在将 CRC 值添加到原始数据
29、数组的最后一位,即构成 CRC 校验码。具体流程图如下:开始输入数据编码值添加到输入数据校验码解码器的解码过程和编码过程是相同的,但其处理的的对象为CRC 校验码,而处理完所有数据后,若其 CRC 值为 0,则说明在原始数据正确,若 CRC 值不为 0 则说明在传输过程受到干扰,数据出错。在 CRC 在 PIC16F877A 能够实现异步串行传输方式和同步串行传输方式。异步传输方式中,发送方和接收方各自使用自己的时钟,通过为每个字符设置起始和停止标志来识别通信内异步串行传输方式的好处是通信设备简单、操作方便,但传输效率较低。同步串行传输方式可以实现高速度、大容量的数据传送,但要求发生时钟和接收
30、时钟保持严格同步,同时硬件复杂。在本次设计中,由于所需传数据量不大且不需要高速传输,为便于操作,故采用异步串行通信方式,通过 PIC16F877A 的串行通信模块 USART 实现编解码器的通信功能。基于单片机的 CRC 编解码的实现在软件上实现 USART 发送,只需将CRC 校验码从低位到高位依次输入 TXREG 发送寄存器中,且每次发送一个字节的数据。的单片机会自动将数据传入串行发送移位寄存器 TSR中完成数据发送。接收数据时,数据先传入接收移位寄存器RSR 中,再将其传入RCREG 接收寄存器。在软件上实现,只需读取RCREG 寄存器内的数据就能实现接收。但要注意在发送时需要适当延时,
31、否则接收数据时会出现接收溢出而无法接收数据。基于所需显示的数据类型,可采用LCD1602 液晶显示模块为显示模块。本设计所使用的 LCD1602 使用的是 HD44870 液晶芯片。该芯片的接口特性及读写操作如以下两表所示:表符号VSSVDDVO电源电压: +5V液晶驱动电压:寄存器选择:1:数据寄存器; 0:指令寄存器读、写操作选择 1:读; 0:写使能信号 ENABLE数据总线34RS5R/WEH/L6H/HLH/L7DB0DB1DB2DB3DB4DB5DB6DB78H/L9H/LH/LH/LH/LH/LH/L表RS0R/W0由以上两表可知 LCD1602 显示模块与单片机的接口连接和读写
32、方式。 接口连接如下7图所示:福州大学至诚学院本科生毕业设计(论文)图 当读或写一个字符后地址指针加一,光标加一。即写入指令 0 x06。写数据时,先要确定数据在液晶面板里的位置,而液晶面板上的 32 个位置都映射在HD44870 的 RAM 缓冲区中。映射图如下:图控制器内有一个数据地址指针,可通过它来访问RAM。访问指令码的的格式是80H+地址码。基于单片机的 CRC 编解码的实现确定地址后,便可写入数据,而LCD1602 显示的字符由其字符生成器 CGROM 决定。本设计中显示的字符为 16 进制数字、字母、符号,这几类字符在 CGROM 中都是 ASCII 码的形式。其中字母、符号数据
33、为定量,16 数字数据为变量。定量数据可用字符串形式输出,而变量的 16 进制数据再加上 0 x30 后便能在 LCD 上显示。在简易 CRC CRC CRC校验正确时,显示原始数据和CRC 值;当CRC 校验错误时,显示受到干扰的原始数据和错误提示。图) 图以图 4-7 为例,原始数据位 0 xFA50C963,图 为校验正确结果;图 4-7(b)中,原始数据第 5 位在传输过程中出错,显示模块便显示错误标识。本节具体介绍了 CRC 编解码原理在单片机上具体实现的一个简易实验系统。包括按键输入模块、编解码模块、单片机通信模块以及显示模块。结合本设计制定的任务和要求确定了硬件系统的总体结构,完
34、成了硬件电路的设计。为了模拟传输受干扰的状态,在编码器生成 CRC 校验码后,由一个按键控制其中一位数据是否发生改变,然后再将数据发送。以此验证 CRC 编码在传输过程中检错的特性。该系统是为了实现 CRC 校验的实时温湿度检测系统。该系统是在4.1 节简易 CRC 编解码验证系统的基础上改进为能够实时检测环境温湿度的系统。其结构框图如下:福州大学至诚学院本科生毕业设计(论文)图 由结构框图可知,该系统与简易CRC 编解码验证系统结构相似,区别在于将按键输入改为 A/D 温湿度传感器,发送方式改为实时发送,以及一些相应改变。实时发送时需要注意:如果接收到错误数据,接收单片机不能将其传送给显示模
35、块,等待下一次发送的正确数据,再将正确数据发送给显示模块。4.2.2 A/D温湿度传感器设计本设计采用广州西博臣科技有限公司的 CHTM02 型 A/D CHR01型湿敏电阻,并可自行选配热敏电阻。响应速度快,耐水性好,可靠性高,一致性好,湿表 图基于单片机的 CRC编解码的实现由表 4-3可知,湿敏电阻 H-V输出呈线性。本设计测量温度范围为 0至 40 ,而热敏电阻 T-V输出在该范围内呈非线性,而单片机是无法识别非线性数据的。由于非线性的 T-V曲线在测试范围内局部上近似线性,故可采用折线法的方法:将曲线转化为多段直线。通过观察可发现曲线可在 0至 8和 9至 40取两条直线。PIC16
36、f877A单片机的 A/D转换模块有 8路的模拟信号采集通道,它们可采集0V至 5V的模拟电压,然后量化成1024级,并以10级的二进制即 0 x000至 0 x3FF编码,最后保存在和 ADRESL这两个寄存器中。ADRESH保存 A/D结果的高 2位, ADRESL保存余下低 8下面具体介绍第步中处理数据方法:如前文所述,最后得到的数字信号数据中,湿度数据成线性,温度线段由折现法亦可转化为线性数数据,所以采用线性变换方法:若被测量的变换范围为A A (即传感器的测量下限为A ,上限为A 0m0m值为A ;而A 对应的数字量为N ,A 对应的数字量为N ,A 对应的数字量为N 。x0mmxx
37、xm0 x0m00A =A (N -N (N -N )xmx0m0由于 PIC16F877A没有除法指令,执行除法运算实际上编译工具调用了移位方法的除法子程序,效率非常低。所以可以用另外一种算法:kkkWhile(N 大于N )0 xkxk这种算法的执行只使用了单片机的加法器,大大加快单片机的运算速度。但该算法不适用于精度要求非常高的运算。由此便得到到处理数字信号将数字信号转换为实际测量值福州大学至诚学院本科生毕业设计(论文)本系统编解码单片机设计与简易 CRC编解码验证系统相似,由于该系统的实时性,故在对收发单片机设计时需要改动,本小节特别说明:但不是每时每刻的数据都需要采集因为接受端一直处
38、于接受待命状态,只要有数据传入就进行处理。而单片机工作速度极快,会使人无法看清显示模块上的数据。此外显示模块工作也需要时间,综合以上考虑,需在一组数据处理完后经过一段延时再发送数据。原先在简易验证系统中的实现编码允许功能的按键,在这里的功能也相应改变为允许连续监测功能。接收单片机:由于发送端是将数据连续不断地发送过来。这就要求在显示时要处理好显示刷新问题。显示模块如图所示:图 图 4-10中“humid: %” T: ” CRCCRC值。在显示时是固定不变的,而在它们之后是不断变化的数据。这就要求在编写程序时要先刷新一次固定不变的量,并在之后保持它们不变。在此之后的每次刷新都只去刷新变化量的值。当接收单片机接收信息,通过计算发现其为错
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 静磁场对海水介电频率特性的影响与机制研究
- 静态图像中正面人脸表情识别算法的深度剖析与优化研究
- 青海大学图书馆:地方特色文献服务的实践探索与创新发展
- 青岛沿海大气新粒子生成、增长及其前体物的多维度解析与机制探究
- 零无穷远处波动型衰减下球对称爱因斯坦标量场方程的深度剖析与应用探究
- 零价铁还原脱氯多氯联苯:机制、影响因素与应用前景探究
- 2026年智能交通创新趋势行业报告
- 2026年社区文化品牌打造与传播策略
- 2026年泌尿外科微创手术质量控制方案
- B端开发者社区从0到1搭建指南及运营实战手册
- 村卫生室春季传染病的预防知识讲座内容
- (高清版)DB42∕T 2133-2023 建筑施工侧埋式悬挑脚手架技术规程
- 政务服务办事员职业技能竞赛考试题库(浓缩500题)
- 婚姻家庭法律代理承诺保密
- 2024年广东粤电阳江海上风电有限公司招聘笔试参考题库含答案解析
- 广外学生管理手册
- 信用修复申请书
- 锦州市国企招聘考试真题及答案
- 干部人事档案管理业务培训班课件
- 陕西省交通医院电子病历三级改造项目方案
- GB/T 6109.5-2008漆包圆绕组线第5部分:180级聚酯亚胺漆包铜圆线
评论
0/150
提交评论