产品概述

交流单片机检测 单片机实例分享,简易网络测试仪

小编 2024-10-10 产品概述 23 0

单片机实例分享,简易网络测试仪

网络已经融入了当今生活的各个方面,成为绝大多数人生活中不可或缺的重要组成部分。因为职业的关系,笔者经常会接触到网线的铺设以及网络的测试等方面工作,在工作中我发现借助专业的网络测试仪,可以极大地减少网络故障的排查时间,并能很好地提高工作效率。

专业的网络测试仪功能很强大:电缆查找、扫描线序、PING功能、寻找端口以及数据包分析等。然而,不容忽视的是,尽管一个专业的网络测试仪功能很强大,但价格往往不菲,动辄上万,因此相对于国外来说,国内使用范围还很有限。能不能自己设计一个简单实用的网络测试仪呢?当然可以。

网线制作的线序可以使用网线测试仪进行测试,并且价格也很便宜,因此,暂且忽略这个功能。综合考虑常用的几个功能,笔者设计的简易网络测试仪(以下简称测试仪)支持:PING功能、DHCP功能测试以及网络访问测试,也就是说,此测试仪建立在网络数据传输之上,能直观地反映网络传输性能。

笔者的设计思路如图30.1所示。

图30.1 简易网络测试仪结构

元器件选择

图30.2所示是此测试仪所用元器件,使用的元器件清单如表30.1所示。

图30.2 元器件实物

表30.1 元器件清单

1.网络传输接口芯片

网络传输接口是本测试仪的重点,选择一款合适的接口芯片对于简化制作及日后工作的稳定性都尤为重要。在这里,笔者选择了 ENC28J60,ENC28J60 是 Microchip Technology(美国微芯科技公司)2005年推出的28引脚封装独立以太网控制器。自从推出以来,应用极其广泛,这得益于它的引脚非常少、外围电路很简单、使用3线SPI串行接口和单片机通信。由于它占用芯片引脚非常少,所以焊接容易,甚至可以直接在洞洞板上进行电路布局。

2.MCU 主控芯片

由于选定ENC28J60作为网络接口芯片,MCU的引脚只需保证以下条件即可:

(1)支持3/4线SPI接口,用于与ENC28J60通信,当然,用I/O模拟也可,只是速度会稍慢;

(2)网络需要一定的数据包RAM缓存,因此主控芯片RAM至少为1KB以上;

(3)网络协议占用大量的代码空间,考虑到扩展性,片内Flash最好大于32KB。

在此,从通用与易上手方面综合考虑,笔者选用了51内核的1T单片机STC12C5A60S2,此单片机的特点为:改进传统51单片机12T的指令运行周期,达到了1T,速度大大提高;内部Flash空间达到了60KB,不用担心因程序代码的空间过大而放不下的问题。

电路设计规划

此测试仪的电路非常简单,主体由3片IC组成,外加带网络变压器的RJ45接口座HR911105A以及少量的阻容元器件。

显示器采用最常用的LCM1602字符型液晶显示屏,虽然只能显示16×2个字符,但经过优化的主菜单看起来效果也不错。

电路图如图30.3所示。

图30.3 简易网络测试仪电路图

工作流程简介

从笔者的设计思路中可以看出,测试仪采用菜单的形式对功能进行分类,包括TCP网页测试页面、PING命令以及通过DHCP功能从路由器自动获取IP这3大功能。其中,对网络协议的数据包处理与分发是测试仪工作的重点,在此,笔者就对此进行简要的介绍。

网络数据传输中,最常用的协议组就是“TCP/IP协议”,是一个协议组。相对测试仪系统而言,用到的协议有以下几个。

(1)ARP协议:该协议为大部分数据传输的前提,用于询问对方的MAC地址,以便在后期点对点传输中发送含有正确MAC的数据包。

(2)IP 协议:该协议用于点对点数据传输过程,通过 IP 地址判别接收方的数据包,它是ICMP、UDP和TCP协议的“容器”。

(3)ICMP协议:换个通俗的说法,该协议就是PING,用于确认对方的连接状态,正常连接就能收到PING回应。

(4)UDP协议:该协议是简单的面向数据包的传输层协议,不需要通过复杂的握手协议,只需要知道对方的IP地址和MAC即可进行数据传输,因此具有高效、却不可靠的特点。

(5)TCP协议:该协议是高可靠性的包交换传输协议,通过复杂的握手、重发、回应协议机制进行传输,和UDP相反,具有冗余、可靠的特点。

(6)DHCP协议:该协议是用来实现自动从路由器上获取IP地址、子网掩码以及网关IP地址的功能,免去了手动设置IP的麻烦。

这6个常用的协议只是众多网络协议中的很小一部分,但却负担着大部分网络传输任务,因此,网络传输其实并非很多人想象得那么不可捉摸。

焊接安装与调试

