基于rj45接口实现mcs-51单片机与pc机通信系统设计说明书

上传人:少*** 文档编号:70176351 上传时间:2022-04-06 格式:DOC 页数:40 大小:1.02MB
收藏 版权申诉 举报 下载
基于rj45接口实现mcs-51单片机与pc机通信系统设计说明书_第1页
第1页 / 共40页
基于rj45接口实现mcs-51单片机与pc机通信系统设计说明书_第2页
第2页 / 共40页
基于rj45接口实现mcs-51单片机与pc机通信系统设计说明书_第3页
第3页 / 共40页
资源描述:

《基于rj45接口实现mcs-51单片机与pc机通信系统设计说明书》由会员分享,可在线阅读,更多相关《基于rj45接口实现mcs-51单片机与pc机通信系统设计说明书(40页珍藏版)》请在装配图网上搜索。

1、 基于RJ45接口实现MCS-51单片机与PC机通信系统设计摘要本课题主要提供了一种单片机与PC机的新型通信方式,即通过RJ45接口实现以太网通信。通常使用的RS-232接口,传输速率不高,传输距离短,因此探索新的通信形式有重要意义。随着网络化,信息化的不断提高,TCP/IP协议簇成为了新一代的通信标准,采用以太网通信有着通信速率快,通信距离长的诸多优势。本设计主要内容包括两个方面。硬件方面,研究了以太网控制器enc28j60的工作原理,实现了enc28j60作为51单片机的网络接口;辅助设备,包括LCD1602以及矩阵键盘的使用。软件方面,将精简的TCP/IP协议栈移植到51单片机系统中,将

2、电脑作为服务器,单片机作为C/S模式的客户端通过TCP/IP协议进行通信,单片机采用主动连接与服务器进行用户数据交互,保持长连接,支持自动重连。Enc28j60作为仅有28引脚的以太网控制器,封装小,兼容IEEE802.3协议,其SPI接口与微控制器最高传输速率可达10MB/s,既提供了以太网通信的相应功能,也大大简化了设计,降低了成本。设计给出了设备的硬件原理图以及PCB板图,相关的C程序源代码,包括了精简后的TCP/IP协议栈以及上位机的通信控制调试软件代码。经过调试给出了实验结果,试验结果成功实现了单片机与PC机之间的以太网连接以及信息传送。这种以太网通信系统成本低,硬件连接简单,使用方

3、便,具有一定的推广价值。关键词:以太网,enc28j60,单片机,TCP/IP协议簇,网络通信The design of communication system between microcontroller and PC through Socket RJ45AbstractThis project provided a new communication mode to achieve the ethernet communication through socket RJ45.the common mode of communication we used is RS-232,this

4、 kind of sockets rates not so fast and has a limit transmission distance.so,it is significance to explore a new transmission mode.TCP/IP protocol has become a new transmission standard with the development of the networking and informatization,which have the advantage of high rates and long transmis

5、sion distance.This project has two aspect included.on the hardware,we do some research about the working principle of the enc28j60 and achieve the function to use it as the ethernet socket as the microcontroller.the use of accessory equipment,which including the LCD1602 and the 4x4 keyboard.as for s

6、oftware,we put the TCP/IP protocol which has been reduced into the microcontroller,and set the computer as a server,the MCU as the client in the C/S mode to communicate,the microcontroller change the data with use by the active connections mode,keep on long time connection and support the auto-recon

7、nect.Enc28j60 as and ethernet controller just have 28pin,use the small package,and support the IEEE802.3 protocol.and its SPI socket can provide 10MB/s transmission rate,which not only fits the function of the ethernet,also simplfied the design and reduce the cost.This design provide the drawing of

8、hardware principle and the PCB, the relative code, which the TCP/IP protocol and upper monitor included.and give a research conclusion about the project.it shows that the new mode of transmission by ethernet from PC to microcontroller has the advantage of simple hardware,low cost,and convenience use

9、,which is worth to be popularized.Keywords:ethernet,enc28j60,microcontroller,TCP/IP protocol,network communication.I目录摘要IAbstractII第1章 绪论11.1 引言11.2 研究背景与意义11.3 研究内容与方法2第2章 TCP/IP协议简介32.1 TCP/IP协议的分层结构32.2 TCP/IP协议的封装和分用42.2.1 什么是封装42.2.2 什么是分用42.2.3 以太网帧格式52.3 uip协议62.3.1 uip0.9的结构62.3.2 uip0.9协议栈的

10、接口7第3章 硬件设计93.1物理层接口实现93.1.1 网络控制器ENC28J60简介93.1.2 ENC28J60引脚功能103.1.3 ENC28J60串行外设接口SPI113.1.4 单片机STC89C58RD+简介123.2 硬件设计133.2.1 硬件接口设计133.2.2 ENC28J60电路设计143.2.3 STC89C58RD+电路设计15第4章 软件设计204.1 TCP/IP协议部分204.1.1 主程序main()部分代码说明224.1.2 SPI接口驱动244.1.3 ENC28J60驱动254.1.4 uip_appcall()部分代码说明254.2 键盘及LCD

