嵌入式交通灯论文相关资料

上传人:xins****2008 文档编号:56571131 上传时间:2022-02-22 格式:DOCX 页数:39 大小:273.65KB
收藏 版权申诉 举报 下载
嵌入式交通灯论文相关资料_第1页
第1页 / 共39页
嵌入式交通灯论文相关资料_第2页
第2页 / 共39页
嵌入式交通灯论文相关资料_第3页
第3页 / 共39页
资源描述:

《嵌入式交通灯论文相关资料》由会员分享,可在线阅读,更多相关《嵌入式交通灯论文相关资料(39页珍藏版)》请在装配图网上搜索。

1、摘 要在对交叉路口车流信息的Internet传输与控制进行设计需求分析和功能分析的基础上,选用ATMEL公司的ATmega128单片机做为智能交通主控芯片,以太网卡控制芯片采用 RTL8019AS芯片将 TCP/IP协议栈嵌入到单片机,提供一个接入Internet的低成本嵌入式系统和网络访问的有效方法。用它的网络传输 、远程监视控制功能和TCP Socket远程控制实时通,设计出新型简单的智能交通控制系统。 本文重点介绍客户端的实现,它跟交通灯控制系统如何利用中断相互控制,和它跟控制中心如何通过网络相互交换信息。关键词 智能交通 Internet ATmega128 TCP/IP协议 Abst

2、ractOn the foundation of design need analysis and function analysis of the Internet information transmission and control of Traffic Crossing,this paper chooses the ATmega128 single-chip microcomputer of ATMEL corporationand as the main chip of intelligent traffic control,RTL8019AS as Ethernet contro

3、l chip and embed the TCP/IP protocol stack into the single-chip.It is a low-cost embedded system for linking with Internet, and an effective way to access the network.Using its network transmission, long-distance watching-control ,and the real-time data communication by socket-technology, we can imp

4、lement the develop of new-kind and straightforward intelligent traffic control system.This paper focuses on introducing how to implement the client, with the interrupt it how to mutually control with the traffic light control system ,and it how to mutually exchange information with the control cente

5、r through the Internet.Keyword: Intelligent Traffic; Internet; ATmega128; TCP/IP Protocol;目 录1.绪论11.1 选题的背景和意义11.2 本课题主要研究内容研究方法12.系统分析与设计32.1系统分析32.2方案论证32.3系统设计53.客户端系统的分析与设计83.1 开发工具83.2 系统分析113.3 总体设计一三4.结果分析195.总结215.1毕业设计工作的总结215.2工作展望21附录22参考文献35致 谢361.绪论1.1 选题的背景和意义1.1.1 选题的背景目前,大多交通路口的信号灯的控

6、制都是固定的、局部的,不能随车流的变化而改变。这对缓解交通拥挤、减少交通事故、节约能耗、降低污染等带来不便。建立实时、准确、高效的交通路口车流自动统计分析及诱导控制系统,通过采集和分析动态信息,然后有针对性地控制诱导,也即建立智能交通系统,将各个交通路口车流信息及时送到控制中心,在控制中心使得整个城市得到实时监控。这对一个城市整体交通拥挤问题得到改善,交通事故能够降低有重大意义。智能交通系统1(简称ITS) ,是将先进的信息技术,计算机技术,数据通信技术,传感技术,电子控制技术,自动控制理论,运筹学,人工智能等有效地综合运用于交通运输,服务控制和车辆制造,加强了车辆,道路和使用者三者之间的联系

7、,从而形成一种定时,准确,高效的综合运输系统。1.1.2 选题的意义(1)有利于缓解交通的阻塞问题。 因为我们在现实生活中经常碰到有很长的车队在等待着绿灯亮。有了这个智能交叉路口控制系统,就能够有效的解决这个问题,不仅提高了交通灯的利用效率,也及时的疏散车流,缓解了交通压力。(2)有利于减少交通事故 在我们的现实生活中经常听到报道,说某个人因抢红绿灯,而导致的车祸的情况也有很多的,追究其原因,那就是赶时间,因为有时交叉路口中的一个车道没有车但是该车道显示绿灯,而有车等待的却是绿灯,所以那些人就抢红绿灯,所以导致了车祸的发生。但是用了这个智能效能控制系统就是够避免这种情况,它能够让有车等待的车道