由于元器件不多,电路结构比较简单,遂采用Protel 99SE设计,完成后的PCB布局如图30.4所示。只要焊接无误,上电烧写程序后即能正常工作。笔者试制了几个均一次成功。

图30.4 PCB 布局

实际效果

焊接完成之后的效果如图30.5所示,之后进行液晶显示屏装配,效果如图30.6所示。

图30.5 焊接完成图

图30.6 装配上液晶显示屏

上电初始化完成后,进入主菜单,如图30.7所示,可以按动Next按键选择相应的功能,按Enter按键确认。

选择功能1是WebServer,是运行TCP网页测试的页面,用于网络中的电脑对测试仪进行数据访问测试。与测试仪在同一网络中的电脑均可以通过IE浏览器访问测试仪,在浏览器地址栏输入测试仪的地址即可,图30.8所示为测试仪运行界面,图30.9所示为电脑访问测试仪的网页,网页上可以显示电脑的IP地址以及MAC地址。

图30.7 主菜单

图30.8 运行网页服务器

选择功能2为PING功能,它是用于测试仪对网络中的电脑进行数据交换测试,不仅可以对同一局域网内的电脑进行测试,也可对跨越路由器的远程IP地址进行PING。如果对端电脑未能对测试仪进行回应,测试仪就会显示“Response TTL= ???”;如果收到回应,则显示TTL=064(也可能是255、128、32等);如果对端的电脑跨越路由器,则每跨越一层路由器,TTL的数值就会减1,这个数据也可以粗略地估计数据包经过的路由器层数。All后的数据表示总共进行了几次PING,Succ后的数据表示成功的PING次数,All与Succ之差就是丢包的次数。网络状况良好时,一般All和Succ的数据相等。图30.10为PING功能的PING通状态。

图30.9 电脑访问网页服务

选择功能3为设置功能,可以对测试仪的IP地址、子网掩码以及网关进行设置,也可在开启DHCP功能的路由器网络内,通过打开测试仪的DHCP功能从路由器处自动获取上述3个参数,这样就更加方便使用了,图30.11所示为设置的参数。

图30.10 PING 功能的PING 通状态

图30.11 设置菜单

总结

测试仪在设计之初,就本着尽量精简的原则,在完成支持ARP、ICMP、DHCP以及TCP协议的情况下,删除不必要的协议。因此,系统代码相当精简,只占用了大约16KB的代码空间。当然,它也仅能完成菜单选择PING命令、自动获取IP和网页显示电脑参数等简单的功能,一些复杂的网络功能,例如数据协议分析显示、网络数据包存储等,由于体积和硬件所限,在本测试仪中尚未涉及。

经过一段时间的试用,该系统运行稳定,在日常工作中与网线测试仪搭配,能够完成大部分测试和故障判断工作,完全可以满足日常的应用。

■ 为了方便大家制作,下位机、上位机的代码与 PCB 文件均可从qq群657864614下载。

触摸屏与单片机串口通信测试

工业现场在使用触摸屏的时候,与第三方控制器进行通信连接的时候,一般都是使用成熟的通信协议进行通信连接。而这些协议的实现过程,触摸屏厂商也已经在编程环境中进行了封装集成,对于使用的工程师来说,通信的数据交换过程我们无需要关心。仅需要设置配置好控制器(PLC)的品牌,型号系列及基本的通信通道就可以了。当然,这是触摸屏通信的常规使用方法,这里就使用自定义协议如何实现触摸屏与控制器(如,单片机)的通信方法,分享给大家。以下通信测试方法除电脑外无需任何硬件,感兴趣的话可以依照以下步骤还原测试过程。

工具及环境准备

在开始测试前,我们需要准备以下工具及软件。

触摸屏编程软件:台达DOPSoft 2.00.07虚拟串口:Virtual Serial Port Driver串口助手调试工具:stc-isp-15xx-v6.86v

DOPSoft 2.00.07

Virtual Serial Port Driver

stc-isp-15xx-v6.86v

虚拟串口

打开“Virtual Serial Port Driver”软件,添加COM1、COM2两个串口。添加完成后,如下所示;

串口助手设置

打开串口助手软件(stc-isp-15xx-v6.86v)。在串口助手的串口号中设置为COM1,9600,8,n,1。此处设置为COM1后,触摸屏中就只能配置为COM2。其必须与虚拟串口设置的串口号对应。

到此,就完成了测试环境的搭建。以下开始触摸屏部分的配置。

触摸屏设置

触摸屏设置为本次测试的核心。

STEP1

打开“DOPSoft 2.00.07”软件,并新建工程。

STEP2

在通信端口配置页面,按照如下配置通信端口。这里以触摸屏的COM2作为此处测试的连接端口,故需要将触摸屏的COM2的“连接“复选框取消选中。这样才可以将其用作自定义通信方式使用。

SETP3

在画面编辑页面,按照下图所示,设置10个数值输入框。并将其地址设置为触摸屏内部存储区域的$0-$10。