11、显示程序284.2.1 LCD显示程序284.2.2 矩阵键盘程序324.3 上位机程序334.4 调试与结果34结论36谢辞37参考文献38II基于RJ45接口实现MCS-51单片机与PC机通信系统设计第1章 绪论1.1 引言随着网络化,信息化时代的到来,以太网通信技术在日常生活中也有了越来越广泛的应用。信息共享的程度越来越高,人们更加追求信息共享和信息交换,数据在不同设备,不同物理网络中的交换显得日益重要,网络互连由此而生。这是一种既用到硬件也用到软件的通信解决方案,物理网络通过一些列的硬件系统互连,在所有相连的设备中通过相应软件提供通用服务。连接各种物理网络的最终系统称为互连网络或互联网

12、1。嵌入式系统,从定义上可以分为狭义和广义之分,依据不同目的设计出来的具有特定使用价值的可编程计算机设备在广义上来说就应当算得上是嵌入式系统。狭义上而言,嵌入式系统一大特点在于它的功能专一性,嵌入式系统对自身的体积,功耗,功能,等都有着十分严苛的要求。其核心在于应用,基础在于计算机技术,软硬件可裁剪。一般的嵌入式系统的设计过程如下;首先进行产品定义,明确产品的功能,作用,其次是进行硬件设计,之后是软件开发,包括操作系统的移植和应用软件的开发,经过最终的测试与调试后即可以投入销售或使用2。在当今的生活中,嵌入式的应用深入到方方面面,在各个领域都展现自己独有的作用:在军事方面,包括军用电子设备,导

13、航设备,高科技个人士兵武装,突击作战指挥专用设备等。在家庭中,各种家电产品是嵌入式应用最为广泛的领域,智能水龙头,智能空调,智能冰箱,数码相机,可视电话等等。在工业生产中,各类仪器,数控机床,可编程控制器系统,工业用机器人,柔性系统,生产流水线,车辆电子产品等。在商业领域,各类银行卡,存取款机,条形码识别器,指纹识别,IC/IP卡,电子称,POS系统等。在医疗器械领域,诸如X光机,监护仪,心脏起搏器等。在办公领域,复印机,打印机,传真仪,扫描仪等。嵌入式系统的应用大大方便了人们的日常生活,给人们带来了便利。将互联网技术与嵌入式技术结合到一起,使嵌入式系统能在更大范围上得到应用,实现不同物理设备

14、间的信息交换具有重大的意义。1.2 研究背景与意义目前的计算机领域,是Microsoft和Intel的天下,由Microsoft提供的windows操作系统和Intel的CPU内核产品几乎垄断了这一领域。在该领域的现状是,专利权归他们所有,我们没有主动权,没有专利权,很难大展手脚,有自己的发挥空间,充其量只是装机和搞计算机系统集成等,自己的软件产品和出口软件很少,中国软件企业规模太小。专家估计,这一现状在1020年内难以突破。而单片机嵌入式系统需求多样,找不到一个公认和做基准的标准,软硬件可以进行各式重组,技术密集,市场容量大,发展空间大。主要是:计算环境从PC为中心变为以网络为中心,出现了各

15、式新型信息设备(IA),不必与PC 兼容;应用软件趋势是由PC转移到网路,对Windows 的依赖性大大降低;可裁减,良好的性能价格比3。随着互联网技术的普及使得信息共享的程度越来越高。TCP/IP协议栈让嵌入式系统的通信距离得以不断的扩展,也使大数据的快速传输成为了一种可能。这一变革能更富效率的利用PC机的丰富软硬件资源,实行数据的储存,转换,传输,计算等。TCP/IP协议可以实现数据的远程数据的发送和接收,远程操控等功能,这种方式大大加强了嵌入式系统在实际生产应用当中的易用性。1.3 研究内容与方法本课题主要完成的内容有:电路元件的选择以及电路图的设计,enc28j60网络模块与PC机之间

16、的网络通信TCP/IP协议的实现,由于用的8051芯片不具有SPI接口功能,因此需要编程实现I/O口模拟SPI功能,LCD灯、键盘与51芯片的连接以及功能的实现,PC机的GUI界面的编程设计,各种设计细节方面的补充,包括看门狗,键盘防抖等功能的实现。为了实现上述功能,将采取多种方式来进行:查阅图书馆以及网络的相关内容,参考资料所做的电路设计方式以及元件选择方式,进行电路元件的选择和电路图的设计。对uip协议栈进行适当的移植,了解TCP/IP协议的内容以及运行流程,查询对应代码的含义并作出解释。对现有的I/O模拟SPI接口功能的C程序进行移植和编译,完成enc28j60与MCS-51芯片之间的连

17、接和数据传输功能。选择恰当的扫描方式和合适的I/O口连接LCD和键盘,制作单片机部分的输入及显示环境。参考各类C+实例设计书和参考资料中GUI界面的设计方式,作出适当调整,以编写PC机部分的GUI界面,实现实物的以太网络传输调试验证。设计初步完成后对实物进行调试,对不满意的功能进行改进调整,包括看门狗功能、键盘防抖的效果,LCD的显示效果等的改进。第2章 TCP/IP协议简介2.1 TCP/IP协议的分层结构在计算机通信中有两个十分重要的协议,即TCP协议和IP协议,为了方便称呼和统一功能,我们将他们统称为TCP/IP协议。该协议是信息在网络中快速准确传输的一个通用标准,一般情况下,我们将他们

