收藏 分享(赏)

数据采集及传输处理.doc

上传人:tangtianxu1 文档编号:3236688 上传时间:2018-10-08 格式:DOC 页数:45 大小:419.50KB
下载 相关 举报
数据采集及传输处理.doc_第1页
第1页 / 共45页
数据采集及传输处理.doc_第2页
第2页 / 共45页
数据采集及传输处理.doc_第3页
第3页 / 共45页
数据采集及传输处理.doc_第4页
第4页 / 共45页
数据采集及传输处理.doc_第5页
第5页 / 共45页
点击查看更多>>
资源描述

1、- 本科生毕业设计(论文) 第 I 页 数据采集及传输处理摘要本文主要阐述了基于数字采集与传输处理系统的设计基本思想,包括硬件实现,应用软件实现以及驱动程序设计,同时也介绍了基于 MAX485 数据传输系统。硬件的主要组成部分为 AT89C51,ADC0809 ,MAX485,8155,LED 显示。用软件编程控制硬件实现的过程:发送方的设备把模拟信息转换为数字信息后,发送到接收方的设备上。接收设备利用 LED 来显示数据。使用的核心芯片是 AT89C51,这个芯片可以很好地满足我们的要求。数据采集系统用来采集模拟数据,并将模拟数据存放于存储器中作以后发送用。A/D 转换器将模拟形式转换为数字

2、量表示。使用 ADC0809 作为 A/D 转换器,它可以把连续的模拟信号转变成数字形式。选用 MAX485 连接两台机器进行传递信息. 软件编程的语言使用的是 C 语言,它的运行的环境是 keil 软件。关键词: 单片机 AT89C51,ADC0809,MAX485,LED 显示.- 本科生毕业设计(论文) 第 II 页 Abstract This article introduces the base method according to data collection and transmitting process system, including the hardware des

3、ign, the application software design and the design of the program design, also introduces the data transmitting system according to the MAX485.The necessary hardware consists of AT89C51,ADC0809 ,MAX485,8155,LED display.The process of the programme of software controlling hardware operation as follo

4、w: The device on the transmitting computer converts the analog signals to digital format and this digital format is transmitted to the receiving computer. The device on the receiving computer uses the information to driver LED display.The key chip we use is AT89C51. This chip can meet our need perfe

5、ctly. Data acquisition system is used to acquire analog data and store it on storage devices for later transmitting. A/D converter converts an analog format into an equivalent digital representation. We use the ADC0809 as A/D converter, which is used to convert continuous analog signals into digital

6、 format. We choose the MAX485 as the device, which is used to connect two computers for transmitting information. The programme of software language is C language, which of operation is keil software.Key words: MCS-AT89C51, A/D converter, MAX485, LED display.- 本科生毕业设计(论文) 第 I 页 目 录 摘要 IAbstract.II1

7、绪论 12 数据发送端硬件 .42.1 ADC0809 与 AT89C51 的硬件连接 .42.1.1 ADC0809 简介42.1.2 启动端口的连接与工作原理 .51.1.2 输出端口的连接与工作原理 .72.2 晶振电路和复位电路 .92.3 AT89C51 的数据传输 .92.3.1 AT89C51 的串行接口92.3.2 MAX485 芯片113 数据接收端硬件 .143.1 8155 芯片结 构和与 AT89C51 的硬件连接 .143.2 AT89C51 对 8155I/O 口的控制命令 .163.3 七段 LED 数码管硬件连接与工作原理173.4 键盘的硬件连接与工作原理 1

8、93.5 闪烁部分的连接与工作原理 204 软件执行过程214.1 发端软件执行过程 214.1.1 AT89C51 和 ADC0809 子程序工作过程.214.1.2 74 汉明码的编码224.1.3 收发数据的子程序工作过程.234.2 收端软件执行过程244.2.1 收端主程序.244.2.2 按键 子程序.264.2.3 显示子程序.27结论 .28致谢 .29参考文献 .30附录 A31附录 B38- 本科生毕业设计(论文) 第 1 页 1 绪论目前大中型企业智能化管理迅速发展。如果能在现场采集到的数据和控制器之间建立起通信,就可实现在控制室中利用计算机来监督现场设备的运行情况,这样