8、显示绿灯让其通过。1.2 本课题主要研究内容研究方法1.2.1 课题研究的内容本课题利用Web Client模块内部的TCP/IP网络协议5,以及10Base-T网络接口,连接到以太网,方便的实现串口设备的联网。在交叉路口终端,将传感器采集到的信息利用Web Client上网,将信息上传交通监控中心,在监控中心对数据加工处理并通过网络实时监控整个城市的交通。基本的框图如图1-1:图1-1 系统基本框图1.2.2 课题研究的方法本课题采用了客户端/服务器端的编程模式并利用windows socket API函数,把Web Client作为客户端,把监控中心作为服务器端,把从Web Client中

9、的车流信息通过10Base-T网络接口传输到服务器端,服务器端把车流信息保存在数据库,并且对该车流信息进行分析,然后发送控制信息,控制交通信号灯的显示时间与变换。2.系统分析与设计2.1系统分析2.1.1系统简介本系统是交叉路口车流信息的Internet6传输与控制,它主要是把从交叉路口终端采集到的车流信息通过Internet发送给监控中心,监控中心根据交叉路口发送的车流信息发出相应控制命令,以控制交叉路口的交通情况。2.1.2系统详细介绍系统采用客户端/服务端的模式,把车流信息采集终端作为客户端,监控中心作为服务端,因此系统可为三个模块分别是:客户端模块、传输模块、服务端模块。客户端模块:负

10、责采集车流信息,并把车流信息发送给传输模块,也可以接受传输模块的控制命令数据,以控制交通灯的显示情况。传输模块:负责数据在客户端模块与服务端模块之间数据的传输。服务端模块:接收传输模块发送的车流信息,并把控制命令发送给传输模块。2.2方案论证本系统采用高速单片机ATmega1287加 RTL8019AS以太网控制器。用嵌入式 TCPIP3协议,可以实现 TCP网络传输功能。而在交通灯控制系统这部分,我们采用了80C51作为控制芯片。ATmega1287为基于AVR RISC结构的8位低功耗微处理器。由于其先进的指令集以及单周期指令执行时间,ATmega128的数据吞吐率高达1MIPS/MHz,

11、从而可以缓减系统在功耗和处理速度之间的矛盾。128K字节的系统内可编程Flash(具有在写的过程中还可以读的能力即RWW)、4K 字节的EEPROM、4K 字节的SRAM、53个通用I/O 口线、32个通用工作寄存器、实时时钟RTC、4个灵活的具有比较模式和PWM 功能的定时器/计数器(T/C)、两个USART、面向字节的两线接口TWI、8通道10位ADC、具有片内振荡器的可编程看门狗定时器、SPI串行端口、与IEEE1149.1规范兼容的JTAG 测试接口,以及六种可以通过软件选择的省电模式。由于ATMEL 的ATmega128 单片机丰富的片内资源所以很方便就可以运行一个小型的操作系统如

12、uC /OS,可以嵌入TCP / IP 协议,从而达到嵌入式 Web Client的目的,同时又大大简化了外围电路,提高了可靠型。RTL8019AS是由台湾睿昱(Realtek)公司生产的一种高度集成的 10M以太网控制器与 NE2000兼容,支持 8位、l6位数据总线;内置 16 KB的SRAM作为缓存;可连接同轴电缆和双绞线,并可自动检测所连接的介质。因此利用ATmega128与RTL8019AS就可以组成一个具有TCP/IP协议的并且能够与其它网络通信程序进行通信的设备 WEB Client。两者结合的硬件连接图如图2-1:图2-1 硬件框图它跟控制中心相连接是基于Internet6的网

13、络信息传输,其传输协议是因特网已经成熟的TCP/IP协议,不仅可以完成本地信息的接收和发送而且TCP保证了收到的数据都是准备无误,另外在远距离上可以完成同样的功能,这就使该系统能较少的受地域的限制,应用范围广阔。它既是一个网络化的系统,也是一个广义的交通信息传输。跟以住的无线通信智能交通相比,用网络实现智能交通可以利用现有四通八达的网络光缆,只要在各个交叉路口留下网络端口就可以通过网络进行数据的传输,这大大节约的成本,而且不用专门铺设线路和购买专门的设备,用户可以通过手机或者其它方式上网就可以实时的了解交通情况,不仅方便而且快捷。而控制中心服务端的实现,使用Windows操作系统下VC5,Mi

