基于以太网的全彩色LED远程监控系统技术文档.docx
- 文档编号:29251694
- 上传时间:2023-07-21
- 格式:DOCX
- 页数:66
- 大小:1.38MB
基于以太网的全彩色LED远程监控系统技术文档.docx
《基于以太网的全彩色LED远程监控系统技术文档.docx》由会员分享,可在线阅读,更多相关《基于以太网的全彩色LED远程监控系统技术文档.docx(66页珍藏版)》请在冰豆网上搜索。
基于以太网的全彩色LED远程监控系统技术文档
目录
第一章绪论4
1.1LED的概述4
1.2LED的驱动方式4
1.2.1恒压驱动4
1.2.2恒流驱动4
1.2.3非恒压非恒流4
1.3以太网控制芯片RTL8019AS5
1.3.1RTL8019AS以太网控制器简介5
1.3.2RTL8019AS的内部结构5
1.3.3数据帧的组成6
1.3.4RTL8019AS的DMA操作6
1.4TCP/IP协议栈的精简7
1.4.1ARP7
1.4.2ICMP8
1.4.3IP8
1.4.4UDP9
1.5整体设计思路10
第二章硬件电路设计11
2.1整体设计框图11
2.1.1硬件器材的选用11
2.1.2数据传输流程11
2.2系统电路硬件连接图12
2.3DA电路设计13
2.4A/D电路设计16
2.5LED驱动电路的设计20
2.6系统的电源设计21
第三章软件设计22
3.1程序流程图22
3.1.1TCP/IP协议组的精简22
3.1.2RTL8019AS的初始化23
3.1.3数据传输流程23
3.2源程序重要函数23
3.2.1三路PWM输出程序23
3.2.2用于发送以太网数据的函数25
3.2.3UDP函数处理25
3.2.4AD查找表函数27
3.2.5主函数中的大循环部分28
3.2.6主函数中设置IP地址的部分30
3.2.7用于设置主控制中心的MAC地址。
30
第四章系统综合测试32
4.1LED亮度控制测试33
4.2LED电流回置测试40
4.3三路PWM波形输出图样43
第五章系统的细节问题补充46
参考文献47
第一章绪论
1.1LED的概述
半导体发光二极管是采用PN结或异质结的注入式场致发光的方法发光。
当在LED两端加正向电压时,P区的多数载流子空穴便会由P区进入N区,同时N区的多数载流子电子注入P区,进入对方区域的部分少数载流子与多数载流子进行复合后会将多余的能量以光的形式释放出来,从而把电能直接转换成为光能。
基于LED的众多优点,它必将成为新一代光源—第四代电光源,以代替白炽灯、高压气体放电灯和荧光灯等传统光源。
它寿命长、耗能低;应用灵活,可以做成点、线、面等各种形式的轻薄的产品;污染小辐射低,LED属于典型的绿色照明光源;控制方便,通过调整电流便可随意调光;不同光色的组合变化多,采用时序控制电路,便能产生丰富多彩的动态变化效果。
LED技术的发展已经引起了国内外的普遍关注,并成为了一项具有影响力和良好发展前景的新技术产品近几年,随着城市的建设以及电子信息化产业的迅猛发展,人们对光源的需求急剧增加。
因此,LED产品的研制开发已经成为发展前景诱人的朝阳产业。
1.2LED的驱动方式
1.2.1恒压驱动
根据LED电流、电压变化特点,采用恒压驱动LED是可行的,虽然常用的稳压电路,存在稳压精度不够和稳流能力较差的缺点,但在某些产品的应用上可能过精确设计,其优势仍然是其它驱动方式无法取代的。
1.2.2恒流驱动
采用恒流驱动方式,是比较理想的LED驱动方式,它能避免LED正向电压的改变而引起电流变动,同时恒定的电流使LED的亮度稳定。
因此众多厂家选用恒流方式驱动LED。
1.2.3非恒压非恒流
还有一种LED驱动方式是可行的,它即不恒压,也不恒流,但通过电路的设计,当LED正向电压升高时,使驱动电流减小,保证了LED产品的安全。
当然正向电压的升高只能在LED承受范围,过高也会损坏LED。
理想的LED驱动方式是采用恒压、恒流,但驱动器的成本增加。
其实每种驱动方式均有优、缺点,根据LED产品的要求、应用场合,合理选用LED驱动方式,精确设计驱动电源成为关键。
LED虽然在节能方面比普通光源的效率高,但是LED光源却不能像一般的光源一样可以直接使用公用电网电压,它必须配有专用电压转换设备,提供能够满足LED额定的电压和电流,才能使LED正常工作,也就所谓的LED专用电源。
1.3以太网控制芯片RTL8019AS
1.3.1RTL8019AS以太网控制器简介
由台湾Realtek公司生产的RTL8019AS以太网控制器,由于其优良的性能、低廉的价格,使其在市场上10Mbps网卡中占有相当的比例。
RTL8019AS的主要性能:
(1)适应于EthernetII、IEEE802.3、10Base5、10Base2、10BaseT;
(2)支持8位、16位数据总线;
(3)全双工,收发可同时达到10Mbps的速率,具有睡眠模式,以降低功耗;
(4)内置16KB的SRAM,用于收发缓冲,降低对主处理器的速度要求;
(5)可连接同轴电缆和双绞线,并可自动检测所连接的介质;
(6)100脚的TQFP封装,缩小PCB尺寸。
1.3.2RTL8019AS的内部结构
按数据链路的不同,可以将RTL8019AS内部划分为远程DMA(remoteDMA)通道和本地DMA(localDMA)通道两个部分。
本地DMA完成控制器与网线的数据交换,主处理器收发数据只需对远程DMA操作。
当主处理器要向网上发送数据时,先将一帧数据通过远程DMA通道送到RTL8019AS中的发送缓存区,然后发出传送命令。
RTL8019AS在完成了上一帧的发送后,再完成此帧的发送。
RTL8019AS接收到的数据通过MAC比较、CRC校验后,由FIFO存到接收缓冲区,收满一帧后,以中断或寄存器标志的方式通知主处理器。
原理框图如图1所示。
图1 RTL8019AS原理框图
在图1中,接收逻辑在接收时钟的控制下,将串行数据拼成字节送到FIFO和CRC;发送逻辑将FIFO送来的字节在发送时钟的控制下逐步按位移出,并送到CRC;CRC逻辑在接收时对输入的数据进行CRC校验,将结果与帧尾的CRC比较,如不同,该帧数据将被拒收,在发送时CRC对帧数据产生CRC,并附加在数据尾传送;地址识别逻辑对接收帧的目的地址与预先设置的本地物理地址进行比较,如不同且不满足广播地址的设置要求,该帧数据将被拒收;FIFO逻辑对收发的数据作16个字节的缓冲,以减少对本地DMA请求的频率。
1.3.3数据帧的组成
标准的IEEE802.3数据包由以下几个部分组成:
前导位(preamle)、帧起始位(SFD)、目的地址(destination)、源地址(source)、数据长度(length)、数据(data)、帧校验字(FCS)。
如图2所示,数据场的个数可从46B(Byte)~1500B(Byte),如一组要传送的数据为46Byte,就用零补足;超1500Byte时,需要拆成多个帧传送。
前导位、帧起始位和帧校验字仅供控制器本身用,主处理器收到的数据帧的组成依次包括:
接收状态(1Byte)、下一帧的页地址指针(1Byte)、目的地址(6Byte)、源地址(6Byte)、数据长度/帧类型(2Byte)、数据场。
数据长度/帧类型的值小于或等于1500Byte时,表示数据场的长度;反之,表示数据帧的类型。
如值依次为0x08,0x00,表示数据场为IP包;值依次为0x08,0x06,表示数据场为ARP包。
图2 IEEE802.3帧的组成
1.3.4RTL8019AS的DMA操作
RTL8019AS是针对PC机的ISA总线设计的。
如运用于嵌入式设备中,则在硬件和软件的设计上应有一些特殊性。
嵌入式设备的主处理器可通过其映射到16个I/O地址上的寄存器来完成对RTL8019AS的操作。
其寄存器地址如表1所列。
表1 RTL8019AS寄存器地址
需要指明的一点是,RTL8019AS的DMA与平时所说的DMA有点不同。
RTL8019AS的localDMA操作是由控制器本身完成的,而其remoteDMA并不是在无主处理器的参与下,数据能自动移到主处理器的内存中,它的操作机制是这样的:
主处理器先赋值于romoteDMA的起始地址寄存器RSAR0、RSAR1和字节计数器RBCR0、RBCR1,然后在RTL8019AS的DMAI/O地址上读写指定地址上的数据。
RTL8019AS内置的16KB的SRAM可划分为接收缓冲和发送缓冲两个部分。
缓冲以页为单位,每页256个字节,16KB的SRAM的页范围规定在0x40~0x80,由PSTART和PSTOP寄存器来设定接收缓冲页的范围;由RSAR0、1和RBCR0、1寄存器来设定发送缓冲页的范围。
CURR指向接收到的帧的起始页,Boundary指向还未读的帧的起始页。
当CURR到达了接收缓冲页的底部,即与PSTOP相等时,CURR又会自动指向到PSTART处。
与DMA有关的寄存器如图3所示。
图3 与DMA有关的寄存器
1.4TCP/IP协议栈的精简
单片机中TCP/IP的实现与PC机不同,在PC里可支持比较完整的TCP/IP协议组,但在单片机里无法做到,这是因为单片机根本没有足够的代码空间来支持这些协议。
一般在单片机里实现与需要有关的部分,而不使用的协议则一概不支持。
例如文件共享SMB协议,在UNIX、WINDOWS都支持,但单片机上却没有必要。
一般只能在单片机中实现:
ARP、IP,ICMP、TCP/UDP这些协议,而更高层的协议,HTTP、SMTP、FTP一般是不需要支持的。
虽然有些单片机例如AVR上网方案实现了这些协议,但实用性不大。
因为单片机应用的TCP/IP协议大多是为了完成数据采集和数据传输,而不是网页浏览、文件传输这些功能。
另外由于单片机资源的有限性,对某一协议而言,也有可能要作简化。
本系统中实现的协议只有ARP、IP、ICMP、UDP。
在选择传输层协议时我们放弃了面向链接的TCP,因为TCP为了保证数据的可靠性采用一问一答的方式,这在数据量并不大的嵌入式系统中,反而增加了网络的负担;另外TCP的很多机制,如分段机制、窗口机制等都适合于数据量大、处理能力强的PC机网络,并不适合于嵌入式系统。
UDP虽然不提供面向链接的、可靠的服务,但是协议简单,实时性更强,应用层也可以做相应的定时等待、重发处理等辅助性的操作来弥补它的缺陷。
1.4.1ARP
ARP的本质就是实现IP地址到MAC地址的转换,抓住了这一点实现就比较简单。
嵌入式系统中没有必要实现PC机网络中地址表的更新功能,只需完成地址转换。
管理中心机在初始化CDT时发送ARP请求,CDT只需响应中心对它的ARP请求,但不主动发送ARP请求。
表2ARP报头结构
硬件类型
协议类型
硬件地址长度
协议长度
操作类型
发送方的硬件地址(0-3字节)
源物理地址(4-5字节)
源IP地址(0-1字节)
源IP地址(2-3字节)
目标硬件地址(0-1字节)
目标硬件地址(2-5字节)
目标IP地址(0-3字节)
(1)硬件类型字段指明了发送方想知道的硬件接口类型,以太网的值为1;
(2)协议类型字段指明了发送方提供的高层协议类型,IP为0800(16进制);
(3)硬件地址长度和协议长度指明了硬件地址和高层协议地址的长度,这样ARP报文就可以在任意硬件和任意协议的网络中使用;
(4)操作字段用来表示这个报文的类型,ARP请求为1,ARP响应为2,RARP请求为3,RARP响应为4;
(5)发送方的硬件地址(0-3字节):
源主机硬件地址的前3个字节;
(6)发送方的硬件地址(4-5字节):
源主机硬件地址的后3个字节;
(7)发送方IP(0-1字节):
源主机硬件地址的前2个字节;
(8)发送方IP(2-3字节):
源主机硬件地址的后2个字节;
(9)目的硬件地址(0-1字节):
目的主机硬件地址的前2个字节;
(10)目的硬件地址(2-5字节):
目的主机硬件地址的后4个字节;
(11)目的IP(0-3字节):
目的主机的IP地址。
1.4.2ICMP
ICMP协议是一种面向连接的协议,用于传输出错报告控制信息。
它是一个非常重要的协议,它对于网络安全具有极其重要的意义。
ICMP的种类很多,在本系统中只要实现ICMP信息回显功能。
管理中心在执行PING命令时,发送ICMP请求信息,CDT中只需实现ICMP回应信息。
表3ICMP协议的头结构
类型(8位)
代码(8位)
校验和(8位)
类型或者代码
(1)类型:
一个8位类型字段,表示ICMP数据包类型。
(2)代码:
一个8位代码域,表示指定类型中的一个功能。
如果一个类型中只有一种功能,代码域置为0。
(3)检验和:
数据包中ICMP部分上的一个16位检验和。
1.4.3IP
IP包最大可达65k,单片机中无法存放如此大的数据包,因此一般不支持分段,以发送小数据的方式来避免分段。
另外IP层的选项功能都可以完全忽略,IP层只需要根据协议类型分包。
表4IP头的结构:
版本(4位)
头长度(4位)
服务类型(8位)
封包总长度(16位)
封包标识(16位)
标志(3位)
片断偏移地址(13位)
存活时间(8位)
协议(8位)
校验和(16位)
来源IP地址(32位)
目的IP地址(32位)
选项(可选)
填充(可选)
数据
(1)字节和数字的存储顺序是从右到左,依次是从低位到高位,而网络存储顺序是从左到右,依次从低位到高位。
(2)版本:
占第一个字节的高四位。
头长度:
占第一个字节的低四位。
(3)服务类型:
前3位为优先字段权,现在已经被忽略。
接着4位用来表示最小延迟、最大吞吐量、最高可靠性和最小费用。
(4)封包总长度:
整个IP报的长度,单位为字节。
(5)存活时间:
就是封包的生存时间。
通常用通过的路由器的个数来衡量,比如初始值设置为32,则每通过一个路由器处理就会被减一,当这个值为0的时候就会丢掉这个包,并用ICMP消息通知源主机。
(6)协议:
定义了数据的协议,分别为:
TCP、UDP、ICMP和IGMP。
定义为:
#definePROTOCOL_ICMP0x01
#definePROTOCOL_IGMP0x02
#definePROTOCOL_TCP0x06
#definePROTOCOL_UDP0x11
(7)检验和:
校验的首先将该字段设置为0,然后将IP头的每16位进行二进制取反求和,将结果保存在校验和字段。
(8)来源IP地址:
将IP地址看作是32位数值则需要将网络字节顺序转化位主机字节顺序。
转化的方法是:
将每4个字节首尾互换,将2、3字节互换。
(9)目的IP地址:
转换方法和来源IP地址一样。
在网络协议中,IP是面向非连接的,所谓的非连接就是传递数据的时候,不检测网络是否连通。
所以是不可靠的数据报协议,IP协议主要负责在主机之间寻址和选择数据包路由。
1.4.4UDP
UDP协议的主要作用是将网络数据流量压缩成数据报的形式。
一个典型的数据报就是一个二进制数据的传输单位。
每一个数据报的前8个字节用来包含报头信息,剩余字节则用来包含具体的传输数据。
表5UDP协议的头结构
源端口(2字节)
目的端口(2字节)
封报长度(2字节)
校验和(2字节)
数据
(1)源端口(SourcePort):
16位的源端口域包含初始化通信的端口号。
源端口和IP地址的作用是标识报文的返回地址。
(2)目的端口(DestinationPort):
6位的目的端口域定义传输的目的。
这个端口指明报文接收计算机上的应用程序地址接口。
(3)封包长度(Length):
UDP头和数据的总长度。
(4)校验和(CheckSum):
和TCP和校验和一样,不仅对头数据进行校验,还对包的内容进行校验。
1.5整体设计思路
本设计提供了一种通过以太网来控制及监测远端LED灯的方法。
用户只需在远端的控制PC发出UDP的控制指令,就可以调节受控LED驱动发出的多路的PWM值,从而调节RGB三路LED灯的亮度,配比出各种色彩。
与此同时,用户还可以时刻监视受控驱动所发出的电流大小,确保LED灯的安全。
第二章硬件电路设计
2.1整体设计框图
图2-1整体设计框图
2.1.1硬件器材的选用
为达到较快的速度并且最大化地降低成本,本设计采用台湾宏晶公司生产的STC89C54RD+单片机作为控制核心。
该单片机内置16K的FLASH和8K的EEPROM,具有速度快、抗干扰能力强、功耗低、价格低廉等优点。
时钟频率选用最为常用的22.1184MHz[2]。
系统使用STC12C5616单片机与控制核心直连,用以输出多路PWM信号。
为方便存放网络数据、提高传输速度,在单片机外扩展了62256外部数据存储器,同时辅以锁存器74HC573控制其读写操作,这样能够保证有足够的数据存储空间供系统使用,保证不会溢出。
A/D电路部分使用最常用的ADC0809芯片和无源的滤波电路来采样三路LED的电流值,这样可以简化电路,降低复杂度。
此外,系统使用了稳压器为整个系统提供稳定的5V电压。
2.1.2数据传输流程
系统正常工作时,工作人员在远程控制端PC发出调光命令,由软件自动将其打成含UDP协议数据的以太网包发送出去。
数据由RJ45接口接收,经隔离滤波器到达RTL8019AS芯片。
接着,收到的以太网包被立即转换为IP数据包送至单片机。
单片机对IP数据包进行逐次解包,还原原有的控制数据,通过STC12C5616单片机发出三路不同的PWM信号,进而控制CAT4109驱动器调节三色LED的亮度。
与此同时,系统自动采集各路LED输出的电流值,先经过滤波电路转换成较为平滑的直流信号,然后通过A/D芯片转换回数字信息传回单片机,再由单片机将其打成包含UDP数据的IP数据包发送给RTL8019AS芯片,RTL8019AS便会自动将其转换成电信号发回控制PC。
这样,工作人员就能够实时地看到驱动芯片的工作状况。
2.2系统电路硬件连接图
图2-2单片机与62256电路连接图
图2-3RTL8019AS模块的电路连接
2.3DA电路设计
本设计因单片机的IO口被占用的过多,而且RAM与RTL8019AS同时使用了P27脚作为片选信号,使用0/1片选,二者总有一个会被选中。
这样,只要使用单片机的WR及RD引脚就会与RAM及RTL8019AS芯片引起读写的冲突,从而造成网络数据的不稳定。
实验表明,并行的ADC0804及DAC0832芯片会严重干扰网络数据,造成网路的堵塞及系统瘫痪。
因此,必须使用引脚较少的串行AD及DA芯片才能够完全避开干扰的问题。
本设计的串行DA芯片选用的是Burr-Brown公司生产的DAC7611芯片作为DA转换器。
DAC7611采用单一的+5V电源供电,内部集成了2.435V的基准电压源及高速轨道输出放大器,数字电路部分包含一个输入移位寄存器,适用于串行接口的数据传输。
典型的特性如下:
(1)12位分辨率;
(2)3线接口的数据同步传输,时钟频率最快可达20MHz;
(3)快速建立时间:
7us-1LSB;
(4)0~4.095V满量程范围,最低有效位为1mV;
(5)内部集成参考源;
(6)异步复位清零;
(7)低功耗,采用+5V电源是电流为0.5mv,2.5mv。
DAC7611的内部结构图如图2-7所示,引脚图如图2-8所示。
图2-4DAC7611内部结构图
图2-5DAC7611引脚图
各个引脚的定义如下:
VDD:
+5V电源输入。
CS:
片选信号,低电平有效。
CLK:
数据传输的同步时钟信号。
SDI:
串行数据信号,在CLK的上升沿进入串行移位寄存器。
LD:
装载DAC寄存器。
LD的下降沿将移位寄存器的数据锁入DAC寄存器。
当LD为低电平时,DAC寄存器处于透明状态,此时DA转换器跟着移位寄存器的值变化。
CLR:
清除DAC寄存器。
当CLR为低电平时,DAC寄存器被设置为000H,从而DA转换器输出的电压为0V。
GND:
地
VOUT:
电压输出。
DAC芯片与单片机的电路连接图如图2-9所示。
图2-6DAC7611与单片机的电路连接图
DAC的时序图如图2-10所示。
当LD信号的下降沿时数据采用移位寄存器进入DAC寄存器中,这样可以防止串行数据传输过程中移位寄存器的值不确定造成模拟量输出的不稳定。
CLR信号必须一直处于高电平状态,否则DA转换器将被清零。
图2-7DAC7611的操作时序图
DA的单片机C语言程序如下:
#include
#include
sbitdaclk=P1^4;//da各个接口及参数的定义
sbitsdi=P1^5;
sbitld=P1^6;
sbitcsda=P1^7;
sbitclr=P3^0;
unsignedintdavalue;
voiddelayer(unsignedintz)//延时函数
{
unsignedintx,y;
for(x=z;x>0;x--)
for(y=100;y>0;y--);
}
voidinit_da()//da初始化
{
ld=0;
clr=1;
daclk=1;
sdi=0;
csda=1;
}
voidclock(void)//da时钟的脉冲
{
daclk=0;
_nop_();
daclk=1;
_nop_();
}
voiddac7611(unsignedintdaval)//da转换主程序
{
unsignedinti,temp;
clr=1;
daval<<=4;
ld=1;
csda=0;
_nop_();
for(i=0;i<12;i++)
{
temp=daval;
sdi=temp&0x8000;//依次传输12位数据
clock();
daval<<=1;
}
daclk=1;
_nop_();
csda=1;
ld=1;
ld=0;
for(i=0;i<15;i++)
{
_nop_();
}
ld=1;
}
2.4单路A/D电路设计
本设计选用的串行AD芯片为德州仪器公司生产的TLC549。
TLC549是美国德州仪器公司生产的8位串行A/D转换器芯片,可与通用微处理器、控制器通过CLK、CS、DATAOUT三条口线进行串行接口。
具有4MHz片内系统时钟和软、硬件控制电路,转换时间最长17μs,TLC549为40000次/s。
总失调误差最大为±0.5LSB,典型功耗值为6mW。
采用差分参考电压高阻输入,抗干扰,可按比例量程校准转换范围,VREF-接地,VREF+-VREF-≥1V,可用于较小信号的采样。
TLC549的极限参数如下:
●电源电压:
6.5V;
●输入电压范围:
0.3V~VCC+0.3V;
●输出电压范围:
0.3V~VCC+0.3V;
●峰值输入电流(任一输入端):
±10mA;
●总峰值输入电流(所有输入端):
±30mA;
●工作温度:
TLC549C:
0℃~70℃
TLC549I:
-40℃~85℃
TLC549M:
-55℃~125℃
TLC549的引脚图如图2-11所示,其内部结构图如图2-12所示。
图2-8TLC549引脚图
图2-9TLC549的内部结构图
各个引脚的功能如下:
(1)RER+:
正基准电压输入
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 以太网 彩色 LED 远程 监控 系统 技术 文档