9、不仅可以大大降低劳动强度,有效地提高工作效率,而且可以快速地发现错误信息,并及时地赶到现场进行处理。根据以上考虑,本人设计了一种基于 AT89C51 单片机的数字采集与传输处理系统。该装置主要应用在控制电压和电流的设备上,它可以显示该设备是否正常运行,也可以根据人的需要立即显示一路信号。 本人在设计数据采集系统过程中,考虑到输入的模拟电压仅在 0V 到 5V 之间,输入量的范围很小,为了精确地采集到数据,本设计中采用了 ADC0809 芯片。它的分辨率为 8 位,即将一路信号 A/D 转换为 8 位二进制数。这样在控制室工作的人员就可以准确地把握现场设备上电压或电流的变化情况。为了提高工作人员

10、的效率,让他们能及时,快速地观察到错误信息,在设计电路工作流程中,执行程序使发端的 AT89C51 不断地启动 ADC0809 工作,让 ADC0809 不停地转换新输入的模拟信号,并刷新收端 AT89C51 内存里的要显示数据。如果工作人员观察到的数据工作在允许范围之内,说明现场一切设备运行正常,如果现场哪路设备不工作了,在控制室里的工作人员就会发现发光二极管不断的闪烁,同时 LED 数码管会显示哪路出现问题,这时工作人员就可以立刻赶到现场,查明事故原因。在设计数据传输系统过程中,运用了 74 汉明码的编码和译码原理,对采集到的数据进行处理。由于 74 汉明码具有纠错和检错能力强,编码效率高

11、码长短,编码规律简单等优点,而且也是在现实系统中经常使用的一种检错码,所以利用 74 汉明码编码后发送的数据具有很好的纠错能力,这样就极大地提高了数据传输的可靠性。本系统设计的硬件设备由发端(A 机)和收端(B 机)两部分组成。A 机主要功能是将采集到的数据进行 A/D 转换,然后把数据存于发端的 AT89C51 中,利用 MAX485 来传输数据。B 机的主要功能是通过 MAX485 接收数据,将数据存于收端 AT89C51 中,然后由 AT89C51 来控制 8155 显示数据。在显示部分电路中由 5 个七段 LED 数码管和 4*2矩阵键盘组成,5 个七段 LED 数码管的前两位用于显示

12、是哪路的模拟电压信号还是模- 本科生毕业设计(论文) 第 2 页 拟电流信号,后三位用于显示数字量,精确到小数点后两位。8 个键盘代表了 8 路模拟信号,其中第一列代表模拟电压信号,第二列代表模拟电流信号。发端(A 机)基本框图为:收端(B 机)基本框图为:在理论上系统主要由数据采集、数据传输和数据处理三大功能模块组成。下面对三大功能模块简单进行描述:第一部分:数据采集部分由模拟电压、模拟电流、运算放大器(LM324) 、A/D 转换器(ADC0809 芯片) 、单片机 AT89C51 组成。由于模拟电源信号在传输过程中容易受到外界噪声的干扰,为了保证数据传输的可靠性,将模拟信号转化为数字信号

13、进行传送。这种转换的主要使用的芯片是ADC0809。所用电源,可产生 0V-5V 可调的模拟电压信号和 10mA-50mA 的可调模拟电流信号。数据采集系统的软件设计采用了顺序程序设计的方法,包括主程序、启动A/D 转换子程序和串行口发送子程序等。第二部分:数据传输部分由发端和收端各自的 MAX485 和 AT89C51 组成。AT89C51 是一种带 2K 字节闪烁可编程可擦除只读存储器的单片机。除具有 4 个 8位并行口外,还具有一个全/半双工串行通信接口。 AT89C51 通过使用串行接口的引脚RXD( P3.0 串行数据接收端)和引脚 TXD(P3.0 串行数据发送端)与外界进行通信,