18、看做分层结构,一共有四个分层,分别为:应用层、传输层、网络层、链路层4。如表2-1所示。表2-1 TCP/IP协议的分层结构层主要协议应用层FTP 、TELNET、 SMTP、 SNTP、 HTTP传输层TCP、UDP网络层IP、ARP、RARP、IGMP、ICMP链路层接口层协议链路层:链路层使最基本的以太网接口层,它所负责的内容在于使计算机连接网络。只有连上网络,才能够进行数据的接收和发送。链路层负责的主要是网卡(本设计中为ENC28J60网络控制器)与单片机的接口,它将数据转换为高层可识别的数据帧。网络层:网络层是TCP/IP协议进行数据处理的核心部分,它负责处理数据发送方,数据接收方的

19、地址和相关信息,确定数据的发送接收位置。IP协议就是层中传送数据的机制。这一层使用的主要协议还有:ARP协议(用于确定对应IP地址的网卡物理地址)、RARP协议(用于对实际网卡物理地址所对应的IP进行解析)、ICMP协议(控制在IP主机,路由之间的信息传递)和IGMP协议(负责不同计算机之间的组网工作)5。传输层:在两台主机上实现数据的传输功能。这一层的协议有两个,TCP协议(传输过程中有检测机制,使得信息传输更为可靠,信息不一丢失)和UDP协议(只负责信息传递,速度更快,但没有检测机制因此容易丢包)。应用层:负责对接收的数据提供解释服务。在这一部分主要是两个核心协议,一个是HTTP协议,另一

20、个是FTP协议。HTTP协议作用是将一台主机上的文件传输到另外一台主机上,同时在被传输方的主机上显示相关内容;FTP协议用于将文件从一个主机传送到另一个主机,再将文件保存于被传输方主机,它所传送的是与原文件相同的复制件。其它的协议还有远程登录、简单邮件传输协议、简单网络管理协议等6。2.2 TCP/IP协议的封装和分用TCP/IP协议采用分层结构,实现也采用分层实现的方法。在应用时,有两个十分重要的名词需要了解和区分,一个是封装,另一个是分用。2.2.1 什么是封装数据通过TCP协议进行传输时,首先按照TCP/IP协议层级划分由低级到高级,传输过程中每一层都有相应的信息添加,在传输过程中每经历

21、一层所添加的首部,尾部直到最终被发送出去的过程称为封装。封装过程如图2-1所示。app1首部数据IP首部TCP首部帧首部TCP数据IP数据以太网帧数据帧尾部TCP报文IP报文以太网帧图2-1 数据进入协议栈时的封装过程2.2.2 什么是分用当主机接收到数据时,数据将从协议栈链路层往上传输,在这一过程中,需要去除由封装过程中所添加的各类信息首部,并根据首部,尾部来区分数据是哪些类型,需要传输到哪一层,这一过程就叫做分用。分用过程如图2-2所示。ARPIPRARP以太网帧TCPIGMPUDPICMP应用程序应用程序应用程序应用程序根据首部中的协议值分根据首部中的帧类型分根据首部中的端口号分图2-2

22、 以太网数据帧的分用过程2.2.3 以太网帧格式不论是串口通信,蓝牙通信还是无线通信,都有自己独特的报文格式,以太网络协议TCP/IP也是如此。对TCP/IP协议编程,首先要清楚其报文格式。由于TCP/IP协议采用分层结构,各层都有专用的包头,下面将介绍以太网的物理帧格式。以太网协议不止一种,本设计使用的是802.3协议,在单片机和PC机之间的数据收发操作都是采用这种协议格式。一个标准的以太网物理传输帧由前导列PR、分隔位SD、目的地址DA、源地址SA、类型字段Type、数据段Data、填充位PAD和帧校验序列FCS共8部分组成。帧结构如表2-2所示。表2-2 802.3协议以太网物理帧结构P

23、RSDDASATypeDataPADFCS56位8位48位48位16位461500字节DATA小于46字节时补032位PR位指的是同步位,它是一个56位的二进制数,它既可以用于同步接收方和发送方的内部时钟,也包含了传输速率的设定,在实际应用中,高速率可以兼容低速率,反过来不可兼容。SD位指的是分隔位,起到的是同步时钟与正式数据之间的分隔功能,位于分隔位前的是同步时钟,在分隔位之后的才是真正需要进行组包和识别的数据。分隔位表示为10101011,最后位11与同步位当中的10不同。 DA指的是目的地址,是一个48位的二进制地址,用于确认数据帧所发送给的网卡的相应地址,如果数位段全为1,则表示的是广

24、播地址,广播地址的数据可以被任何网卡接收到。 SA指的是源地址,是一个48位的二进制数,指的是发送端的网卡地址,也是6字节。 TYPE指的是类型字段,用于表明该帧的数据类型,不同的协议的类型字段不同,在协议中,IP包的类型字段为0080H,ARP包的类型字段为0806H,SNMP包的类型字段为814CH,8137H为IPX/SPX包,而小于0600H的值是用于IEEE802的,表示数据包的长度。 DATA指的是数据段 ,由于协议自身的规定,限制不能超过1500字节。根据传输协议的规定,所允许传输的单个数据包最大不应超过1514字节,(14字节为DA,SA,TYPE)。 PAD指的是填充位,以太