14、crosoft公司的Visual C+平台不仅具有很强的网络程序处理能力,与Visual C+捆绑的MFC提供了大量封装良好的类,为用户开发网络应用程序提供全方位的支持。 由于在客户端用ATmega128芯片基本能实现了跟控制中心通信的功能,所以在交通灯控制系统只用80C51就足够了,而MCS-51的开发环境要求较低,软件资源十分丰富,它内置中央处理单元、128字节内部数据存储器RAM、32个双向输入/输出(I/O)口、2个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路。MCS-51单片机可以算是相当成功的产品,一直到现在,MCS-51系列或其兼容的单片机仍是应用

15、的主流产品。2.3系统设计2.3.1系统的原理图 根据系统的分析可以作出如原理图2-2: 交叉路口交通灯控制系统中断控制通过P3.2P3.3引脚和延时时间的传输通过P0口WEB CLIENT系统PC机服务端数据库发送命令控制WEB CLIETN进行相应的操作或设定延时中断控制通过PORTD0口车流信息经过RJ45网口传输车流信息检测车流信息 图2-2 系统原理图该系统功能是实现交叉路口各个车道车流信息的检测,并且通过基于TCP/IP协议的Internet 将车流信息传输给PC机服务端,PC机服务端把收到的车流信息保存在数据库相对应表中,以供用户网上查询,PC机服务端也可以通过Internet向

16、交叉路口发送控制命令,实现了对交叉路口的远程控制。其中交叉路口交通灯控制系统主要是控制红绿灯的转换和绿灯的显示时间,交叉路口交通灯控制系统通过向Web Client系统发送中断来获取下一次延时的时间。而Web Client系统主要是把检测到的车流信息通过网络发送给PC机服务端,PC机服务端把收到信息保存在数据库表中,并根据车流信息查询数据库把查询到的延时间发送给Web Client 系统。Web Client系统就把接收到的延时时间从PORTB口输出,交叉路口交通灯控制系统就可以从P0口读取到下次要设定的延时时间,因为PORTB口跟P0口是相连的。PC机服务端也可通过按钮或者人工输入向Web

17、Client系统发送控制命令。2.3.2交通灯控制系统(1)交通灯控制系统的框图根据系统的分析,可以作出如图2-3的结构框图。图2-3中80C51芯片的P1口的段码输出直接至锁存器的输入端,锁存器采用74LS373,通过锁存器来控制数码管LED的显示时间,实现静态扫描。AVR ATmega128芯片跟80C51芯片之间相互连接,实现相互间的中断控制和将延时时间传输给80C51芯片,AVR ATmega128芯片对控制车流量进行统计。AVR ATmega128芯片MCS-51系列的80C51芯片相互中断控制延时时间传输74LS373锁存器锁存数据数码管LED静态扫描显示 图2-3 结构示意图(2

18、)功能说明系统功能:系统将传感器所采集到的车流信息利用设备Web Client上网,将采集的车流信息发送给监控中心。然后通过Web Client接收受监控中心发送的控制命令控制交通灯信号,另外交通灯控制系统根据从Web Client得到的延时时间对红绿灯显示时间进行控制,并用LED把那延时时间显示出来。(3)仿真设计根据系统的原理图可以作出仿真电路图2-3:图2-3中左下角的芯片是ATmega128,用来仿真Web Client。A、B、C、D四个按钮也就对应着Web Client上的PE2、PF2、PF3、PE3四个按钮分别用来模拟四个路口车流检测,按下A按钮即表示该A路口当时有一辆车经过,

19、其余三个按钮B、C、D也是同样道理。接下来AB红灯CD绿灯、AB绿灯CD红灯和紧急情况三个按钮用来模拟控制中心发过的三个基本控制命令操作。图2-3中左上角的芯片是80C51,从图中可以看出它与ATmega128通信是只要是通过P0口跟PORTB口传输的只要是延时的时间信号,而PORTD57是用来控制80C51的中断,80C51的P3.6口是用来控制ATmega128的外部中断INT0,这个信号的产生的时机是交通灯某一次延时完毕要求获得新的延时时间,它使ATmega128执行中断程序,把下一次的延时时间输出到PORTB口,然后80C51读取P0口的数据就得到下一次延时的时间。图2-3中右下角两块

20、芯片是数据锁存芯片,只要是为了方便LED灯的数据显示,它们接收的数据都是从80C51的P2口输出的。而图2-3右上角的就是交通各路口的红绿灯显示,它们是由80C51的P1口控制的。 图2-3 仿真电路图 3.客户端系统的分析与设计3.1 开发工具3.1.1 ICC AVR简介ImageCraft 的ICCAVR2 是一种使用符合ANSI标准的C语言来开发微控制器MCU程序的一个工具它有以下几个主要特点:ICCAVR 是一个综合了编辑器和工程管理器的集成工作环境IDE,其可在WINDOWS9X/NT下工作。源文件全部被组织到工程之中,文件的编辑和工程世界的构筑也在这个环境中完成。编译错误显示在状