14、它可以实现需要的 AT89C51 单片机系统之间点对点的单机通信。 MAX485 是一种差分平衡型低功率收发器芯片。芯片中包含有 1 个驱动器和 1 个接收器,采用单+5V 电源供电,可用于 TTL 协议(即通用于各种 CPU 的通信协议)与 485 协议间的转换,由于它是半双工的方式,只能有一方发送,一方接收,而且它采用差动电平接收的方法,采集数据 MAX485AT89C518 路数据循环显示显示一路数据A/D转换AT89C51MAX4858155驱动显 示按键发送数 据接收数 据- 本科生毕业设计(论文) 第 3 页 这样就具有很强和很高的抗共模干扰能力和接收灵敏度,适合在比较恶劣的环境下

15、工作。MAX485 的驱动器摆率不受限制,可以实现最高 2.5Mbps 的传输速率;在转送数据速度达 100KB/S 时,通信的距离可 1200M。在 MAX485 收发端 A 和 B 之间接一个120 欧的匹配电阻,使电流信号转变为相差 200mV 的电压信号。所以 MAX485 作为设计中最合适的数据传输器件。第三部分:数据处理部分主要由单片机 AT89C51、8155 可编程 I/O 接口、功能键和七段 LED 显示器等部分组成。这部分将在第三章详细讲述。设计时注意了几个问题:(1)设计电路和片选时,要考虑芯片和电路的驱动能力,否则会造成工作不正常或失败。如本设计中,由于 LED 通常需

16、要几几十毫安的驱动电流才能发光,为了使其正常显示数据,在 LED 的段数据线上加入了 7407 同相驱动器。(2)模拟电压和模拟电流电路中电阻不宜过大,且应采用精密电阻,以满足系统精度的要求。C51 语言程序的运行环境为 keil 软件,当程序烧到 AT89C51 里时,keil 可以把C51 语言直接生成汇编语言,以 01 代码的形式存在 AT89C51 的内存里。由于 C 语言的可读性强,不像汇编语言那样繁琐,所以本人采用 C 语言编程。单片机芯片应用广泛,具有很多特点,如片内资源丰富,产品的体积小,可靠性高,引脚少,功能全,工作电压低,功耗小等。本设计是一个小型的控制系统,可以应用在不同

17、的场合来监督设备是否正常工作。但由于本设计对器件的灵敏度、精度和实时性没有很高的标准,在现实中不一定适用,还须根据不同的场合加以改进。- 本科生毕业设计(论文) 第 4 页 2 数据发送端硬件本章主要讲述了发端的 AT89C51 控制 ADC0809 和 MAX485 的工作原理,和它们之间的硬件连接。2.1 ADC0809 与 AT89C51 的硬件连接2.1.1 ADC0809 简介本人使用的 ADC0809 芯片是逐次逼近型的 A/D 转换器,分辨率为 8 位,可以实现对 8 路模拟信号分时的进行 A/D 转换,每一通道的转换大约需时 10us。芯片内带有通道地址译码锁存器,采用脉冲启动

18、方式。应用单一+5 v 电源,其模拟量输入电压的范围为 0v-5v,对应的数字量输出为 00H-FFH, 三态锁存输出,功耗为 15MW。ADC0809 是A/D 转换的主要器件。本设计采用中断方式传送数据给 AT89C51。START CLOCK6 10IN0 26 IN1 27 7 EOC IN2 28 IN3 1 Vx 21 D0 IN4 2 比较器 20 D1IN5 3 Vs 19 D2 IN6 4 18 D3 IN7 5 8 D4 15 D514 D6 17 D7 ADDA 25 ADDB 24 9 OEADDC 23ALE 228路模拟开关通道地址锁存与译码逻辑控制与定时电路逐次逼

19、近寄存器 SAR树状模拟开关阵译码器256 电阻阶梯三态输出锁存器- 本科生毕业设计(论文) 第 5 页 11 13 12 15VCC GND Vref(+) Vref(-)图 2.1 ADC0809 逻辑框图1 2 3 4 5 6ABCD654321DCBATitleNumber RevisionSizeCDate: 15-Jun-2003 Sheet of File: F:3protelPX.DDB Drawn By:EA/VP31X119X218RESET9RD17WR16INT012INT113T014T115P101P112P123P134P145P156P167P178P00 39