25、网规定的传输数据最小字节数为60字节,除去DA,SA,TYPE所占用的14字节,至少需要46字节的数据,若数据段的数据不足46字节时,后面补000.作为填充。FCS指的是32位数据校验位,通常使用的是CRC校验,这一校验方式由网卡决定,在数据段最后填入,来检测是否出现发送错误,是否出现丢包现象等。数据帧传输时,只有数据段的长度可变,其他位的数位固定不变。根据以太网的规定,数据段为461500字节。若超过1500字节,则需要进行拆分,进行多帧传送。在发送数据时,PR、SD、FCS、PAD这几位并不是由用户决定的,它是由以太网控制器在数据发送过程中自动生成的;在接收数据时,PR、SD两位只会被控制

26、器所检测,并不会接收,数据处理过程中,若控制器检测到有效的前序字段(即PR和SD),就认为接收数据开始。2.3 uip协议2.3.1 uip0.9的结构TCP/IP协议的软件实现是一件比较困难的事情,在毕业设计时间比较紧凑的情况下,要自己编写一个完整的程序栈是不太实际的,因此,我采用了现有的uip协议栈并对其进行了相应的改编移植。由于uip1.0版本较之前的版本更为复杂,所需内存更大,因此这次移植还是采用uip0.9。Uip0.9采用模块化编程方式,结构简单, 占用的系统资源少,移植过程中所用到的协议接口也相对比较简单,与ZLIP等其它网上的开源TCP/IP协议栈相比较,对于简单的以太网络应用

27、移植更方便。在去除许多完整协议栈中不常用到的功能后,保留了几个必要的通信协议机制。Uip0.9的体系结构图2-3如下所示。 应用层(http,ftp.)ICMPIPARPTCPUDPUip协议栈网络设备驱动(Ethernet ,SLIP.)图2-3 uip协议栈的结构2.3.2 uip0.9协议栈的接口根据以太网的分层理论,uIP0.9处于网络通信的中间层,应用层做其上层协议,而网络设备为其下层。在uIP0.9的内部程序实现上进行特殊的处理来节省资源的占用,简化应用接口。1)程序中模块化的编程融合各个模块,使得处理函数的个数和调用次数大大减少,代码复用率得到了提高。2)接收和发送数据都共用一个

28、缓冲区,通过时钟来进行分时复用分配,收发的数据通过应用层进行用户自定义的处理,减少了内存的占用。3)应用程序接口仅当遇到网络事件时才调用相关程序进行对网络部分的处理,若应用程序未碰到网络事件,则uIP0.9不做操作。通过这种处理方式,使用uIP0.9时只须关注特定应用即可。这种处理模式的出发点在于8位机资源有限,为了简化操作,便于嵌入式系统的使用,通常不进行多任务处理。4)应用程序部分通过uIP0.9设置的几个网络事件程序接口来接入网络事件的应用(如自动连接,自动重连,丢包重发,数据包分段等),重发事件由uIP0.9内核控制,应用程序重新生成数据提交发送,免去了大量内部缓存的占用。Uip协议栈

29、的接口如图2-4所示。网络设备驱动系统定时器系统底层Uip协议栈应用程序Uip_appcall()Uip_input()Uip_periodic()图2-4 Uip0.9协议栈的接口 第3章 硬件设计3.1物理层接口实现系统通过RJ45网线实现PC机与51单片机之间的连接通信。与局域网的接口采用microchip公司的网络接口控制器enc28j60网络控制器实现。Enc28j60是28脚、SSOP封装、ISP接口的以太网接口芯片,接入速率10Mb/s。3.1.1 网络控制器ENC28J60简介ENC28J60是带有行业标准串行外设接口的独立以太网控制器。它可以作为任何配备有SPI的控制器的以太

30、网接口。在本次设计选用的STC89C58RD+并没有相应的SPI接口,因此需要用通用I/O口对其进行模拟。ENC28J60兼容IEEE802.3的规定,通过硬件设计了一些列的机制对数据包进行过滤选择。控制器有一个内部的DMA模块,让数据能够做到快速收发,实现在硬件允许条件下的IP校验功能。ENC28J60与主控制器的通信通过SPI接口实现,支持查询方式和中断方式与主控制器进行数据交换,数据的最高传输速率可达10Mb/s。两个专用的引脚用于连接LED,进行网络活动状态指示7。图3-1所示为ENC28J60的简化框图。图3-1 ENC28J60框图ENC28J60主要由七个功能模块组成:1)SPI