21、态窗口,中并且当你用鼠标单击编译错误时,光标会自动跳转到编辑窗口中引起错误的那一行。这个工程管理器还能直接产生您希望得到的可以直接使用的INTELHEX 格式文件,INTEL HEX 格式文件可被大多数的编程器所支持用于下载程序到芯片中去。ICCAVR 是一个32 位的程序支持长文件名。AVR 是哈佛结构的MCU,它的程序存贮器和数据存贮器是分开的,这样的设计是有一些优点。的例如分开的地址空间允许AVR装置比传统结构访问更多的存贮器;例如Atmega 系列允许有超过64K 字(WORD) 的程序存贮器和64K 字节的数据存贮器。将来的MCU装置可能用到更多的程序存贮器,而程序计数器仍保留在16

22、 位上。不幸的是,C不是在这种机器上发明的。特别地,C 指针是任意一个数据指针或函数指针,C 规则已经指定你不可以假设数据和函数指针能被向前和向后修改。可是同是哈佛结构的AVR,要求数据指针能指向任一个数据内存和程序内存。非标准C解决了这个问题,ImageCraft AVR 编译器使用“const”限定词表示项目是在程序存贮器中。注意对指针描述这个const 限定词可以应用于不同的场合,不管是限定指针变量自己还是指向项目的指针。例如:const int table = 1, 2, 3 ;const char *ptr1;char * const ptr2;const char * const

23、ptr3;“table”是表格式样分配进程序存贮器,“ptr1”是一个项目在数据存贮器而指向数据的指针在程序存贮器,“ptr2”是一个项目在程序存贮器而指向数据的指针在数据存贮器,最后,“ptr3”是项目在程序存贮器而指向数据的指针也在程序存贮器。在大多数的例子中“table”和“ptr1”是很典型的,C 编译器生成LPM 指令来访问程序存贮器。注意C 标准不要求“const”数据是放入只读存贮器中,而且在传统结构中,除了正确访问就没有要紧的了。因而,在承认参数的C 标准中使用const 限定是非传统的。无论如何这样做与标准C 函数定义是有一定冲突的。3.1.2 Proteus简介Proteu

24、s是由英国Labcenter electronics公司开发的EDA工具软件。它从1989年出现到现在已经有十多年的历史,在全球广泛使用。Proteus安装以后,主要由两个程序组成:Ares和Isis。前者主要用于PCB自动或人工布线及其电路仿真,后者主要采用原理布图的方法绘制电路并进行相应的仿真。除了上述基本应用之外,Proteus革命性的功能在于它的电路仿真是互动的,针对微处理器的应用,可以直接在基于原理图的虚拟原型上编程,并实现软件代码级的调试,还可以直接实时动态地模拟按钮、键盘的输入,LED、液晶显示的输出,同时配合虚拟工具如示波器、逻辑分析仪等进行相应的测量和观测。作为一款EDA仿真

25、软件,Proteus与同类软件有着很多的相似之处。相比之下,其主要的特点有两个:一是对动态元件的实时仿真,它有着数量庞大的元件库。Labcenter公司与相关的第三方软件阵容共同开发了6000多个模拟和数字电路中常用的spice模型以及各种动态元件,基本元件如电阻、电容、各种二极管、三极管、MOS管、555定时器等;74系列TTL 元件和4000系列CMOS 元件;存储芯片包括各种常用的ROM, RAM,EEPROM, 还有常见I2C器件等。在丰富的库元件的支持下,所以它对“人机对话”的模拟增强了系统的真实性;二是虚拟工具箱的功能,Proteus的虚拟工具箱提供了电路测试中的常用工具和仪器,主

26、要用于在实时仿真同时的电路参数观测,测量结果随仿真动态变化并显示,可以满足精度要求不是很高的测量分析,对于电路特性的定性分析可以起到事半功倍的效果,大大节约了测试时间和开发成本。3.1.3 硬件运行平台整个开发板的电路图如图3-1:图3-1 开发板电路图该开发板是一种微型Internet接入模块,可以将分布式串口设备或其它各种用户的智能系统接入到Internet,利用模块内部的TCP/IP网络协议,以及10Base-T网络接口,连接到以太网,方便的实现串口设备的联网。通过这个网络连接开发板,串口设备可将自身的运行状态和工作参数等信息以TCP或UDP数据报的方式提供给监控者,亦可实现信息的实时传