20、P01 38P02 37P03 36P04 35P05 34P06 33P07 32P20 21P21 22P22 23P23 24P24 25P25 26P26 27P27 28PSEN 29ALE/P 30TXD 11RXD 10U1AT89C51IN-0 26msb2-1212-220IN-1 272-3192-418IN-2 282-582-615IN-3 12-714lsb2-817IN-4 2EOC7IN-5 3ADD-A25IN-6 4ADD-B24ADD-C23IN-7 5ALE22ref(-) 16ENABLE9START6ref(+) 12CLOCK10U2ADC08091

21、23U4A74ALS02456U4B74ALS0212U6A74ALS05/WR/RDVCCOC1C111D31Q 22D42Q 53D73Q 64D84Q 95D135Q 126D146Q 157D177Q 168D188Q 19U374LS373图 2.1 ADC0809 与 AT89C51 连接原理图- 本科生毕业设计(论文) 第 6 页 2.1.2 启动端口的连接与工作原理 (1)START:为“启动脉冲”输入线,该线上的正脉冲是由 AT89C51 的 P2.7 和/WR 来提供的,其宽度在 100us-200us 之间。当执行指令使 P2.7=0 和 =0 时,输入一个正WR脉冲,便

22、立即启动 ADC0809 工作,10us 后 EOC 变为低电平。(2)ALE:地址锁存允许输入线,高电平有效。当 ALE 线为高电平时,ADDA,ADDB 和ADDC 三条地址线上的地址信号得以锁存,经译码后读入一路模拟信号。由 P2.7 和控制启动转换信号 ALE 端,使之变为高电平,执行的指令和启动 START 端的指令一WR样。(3)OE:输出允许信号,高电平有效。OE 由低电平变高电平,打开三态输出锁存器,将转换后的结果输出到数字总线 D0-D7 上。由 P2.7 和 联合控制使 OE 线变为高电平,RD以提取 A/D 转换后的数据量。(4)IN0-IN7:IN0-IN7 为 8 路

23、模拟电压输入线,前 4 位用于输入模拟电压,范围是0V-5V。后 4 位用于输入被转换的模拟电流,范围是 10mA-50mA。由于 ADC0809 的输入端只能允许模拟电压信号输入,所以必须将模拟电流信号转换为模拟电压信号,因此模拟电流信号先串联 1 的电阻,取电阻上的电压。又因为模拟电流信号为毫安级,而 ADC0809 芯片要求输入电压为 0V-5V 之间,所以将取出的电压信号经过放大倍数为 10 的运算放大器两级放大后进入 ADC0809 的模拟输入通道IN4-IN0 进行 A/D 转换。具体接法如下所示:一级放大计算过程如下:“虚短”:Un=Up=0, “虚断”:Ui/R6=-Uo/R7

24、=-10- 本科生毕业设计(论文) 第 7 页 1 2 3 4 5 ACD42DBe : 14 K 7 K 1 K 5 K A 图 2.2 两级运放原理图1.1.2 输出端口的连接与工作原理(1)通道选择ADDA,ADDB 和 ADDC 为通道地址输入线,用于选择 IN0-IN7 上的哪一路模拟电压送给比较器进行 A/D 转换。ADDC,ADDB,ADDA 的 8 种组合状态 000-111 对应了 8 个通道的选择。给 ad_adr(ad_adr 为指向通道的指针变量)赋值,锁存模拟通道地址,就选通了一路信号。当读取下一路模拟地址时,执行 ad_adr+ ;进入循环,便启动新输入通道的 A/

25、D 转换。(2)采样进入采样程序后 8 个通道依次被选通一次,即采样次数为 8:转换所得的数字量按序存于片内 AT89C51RAM 中的 adi数组里。(3)数字量的转输1. D7-D0:为数字量输出线,D7 为最高位,D0 为最低位。是三态输出锁存器的输出端。转换后的数据从 D7-D0 输入到 AT89C51 的 P0 口。2.EOC:为转换结束输出线,指示转换结束和数据有效的信号,它是一个负方波,EOC由高电平到低电平跳变表示 A/D 转换开始,转换过程中维持低电平, EOC 由低到高跳变表示 A/D 转换结束。EOC 线作为 CPU 的中断请求输入线。经 7405 反相后接到AT89C5