31、接口充当主控制器和ENC28J60之间的通信通道。2)控制寄存器用于控制和监视ENC28J60。3)双端口RAM缓冲器用于发送和接收数据包。4)判优器当DMA发送和接收模块发出请求时确认优先级,对RAM缓冲器进行资源分配,防止收发请求发生冲突。5)总线接口分析由SPI接收和发送的数据。6)MAC模块实现符合IEEE802.3标准的MAC逻辑。7)PHY(物理层)模块对双绞线上的模拟数据进行编码和译码。除此之外,ENC28J60还包括其他辅助功能模块,包括网络接口,稳压器,变压器,RC振荡电路等等,若使用的控制器不支持5V电源,还可以增加电平变换器。3.1.2 ENC28J60引脚功能引脚1:V

32、cap,来自内部稳压器的2.5V输出。必须将此引脚通过一个10F的电容连接到Vsstx。引脚2:Vss,参考接地端。引脚3:CLKOUT,可编程始终输出引脚。引脚4:INT,INT中断输出引脚。引脚5:WOL,LAN中断唤醒输出引脚。引脚6:SO,SPI接口的数据输出引脚。引脚7:SI,SPI接口的数据输入引脚。引脚8:SCK,SPI接口的始终输入引脚。引脚9:CS,SPI接口的片选输入引脚。引脚10:RESET,低电平有效器件复位输入。引脚11:Vssrx,PHY RX的参考接地端。引脚12:TPIN-,差分信号输入。引脚13:TPIN+,差分信号输入。引脚14:RBIAS,PHY的偏置电流

33、引脚。必须将此引脚通过2k(1%)的电阻连接到Vssrx。引脚15:Vddtx,PHY TX的正电源端。引脚16:TPOUT-,差分信号输出。引脚17:TPOUT+,差分信号输出。引脚18:Vsstx,PHY TX的参考接地端。引脚19:Vddrx,PHY RX的正3.3V电源端。引脚20:Vddpll,PHY PLL的正3.3V电源端。引脚21:Vsspll,PHY PLL的参考接地端。引脚22:Vssosc,振荡器的参考接地端。引脚23:OSC1,振荡器输入。引脚24:OSC2,振荡器输出。引脚25:Vddosc,振荡器的正3.3V电源端。引脚26:LEDB,LEDB驱动引脚。引脚27:L

34、EDA,LEDA驱动引脚。引脚28:Vdd,正3.3V电源端。3.1.3 ENC28J60串行外设接口SPIENC28J60提供了一个与单片机连接的串行外设接口直接相连。然而在选用的51单片机中,其引脚并未实现对外设串口的支持,因此在实际应用中必须对单片机的I/O引脚进行SPI的模拟。在模拟的过程中,时序的把握十分重要,因此必须首先了解SPI的输入输出时序,了解其工作原理。输入数据时为上升沿触发,ENC28J60在SCK引脚的上升沿允许移入数据,所有的数据都是通过SI引脚移入器件当中,在SCK的下降沿从SO引脚输出数据,CS引脚为片选功能,因此CS只有在低电平时ENC28J60才能进行数据读写

35、操作,在操作完成后回到高电平状态。其输入输出时序图如图3-2,3-3所示。图3-2 SPI输入时序图3-3 SPI输出时序3.1.4 单片机STC89C58RD+简介STC89C58RD+是宏晶科技推出的STC89C51系列单片机中的一种,具有非凡的抗干扰能力、运行速度高、功耗低,它的指令代码和8051系列完全兼容,具有显著的特点:1)增强型6时钟/机器周期,12时钟/机器周期。2)工作电压:5.5V-3.4V(5V单片机),3.8V-2.0V(3V单片机)。3)工作频率范围:0-40MHz。实际工作频率可达48MHz。4)用户应用程序空间4k/8k/13k/16k/20k/32k/64k字节

36、。5)片上集成1280字节/512字节RAM6)通用I/O口(32/64个),复位后为P1/P2/P3/P4是准双向口/弱上拉(普通8051传统I/O口),其中P0口是漏极开路,在作为总线扩展时,不需要加上拉电阻,而作为通常I/O口使用时,需要加上拉电阻。7)支持ISP(在系统可编程)/IAP(在应用可编程),优点在于不需要使用专用编程器,烧录程序只需要四根引脚便可以实现,给用户的编程,下载,调试提供了极大的方便,提高了研发效率。8)EEPROM功能。9)看门狗。10)内部集成3个16位定时器/计数器,定时器0能够作为两个8位定时器使用,方便适用于多时序控制的程序当中。11)提供了4个外部中断

37、,全部为下降沿触发。12)通用异步串行口(UART),还可以用定时器软件实现多个UART。13)工作温度范围:0-75/-40-+8514)封装:LQFP-44,PDIP-40,PLCC-44,PQFP-443.2 硬件设计硬件设计是根据总体设计要求,在选择完单片机机型的基础上,具体确定系统中所要是用的所有元件,并设计系统的电路原理图,经过必要的实验后完成工艺结构设计、电路板制作和样机的组装8。在硬件设计过程中要注意:1)单片机晶振频率和运行速度的确定。通常每一型号的单片机均有其能够正常运行的上限频率,但在实际设计中,却未必越高越好。晶振频率的选择,取决于系统对单片机指令执行速度的要求及接口通