27、输。这种实现方法有以下几个优点:简单方便:串口设备通过开发板上网时 ,其接口设备简单,只涉及数据交换,无须涉及到各种复杂的网络协议。无需专线:利用广泛存在的以太网资源,无需铺设现场总线,没有距离和国界的限制,只要有以太网即可通信。传输速率高:串行速率可以达到1一五.2Kbps,真正做到实时传送。3.1.4软件运行平台双龙公司WebServer System 和 TCP/IP Stack。双龙公司WebServer System包含了文件系统、线程管理、内存管理、设备管理和网络管理等功能。系统的基本模块如下: sl/OS API o System Initialization o Thread

28、Management Thread States o Event Management o Heap Management o Stream I/O Management o Timer Management sl/Net API o Socket API TCP Sockets UDP Sockets o Protocols User Protocols DHCP HTTP DNS TCP UDP IP ICMP ARP Ethernet File System API. o Micro-ROM File System. Device Driver API. o Serial communi

29、cation device driver. ATmega On-Chip UART Device Driver ATmega On-Chip UART Devices UART SPI Device Driver SPI UART Device UART I/O Control Functions UART Device Status Flags o Network device drivers. Realtek 8019AS device driver Device eth0 Network Buffer Network Stream Device Driver o Sound device

30、 drivers. VS1001K device driver. o Interrupt Management o SPI Digital I/O o SPI Flash Devices o Debug output functions. o Formatted output functions.3.2 系统分析3.2.1 系统的简介 本系统是一个客户端的程序,它建立在双龙公司WebServer System And TCP/IP Stack4之上,运行在Web Client的硬件平台。它可以连接控制中心的服务端程序,并且可以接收并响应来自控制中心的控制命令,同时在某一次交通灯延时完毕后接收到

31、一个中断信号,执行中断程序向控制中心发送车流信息。3.2.2 系统的详细介绍在综合考虑现有的软件资源和硬件资源基础上,我们采用以下这种方案:首先考虑到开发板上有两个预留口PORTB和PORTD,它们都是8位的,都有对应的3个I/O端口寄存器PORTx、方向寄存器DDRx、和输入引脚寄存器PINx(x代表B口到D口)。PORTxn、DDRxn和PINxn分别表示这3个I/O寄存器相应的各个位,其中n为07,代表寄存器中的位值。位于方向寄存器DDRx中的第个位DDRxn用于控制一个I/O引脚的输入/输出方向。当DDRxn为1时,对应的Pxn配置为输出引脚;而当DDRxn写入0时,对应的Pxn配置为

32、输入引脚。当Pxn定义为输出引脚(DDRxn=1)时,PORTxn中的数据为外部引脚的输出电平。即置PORTxn为1,端口引脚被强制驱动为高,输出高电平(输出电流);清零PORTxn,端口引脚被强制拉低,输出低电平(吸入电流)。所以我们将PORTB口设定为输出口,跟交通灯控制系统中的80C51芯片的P0口相连,只要用来传输的开发板Web系统从控制中心接收到的延时时间。而对于PORTD口,我们考虑到它的前四个引脚PORTD03的第二功能,分别对应着外部中断的INT03。对于AVR的外部中断,如果主程序一旦进入中断服务程序,那么AVR芯片将自动的关闭全局中断,在这个期间不再执行其它的中断请求,直到

33、中断程序结束以后芯片才自动的重新开放全局中断。(注意,在这个期间某些中断请求可能会被丢弃,某些请求会留下中断请求标致,一旦当前的中断执行完毕,这个有中断标致的请求就有可能马上得到响应,如INT0的下降沿触发就会留下中断请求标致,而低电平触发就不会流下中断请求标致)。如果你想在执行中断服务程序时响应另外一个更重要的中断,那么就要在中断服务程序中加入一条打开全局中断的语句。接下来介绍一下ATmega128芯片中几个和中断相关的寄存器。(1) 外部中断控制寄存器A EICRA7表1 外部中断控制寄存器A EICRABit 7 6 5 4 3 2 1 0ISC31ISC30SIC21ISC20ISC1