双击数值输入框,弹出数值输入框的配置对话框,如下所示。

在写入地址对话框的后侧,点击“…”,弹出输入对话框。将连线名称设置为内部存储区域(Internal Memory)。再将原件地址设置为“0”。

依照以上方法,将其他数值输入框设置到地址1-10.

STEP4

设置画面运行过程中的脚本程序。

选中画面,在右侧的属性栏,选择“画面Cycle宏”。

弹出触摸屏脚本编辑对话框,点击下图所示按钮,打开脚本程序代码编写向导对话框。

在脚本程序代码编写向导对话框中,选择“命令”-“通信”-选择命令。配置完成代码参数后,选择“更新宏”,完成代码的添加。

代码添加完成后,如下图所示。

$M0 = INITCOM(1, 0, 1, 0, 0, 6, 0)//初始化端口

SELECTCOM(1)//设置触摸屏通信端口为2号端口

$M1 = PUTCHARS($0, 20, 3000)//发送触摸屏内部$0开始的20个连续地址数据

Delay(300)//延时

$M0 = 0//清除端口初始化标志

$M1 = 0//清除数据发送完成标志

CLEARCOMBUFFER(1, 1)//清除串口缓存

STEP5

启动触摸屏在线仿真。弹出如下所示的对话框,按照如图所示的方式配置。

STEP6

按照地址,从上到下设置为1到10.

STEP7

打开串口助手,可以看到在串口助手的接收区域,已经接收到触摸屏在线仿真发送出来的数据,且数据中可以看到有1到10(串口助手配置为16进制显示模式,其中16进制的A即为十进制的10)。

STEP8

在触摸屏在线仿真页面,将第一个数据改为9999。

再次查看串口助手中接收到的数据,其中第一个数据已经变为0F 27.

为了验证数据的正确性,打开电脑的计算器工具,将其设置为程序员模式。选择16进制输入模式。输入0F27,可以看到转换为十进制后数据为3879,这与触摸屏输入的数据9999无法对应。这是什么地方错了吗?其实不是。这只是数据的高低字节交换了,这在通信数据传输处理的时候需要特别注意。初次进行串口通信调试,很多都被这个给折腾过。

在计数器模式下,输入270F。可以看到其转换后的十进制数据为9999.与设置的输入数据一致。

自此,使用触摸屏进行串口自定义协议通信的测试就已经完成。

(转载请注明来源函控自动化工程师头条号)

相关问答

用51 单片机 完成 交流 电流 检测 ?

建议换单片机,51外设少,内核频率低,做软件闭环不容易,不如用stm32。如果必须用51,还要有一个AD芯片去采集电压,定时器输出接到mos驱动芯片,软件也就是一...

GND引出一条线,两根线放在水中,如果导通则 单片机 IO口 检测 ...

[回答]直接检测肯定不行,单片机I/O口的结构你看一下就知道了,如果想要这办法检测必须通过外部转换电路,也就是检测水的电阻转换电路就可以了,而水的电阻一...

单片机 如何 检测 信号的频率?

如果被测信号频率远大于单片机工作频率(机器周期),可以通过外部可编程分频器降到单片机可以接受的频率范围。如果被测信号频率稍低于单片机工作频率,可以采...

单片机 怎么 检测 好坏?

单片机好坏的检测可以通过以下方法进行:1.使用测试仪器检测:现今市场上有很多专业的测试仪器和设备可以检测单片机的好坏,例如USBEEPROMProgrammer,即可...

控制器 单片机 如何 检测 好坏?

检测控制器单片机好坏的方法一般有以下几种:通过检测电压、温度、频率等参数的变化判断单片机是否正常工作;使用调试工具进行在线调试,观察控制器单片机是否...

单片机 AD口 检测 电压?

内部晶体管处于开漏状态,无输出电压。就算可以测的也是感应电压,不是有效电压。正常使用AD口需要一个有效的模拟量才可以。内部晶体管处于开漏状态,无输出电...

51 单片机 如何测试串口连接正常

直接传就行了,把中文放在一个数组中如a[]="无线传输";传的时候就取数组的首地址,再依次累加直到传完就行了。收到的东西还放在一个数组中就还原了,...

51 单片机 ,如何 检测 某个引脚是否为高低电平,求一个C源程序实例?

sbitGO_OUT=P3^5;//需要检测的引脚sbitLED=P3^4;//显示led引脚为低时候亮voidmain()...sbitGO_OUT=P3^5;...

52 单片机 怎么测试io口有输出?

向端口写1,这样有输入时读取的数据才正确。向端口写1,这样有输入时读取的数据才正确。

51 单片机 如何用计数器 检测 脉冲信号(高低电平),程序怎样做!没...

可以利用51单片机的计数器T0、T1,例如用计数器0的外部计数脉冲输入端T0计数...不知道你检测来做什么用处一般用T0端口作检测如果要测频率,可以再用一个定时...

猜你喜欢