38、信速率等。在电池供电的便携式设备中,晶振频率在满足要求的前提下越低越节省电量,有利于延长电池的使用时间。2)性能指标的匹配和性价比的优化。特别是在设计A/D及D/A转换的电路设计中,为保证系统达到预期精度要求,必须统筹考虑影响精度的各种因素,不能片面提高A/D或D/A芯片的位数,如电压基准,信号范围,检测电阻等均需要考虑精度要求,才能达到预期目的。3)必要的电压,电流浪涌抑制措施。由于进出线或空间干扰,硬件电路在输入/输出接口处应采取必要的瞬态大电压或电流的一直措施,以保护电路元器件不被击穿,烧毁等。4)电平,驱动能力的匹配。不同电路模块相连时,往往涉及电平不兼容,或者不能正常驱动的情况,需要

39、查阅元器件的规格型号,据此进行必要的转换。3.2.1 硬件接口设计单片机实现以太网络通信的过程需要执行TCP/IP协议,根据协议的分层原理,硬件接口设计属于TCP/IP协议的链路层设计,是协议实现的硬件平台;本课题选择ENC28J60引脚数目少,外围电路比较简单,元件数目少,成本低,结构简单。接口电路框图如图3-4所示。图3-4 硬件接口电路框图3.2.2 ENC28J60电路设计1复位电路 ENC28J60具有上电复位功能,给ENC28J60的RESET引脚一个低电平,触发其复位模式;RESET引脚内部有弱上拉电阻。2时钟振荡器在ENC28J60的OSC1和OSC2引脚上要外接25MHz的晶

40、振,或者由外部时钟信号进行驱动。若采用时钟信号时,3.3V的外部时钟应接在OSC1引脚上,而OSC2引脚应断开或接地以降低系统噪声。3振荡器启动定时器ENC28J60内部有一个振荡器启动时钟OST,在上电最初的300个微秒处于初始阶段,ENC28J60内部的PHY无法工作,不能发送或者接收报文。上位机通过对芯片内部ESTAT寄存器中CLKRDY位的状态监测来决定是否可发送或接收报文。4变压器,终端和其他外部器件10BASE-T的实现需要在ENC28J60的差分输入引脚(TPIN+/TPIN-)之间外加一个1:1的脉冲变压来实现。差分输出引脚(TPOUT+/TPOUT-)需要提供一个1:1,带中

41、心抽头的脉冲变压器9。每一部分都需要2个50(1%)的电阻和一个0.01F的电容串联后接地。可选用集成以太网隔离变压器RJ45插座HR910005A。ENC28J60的内部电路需要在RBIAS引脚和地之间串接一个2k(1%)的偏置电阻进行使用。ENC28J60内部集成了2.5V的调节器,在VCAP引脚和GND之间接10F的电容可以保证部分工作在2.5V 的数字电路的工作稳定性。5输入输出电平ENC28J60是一个3.3V的CMOS器件,为了在5V系统中应用,需要对其做一定的改进。其SPI接口引脚SPI,CS,SCK,SI的输入可承受5V电压。若SPI与中断输入3.3V驱动的CMOS输出不兼容时

42、,则需要电平转换。ENC28J60电路图如图3-5所示。图3-5 ENC28J60电路图3.2.3 STC89C58RD+电路设计1晶振电路CPU的操作需要精确的计时,要达到这一要求,可以采用外部晶振或者外部时钟电路的方法。所用的STC8958RD+芯片内部有一个由高增益反向放大器所构成的振荡电路,XTAL1和XTAL2分别为振荡电路的输入和输出端。在XTAL1和XTAL2之间接晶振和电容,组成的是并联谐振回路,这是一个稳定的自激振荡器。根据经验,通常选用的是12MHz晶振和两个30pF的电容8。晶振电路图如图3-6所示。图3-6 晶振电路图2复位电路在单片机的振荡器有时会遇到需要复位的情况,

43、想要使系统复位,只要保持单片机RESET引脚至少连续两个机器周期的高电平即可,这一操作使单片机回复到初始状态。复位后各寄存器状态如表3-1所示。表3-1 复位后各寄存器状态表寄存器内容寄存器内容PC0000HIE0xx00000ACC00HTMOD00HB00HTCON00HPSW00HTH000HSP07HTL000HDPTR0000HTH100HP0P30FFHTL100HIPxxx00000SCON00HSBUF不定PCON0xxxxxxx本设计采用的是按键手动及上电自动复位电路。上电时,由于振荡器有一定的起振时间,故RESET引脚必须提供持续10ms以上的高电平才能保证有效复位,加电瞬

44、间,RESET端的电位与Vcc相同,随着RC电路充电电流的减小RESET端的电位下降,但只要RESET端保持10ms以上的高电平就能使单片机有效复位,复位电路中的RC数值由经验确定。当振荡频率选用6MHz时,C选22F,R选1k,便能可靠地实现上电自动复位。按键手动及上电自动复位电路图如图3-7所示。图3-7 按键手动及上电自动复位电路3LCD显示及矩阵键盘电路本设计采用LCD1602A,是一种内部包含字库可以显示字母、数字、符号、日文片假名等简单图形的点阵型液晶显示模块。提供了显示数据缓冲区DDRAM,字符发生器CGROM和字符发生器CGRAM,支持用户自定义符号的存储,最多8个58点阵的用