34、1ISC10ISC01EICRAISC00读写 R/W R/W R/W R/W R/W R/W R/W R/W初始值 0 0 0 0 0 0 0 0ATmega103 兼容模式不能访问这个寄存器,但是INT3:0 的初始值定义为低电平中断。 Bits 7.0 ISC31, ISC30 ISC00, ISC00: 外部中断3 - 0 敏感电平控制位外部中断3 - 0 由引脚INT3:0 激活,如果SREG 寄存器的I 标志和EIMSK 寄存器相应的中断屏蔽位置位的话。触发方式如下表所示。INT3.INT0 的边沿触发方式是异步的。若选择了低电平中断,低电平必须保持到当前指令完成,然后才会产生中断

35、。而且只要将引脚拉低,就会引发中断请求。改变ISCn 时有可能发生中断。因此建议首先在寄存器EIMSK 里清除相应的中断使能位INTn,然后再改变ISCn。最后,不要忘记在重新使能中断之前通过对EIFR 寄存器的相应中断标志位INTFn 写1 使其清零。表2 INT30中断方式7ISCn1ISCn0说明 00INTn为低电平时产生中断请求 01保留 10INTn的下降沿产生异步中断请求 11INTn的上降沿产生异步中断请求Note: 1. n =3、2、1 或0。改变ISCn1/ISCn0 时一定要先通过清零EIMSK 寄存器的中断使能位来禁止中断。否则在改变ISCn1/ISCn0 的过程中可

36、能发生中断。(2) 外部中断屏蔽寄存器 EIMSK7表3 外部中断屏蔽寄存器 EIMSKEIMSKBit 7 6 5 4 3 2 1 0INT7INT6INT5INT4INT3INT2INT1INT0读写 R/W R/W R/W R/W R/W R/W R/W R/W初始值 0 0 0 0 0 0 0 0 Bits 7.0 INT7 INT0: 外部中断请求7 - 0 使能。当INT7 INT0 为1,而且状态寄存器SREG 的I 标志置位,相应的外部引脚中断就使能了。外部中断控制寄存器 EICRA 和EICRB 的中断敏感电平控制位决定中断是由上升沿、下降沿,还是电平触发的。只要使能,即使引

37、脚被配置为输出,只要引脚电平发生了相应的变化,中断可将产生。据此可以实现软件中断。(3) 外部中断标志寄存器 EIFR7表4 外部中断标志寄存器 EIFRBit 7 6 5 4 3 2 1 0INTFINTFINTFINTFINTFINTFINTFEIFRINTF读写 R/W R/W R/W R/W R/W R/W R/W R/W初始值 0 0 0 0 0 0 0 0INT7:0 引脚电平发生跳变时触发中断请求,并置位相应的中断标志INTF7:0 。如果SREG的位I 以及EIMSK 寄存器相应的中断使能位为1, MCU 既跳转到中断例程。中断例程执行时标志被硬件清零。此外,标志位也可以通过写

38、入1 的方式来清零。若INT7:0 配置为电平触发,这些标志位总是为0。在睡眠模式下,如果中断是禁止的,则这些引脚的输入缓冲器也是禁止的。这有可能产生逻辑电平的变化并置位INTF3:0。在系统中我们只要用到外部中断INT0,且设定为下降沿触发。从图1.3 仿真电路图中可以看到PORD0跟80C51的P3.6引脚相连,所以只要交通灯系统使P3.6引脚从高电平向低电平跳转则会触发本系统的外部中断INT0,在中断子程序中完成了把当前对应路口检测到的车流信息以一定的格式(如AB:10)发给控制中心,控制中心接收到后就立刻返回一个延时时间。而本系统跟控制中心的通信是通过基于TCP/IP 协议的网络连接来

39、实现。TCP协议为其上的应用层提供了一种可靠传输服务。这种服务的特点是:可靠、全双工、流式和无结构传输。因此可以简单地把系统划分为两个基本模块,它们分别是数据接收模块与数据发送模块。(1)数据接收模块功能:它主要是接收从控制中心发送过来的控制命令并根据相应的命令执行相应控制操作,例如控制交通灯的紧急中断(全部路口的都亮红灯),或者某一车道中断(该车道亮红灯),或者控制中心要求获得交通路口现在的车流信息。(2)数据发送模块功能:根据控制中心的命令信息向控制中心发送某个路口的车流信息,或者当接收到交通灯延时完毕发来的中断信号,就向控制中心发送下次要延时的车流信息。3.3 总体设计3.3.1 需求规