26、1 的 口。当 A/D 转换结束时,EOC 端发出一正脉冲,申请中断,即 EOC=1,0INT- 本科生毕业设计(论文) 第 8 页 =0,向 CPU 申请中断。 0INT(4)ADC0809 的其它端口工作原理1. VREF(+) ,VREF(-):参考电压输入线,用于给电阻阶梯网络提供标准电压。VREF(+)和 VCC(+5V)相连,VREF(-)与地 0V 相连。输入的模拟量是从 0 开始,最大值是+5V 满量程。当输入最小为 0V,输出为 00H,当输入最大为 5V,输出为 FFH。2.CLOCK:因芯片的时钟频率最高只能工作在 640KHz,所以本人在设计中为 ADC0809 提供逐

27、次比较所需时钟脉冲序列为 500KHz。ADC0809 所需时钟信号由 AT89C51 的 ALE 端提供。AT89C51 的 ALE 信号的频率是晶振频率的 1/6。AT89C51 晶振频率是 6MHz,则ALE 信号频率为 1MHz,ALE 的信号经 D 触发器二分频接到 ADC0809 的 CLOCK 输入端,这样就可获得 500KHz 的 A/D 转换时钟脉冲。D 触发器为上升沿动作,输出跟随输入变化.AT89C51 ALE: 由 D 触发器的特性得出 CLOCK 端口的波形。CLOCK:1 2 3 4 5 6ABCD654321DCBATitleNumber RevisionSize

28、BDate: 13-Jun-1984 Sheet of File: F:3protelPX.DDB Drawn By:CLK3D2 SD4CD1Q 5Q 6UDA74LS7412 3U7A74LS3212 3U10A74ALS323 4U6B74ALS055 6U6C74ALS05/RD/WRVCCGNDclockALE图 2.3 CLOCK 连接原理图因为 CLOCK 是由 和 分别反相后,经两个 74LS32 或门控制的,所以当 和WRDWR其中一个有效时,CLOCK 端进入的都为高电平。也就是说,只有在数据转换过程中RDADC0809 才有 CLOCK 时钟脉冲输入,而在 ADC0809

29、 启动和结束的过程中,都为高电平。VCC:为+5V 电源输入线。 GND:地线- 本科生毕业设计(论文) 第 9 页 1 2 3 4 5 6ABCD654321DCBATitleNumber RevisionSizeBDate: 19-Jun-2005 Sheet of File: F:4protelPX.DDB Drawn By:AT89C51 ALESTARTALE/WR/RDCLOCKCBASAROEEOCD0-D7DATA 图 2.4 采集一路信号的时序原理图2.2 晶振电路和复位电路(1)晶振电路AT89C51 芯片内部有高增益反相放大器用于构成振荡器。反相放大器的输入端为XTAL1

30、,输出端为 XTAL2,在其两端跨接 6MHz 的石英晶体和 30pF 的两个电容构成稳定的自激振荡器,这样就提供了振荡所必需的正反馈和相移条件。两个电容对振荡频率有微调作用。(2)复位电路使用频率为 6MHz 的晶振,复位电路信号持续的时间应超过 4us 才能完成复位操作。AT89C51 的复位电路是用外部电路来执行的,在 CLOCK 工作时,只要在 RESET 引脚上接上 10ms 以上的高电平,AT89C51 执行状态复位。2.3 AT89C51 的数据传输2.3.1 AT89C51 的串行接口(1)串行通讯方式在数据传输过程中,本设计使用异步串行通信的方式。采用串行通信工作方式 1-