45、户自定义图形可存储于CGRAM当中。此外, LCD1602还提供了丰富的指令设置:清显示;游标回远点;显示开/关;游标开/关;显示字符闪烁;游标移位;显示移位元等。内部自带上电自动复位电路,当外加电源电压超过4.5V时,自动对模块进行初始化操作,将模块设置为默认的显示工作状态10。接口引脚如表3-2所示。表3-2 LCD1602接口引脚引脚号符号I/O描述1GND-电源负端(0V)续表3-2引脚号符号I/O描述2VDD-电源正端(5V)3V0-LCD驱动电压输入4RSI指令/数据选择5RWI读写选择信号6EI使能信号7DB0I/O数据08DB1I/O数据19DB2I/O数据210DB3I/O数

46、据311DB4I/O数据412DB5I/O数据513DB6I/O数据614DB7I/O数据715BL1-LED+(5V)16BL2-LED-(0V)引脚1,2为LCD显示的电源正负级,分别接在电源端和地端;引脚15,16为LCD的背光,同样接在电源端和地端;引脚3可以调节LCD显示的对比度,若引脚3接电源,则对比度最弱,显示效果不明显,若引脚3接地,则对比度最强,易出现“重影”,在实际使用中在引脚3可串接一个10k的变阻器到电源以调节对比度。引脚5在本设计中直接接地选通。引脚4,6根据程序设计,分别接在P1.0,P1.1口上。引脚7-14为数据引脚,用来输送数据。在本设计中,LCD1602与P

47、0口相连,由于P0口为漏极开路,做I/O口使用时,需外接上拉电阻。LCD接口电路如图3-8所示。图3-8 LCD1602接口电路键盘采用44矩阵键盘,如图3-9所示。图3-9 44矩阵键盘第4章 软件设计4.1 TCP/IP协议部分由于TCP/IP协议较为复杂,在本设计中,采用C语言编译,选用的编译器版本为Keil3。代码文件列表如图4-1所示。图4-1代码文件列表其中,enc28j60.c和enc28j60.h分别为网络控制器ENC28J60的代码和相应的头文件;main.c是程序的主要部分,包括了后续扩展的LCD显示及键盘控制程序;spi.c和spi.h是STC89C58RD+的I/O口模

48、拟SPI驱动的程序及其对应头文件;uip.c和uip.h是uip协议栈的相关内容,支持ICMP,TCP,UDP;uip_arch.c和uip_arch.h是一些uip函数库;uip_arp.c及uip_arp.h是ARP包以及ARP缓存表管理;uipopt.h是uip的一些配置参数。这一工程的特点在于以查询方式收包,定时更新ARP缓存表,协议栈、收、发共用缓存以减小内存开销,支持ICMP/TCP/UDP,端口监听,主/被动连接。代码的流程图如图4-2所示11-12。图4-2 程序代码流程图对于现有的开源可移植TCP/IP协议栈而言,uip算是占用资源相对较少的,根据任务书的要求,在设计中去除了

49、源程序中自带的http服务器,fs部分,将连接数,监听端口列表,ARP缓存表大小都设置为1,关掉日志,统计信息,重组包,将系统的开销降到更低。以下将对uip系统的主要开销进行一个估算。估算所得RAM(内存空间)大约为334字节,其他全局变量大概占60字节,将连接数,监听端口,缓存表修改后的连接状态占用281,ARP缓存表占用111,协议栈收发共用缓存233+2。对应的代码位置如图4-3所示。图4-3 代码修改对应位置SP(栈空间)40字节左右。Uip协议栈为了节约内存,大部分接口函数用宏实现,采用的方式基本思路为加大程序的存储空间以换取更小的栈空间,协议栈核心函数基本由uip_process(

50、)一个函数完成,几乎只有几个局部变量,函数调用参数也很少,除uip_appcall()外,其他几个子函数无嵌套调用13。ROM(程序空间)12字节左右。通常情况下,由keil3所编译的hex程序文件大小超过了32k,占用了大量的存储空间,为了解决这一问题,节省程序空间,可以利用一款名为hex2bin.exe的小软件将编译后的hex文件转化为bin格式的文件。这样一来,原大小超过32k的程序将大大减少到13k左右,选用的STC芯片可以满足要求。网卡I/O脚,最少占用4个,最多占用7个,包括RST。4.1.1 主程序main()部分代码说明/*延时子程序,若采用的晶振为12Mhz时,延时时间约为1

51、s*/void delay(u32_t u)#ifdef MHz_22_1184u *= 2;#endifwhile(u-);int main(void)idata u8_t i, arptimer;/*缓存表定时更新器的定义*/dev_init();/*网卡设备的初始化*/uip_arp_init();/*ARP的初始化*/uip_init();/*TCP/IP协议栈的初始化*/uip_ethaddr.addr0 = 0x12;uip_ethaddr.addr1 = 0x34;uip_ethaddr.addr2 = 0x56;uip_ethaddr.addr3 = 0x78;uip_etha