40、定 本系统的主要的输入项目是控制中心发来的控制控制命令,输出项目是检测到的车流信息。主要的功能需求是:能够通过网络接收来自控制中心的控制命令,响应控制命令控制红绿灯的亮灭情况或把检测到的车流信息发给控制中心。主要的性能要求是:能响应控制中心发来的基本控制命令,实现对交通灯的基本控制。3.3.2基本设计理念和处理流程基本设计理念: 本系统是采用TCP/IP5的socket编程中的流式套接字编程,其中交叉路口作为客户端控制中心作为服务端双方建立一个可靠的连接,然后双方通过以太网进行数据的发送与接收,之所以选择流式套接字是因为它提供了一个面向连接、可靠的数据传输服务,数据无差错、无重复地发送,且按发

41、送顺序接收。处理流程:(请看图3-2) 图3-2 TCP传输流程图3.3.3系统结构(1)系统框图与流程图系统框图(图3-3)图3-3 系统框图客户端系统总的流程图(图3-4):图3-4 客户端系统总的流程图客户端系统接收模块流程图(图3-5):图3-5 客户端系统接收模块流程图客户端发送时机及过程流程图(图3-6):在实现以上各流程图时,只要用到的API函数如下:(1)TCPSOCKET *slTcpCreateSocket(void)创建TCP socket。 该API函数在堆内存中为TCPSOCKET结构分配内存空间,并初始它返回一个指向该结构的指针。第一次调用该API函数同时也是TCP

42、计时程序开始的时候,该计时程序用来检测各种不同的超时操作。Returns: 最新创建的TCP socket 描述符,或者如果没有足够的内存剩余则返回0。Todo: 避免把初始的顺序号固定。配置缓冲区的大小。允许的最大的段的大小。图3-6 客户端发送时机及过程流程图(2)int slTcpConnect(TCPSOCKET *sock, u_long addr, u_short port)连接远程的socket套节字。 这函数试图跟过程特定的服务器特定的端口建立连接。调用该函数的线程将暂停运行直到连接成功或者错误发生。该函数通常用在TCP客户端程序。Parameters: sock 套节字描述符

43、。该指针必须调用slTcpCreateSocket()来得到。addr 客户端要连接的IP地址(网络字顺序)port 连接的端口号(主机字顺序)Returns: 如果成功则返回0,否则返回-1。能调用slTcpError()来得到特定的错误代码号。 (3)int slTcpSend(TCPSOCKET *sock, void *data, u_short len)向已连接的TCP套节字发送数据。Parameters: sock 套节字描述符。该指针必须调用slTcpCreateSocket()来得到。除此之外连接的建立必须调用slTcpConnect或者 slTcpAccept。 data 指

44、向要发送的数据缓冲区的指针。len 要发送的字节数。Returns: 如果发送成功则返回已经发送的字节数。该字节数可能小于指定要发送的字节数。如果返回-1则意味着重大的错误。(4)int slTcpReceive(TCPSOCKET *sock, void *data, u_short size)从已连接的TCP套节字获得接收数据。Parameters:sock 套节字描述符。该指针必须调用slTcpCreateSocket()来得到。除此之外连接的建立必须调用slTcpConnect或者 slTcpAccept。data 指向要接收的数据缓冲区的指针。size 接收缓冲区的大小。Return

45、s: 如果成功的话则返回已经接收的数据的字节数,该值可能小于特定的缓冲区大小。如果返回-1。(5)NUTDEVICE *slSoStreamCreate(TCPSOCKET *sock)为特定的套节字创建一个虚拟流设备文件。Parameters: Sock 套节字描述符。该指针必须调用slTcpCreateSocket()来得到。除此之外连接的建立必须调用slTcpConnect或者 slTcpAccept。Returns:如果创建成功则返回创建的设备结构指针,否则返回0。4.结果分析 交通灯某一次延时完毕请求获得新的延时执行的操作,如图4-1:交通灯控制系统WEB CLIENT系统从PORT

46、D0口收到下降沿信号当前一次延时完毕从P3.6口置于低电平服务端得到车流信息储存到数据库中执行中断程序把检测到车流发给服务端WEB CLIENT系统从服务端收到这次要设定的时间查询数据库把车流对应的延时发给开发板交通灯控制系统从P0口读到要设定的延时把要设定的延时从PORTB口输出图4-1 交通灯系统请求延时图详细请看附录代码的INT0中断子程序。控制中心控制交通灯时执行的操作如图4-2:控制中心发送紧急中断命令WEB CLIENT系统收到命令置PORTD5为低电平交通灯控制系统INT0被触发执行紧急中断程序控制中心发送AB道中断命令WEB CLIENT系统收到命令置PORTD7为低电平交通灯