31、本科生毕业设计(论文) 第 10 页 传输数据。在异步通讯中,收端和发端的 AT89C51 之间必须有两项规定,即字符格式和波特率。字符格式的规定是双方能够在对同一种 0 和 1 的字符串理解成同一种意义。波特率即数据传送的速率,其定义是每秒钟传送的二进制数的个数。要求数据传送的速率是 60 字符/s ,而每个字符如上述规定包含 10 数位,则传送波特率为 600。因为波特率越高,要求传输通道的频带越宽,一般异步通信的波特率在 50b/s-9600b/s 之间,为保证传输的可靠性,采用 600b/s。由于异步通信双方各用自己的时钟源,要保证捕捉到的信号正确,选择时钟频率比波特率高很多倍,不然频

32、率稍有偏差便会产生接收错误。为节省资源,接口通过一根传输线将数据发送出去,所以本设计采用串行通信通过串行接口实现。根据信息的传送方向,采用半双工传送数据,因为要求 A 机向 B 机发送完数据后,B 机再向 A 机发送一个确认信息,即信息能双向传送但不能同时双向传送。(2)串行接口结构和控制命令串行接口结构为:串行口主要由发送数据缓冲器,发送控制器,输出控制门,接收数据缓冲器,接收控制器,输入移位寄存器等组成。AT89C51 有两个物理上独立的接收,串行口缓冲寄存器 SBUF,它们占用同一地址 99H,收发时不会出现冲突,因为它们两个,一个只能被 CPU 读出数据,一个只能被 CPU 写入数据.

33、串行口的两个特殊功能寄存器 SCON,PCON. SCON 用于定义串行口的工作方式及实施接收和发送控制。SCON 的格式如下:D7 D6 D5 D4 D3 D2 D1 D0SM0 SM1 SM2 REN TB8 RB8 TI RI使用工作方式 1,SM0=0,SM1=1。点对点的通信 SM2=0。允许接收控制位 REN=1。其它位为 0,所以 SCON=50H。PCON 的格式如下:D7 D6 D5 D4 D3 D2 D1 D0SMOD - - - GF1 GF0 PD IDLPCON 的最高位 SMOD 是串行接口波特率系数控制位,不用波特率加倍。PCON=00H,SMOD=0。- 本科生

34、毕业设计(论文) 第 11 页 (3)定时器设置串行口波特率发生器的定时,选择模式 2,因为它是自动重装载的 8 位定时器和计数器,这种工作模式可以省去软件中重装常数的语句,并可产生相当精确的定时时间。计算定时器计数初值 XX=256- fosc/波特率*12*(32/2) 将已知数据 fosc=6* Hz,波特率=600b/s 带入,得 X=229.958=230=E6H.610赋计数初值 TH1=TL1=0E6H 。(4)方式 1 工作原理串行通讯的方式 1:它用一个起始位表示字符的开始,用停止位表示字符的结束。其每帧的格式为: 在一帧格式中,先是一个起始位 0,然后是 8 个数据位,规定

35、低位在前,高位在后,最后是停止位 1,共十位。用这种格式表示字符,则字符可以一个接一个地传送。在接收时,停止位进入 SCON 的 RB8。方式 1 发送时,数据从引脚 TXD 端输出。当执行数据写入发送缓冲器 SBUF 的命令时,就启动了发送器开始发送。发送时的定时信号,也就是发送移位时钟(TX 时钟),是由定时器 T1 送来的溢出信号经过 32 分频(SMOD=0)而得到的,TX 时钟就是发送波特率。发送开始的同时, 变为有效,将起始位向 TXD 输出,产生一个移位SEND脉冲,并由 TXD 输出一个数据位;8 位数据位全部发送完后,置位 T1,并申请中断置TXD 为 1 作为停止位,再经过

36、一个时钟周期, 失效。SEN方式 1 接收时,数据从引脚 RXD 端输入。接收是在 SCON 寄存器中 REN 位置 1 的前提下,并检测到起始位(RXD 上检测 10)而开始的。接收时由定时器 T1 的溢出信号经过 32 分频(SMOD=0 )而得到的。当一帧数据接收完毕后,必须同时满足两个条件:1.RI=0,即上一帧数据接收完成时,RI=1 发出的中断请求已被响应,SBUF 中数据已被取走。由软件使 RI=0 以便提供“接收 SBUF 已空”的信息。2.SM2=0 或收到的停止位为 1(进入 RB8) ,则将接收到的数据装入串行口的 SBUF 和 RB8,并置位 RI,如果不满足,接收到的