52、ddr.addr4 = 0x90;uip_ethaddr.addr5 = 0xAB;/*设置主机的地址*/#if UIP_FIXEDADDR = 0/*设置主机的地址*/uip_ipaddr(ipaddr, 192,168,0,201);uip_sethostaddr(ipaddr);/*设置子网掩码*/uip_ipaddr(ipaddr, 255,255,255,0);uip_setnetmask(ipaddr);/*设置网关*/uip_ipaddr(ipaddr, 192,168,0,1);uip_setdraddr(ipaddr);#endif/*连接到服务器,设置服务器地址*/uip_

53、ipaddr(ipaddr, 192,168,0,15);uip_connect(ipaddr, HTONS(SERVER_PORT);arptimer = 0;/*缓存表定时更新器*/while(1) uip_len = dev_poll();/*查询是否有包收到*/ if(uip_len = 0) for(i = 0; i 0) uip_arp_out();dev_send();/*有包需要发送*/* 每更新一次缓存表 */if(+arptimer = 20) uip_arp_timer();arptimer = 0;delay_us(5000);/*延时,避免服务器端应答过慢,造成不必要

54、的重新发包*/ else if(BUF-type = htons(UIP_ETHTYPE_IP) uip_arp_ipin();uip_input();/* 若有包收到,则将数据发送到缓存中 */if(uip_len 0) uip_arp_out();dev_send(); else if(BUF-type = htons(UIP_ETHTYPE_ARP) uip_arp_arpin();/* 若有包收到,则将数据发送到缓存中 */if(uip_len 0) dev_send();/*接收到数据后,当网卡空闲,自动将缓存的数据通过网卡发出*/return 0;4.1.2 SPI接口驱动市面上已

55、有的许多型号单片机当中,并不是所有型号都带有SPI串行总线接口,为了使不具备SPI接口的单片机也能接入以提高程序的易用性和通用性,拟采用I/O模拟SPI的方式。本设计需了解SPI串行总线的特征和时序,对无SPI总线接口的单片机采用其IO端口,通过程序控制的方法,模拟SPI串行总线接使其能与SPI总线接口的器件之间进行数据传送14。本设计SPI采用单片机I/O口模拟,只需要根系实际的硬件电路设计,在spi.h文件中对I/O脚进行相应的定义即可。在ENC28J60中SPI采用的是SPI0模式,即时钟信号上升沿接收数据,下降沿发送数据。ENC28J60的SPI管脚连接方式定义如图4-4所示。图4-4

56、 SPI管脚连接定义4.1.3 ENC28J60驱动ENC28J60驱动中包含的函数中主要为三大块,一是enc28j60_init(),即ENC28J60的初始化函数,此外,还有两个与uIP协议栈相连的数据收发接口函数:网卡收数据函数enc28j60PacketReceive(),网卡发数据函数enc28j60PacketSend()。ENC28J60的初始化流程如图4-5所示。图4-5 ENC28J60初始化流程图收包:可通过查询或中断查看网卡接收包中断是否产生,来决定是否有包在FIFO中,再根据读写指针将包去除给uIP协议栈解析。发包:uIP协议栈完成组包后,直接将数据传输到网卡的FIFO

57、中,即可以将数据包物理发送。4.1.4 uip_appcall()部分代码说明在uIP协议栈中,uip_appcall()函数是应用程序定义的外部函数需要使用的接口函数,所有相关的外部函数调用都将集中于该函数进行统一处理,因此,在本次设计中的重点任务就在于uip_appcall()函数的编写。Uip_appcall()函数流程图如图4-6所示。图4-6 uip_appcall() 程序流程图下面将对本函数做一个简要的说明。void uip_appcall(void)switch(uip_conn-rport) case HTONS(SERVER_PORT):/*匹配端口号*/if(uip_ti

58、medout()|uip_aborted()|uip_closed()#if AUTO_RECONNECT/*timeout为服务器超时,aborted为服务器断开,closed为服务器关闭*/delay_sec(5);/*延时,避免过多ARP包阻塞网络*/uip_connect(ipaddr, HTONS(SERVER_PORT);/*请求重连服务端*/#endifelse if(uip_connected()/*已经连接到服务端*/#if 1uip_send(uip_appdata,sprintf(char*)uip_appdata,%s,Hello,I connected to you!

59、 thanks.);/*向上位机发送“Hello,I connected to you!thanks.”*/#endifelse if(uip_rexmit()/*由于网络,校验等原因,请求重发最后一包数据,由用户缓存超过重发次数产生超时*/#if 1uip_send(uip_appdata,sprintf(char*)uip_appdata,%s,this is retransmission packet);/*向上位机发送“this is retransmission packet”*/#endifelse if(uip_poll()/*连接状态空闲,即双方都没有数据交换*/ #if 1

60、key_scan(); /*进行键盘扫描*/ lcd_disp1(); /*在LCD上显示接收到的数据*/#endifelse if(uip_acked() /*最后一次发送已被对方正确应答,可继续发送*/ memcpy(RxdBuf, uip_appdata, uip_len);/*将上位机的数据存至RxdBuf*/ lcd_disp2();/*在LCD上显示由上位机传来的数据*/ /*get a ack for send packet ok*/#if 0uip_send(uip_appdata,sprintf(char*)uip_appdata,%s,this is a second packet.);/*在上位机显示“this is a second packet.”*/#endifif(uip_newdata()/*收到数据*/

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