47、控制系统INT1被触发执行AB道中断程序控制中心发送CD道中断命令WEB CLIENT系统收到命令置PORTD6O为低电平交通灯显示控制系统INT1被触发执行CD道中断程序图4-2 控制中心控制交通灯图详细请看附录代码的ProcessRequests函数。一开始系统启动的时间开发板从PORTD0收到一个低电平,产生中断执行中断子程序,此时AB、CD道都没有检测到车流,所以置PORTD7为低电平触发交通灯系统执行中断子程序。本系统只用开发板上的四个按钮来模拟四个路口的车流检测,没有做出实际的车流检测电路。当按下各个按钮可以从超级终端检测到各按钮的按下的次数作为车流数。如图4-3:图4-3各个路口

48、检测到车流图当发送中断时可以终端看到收到这次要设定的延时时间。如图4-4:图4-4接收到延时间图5.总结5.1毕业设计工作的总结本设计完成了交叉路口车流信息的Internet传输与控制的基本功能设计,并对结果进行了测试。测试表明,我们的设计符合功能要求,并具有一定的实用价值。经过测试,发现本设计方案的不足:(1)交通路口只考虑双向行车,而没有考虑左转或者其它情况。 (2)测试车流只用按钮来简单模拟。(3)监控中心对于实时性处理速度有待提高。5.2工作展望我们通过这次毕业设计,提出了我们交叉路口车流信息的Internet传输与控制的设计方案。尽管现在确实存在的一定的不足,但完成可以通过进一步的整

49、改,应用到生活中。今后可以努力的方向有:(1)可以把仿真电路做出实时电路。(2)可以加上电磁感应传感器来进行车流检测。附录部分源代码详解:Init.c头函数略详细请看源代码#define RAMEND 0x10FF /Last On-Chip SRAM LocationCONFOS confos;extern void slMain(void *arg) _attribute_ (noreturn);/*! fn slIdle(void *arg) * brief Idle thread. */THREAD(slIdle, arg) slTimerInit(); slThreadCreate(

50、main, slMain, 0, 768); slThreadSetPriority(255); for(;) slThreadYield(); /*! * brief Load sl/OS configuration from the EEPROM. * This routine is automatically called during system * initialization. * return 0 if OK, -1 if configuration isnt available. */int slLoadConfig(void) eeprom_read_block(&conf

51、os, CONFOS_EE_OFFSET, sizeof(CONFOS); if(confos.size != sizeof(CONFOS) | confos.magic0 != O | confos.magic1 != S) return -1; return 0;/*! * brief Save sl/OS configuration in the EEPROM. * return 0 if OK, -1 on failures. */int slSaveConfig(void) u_char *cp; int i; confos.size = sizeof(CONFOS); confos

52、.magic0 = O; confos.magic1 = S; for(cp = (u_char *)&confos, i = 0; i 384) slHeapAdd(&_bss_end, (u_short)RAMEND - 256 - (u_short)(&_bss_end); slHeapAdd(void *)(RAMEND + 1), 0x7FFF - RAMEND); slThreadCreate(idle, slIdle, 0, 384); return 0;Uart.c头函数略详细请看源代码/*! * brief Wait for input. * This function ch

53、ecks the input buffer for any data. If * the buffer is empty, the calling ref xrThread thread * will be blocked until at least one new character is * received or a timeout occurs. * param dev Indicates the UART device. * return 0 on success, -1 on timeout. */int MyUartAvrInput(NUTDEVICE *dev,u_long

54、timeout) int rc = 0; IFSTREAM *ifs = dev-dev_icb; UARTDCB *dcb; slEnterCritical(); if(ifs-if_rd_idx = ifs-if_rx_idx) dcb = dev-dev_dcb; /* * Changing if into a while loop fixes a serious bug: * Previous receiver events without any waiting thread * set the event handle to the signaled state. So the *

55、 wait returns immediately. Unfortunately the calling * routines rely on a filled buffer when we return 0. */ do rc = slEventWait(&dcb-dcb_rx_rdy, timeout); while(rc = 0 & ifs-if_rd_idx = ifs-if_rx_idx); slExitCritical(); return rc;/* * Get IP string from inputbuff */u_char *GetIP(NUTDEVICE *uart,u_char *prompt, u_char *value) static const char BIA = rnBad IP address;static u_char inbuff256; for(;) slPrintFormat(0, rn%s(%s): , prompt

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!