37、数据不能装入 SBUF,这意味该帧信息将会丢失。- 本科生毕业设计(论文) 第 12 页 1 2 3 4 5 6ABCD65432DBAe : b D D D 4 4 图 2.4 方式 1 收发时序图2.3.2 MAX485 芯片(1)MAX485 简介 MAX485 芯片是 MAXIM 公司生产的差分平衡型收发器芯片,包含一个驱动器和一个接收器。MAX485 采用平衡发送和差分接收方式来实现通信:在发送端 TXD 将串行口的 TTL 电平信号转换成差分信号 A、B 两路输出,经传输后在接收端将差分信号还原成 TTL 电平信号。两条传输线使用的是双绞线,又是差分传输,因此有极强的抗共模干扰的能

38、力,接收灵敏度也相当高。同时,最大传输速率和最大传输距离也大大提高。如果以 10Kbps 速率传输数据时传输距离可达 12m,而用 100Kbps 时传输距离可达1.2km。如果降低波特率,传输距离还可进一步提高。可用高达 2.5Mbit/s 的传输速率进行发送和接收。MAX485 是半双工收发器,它有 12K 标准输入阻抗。本设计让AT89C51 由 P1.4 来控制 MAX485 的收发状态。(2)MAX485 管脚功能- 本科生毕业设计(论文) 第 13 页 1 2 3 4 5 6ABCD654321DCBAT itleN u m b er R ev isio nS izeBD ate:

39、 2 -Ju n -2 0 0 5 S h eet o f F ile: E :zy p x .d d b D raw n B y :V C C8A6B7G N D5R O 1D I 4D E 3/R E 2U 3M A X 4 8 5图 2.5 MAX485 管脚RO:接收器输出端,当 A 比 B 高 200mv 是发送信号为高电平,反之为低电平。/RE:接收器输出使能端。/RE 为低时 RO 有效,RE 为高时 RO 为高阻状态。DE:驱动器输出使能端。作发送用,若 DE 为高,驱动器输出 A 和 B 有效。若 DE 为低,A 和 B 为高阻状态。当 RE 为低。器件作为线接收器用,若 D

40、E 为低,它们为高阻。若驱动器输出有效,器件作为线驱动用。DI:驱动器输入端。DI 为低,将使输出 A 为低,输出 B 为高,若 DI 为高将使输出 A为高,B 为低。A:同相接收器和同相驱动器输出。B:反相接收器和反相驱动器输出。VCC:电源正极,接 +5VGND:接地表 2.1 MAX485 的收发功能发送 接收输入 输出 输入 输出/REXDE11DI10B01A10/RE00DE00A-B+0.2VVx 时,该位 Di=0,若 VsVx 时,该位 Di=1。因此图 4.2 A/D 转换子程序 从 D7 到 D0 逐位逼近并比较 8 次。逐位逼近寄存器中数字量,即为与模拟量 Vx 所对应

41、的数字量。在数据转换过程中,程序置 和 无效,使 ALE 端经两个 74ls32 控制,提供WRD500Hz 的时钟脉冲给 ADC0809 的 CLOCK 端。由于逐次逼近需要一定的时间,大约为10us,所以,执行 i=i ;i=i ;指令,程序延时足够的时间等待转换完成,在此期间内,电源产生的模拟电压信号保持不变,EOC 端为低电平,INT0 为高电平。(3)A/D 转换完毕:数字量送入输出锁存器,同时发出转换结束信号。EOC 端发出一正脉冲经 7405 反相后,向 AT89C51 的 INT0 口申请中断。当 ad_busy=0(ad_busy 为指向 INT0 端口的变量)时,表示转换结

42、束,程序置 无效, 有效和 P2.7 为高电平,WRD使 OE 端有效,同时使 CLOCK 端为高电平,打开输出锁存器三态门,8 位数据便输入到AT89C51 的 P0 口中。执行 xi=*ad_adr 指令,数据存入 AT89C51 的片内 RAM 的数组adi中。ad_adr+ ;指向下一通道地址,重复上述过程。这样就采集完 8 路模拟信号。以上仅仅是某一时刻采集 8 路模拟信号的过程。AT89C51 还要不断地重新启动ADC0809 工作,再采集下一时刻的 8 路模拟信号,将数字量重新存入到收端 AT89C51 的内存里。这样工作人员看到的数据就是在不断的被刷新。4.1.2 74 汉明码

43、的编码信息元码字有 4 位,监督位码字有 3 位,而发送数据仅 8 位,所以编程时在最后一位加 1。采集到的 8 路数据,每一路用程序分前 4 位和后 4 位,然后作为信息元码发送。到接收端,用程序把 2 个 4 位数据合在一起,作为一路信号数据。接收端用监督矩阵 H 来检测接收码组 B 中的错误,程序执行 B 和 H 相乘得出伴随式 S。对 S 编一个查寻表子程序,找出错误的是哪一位。由于 7,4 汉明码只能纠一位错误,如果错误多于一位,比如 2 位,只能检错,如果有一个则纠错,否则收端要求重发数据。选通道启动 A/D 转换延时等待选下一通道8 路是否转换完初始化返回主程序- 本科生毕业设计

44、(论文) 第 23 页 4.1.3 收发数据的子程序工作过程NN YYNN YYYN N设串行工作方式发送请求联结信号 AAB 机允许发送指针初始化校验和清 0发送一个数据字节并求校验和数据块已发送完发送校验和B 机接收正确设串行口工作方式等待 A 机联络A 机请求发送发送应答信号 BB指针初始化校验和清 0接收一个数据字节并求校验和数据收齐了吗?接收 A 机校验和并与 B 机校验和比较接收正确发出错标志 oxFF返回设定波特率启动定时器 1设定波特率启动定时器 1- 本科生毕业设计(论文) 第 24 页 Y图 4.3 A 机发送程序 图 4.4 B 机接收程序首先 A 机向 B 机发送联络信

45、号 oxaa,等待 B 机的回应。当 B 机准备好接收数据时,A 机把 8 路数据信号依次发送出去,并计算出 8 路所有信号的校验和,最后发送出去。B 机根据接收到的 8 路数据计算出自己的校验和,并且与接收到的校验和进行比较,若校验和正确,则 B 机向 A 机回发“数据发送正确 ox00”信号。若校验和有错,则 B 机发送出“数据发送不正确 oxff”信号。A 机接收到“不正确”应答信号后,重新发送原数据,直到发送正确。A 机将该数据块发送完毕后停止发送。4.2 收端软件执行过程4.2.1 收端主程序YNYN Y接收数据求出 8 路各自的地址和数据判断有无键按下数据为0返回- 本科生毕业设计

46、(论文) 第 25 页 N图 4.5 收端主程序首先通过收端的 MAX485 接收数据,存入到 AT89C51 内部寄存器的数组 adi中,等待以后调用。然后转入键盘扫描子程序 kbscan 中,判断是否有按键。将求得的键值赋给 key(key=kbscan)判断 key 值是否为 0。如果为 0 说明没有键按下,执行 8 路循环显示命令。如果 key 不为 0,则有键按下 key 的值作为人让 CPU 显示的路数,即adkey就是存在 AT89C51 中的地址,其值就是人让 CPU 显示的数据,然后根据 adkey的地址和数据调用显示子程序。While(1)使 AT89C51 不断的扫描键盘和驱动显示。If(key!=0) break;如果有键按下,跳出 8 路循环程序,转去执行按键显示程序。在 8 路循环显示程序(for(i=0;i3,表示输入的模拟电流信号,执行 bdi4=10; 10 为共阴极七段 LED 显示字型 A 对应的编码。如果有键按下执行的取数命令和 8 路循环显示取数的命令过程是一样的。不同的是键值 key 代替显示的路数 i。每次调用完显示子程序都要延时 us(0.1s),这是由于人610眼的惰性决定的。调用键盘扫描子程序取键号延时 1

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 专业基础教材

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报